From 3d0766b9f5f131f456933f695c3db2c888fbca60 Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Thu, 18 Dec 2014 14:10:02 -0500 Subject: [PATCH 01/41] NIFI-182: - Updating to accommodate for new format in generated documentation. --- .../framework/web/nifi-web-api/pom.xml | 2 +- .../src/main/enunciate/default.css | 266 ------------------ .../src/main/enunciate/enunciate.xml | 4 +- .../src/main/enunciate/images/bg.png | Bin 0 -> 99 bytes .../src/main/enunciate/images/bgcode.gif | Bin 56 -> 0 bytes .../src/main/enunciate/images/bgcontainer.png | Bin 386 -> 0 bytes .../src/main/enunciate/images/bgul.gif | Bin 304 -> 0 bytes .../src/main/enunciate/images/header.png | Bin 51928 -> 0 bytes .../src/main/enunciate/images/home.png | Bin 0 -> 144 bytes .../src/main/enunciate/images/li.png | Bin 191 -> 0 bytes .../src/main/enunciate/images/quote.gif | Bin 228 -> 0 bytes .../src/main/enunciate/images/search.gif | Bin 680 -> 0 bytes .../src/main/enunciate/override.css | 150 ++++++++++ .../framework/web/nifi-web-ui/pom.xml | 2 +- 14 files changed, 155 insertions(+), 269 deletions(-) delete mode 100755 nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/default.css create mode 100644 nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bg.png delete mode 100755 nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bgcode.gif delete mode 100755 nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bgcontainer.png delete mode 100755 nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bgul.gif delete mode 100755 nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/header.png create mode 100644 nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/home.png delete mode 100755 nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/li.png delete mode 100755 nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/quote.gif delete mode 100755 nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/search.gif create mode 100644 nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/pom.xml b/nar-bundles/framework-bundle/framework/web/nifi-web-api/pom.xml index e7cb0e7c13..d3fb24816f 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/pom.xml +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/pom.xml @@ -23,7 +23,7 @@ org.apache.nifi nifi-web-api war - NiFi Web Rest Api + NiFi Rest Api docs diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/default.css b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/default.css deleted file mode 100755 index ccfd3211f8..0000000000 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/default.css +++ /dev/null @@ -1,266 +0,0 @@ -/*############################################################# -Name: Transparentia -Date: 2006-08-20 -Description: Simple, lightweight and slightly blue. -Author: Viktor Persson -URL: http://templates.arcsin.se - -Feel free to use and modify but please provide credits. -#############################################################*/ - -/* standard elements */ -* { - margin: 0; - padding: 0; -} - -a { - color: #496878; -} - -a:hover { - color: #6a90a4; -} - -body { - background-color: #DFE8EC; - color: #444; - font: normal 62.5% "Lucida Sans Unicode",sans-serif; - margin: 0; -} - -input { - color: #555; - font: normal 1.1em "Lucida Sans Unicode",sans-serif; -} - -p, cite, code, ul { - font-size: 12px; - padding-bottom: 1.2em; -} - -h1 { - font-size: 1.4em; - margin-bottom: 4px; -} - -h2 { - font-size: 1.2em; -} - -code { - background: url(img/bgcode.gif); - border: 1px solid #F0F0F0; - border-left: 6px solid #39F; - color: #555; - display: block; - font: normal 1.1em "Lucida Sans Unicode",serif; - margin-bottom: 12px; - padding: 8px 10px; - white-space: pre; -} - -cite { - background: url(img/quote.gif) no-repeat; - color: #666; - display: block; - font: normal 1.3em "Lucida Sans Unicode",serif; - padding-left: 28px; -} - -h1, h2, h3 { - color: #294c58; - padding-top: 6px; -} - -/* misc */ -.clearer { - clear: both; -} - -.deprecated { - color: red; -} - -.errortext { - color: red; - padding: 6px 12px; - font-variant:small-caps; -} - -/* structure */ -.container { - background: url(img/bgcontainer.png) repeat-y; - margin: 0 auto; - padding-bottom: 6px; - width: 767px; -} - -.header { - background: url(img/header.png) no-repeat; -} - -/* title */ -.title h1 { - font: normal 3em Verdana,sans-serif; - height: 150px; - line-height: 150px; - margin-bottom: 8px; - text-align: center; - position: relative; - left: -5000px; -} - -/* main */ -.main { - clear: both; - padding: 8px 18px; -} - -/* main left */ -.sidenav h1, .sidenav ul { - padding-left: 12px; -} - -.sidenav { - background: #EEE; - border: 1px solid #E5E5E5; - float: left; - width: 200px; -} - -.sidenav h1 { - color: #666; - font-size: 1.2em; - /*height: 20px;*/ - margin-top: 1.2em; -} - -.sidenav ul { - border-top: 1px solid #FAFAFA; - background: url(img/bgul.gif) repeat-x; - margin: 0; - padding: 0; -} - -.sidenav li { - border: 1px solid #FAFAFA; - border-top: none; - list-style: none; - margin: 0; -} - -.sidenav li a { - color: #777; - display: block; - font-size: 0.9em; - padding: 3px 6px 3px 14px; - text-decoration: none; -} - -.sidenav li a:hover { - color: #111; -} - -/* content */ -.content { - float: right; - width: 520px; -} - -.content .item { - padding: 6px 12px; - background: #FFF; - margin-bottom: 8px; -} - -.content .descr { - color: #333; -} - -.content li { - list-style: url(img/li.png); - margin-left: 18px; -} - -.content table { - background: url(img/bgcode.gif); - border: 1px solid #F0F0F0; - border-left: 6px solid #6a90a4; - color: #555; - display: block; - font: normal 1.1em "Lucida Sans Unicode",serif; - margin-bottom: 12px; - padding: 8px 10px; -} - -.content table tr td { - vertical-align:top; - text-align:left; - padding: 3px 3px 3px 3px; -} - -.content table tr th { - vertical-align:top; - text-align:left; - padding: 3px 3px 3px 3px; -} - -.content h1 { - /* text-decoration:underline;*/ -} - -.content h1 a { - color: #333; -} - -/* footer */ -.footer { - background: #FFF; - color: #999; - font-size: 1.1em; - margin: 0 auto; - text-align: center; - padding: 6px; - width: 720px; -} - -.footer a { - color: #666; - text-decoration: none; -} - -.footer a:hover { - color: #999; - text-decoration: underline; -} - -/* widecontent (content with no sidenav) */ -.widecontent { - background: #FFF; - border: 1px solid #EEE; - color: #666; - font-size: 1.1em; - margin: 0 auto; - padding: 6px; - width: 720px; -} - -.widecontent a { - color: #36C; - text-decoration: none; -} - -.widecontent a:hover { - color: #06F; - text-decoration: underline; -} - -.widecontent h1 { - padding: 6px 12px; - text-decoration:underline; -} - -.widecontent form { - padding: 6px 12px; -} diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/enunciate.xml b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/enunciate.xml index 781e6b149d..daaa553edf 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/enunciate.xml +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/enunciate.xml @@ -29,6 +29,8 @@ - + + + diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bg.png b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..fda98e52a06ccf2c75a51eed51735388908de1c5 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b`!3HGn8ON~#Db50q$YKTtZeb8+WSBKa0w^fz s>Eal|aXq=>`@6gKY$Xnh6hzMerveQOvP FtO3z(5M}@X diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bgcontainer.png b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bgcontainer.png deleted file mode 100755 index 5b34fda02b716fbe4535cef6e41b30f78959127a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmV-|0e$|7P)Tqy-5 zm!+lPB(y20NCrANi?nNDaRhn(Z|qo-Ri%2fE9>L>xvr1A=A75+k$>*rx7*jt^W_8p z05GiAxA&*>d0CdJNYgY=^IQkX-&(mbeX{Y$lj^!6_S7Y_wiN&X zU}Uz3AnU@7rHDM{8%$Pm5Vaow0B`_N_^~$p%Ri~#5J8B-4*&o-fH>Jxn_FJz@oAlV z`jJc z>3?Gk003Z6YL8mo=?Xzn6|`B#7e03;J%#Q;ra_W%F@07*qoM6N<$f@3zLiU0rr diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bgul.gif b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bgul.gif deleted file mode 100755 index ff689c863726df8e43d778f2dfe1246d720b4beb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 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 diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/home.png b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/home.png new file mode 100644 index 0000000000000000000000000000000000000000..be12052493849391f62ea32c0e90c2af77dcf6fb GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_2!3HG#TlXXZDb50q$YP+FFbFd;%$g$s6m;@* zaSYKozxTW$AA3#0+|?f_Xy2k2%2Cg{I&CfA|6H_V+Po~-c6(xGQIEGZ*O8WEvzdf_!fg=tq3pOi>rJVZ{tA37QWr>0w z`y*Qi8|{l{nGUN=Xu7N5sql^=DLLobT-HZd114K7lnPke{ECP5k%2-S>ydRgd}eV@ n^w^7OgF&7G^c{r>*z?(wFw!1ea{=j!h0?C<;h{FS7%(AVC^&ezx6;^F1$ z*xlo)wZfF6v;Y79A^8LW0018VEC2ui02BZZ000GH;3tk`X`U!Lbu7z$M$1NJVjtzkc=V)ytPJU%Ytn^y$+_j~?B>fB)XSdw1{Ny>sWz z?c29+-MV$-#*OROuV21=`O>9J7cN{lckbNTvu97AK7H!csgoy99y@mI@ZrOI_wL=j zd-u+rJGXD&zIE%?jT<+vU%!6cx^-*Uu3fWc&B~Q4SFBjEY}v9!ix$nBH*fCTxwB`_ zo;7RMq)C$|PMp}?-QCgA(bm@1+S=OE(gO4X*egSiQ2fcl$iU#lpaXI`C{7sI|2IfB zHMg|3wK8^gb@%jkHuX)M*u*q-+VmMSr#3Oqoi~5M!nt!6EnU>avU1hxHEUNkv2NV7 zc_Wv+j*h1EmJM6BD4NI%u!?FJaBpg2JALM?n9kYL0!n9^*stHXsU~vsx`_IXCXUBX zo~oD%KH*WeR(aCI`SH^ybwgV_i=VdkMm(RIxR|&?E;t_Vm)G~&5wWA`umfw8n8%b8 z4y+Tp%?*6+>S+L^bVvosUqAUwnUS1xs*i6*LvFYmSh|O739ZH+7uTMDKHTOd4n#heInk!;Y SZ(AG9)z13pl&A;?gEassmKYoW diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css new file mode 100644 index 0000000000..5e839c59c6 --- /dev/null +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css @@ -0,0 +1,150 @@ +/* + 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. +*/ + +#site-name { + padding-left: 0; +} + +#site-name a { + /*font-variant: normal !important;*/ + letter-spacing: 1px; +} + +#primary { + padding-right: 0; +} + +#primary li:hover { + border-bottom: 6px solid #7098ad; +} + +.xbreadcrumbs { + background-color: #7098ad !important; + color: #fff !important; +} + +.xbreadcrumbs li { + /*padding: 10px 15px 10px 10px !important;*/ +} + +.xbreadcrumbs li a, .xbreadcrumbs li.current a { + font-size: 13px !important; + color: #fff !important; +} + +.xbreadcrumbs li a.home { + background: url(img/home.png) no-repeat left center; +} + +.xbreadcrumbs li ul { + top: 26px !important; + background-color: #e3ebee !important; +} + +.xbreadcrumbs li ul li a, .xbreadcrumbs li.current ul li a { + color: #444 !important; +} + +.home { + background-color: #dfe8ec; + color: #444; +} + +a { + color: #496878; +} + +a:hover { + color: #6a90a4; +} + +.container { + width: 940px !important; + border-left: 2px solid #efefef; + border-right: 2px solid #efefef; + padding: 0 10px; + background-color: #fff; +} + +#main h2, #main h3 { + border-width: 0; +} + +#main p.note { + background: url(img/bg.png); + border: 1px solid #eee; + border-left: 4px solid #eee; + color: #666; + display: block; + margin-bottom: 12px; + padding: 5px 8px; +} + +/* tables */ + +table { + background: url(img/bg.png); + border: 1px solid #eee; + border-left: 4px solid #eee; + color: #666; + display: block; + margin-bottom: 12px; + padding: 5px 8px; +} + +table tbody tr td { + font-size: 14px; + vertical-align:top; + text-align:left; + padding: 4px; + border-width: 0; +} + +table tbody tr th { + font-size: 16px; + vertical-align:top; + text-align:left; + padding: 4px; + border-width: 0; +} + +/* code */ + +code { + font-size: 14px; + background: url(img/bg.png); + border: 1px solid #eee; + border-left: 4px solid #eee; + color: #666; + margin-bottom: 10px; + padding: 5px 8px; + white-space: pre; +} + +/* footer */ + +#footer { + border-top: 3px solid #eee; +} + +/* width */ + +.span-18 { + width: 916px !important; +} + +.span-20 { + width: 935px !important; +} diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/pom.xml b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/pom.xml index c4471a12c8..69e306d5e7 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/pom.xml +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/pom.xml @@ -23,7 +23,7 @@ org.apache.nifi nifi-web war - NiFi Web UI + NiFi UI ${project.build.directory}/tmp canvas.properties From 5e6de841d06773ff617f70cbae6a655bcab061f1 Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Fri, 19 Dec 2014 10:47:23 -0500 Subject: [PATCH 02/41] NIFI-182: - Embedding REST docs in the Help section. --- .../apache/nifi/web/server/JettyServer.java | 14 ++++++++++-- .../framework/web/nifi-web-api/pom.xml | 4 ++-- .../src/main/enunciate/override.css | 22 +++++-------------- .../src/main/webapp/WEB-INF/web.xml | 14 ++++++++---- .../main/webapp/WEB-INF/jsp/documentation.jsp | 11 ++++++++++ .../src/main/webapp/js/application.js | 9 ++++++-- .../nifi-web-error/src/main/webapp/index.jsp | 1 + 7 files changed, 48 insertions(+), 27 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java b/nar-bundles/framework-bundle/framework/web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java index 3900cfc416..62d83a40c5 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java +++ b/nar-bundles/framework-bundle/framework/web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java @@ -384,14 +384,24 @@ public class JettyServer implements NiFiServer { // load the docs directory final File docsDir = Paths.get("docs").toRealPath().toFile(); final Resource docsResource = Resource.newResource(docsDir); - // load the component documentation working directory + // load the component documentation working directory final String componentDocsDirPath = props.getProperty(NiFiProperties.COMPONENT_DOCS_DIRECTORY, "work/docs/components"); final File workingDocsDirectory = Paths.get(componentDocsDirPath).toRealPath().getParent().toFile(); final Resource workingDocsResource = Resource.newResource(workingDocsDirectory); + // load the rest documentation + final File webApiDocsDir = new File(webApiContext.getTempDirectory(), "webapp/docs"); + if (!webApiDocsDir.exists()) { + final boolean made = webApiDocsDir.mkdirs(); + if (!made) { + throw new RuntimeException(webApiDocsDir.getAbsolutePath() + " could not be created"); + } + } + final Resource webApiDocsResource = Resource.newResource(webApiDocsDir); + // create resources for both docs locations - final ResourceCollection resources = new ResourceCollection(docsResource, workingDocsResource); + final ResourceCollection resources = new ResourceCollection(docsResource, workingDocsResource, webApiDocsResource); resourceHandler.setBaseResource(resources); // create the context handler diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/pom.xml b/nar-bundles/framework-bundle/framework/web/nifi-web-api/pom.xml index f0cb80b09b..8a9b2d1ddd 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/pom.xml +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/pom.xml @@ -34,7 +34,7 @@ src/main/enunciate/images - ${project.build.directory}/${project.artifactId}-${project.version}/docs/img + ${project.build.directory}/${project.artifactId}-${project.version}/docs/rest-api/img @@ -51,7 +51,7 @@ docs - ${project.build.directory}/${project.artifactId}-${project.version}/docs + ${project.build.directory}/${project.artifactId}-${project.version}/docs/rest-api diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css index 5e839c59c6..a96d0a3ea7 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css @@ -18,7 +18,7 @@ } #site-name a { - /*font-variant: normal !important;*/ + font-variant: normal !important; letter-spacing: 1px; } @@ -35,10 +35,6 @@ color: #fff !important; } -.xbreadcrumbs li { - /*padding: 10px 15px 10px 10px !important;*/ -} - .xbreadcrumbs li a, .xbreadcrumbs li.current a { font-size: 13px !important; color: #fff !important; @@ -46,6 +42,7 @@ .xbreadcrumbs li a.home { background: url(img/home.png) no-repeat left center; + line-height: 16px; } .xbreadcrumbs li ul { @@ -58,8 +55,8 @@ } .home { - background-color: #dfe8ec; color: #444; + font-family: Verdana, Arial, Helvetica, sans-serif !important; } a { @@ -71,9 +68,6 @@ a:hover { } .container { - width: 940px !important; - border-left: 2px solid #efefef; - border-right: 2px solid #efefef; padding: 0 10px; background-color: #fff; } @@ -139,12 +133,6 @@ code { border-top: 3px solid #eee; } -/* width */ - .span-18 { - width: 916px !important; -} - -.span-20 { - width: 935px !important; -} + width: 776px !important; +} \ No newline at end of file diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/webapp/WEB-INF/web.xml b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/webapp/WEB-INF/web.xml index 8986a4596b..2ee9670ab2 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/webapp/WEB-INF/web.xml +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/webapp/WEB-INF/web.xml @@ -15,6 +15,7 @@ --> nifi-api + contextConfigLocation @@ -26,12 +27,15 @@ classpath:nifi-cluster-protocol-context.xml + org.springframework.web.context.ContextLoaderListener + org.apache.nifi.web.contextlistener.ApplicationStartupContextListener + jerseySpring com.sun.jersey.spi.spring.container.servlet.SpringServlet @@ -44,10 +48,7 @@ jerseySpring /* - - default - /docs/* - + timer org.apache.nifi.web.filter.TimerFilter @@ -56,6 +57,7 @@ timer /* + threadLocal org.apache.nifi.web.filter.ThreadLocalFilter @@ -64,6 +66,7 @@ threadLocal /* + springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy @@ -72,6 +75,7 @@ springSecurityFilterChain /* + requestLogger org.apache.nifi.web.filter.RequestLogger @@ -80,6 +84,7 @@ requestLogger /* + gzipCompressionFilter org.eclipse.jetty.servlets.GzipFilter @@ -88,6 +93,7 @@ gzipCompressionFilter /* + nodeRequestFilter org.apache.nifi.web.filter.NodeRequestFilter diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp index 299cf4e85f..b350e6bcba 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp @@ -20,6 +20,7 @@ + NiFi Documentation @@ -41,6 +42,7 @@
Documents
@@ -98,6 +100,15 @@ +
+
Developer
+ +
diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js index 1a60de655f..5e5ee1c8f2 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js @@ -199,9 +199,9 @@ $(document).ready(function () { } }).blur(function () { if ($(this).val() === '') { - $(this).addClass('component-filter-list').val('Filter components'); + $(this).addClass('component-filter-list').val('Filter'); } - }).addClass('component-filter-list').val('Filter components'); + }).addClass('component-filter-list').val('Filter'); // get the component usage container to install the window listener var componentUsageContainer = $('#component-usage-container'); @@ -255,6 +255,11 @@ $(document).ready(function () { selectComponent(componentName); } }); + + // listen for on the rest api and user guide + $('a.rest-api a.user-guide').on('click', function() { + selectComponent($(this).text()); + }); // get the initial selection var initialComponentLink = $('a.component-link:first'); diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-error/src/main/webapp/index.jsp b/nar-bundles/framework-bundle/framework/web/nifi-web-error/src/main/webapp/index.jsp index f7dc687ddc..3a342fb093 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-error/src/main/webapp/index.jsp +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-error/src/main/webapp/index.jsp @@ -20,6 +20,7 @@ <% String contextPath = "/".equals(request.getContextPath()) ? "" : request.getContextPath(); %> + NiFi From 21182ac260f6f40e65d53750804924cf5096370c Mon Sep 17 00:00:00 2001 From: joewitt Date: Fri, 19 Dec 2014 16:34:25 -0500 Subject: [PATCH 03/41] NIFI-150 updated to ensure docs get built and end up in the assembly under docs. --- assembly/pom.xml | 20 ++++++++++++++ assembly/src/main/assembly/dependencies.xml | 7 +++++ nifi-docs/pom.xml | 23 +++++++++++++--- nifi-docs/src/main/assembly/dependencies.xml | 28 ++++++++++++++++++++ pom.xml | 8 ++++++ 5 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 nifi-docs/src/main/assembly/dependencies.xml diff --git a/assembly/pom.xml b/assembly/pom.xml index 17cf29b481..887086cf6f 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -43,6 +43,19 @@ false + + unpack-docs + + unpack-dependencies + + generate-resources + + ${project.build.directory}/generated-docs + nifi-docs + org.apache.nifi + false + + @@ -123,6 +136,13 @@ provided zip + + org.apache.nifi + nifi-docs + resources + provided + zip + org.apache.nifi nifi-framework-nar diff --git a/assembly/src/main/assembly/dependencies.xml b/assembly/src/main/assembly/dependencies.xml index f90127af4d..13e5b832c6 100644 --- a/assembly/src/main/assembly/dependencies.xml +++ b/assembly/src/main/assembly/dependencies.xml @@ -81,6 +81,13 @@ 0640 false + + ${project.build.directory}/generated-docs/ + docs + 0750 + 0640 + false + diff --git a/nifi-docs/pom.xml b/nifi-docs/pom.xml index 979f1f8901..1979b66526 100644 --- a/nifi-docs/pom.xml +++ b/nifi-docs/pom.xml @@ -99,9 +99,26 @@ $1 + + maven-assembly-plugin + + true + + + + make shared resource + + single + + package + + + src/main/assembly/dependencies.xml + + + + + - - - diff --git a/nifi-docs/src/main/assembly/dependencies.xml b/nifi-docs/src/main/assembly/dependencies.xml new file mode 100644 index 0000000000..8c41ead4d4 --- /dev/null +++ b/nifi-docs/src/main/assembly/dependencies.xml @@ -0,0 +1,28 @@ + + + + resources + + zip + + false + + + ${project.build.directory}/generated-docs + /user-guide/ + + + diff --git a/pom.xml b/pom.xml index 9cccbf4b1a..2ccdaa943d 100644 --- a/pom.xml +++ b/pom.xml @@ -708,6 +708,14 @@ provided zip + + org.apache.nifi + nifi-docs + ${project.version} + resources + provided + zip + org.apache.nifi nifi-framework-nar From c0e4618d4233a2deb70e0ed44e2a936149f740cc Mon Sep 17 00:00:00 2001 From: joewitt Date: Fri, 19 Dec 2014 17:29:43 -0500 Subject: [PATCH 04/41] NIFI-186 fixed extra + and made default mem sizes equal --- .../resources/src/main/resources/conf/bootstrap.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/resources/src/main/resources/conf/bootstrap.conf b/nar-bundles/framework-bundle/framework/resources/src/main/resources/conf/bootstrap.conf index 6208560ffb..a34fa286d4 100644 --- a/nar-bundles/framework-bundle/framework/resources/src/main/resources/conf/bootstrap.conf +++ b/nar-bundles/framework-bundle/framework/resources/src/main/resources/conf/bootstrap.conf @@ -15,7 +15,7 @@ graceful.shutdown.seconds=20 java.arg.1=-Dorg.apache.jasper.compiler.disablejsr199=true # JVM memory settings -java.arg.2=-Xms256m +java.arg.2=-Xms512m java.arg.3=-Xmx512m # Enable Remote Debugging @@ -29,6 +29,6 @@ java.arg.6=-Djava.protocol.handler.pkgs=sun.net.www.protocol # Java 7 and below have issues with Code Cache. The following lines allow us to run well even with # many classes loaded in the JVM. -java.arg.7=-XX:+ReservedCodeCacheSize=256m +java.arg.7=-XX:ReservedCodeCacheSize=256m java.arg.8=-XX:CodeCacheFlushingMinimumFreeSpace=10m java.arg.9=-XX:+UseCodeCacheFlushing From 1357a17b6752a78dd87c3de7b0323f22e52731f9 Mon Sep 17 00:00:00 2001 From: joewitt Date: Sat, 20 Dec 2014 00:40:14 -0500 Subject: [PATCH 05/41] NIFI-189 Collapsed several commons libs into one --- commons/core-flowfile-attributes/pom.xml | 29 --------------- commons/data-provenance-utils/pom.xml | 2 +- commons/naive-search-ring-buffer/pom.xml | 30 ---------------- commons/nifi-file-utils/pom.xml | 35 ------------------ commons/nifi-stream-utils/.gitignore | 1 - commons/nifi-stream-utils/pom.xml | 30 ---------------- commons/nifi-utils/pom.xml | 4 +++ .../flowfile/attributes/CoreAttributes.java | 0 .../attributes/FlowFileAttributeKey.java | 0 .../remote/StandardVersionNegotiator.java | 0 .../apache/nifi/remote/VersionNegotiator.java | 0 .../TransmissionDisabledException.java | 0 .../remote/io/CompressionInputStream.java | 0 .../remote/io/CompressionOutputStream.java | 0 .../remote/io/InterruptableInputStream.java | 0 .../remote/io/InterruptableOutputStream.java | 0 .../remote/io/socket/BufferStateManager.java | 0 .../io/socket/SocketChannelInputStream.java | 0 .../io/socket/SocketChannelOutputStream.java | 0 .../io/socket/ssl/SSLSocketChannel.java | 0 .../ssl/SSLSocketChannelInputStream.java | 0 .../ssl/SSLSocketChannelOutputStream.java | 0 .../nifi/stream}/io/BufferedInputStream.java | 2 +- .../nifi/stream}/io/BufferedOutputStream.java | 2 +- .../nifi/stream}/io/ByteArrayInputStream.java | 2 +- .../stream}/io/ByteArrayOutputStream.java | 2 +- .../stream}/io/ByteCountingInputStream.java | 2 +- .../stream}/io/ByteCountingOutputStream.java | 2 +- .../nifi/stream}/io/DataOutputStream.java | 2 +- .../nifi/stream}/io/GZIPOutputStream.java | 2 +- .../io/LeakyBucketStreamThrottler.java | 2 +- .../stream}/io/NonCloseableInputStream.java | 2 +- .../stream}/io/NonCloseableOutputStream.java | 2 +- .../nifi/stream}/io/NullOutputStream.java | 2 +- .../nifi/stream}/io/StreamThrottler.java | 2 +- .../apache/nifi/stream}/io/StreamUtils.java | 6 ++-- .../nifi/stream}/io/ZipOutputStream.java | 2 +- .../BytePatternNotFoundException.java | 2 +- .../io/util/NonThreadSafeCircularBuffer.java | 2 +- .../nifi/util/NaiveSearchRingBuffer.java | 0 .../org/apache/nifi/util}/file/FileUtils.java | 29 ++++++++++----- .../file/monitor}/CompoundUpdateMonitor.java | 2 +- .../file/monitor}/LastModifiedMonitor.java | 2 +- .../file/monitor}/MD5SumMonitor.java | 8 +++-- .../file/monitor}/SynchronousFileWatcher.java | 2 +- .../file/monitor}/UpdateMonitor.java | 2 +- .../org/apache/nifi/util/search/Search.java | 0 .../apache/nifi/util/search/SearchTerm.java | 0 .../util/search/ahocorasick/AhoCorasick.java | 0 .../nifi/util/search/ahocorasick/Node.java | 0 .../util/search/ahocorasick/SearchState.java | 0 .../io/TestCompressionInputOutputStreams.java | 0 .../stream}/io/TestLeakyBucketThrottler.java | 5 ++- .../nifi/util/TestNaiveSearchRingBuffer.java | 0 .../monitor}/TestCompoundUpdateMonitor.java | 6 +--- .../monitor}/TestSynchronousFileWatcher.java | 5 +-- .../src/test/resources/logback-test.xml | 18 +--------- commons/pom.xml | 6 ---- commons/remote-communications-utils/pom.xml | 29 --------------- commons/search-utils/pom.xml | 30 ---------------- commons/wali/pom.xml | 2 +- .../org/wali/MinimalLockingWriteAheadLog.java | 4 +-- .../framework/cluster/pom.xml | 2 +- .../impl/FileBasedClusterNodeFirewall.java | 2 +- .../cluster/flow/impl/DataFlowDaoImpl.java | 10 +++--- .../FileBasedClusterNodeFirewallTest.java | 3 +- .../framework/core-api/pom.xml | 6 +--- .../framework-bundle/framework/core/pom.xml | 8 ----- .../controller/FileSystemSwapManager.java | 2 +- .../nifi/controller/FlowController.java | 2 +- .../nifi/controller/FlowUnmarshaller.java | 2 +- .../nifi/controller/SnippetManager.java | 8 ++--- .../nifi/controller/StandardFlowService.java | 2 +- .../controller/StandardFlowSynchronizer.java | 2 +- .../nifi/controller/TemplateManager.java | 8 ++--- .../repository/FileSystemRepository.java | 4 +-- .../repository/StandardProcessSession.java | 6 ++-- .../repository/VolatileContentRepository.java | 4 +-- .../service/ControllerServiceLoader.java | 2 +- .../StandardXMLFlowConfigurationDAO.java | 2 +- .../remote/StandardRemoteProcessGroup.java | 2 +- .../TestWriteAheadFlowFileRepository.java | 2 +- .../io/TestLimitedOutputStream.java | 3 +- .../file-authorization-provider/pom.xml | 2 +- .../FileAuthorizationProvider.java | 2 +- .../FileAuthorizationProviderTest.java | 2 +- .../framework/site-to-site/pom.xml | 12 ------- .../remote/codec/StandardFlowFileCodec.java | 2 +- .../remote/io/socket/SocketChannelInput.java | 4 +-- .../remote/io/socket/SocketChannelOutput.java | 4 +-- .../io/socket/ssl/SSLSocketChannelInput.java | 4 +-- .../io/socket/ssl/SSLSocketChannelOutput.java | 4 +-- .../nifi/web/api/ProvenanceResource.java | 2 +- .../nifi/web/util/ClientResponseUtils.java | 2 +- .../hadoop-bundle/hdfs-processors/pom.xml | 6 +--- ...wFileStreamUnpackerSequenceFileWriter.java | 2 +- .../nifi/processors/hadoop/PutHDFS.java | 4 +-- .../hadoop/SequenceFileWriterImpl.java | 2 +- .../hadoop/TarUnpackerSequenceFileWriter.java | 2 +- .../hadoop/ZipUnpackerSequenceFileWriter.java | 2 +- .../hadoop/util/OutputStreamWritable.java | 4 +-- .../processor/pom.xml | 8 ----- .../processors/monitor/MonitorThreshold.java | 2 +- .../monitor-threshold-bundle/ui/pom.xml | 2 +- .../persistent-provenance-repository/pom.xml | 8 ----- .../nifi/provenance/StandardRecordReader.java | 4 +-- .../nifi/provenance/StandardRecordWriter.java | 6 ++-- .../rollover/CompressionAction.java | 4 +-- .../serialization/RecordReaders.java | 2 +- .../standard-bundle/jms-processors/pom.xml | 2 +- .../nifi/processors/jms/JmsConsumer.java | 2 +- .../apache/nifi/processors/jms/PutJMS.java | 2 +- .../nifi/processors/jms/util/JmsFactory.java | 2 +- .../standard-processors/pom.xml | 14 +------- .../processors/standard/CompressContent.java | 6 ++-- .../processors/standard/EncryptContent.java | 2 +- .../standard/EvaluateRegularExpression.java | 2 +- .../processors/standard/EvaluateXPath.java | 4 +-- .../processors/standard/EvaluateXQuery.java | 4 +-- .../standard/ExecuteStreamCommand.java | 6 ++-- .../nifi/processors/standard/HashContent.java | 4 +-- .../nifi/processors/standard/ListenHTTP.java | 4 +-- .../processors/standard/MergeContent.java | 8 ++--- .../nifi/processors/standard/ModifyBytes.java | 2 +- .../nifi/processors/standard/PostHTTP.java | 12 +++---- .../processors/standard/PutFileTransfer.java | 2 +- .../nifi/processors/standard/ReplaceText.java | 2 +- .../standard/ReplaceTextWithMapping.java | 2 +- .../processors/standard/RouteOnContent.java | 2 +- .../processors/standard/ScanAttribute.java | 4 +-- .../nifi/processors/standard/ScanContent.java | 6 ++-- .../processors/standard/SplitContent.java | 2 +- .../nifi/processors/standard/SplitText.java | 8 ++--- .../nifi/processors/standard/SplitXml.java | 2 +- .../processors/standard/TransformXml.java | 2 +- .../processors/standard/UnpackContent.java | 6 ++-- .../standard/servlets/ListenHTTPServlet.java | 4 +-- .../standard/util/UDPStreamConsumer.java | 2 +- .../processors/standard/TestMergeContent.java | 3 +- .../processors/standard/TestScanContent.java | 4 +-- .../distributed-cache-client-service/pom.xml | 6 +--- .../DistributedMapCacheClientService.java | 4 +-- .../DistributedSetCacheClientService.java | 4 +-- .../cache/client/SSLCommsSession.java | 4 +-- .../cache/client/StandardCommsSession.java | 4 +-- .../distributed-cache-protocol/pom.xml | 2 +- .../distributed-cache-server/pom.xml | 6 +--- .../cache/server/AbstractCacheServer.java | 4 +-- .../cache/server/SetCacheServer.java | 2 +- .../cache/server/map/MapCacheServer.java | 2 +- .../update-attribute-bundle/processor/pom.xml | 2 +- nifi-mock/pom.xml | 4 --- pom.xml | 36 ++----------------- 153 files changed, 205 insertions(+), 501 deletions(-) delete mode 100644 commons/core-flowfile-attributes/pom.xml delete mode 100644 commons/naive-search-ring-buffer/pom.xml delete mode 100644 commons/nifi-file-utils/pom.xml delete mode 100755 commons/nifi-stream-utils/.gitignore delete mode 100644 commons/nifi-stream-utils/pom.xml rename commons/{core-flowfile-attributes => nifi-utils}/src/main/java/org/apache/nifi/flowfile/attributes/CoreAttributes.java (100%) rename commons/{core-flowfile-attributes => nifi-utils}/src/main/java/org/apache/nifi/flowfile/attributes/FlowFileAttributeKey.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/StandardVersionNegotiator.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/VersionNegotiator.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/exception/TransmissionDisabledException.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/io/CompressionInputStream.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/io/CompressionOutputStream.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/io/InterruptableInputStream.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/io/InterruptableOutputStream.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/io/socket/BufferStateManager.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelInputStream.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelOutputStream.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannel.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelInputStream.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelOutputStream.java (100%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/BufferedInputStream.java (97%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/BufferedOutputStream.java (99%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/ByteArrayInputStream.java (99%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/ByteArrayOutputStream.java (99%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/ByteCountingInputStream.java (98%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/ByteCountingOutputStream.java (98%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/DataOutputStream.java (99%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/GZIPOutputStream.java (97%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/LeakyBucketStreamThrottler.java (99%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/NonCloseableInputStream.java (98%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/NonCloseableOutputStream.java (97%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/NullOutputStream.java (97%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/StreamThrottler.java (97%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/StreamUtils.java (98%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/ZipOutputStream.java (97%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/exception/BytePatternNotFoundException.java (95%) rename commons/{nifi-stream-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/stream}/io/util/NonThreadSafeCircularBuffer.java (98%) rename commons/{naive-search-ring-buffer => nifi-utils}/src/main/java/org/apache/nifi/util/NaiveSearchRingBuffer.java (100%) rename commons/{nifi-file-utils/src/main/java/org/apache/nifi => nifi-utils/src/main/java/org/apache/nifi/util}/file/FileUtils.java (97%) rename commons/nifi-utils/src/main/java/org/apache/nifi/{io => util/file/monitor}/CompoundUpdateMonitor.java (98%) rename commons/nifi-utils/src/main/java/org/apache/nifi/{io => util/file/monitor}/LastModifiedMonitor.java (96%) rename commons/nifi-utils/src/main/java/org/apache/nifi/{io => util/file/monitor}/MD5SumMonitor.java (89%) rename commons/nifi-utils/src/main/java/org/apache/nifi/{io => util/file/monitor}/SynchronousFileWatcher.java (98%) rename commons/nifi-utils/src/main/java/org/apache/nifi/{io => util/file/monitor}/UpdateMonitor.java (95%) rename commons/{search-utils => nifi-utils}/src/main/java/org/apache/nifi/util/search/Search.java (100%) rename commons/{search-utils => nifi-utils}/src/main/java/org/apache/nifi/util/search/SearchTerm.java (100%) rename commons/{search-utils => nifi-utils}/src/main/java/org/apache/nifi/util/search/ahocorasick/AhoCorasick.java (100%) rename commons/{search-utils => nifi-utils}/src/main/java/org/apache/nifi/util/search/ahocorasick/Node.java (100%) rename commons/{search-utils => nifi-utils}/src/main/java/org/apache/nifi/util/search/ahocorasick/SearchState.java (100%) rename commons/{remote-communications-utils => nifi-utils}/src/test/java/org/apache/nifi/remote/io/TestCompressionInputOutputStreams.java (100%) rename commons/{nifi-stream-utils/src/test/java/org/apache/nifi => nifi-utils/src/test/java/org/apache/nifi/stream}/io/TestLeakyBucketThrottler.java (96%) rename commons/{naive-search-ring-buffer => nifi-utils}/src/test/java/org/apache/nifi/util/TestNaiveSearchRingBuffer.java (100%) rename commons/nifi-utils/src/test/java/org/apache/nifi/util/{timebuffer => file/monitor}/TestCompoundUpdateMonitor.java (91%) rename commons/nifi-utils/src/test/java/org/apache/nifi/util/{timebuffer => file/monitor}/TestSynchronousFileWatcher.java (92%) rename commons/{nifi-stream-utils => nifi-utils}/src/test/resources/logback-test.xml (65%) delete mode 100644 commons/remote-communications-utils/pom.xml delete mode 100644 commons/search-utils/pom.xml diff --git a/commons/core-flowfile-attributes/pom.xml b/commons/core-flowfile-attributes/pom.xml deleted file mode 100644 index 5a82ffaf8a..0000000000 --- a/commons/core-flowfile-attributes/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - 4.0.0 - - - org.apache.nifi - nifi-commons-parent - 0.0.1-SNAPSHOT - - - nifi-core-flowfile-attributes - 0.0.1-SNAPSHOT - jar - - NiFi: Core FlowFile Attributes - diff --git a/commons/data-provenance-utils/pom.xml b/commons/data-provenance-utils/pom.xml index 162d4f3657..0024b7044e 100644 --- a/commons/data-provenance-utils/pom.xml +++ b/commons/data-provenance-utils/pom.xml @@ -34,7 +34,7 @@ org.apache.nifi - nifi-core-flowfile-attributes + nifi-utils diff --git a/commons/naive-search-ring-buffer/pom.xml b/commons/naive-search-ring-buffer/pom.xml deleted file mode 100644 index c9628f0b36..0000000000 --- a/commons/naive-search-ring-buffer/pom.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - 4.0.0 - - - org.apache.nifi - nifi-commons-parent - 0.0.1-SNAPSHOT - - - naive-search-ring-buffer - 0.0.1-SNAPSHOT - jar - - NiFi Ring Buffer - - diff --git a/commons/nifi-file-utils/pom.xml b/commons/nifi-file-utils/pom.xml deleted file mode 100644 index 2af4d634b4..0000000000 --- a/commons/nifi-file-utils/pom.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 4.0.0 - - - org.apache.nifi - nifi-commons-parent - 0.0.1-SNAPSHOT - - - nifi-file-utils - 0.0.1-SNAPSHOT - jar - NiFi File Utils - - - - commons-codec - commons-codec - - - diff --git a/commons/nifi-stream-utils/.gitignore b/commons/nifi-stream-utils/.gitignore deleted file mode 100755 index ea8c4bf7f3..0000000000 --- a/commons/nifi-stream-utils/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target diff --git a/commons/nifi-stream-utils/pom.xml b/commons/nifi-stream-utils/pom.xml deleted file mode 100644 index ae0643621e..0000000000 --- a/commons/nifi-stream-utils/pom.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - 4.0.0 - - - org.apache.nifi - nifi-commons-parent - 0.0.1-SNAPSHOT - - - nifi-stream-utils - 0.0.1-SNAPSHOT - jar - NiFi Stream Utils - - diff --git a/commons/nifi-utils/pom.xml b/commons/nifi-utils/pom.xml index 6a6cee1c77..c5c2a68595 100644 --- a/commons/nifi-utils/pom.xml +++ b/commons/nifi-utils/pom.xml @@ -26,4 +26,8 @@ 0.0.1-SNAPSHOT jar NiFi Utils + diff --git a/commons/core-flowfile-attributes/src/main/java/org/apache/nifi/flowfile/attributes/CoreAttributes.java b/commons/nifi-utils/src/main/java/org/apache/nifi/flowfile/attributes/CoreAttributes.java similarity index 100% rename from commons/core-flowfile-attributes/src/main/java/org/apache/nifi/flowfile/attributes/CoreAttributes.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/flowfile/attributes/CoreAttributes.java diff --git a/commons/core-flowfile-attributes/src/main/java/org/apache/nifi/flowfile/attributes/FlowFileAttributeKey.java b/commons/nifi-utils/src/main/java/org/apache/nifi/flowfile/attributes/FlowFileAttributeKey.java similarity index 100% rename from commons/core-flowfile-attributes/src/main/java/org/apache/nifi/flowfile/attributes/FlowFileAttributeKey.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/flowfile/attributes/FlowFileAttributeKey.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/StandardVersionNegotiator.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/StandardVersionNegotiator.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/StandardVersionNegotiator.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/StandardVersionNegotiator.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/VersionNegotiator.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/VersionNegotiator.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/VersionNegotiator.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/VersionNegotiator.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/exception/TransmissionDisabledException.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/exception/TransmissionDisabledException.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/exception/TransmissionDisabledException.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/exception/TransmissionDisabledException.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/CompressionInputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/CompressionInputStream.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/CompressionInputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/CompressionInputStream.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/CompressionOutputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/CompressionOutputStream.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/CompressionOutputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/CompressionOutputStream.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/InterruptableInputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/InterruptableInputStream.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/InterruptableInputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/InterruptableInputStream.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/InterruptableOutputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/InterruptableOutputStream.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/InterruptableOutputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/InterruptableOutputStream.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/socket/BufferStateManager.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/socket/BufferStateManager.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/socket/BufferStateManager.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/socket/BufferStateManager.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelInputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelInputStream.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelInputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelInputStream.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelOutputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelOutputStream.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelOutputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelOutputStream.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannel.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannel.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannel.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannel.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelInputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelInputStream.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelInputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelInputStream.java diff --git a/commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelOutputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelOutputStream.java similarity index 100% rename from commons/remote-communications-utils/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelOutputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelOutputStream.java diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/BufferedInputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/BufferedInputStream.java similarity index 97% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/BufferedInputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/BufferedInputStream.java index 57adb8c726..aaf37ea397 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/BufferedInputStream.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/BufferedInputStream.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.InputStream; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/BufferedOutputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/BufferedOutputStream.java similarity index 99% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/BufferedOutputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/BufferedOutputStream.java index 56caf655a8..eadfcab953 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/BufferedOutputStream.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/BufferedOutputStream.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.FilterOutputStream; import java.io.IOException; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ByteArrayInputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteArrayInputStream.java similarity index 99% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ByteArrayInputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteArrayInputStream.java index 9defab4281..284cd54837 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ByteArrayInputStream.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteArrayInputStream.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.InputStream; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ByteArrayOutputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteArrayOutputStream.java similarity index 99% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ByteArrayOutputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteArrayOutputStream.java index b504c235f5..459563b967 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ByteArrayOutputStream.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteArrayOutputStream.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.IOException; import java.io.OutputStream; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ByteCountingInputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteCountingInputStream.java similarity index 98% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ByteCountingInputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteCountingInputStream.java index 792cc32a10..8294af39f8 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ByteCountingInputStream.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteCountingInputStream.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.IOException; import java.io.InputStream; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ByteCountingOutputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteCountingOutputStream.java similarity index 98% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ByteCountingOutputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteCountingOutputStream.java index c7b77ffb59..d8e1a42254 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ByteCountingOutputStream.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteCountingOutputStream.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.IOException; import java.io.OutputStream; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/DataOutputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/DataOutputStream.java similarity index 99% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/DataOutputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/DataOutputStream.java index 6af06d3c87..1dd90f5ed3 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/DataOutputStream.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/DataOutputStream.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.DataOutput; import java.io.FilterOutputStream; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/GZIPOutputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/GZIPOutputStream.java similarity index 97% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/GZIPOutputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/GZIPOutputStream.java index 875b838209..2864bbb176 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/GZIPOutputStream.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/GZIPOutputStream.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.IOException; import java.io.OutputStream; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/LeakyBucketStreamThrottler.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/LeakyBucketStreamThrottler.java similarity index 99% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/LeakyBucketStreamThrottler.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/LeakyBucketStreamThrottler.java index 0ebe16dd62..bffbe261dd 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/LeakyBucketStreamThrottler.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/LeakyBucketStreamThrottler.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.IOException; import java.io.InputStream; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/NonCloseableInputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/NonCloseableInputStream.java similarity index 98% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/NonCloseableInputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/NonCloseableInputStream.java index 1fbb093fdd..0e75a22495 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/NonCloseableInputStream.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/NonCloseableInputStream.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.FilterInputStream; import java.io.IOException; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/NonCloseableOutputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/NonCloseableOutputStream.java similarity index 97% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/NonCloseableOutputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/NonCloseableOutputStream.java index 731e409aea..9c77637b23 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/NonCloseableOutputStream.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/NonCloseableOutputStream.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.FilterOutputStream; import java.io.IOException; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/NullOutputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/NullOutputStream.java similarity index 97% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/NullOutputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/NullOutputStream.java index 60475d457e..8452761c8a 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/NullOutputStream.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/NullOutputStream.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.IOException; import java.io.OutputStream; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/StreamThrottler.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/StreamThrottler.java similarity index 97% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/StreamThrottler.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/StreamThrottler.java index 8c2aa80047..9158050d03 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/StreamThrottler.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/StreamThrottler.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.Closeable; import java.io.IOException; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/StreamUtils.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/StreamUtils.java similarity index 98% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/StreamUtils.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/StreamUtils.java index 1596014291..8e3d606273 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/StreamUtils.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/StreamUtils.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.EOFException; import java.io.IOException; @@ -23,8 +23,8 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.List; -import org.apache.nifi.io.exception.BytePatternNotFoundException; -import org.apache.nifi.io.util.NonThreadSafeCircularBuffer; +import org.apache.nifi.stream.io.exception.BytePatternNotFoundException; +import org.apache.nifi.stream.io.util.NonThreadSafeCircularBuffer; public class StreamUtils { diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ZipOutputStream.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ZipOutputStream.java similarity index 97% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ZipOutputStream.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ZipOutputStream.java index f2857207bb..2b9050d888 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/ZipOutputStream.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ZipOutputStream.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; import java.io.OutputStream; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/exception/BytePatternNotFoundException.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/exception/BytePatternNotFoundException.java similarity index 95% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/exception/BytePatternNotFoundException.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/exception/BytePatternNotFoundException.java index 8935767d17..5d08616ab7 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/exception/BytePatternNotFoundException.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/exception/BytePatternNotFoundException.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io.exception; +package org.apache.nifi.stream.io.exception; import java.io.IOException; diff --git a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/util/NonThreadSafeCircularBuffer.java b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/util/NonThreadSafeCircularBuffer.java similarity index 98% rename from commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/util/NonThreadSafeCircularBuffer.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/util/NonThreadSafeCircularBuffer.java index 1b874889e6..b4b4c17ca2 100644 --- a/commons/nifi-stream-utils/src/main/java/org/apache/nifi/io/util/NonThreadSafeCircularBuffer.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/util/NonThreadSafeCircularBuffer.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io.util; +package org.apache.nifi.stream.io.util; import java.util.Arrays; diff --git a/commons/naive-search-ring-buffer/src/main/java/org/apache/nifi/util/NaiveSearchRingBuffer.java b/commons/nifi-utils/src/main/java/org/apache/nifi/util/NaiveSearchRingBuffer.java similarity index 100% rename from commons/naive-search-ring-buffer/src/main/java/org/apache/nifi/util/NaiveSearchRingBuffer.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/util/NaiveSearchRingBuffer.java diff --git a/commons/nifi-file-utils/src/main/java/org/apache/nifi/file/FileUtils.java b/commons/nifi-utils/src/main/java/org/apache/nifi/util/file/FileUtils.java similarity index 97% rename from commons/nifi-file-utils/src/main/java/org/apache/nifi/file/FileUtils.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/util/file/FileUtils.java index 8920493a16..41a05576f6 100644 --- a/commons/nifi-file-utils/src/main/java/org/apache/nifi/file/FileUtils.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/util/file/FileUtils.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.file; +package org.apache.nifi.util.file; import java.io.BufferedInputStream; import java.io.Closeable; @@ -30,11 +30,12 @@ import java.nio.channels.FileChannel; import java.nio.channels.FileLock; import java.nio.file.Files; import java.nio.file.Path; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Random; -import org.apache.commons.codec.digest.DigestUtils; import org.slf4j.Logger; @@ -99,7 +100,7 @@ public class FileUtils { * * @param file * @param logger - * @return + * @return */ public static boolean deleteFile(final File file, final Logger logger) { return FileUtils.deleteFile(file, logger, 1); @@ -116,7 +117,7 @@ public class FileUtils { * @return true if given file no longer exists */ public static boolean deleteFile(final File file, final Logger logger, final int attempts) { - if(file == null){ + if (file == null) { return false; } boolean isGone = false; @@ -601,12 +602,22 @@ public class FileUtils { * @throws IOException if the MD5 hash could not be computed */ public static byte[] computeMd5Digest(final File file) throws IOException { - BufferedInputStream bis = null; + final MessageDigest digest; try { - bis = new BufferedInputStream(new FileInputStream(file)); - return DigestUtils.md5(bis); - } finally { - FileUtils.closeQuietly(bis); + digest = MessageDigest.getInstance("MD5"); + } catch (final NoSuchAlgorithmException nsae) { + throw new IOException(nsae); } + + try (final FileInputStream fis = new FileInputStream(file)) { + int len; + final byte[] buffer = new byte[8192]; + while ((len = fis.read(buffer)) > -1) { + if (len > 0) { + digest.update(buffer, 0, len); + } + } + } + return digest.digest(); } } diff --git a/commons/nifi-utils/src/main/java/org/apache/nifi/io/CompoundUpdateMonitor.java b/commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/CompoundUpdateMonitor.java similarity index 98% rename from commons/nifi-utils/src/main/java/org/apache/nifi/io/CompoundUpdateMonitor.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/CompoundUpdateMonitor.java index e22032bf6e..6f9c61664a 100644 --- a/commons/nifi-utils/src/main/java/org/apache/nifi/io/CompoundUpdateMonitor.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/CompoundUpdateMonitor.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.util.file.monitor; import java.io.IOException; import java.nio.file.Path; diff --git a/commons/nifi-utils/src/main/java/org/apache/nifi/io/LastModifiedMonitor.java b/commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/LastModifiedMonitor.java similarity index 96% rename from commons/nifi-utils/src/main/java/org/apache/nifi/io/LastModifiedMonitor.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/LastModifiedMonitor.java index f4464652e9..e6be55827d 100644 --- a/commons/nifi-utils/src/main/java/org/apache/nifi/io/LastModifiedMonitor.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/LastModifiedMonitor.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.util.file.monitor; import java.io.IOException; import java.nio.file.Files; diff --git a/commons/nifi-utils/src/main/java/org/apache/nifi/io/MD5SumMonitor.java b/commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/MD5SumMonitor.java similarity index 89% rename from commons/nifi-utils/src/main/java/org/apache/nifi/io/MD5SumMonitor.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/MD5SumMonitor.java index 1326c2aad5..8dea4bf46a 100644 --- a/commons/nifi-utils/src/main/java/org/apache/nifi/io/MD5SumMonitor.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/MD5SumMonitor.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.util.file.monitor; import java.io.FileInputStream; import java.io.IOException; @@ -37,8 +37,10 @@ public class MD5SumMonitor implements UpdateMonitor { try (final FileInputStream fis = new FileInputStream(path.toFile())) { int len; final byte[] buffer = new byte[8192]; - while ((len = fis.read(buffer)) > 0) { - digest.update(buffer, 0, len); + while ((len = fis.read(buffer)) > -1) { + if (len > 0) { + digest.update(buffer, 0, len); + } } } diff --git a/commons/nifi-utils/src/main/java/org/apache/nifi/io/SynchronousFileWatcher.java b/commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/SynchronousFileWatcher.java similarity index 98% rename from commons/nifi-utils/src/main/java/org/apache/nifi/io/SynchronousFileWatcher.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/SynchronousFileWatcher.java index 785f1ace27..e0089c196b 100644 --- a/commons/nifi-utils/src/main/java/org/apache/nifi/io/SynchronousFileWatcher.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/SynchronousFileWatcher.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.util.file.monitor; import java.io.IOException; import java.nio.file.Path; diff --git a/commons/nifi-utils/src/main/java/org/apache/nifi/io/UpdateMonitor.java b/commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/UpdateMonitor.java similarity index 95% rename from commons/nifi-utils/src/main/java/org/apache/nifi/io/UpdateMonitor.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/UpdateMonitor.java index 33fb444242..20ed1dded1 100644 --- a/commons/nifi-utils/src/main/java/org/apache/nifi/io/UpdateMonitor.java +++ b/commons/nifi-utils/src/main/java/org/apache/nifi/util/file/monitor/UpdateMonitor.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.util.file.monitor; import java.io.IOException; import java.nio.file.Path; diff --git a/commons/search-utils/src/main/java/org/apache/nifi/util/search/Search.java b/commons/nifi-utils/src/main/java/org/apache/nifi/util/search/Search.java similarity index 100% rename from commons/search-utils/src/main/java/org/apache/nifi/util/search/Search.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/util/search/Search.java diff --git a/commons/search-utils/src/main/java/org/apache/nifi/util/search/SearchTerm.java b/commons/nifi-utils/src/main/java/org/apache/nifi/util/search/SearchTerm.java similarity index 100% rename from commons/search-utils/src/main/java/org/apache/nifi/util/search/SearchTerm.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/util/search/SearchTerm.java diff --git a/commons/search-utils/src/main/java/org/apache/nifi/util/search/ahocorasick/AhoCorasick.java b/commons/nifi-utils/src/main/java/org/apache/nifi/util/search/ahocorasick/AhoCorasick.java similarity index 100% rename from commons/search-utils/src/main/java/org/apache/nifi/util/search/ahocorasick/AhoCorasick.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/util/search/ahocorasick/AhoCorasick.java diff --git a/commons/search-utils/src/main/java/org/apache/nifi/util/search/ahocorasick/Node.java b/commons/nifi-utils/src/main/java/org/apache/nifi/util/search/ahocorasick/Node.java similarity index 100% rename from commons/search-utils/src/main/java/org/apache/nifi/util/search/ahocorasick/Node.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/util/search/ahocorasick/Node.java diff --git a/commons/search-utils/src/main/java/org/apache/nifi/util/search/ahocorasick/SearchState.java b/commons/nifi-utils/src/main/java/org/apache/nifi/util/search/ahocorasick/SearchState.java similarity index 100% rename from commons/search-utils/src/main/java/org/apache/nifi/util/search/ahocorasick/SearchState.java rename to commons/nifi-utils/src/main/java/org/apache/nifi/util/search/ahocorasick/SearchState.java diff --git a/commons/remote-communications-utils/src/test/java/org/apache/nifi/remote/io/TestCompressionInputOutputStreams.java b/commons/nifi-utils/src/test/java/org/apache/nifi/remote/io/TestCompressionInputOutputStreams.java similarity index 100% rename from commons/remote-communications-utils/src/test/java/org/apache/nifi/remote/io/TestCompressionInputOutputStreams.java rename to commons/nifi-utils/src/test/java/org/apache/nifi/remote/io/TestCompressionInputOutputStreams.java diff --git a/commons/nifi-stream-utils/src/test/java/org/apache/nifi/io/TestLeakyBucketThrottler.java b/commons/nifi-utils/src/test/java/org/apache/nifi/stream/io/TestLeakyBucketThrottler.java similarity index 96% rename from commons/nifi-stream-utils/src/test/java/org/apache/nifi/io/TestLeakyBucketThrottler.java rename to commons/nifi-utils/src/test/java/org/apache/nifi/stream/io/TestLeakyBucketThrottler.java index 12e1801b25..52bd8dee49 100644 --- a/commons/nifi-stream-utils/src/test/java/org/apache/nifi/io/TestLeakyBucketThrottler.java +++ b/commons/nifi-utils/src/test/java/org/apache/nifi/stream/io/TestLeakyBucketThrottler.java @@ -14,8 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.io; +package org.apache.nifi.stream.io; +import org.apache.nifi.stream.io.ByteArrayInputStream; +import org.apache.nifi.stream.io.ByteArrayOutputStream; +import org.apache.nifi.stream.io.LeakyBucketStreamThrottler; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; diff --git a/commons/naive-search-ring-buffer/src/test/java/org/apache/nifi/util/TestNaiveSearchRingBuffer.java b/commons/nifi-utils/src/test/java/org/apache/nifi/util/TestNaiveSearchRingBuffer.java similarity index 100% rename from commons/naive-search-ring-buffer/src/test/java/org/apache/nifi/util/TestNaiveSearchRingBuffer.java rename to commons/nifi-utils/src/test/java/org/apache/nifi/util/TestNaiveSearchRingBuffer.java diff --git a/commons/nifi-utils/src/test/java/org/apache/nifi/util/timebuffer/TestCompoundUpdateMonitor.java b/commons/nifi-utils/src/test/java/org/apache/nifi/util/file/monitor/TestCompoundUpdateMonitor.java similarity index 91% rename from commons/nifi-utils/src/test/java/org/apache/nifi/util/timebuffer/TestCompoundUpdateMonitor.java rename to commons/nifi-utils/src/test/java/org/apache/nifi/util/file/monitor/TestCompoundUpdateMonitor.java index c796a96935..f576e94b1e 100644 --- a/commons/nifi-utils/src/test/java/org/apache/nifi/util/timebuffer/TestCompoundUpdateMonitor.java +++ b/commons/nifi-utils/src/test/java/org/apache/nifi/util/file/monitor/TestCompoundUpdateMonitor.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.util.timebuffer; +package org.apache.nifi.util.file.monitor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotSame; @@ -27,10 +27,6 @@ import java.io.OutputStream; import java.nio.file.Path; import java.util.UUID; -import org.apache.nifi.io.CompoundUpdateMonitor; -import org.apache.nifi.io.LastModifiedMonitor; -import org.apache.nifi.io.MD5SumMonitor; -import org.apache.nifi.io.UpdateMonitor; import org.junit.Test; diff --git a/commons/nifi-utils/src/test/java/org/apache/nifi/util/timebuffer/TestSynchronousFileWatcher.java b/commons/nifi-utils/src/test/java/org/apache/nifi/util/file/monitor/TestSynchronousFileWatcher.java similarity index 92% rename from commons/nifi-utils/src/test/java/org/apache/nifi/util/timebuffer/TestSynchronousFileWatcher.java rename to commons/nifi-utils/src/test/java/org/apache/nifi/util/file/monitor/TestSynchronousFileWatcher.java index 4b2c0d587b..7125581b5e 100644 --- a/commons/nifi-utils/src/test/java/org/apache/nifi/util/timebuffer/TestSynchronousFileWatcher.java +++ b/commons/nifi-utils/src/test/java/org/apache/nifi/util/file/monitor/TestSynchronousFileWatcher.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.nifi.util.timebuffer; +package org.apache.nifi.util.file.monitor; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -30,9 +30,6 @@ import java.nio.file.StandardCopyOption; import org.junit.Test; -import org.apache.nifi.io.MD5SumMonitor; -import org.apache.nifi.io.SynchronousFileWatcher; -import org.apache.nifi.io.UpdateMonitor; public class TestSynchronousFileWatcher { diff --git a/commons/nifi-stream-utils/src/test/resources/logback-test.xml b/commons/nifi-utils/src/test/resources/logback-test.xml similarity index 65% rename from commons/nifi-stream-utils/src/test/resources/logback-test.xml rename to commons/nifi-utils/src/test/resources/logback-test.xml index 0f3f60c309..8651d47d8c 100644 --- a/commons/nifi-stream-utils/src/test/resources/logback-test.xml +++ b/commons/nifi-utils/src/test/resources/logback-test.xml @@ -24,25 +24,9 @@ - - - - - - - - - - - - - - + diff --git a/commons/pom.xml b/commons/pom.xml index fc7a1c3ee7..19a7ae0b27 100644 --- a/commons/pom.xml +++ b/commons/pom.xml @@ -29,22 +29,16 @@ NiFi :: Commons Parent - core-flowfile-attributes data-provenance-utils flowfile-packager - naive-search-ring-buffer nifi-expression-language - nifi-file-utils nifi-logging-utils nifi-properties nifi-security-utils nifi-socket-utils - nifi-stream-utils nifi-utils nifi-web-utils processor-utilities - remote-communications-utils - search-utils wali diff --git a/commons/remote-communications-utils/pom.xml b/commons/remote-communications-utils/pom.xml deleted file mode 100644 index 4eb0133d23..0000000000 --- a/commons/remote-communications-utils/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - 4.0.0 - - - org.apache.nifi - nifi-commons-parent - 0.0.1-SNAPSHOT - - - remote-communications-utils - 0.0.1-SNAPSHOT - jar - - remote-communications-utils - diff --git a/commons/search-utils/pom.xml b/commons/search-utils/pom.xml deleted file mode 100644 index 7caacc8a27..0000000000 --- a/commons/search-utils/pom.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - 4.0.0 - - - org.apache.nifi - nifi-commons-parent - 0.0.1-SNAPSHOT - - - nifi-search-utils - 0.0.1-SNAPSHOT - jar - - search-utils - - diff --git a/commons/wali/pom.xml b/commons/wali/pom.xml index 5a06a3f881..347c8ccef3 100644 --- a/commons/wali/pom.xml +++ b/commons/wali/pom.xml @@ -35,7 +35,7 @@ org.apache.nifi - nifi-stream-utils + nifi-utils diff --git a/commons/wali/src/main/java/org/wali/MinimalLockingWriteAheadLog.java b/commons/wali/src/main/java/org/wali/MinimalLockingWriteAheadLog.java index 95cf4da06c..19208d393a 100644 --- a/commons/wali/src/main/java/org/wali/MinimalLockingWriteAheadLog.java +++ b/commons/wali/src/main/java/org/wali/MinimalLockingWriteAheadLog.java @@ -58,8 +58,8 @@ import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.regex.Pattern; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/nar-bundles/framework-bundle/framework/cluster/pom.xml b/nar-bundles/framework-bundle/framework/cluster/pom.xml index 78f4527e0e..67128020c3 100644 --- a/nar-bundles/framework-bundle/framework/cluster/pom.xml +++ b/nar-bundles/framework-bundle/framework/cluster/pom.xml @@ -42,7 +42,7 @@ org.apache.nifi - nifi-file-utils + nifi-utils org.apache.nifi diff --git a/nar-bundles/framework-bundle/framework/cluster/src/main/java/org/apache/nifi/cluster/firewall/impl/FileBasedClusterNodeFirewall.java b/nar-bundles/framework-bundle/framework/cluster/src/main/java/org/apache/nifi/cluster/firewall/impl/FileBasedClusterNodeFirewall.java index bcee661b0c..916ec14655 100644 --- a/nar-bundles/framework-bundle/framework/cluster/src/main/java/org/apache/nifi/cluster/firewall/impl/FileBasedClusterNodeFirewall.java +++ b/nar-bundles/framework-bundle/framework/cluster/src/main/java/org/apache/nifi/cluster/firewall/impl/FileBasedClusterNodeFirewall.java @@ -22,7 +22,7 @@ import java.net.UnknownHostException; import java.util.*; import org.apache.commons.net.util.SubnetUtils; import org.apache.nifi.cluster.firewall.ClusterNodeFirewall; -import org.apache.nifi.file.FileUtils; +import org.apache.nifi.util.file.FileUtils; import org.apache.nifi.logging.NiFiLog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/nar-bundles/framework-bundle/framework/cluster/src/main/java/org/apache/nifi/cluster/flow/impl/DataFlowDaoImpl.java b/nar-bundles/framework-bundle/framework/cluster/src/main/java/org/apache/nifi/cluster/flow/impl/DataFlowDaoImpl.java index 702f081f2d..b7b142b488 100644 --- a/nar-bundles/framework-bundle/framework/cluster/src/main/java/org/apache/nifi/cluster/flow/impl/DataFlowDaoImpl.java +++ b/nar-bundles/framework-bundle/framework/cluster/src/main/java/org/apache/nifi/cluster/flow/impl/DataFlowDaoImpl.java @@ -48,11 +48,11 @@ import org.apache.nifi.cluster.protocol.DataFlow; import org.apache.nifi.cluster.protocol.NodeIdentifier; import org.apache.nifi.cluster.protocol.StandardDataFlow; import org.apache.nifi.cluster.protocol.jaxb.message.NodeIdentifierAdapter; -import org.apache.nifi.file.FileUtils; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.ByteArrayInputStream; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.util.file.FileUtils; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.ByteArrayInputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.NiFiLog; import org.apache.commons.compress.archivers.tar.TarArchiveEntry; diff --git a/nar-bundles/framework-bundle/framework/cluster/src/test/java/org/apache/nifi/cluster/firewall/impl/FileBasedClusterNodeFirewallTest.java b/nar-bundles/framework-bundle/framework/cluster/src/test/java/org/apache/nifi/cluster/firewall/impl/FileBasedClusterNodeFirewallTest.java index 2fcf7ef184..e5db7cac69 100644 --- a/nar-bundles/framework-bundle/framework/cluster/src/test/java/org/apache/nifi/cluster/firewall/impl/FileBasedClusterNodeFirewallTest.java +++ b/nar-bundles/framework-bundle/framework/cluster/src/test/java/org/apache/nifi/cluster/firewall/impl/FileBasedClusterNodeFirewallTest.java @@ -16,10 +16,9 @@ */ package org.apache.nifi.cluster.firewall.impl; -import org.apache.nifi.cluster.firewall.impl.FileBasedClusterNodeFirewall; import java.io.File; import java.io.IOException; -import org.apache.nifi.file.FileUtils; +import org.apache.nifi.util.file.FileUtils; import org.junit.After; import org.junit.Before; import static org.junit.Assert.*; diff --git a/nar-bundles/framework-bundle/framework/core-api/pom.xml b/nar-bundles/framework-bundle/framework/core-api/pom.xml index b163cd0396..63645f358c 100644 --- a/nar-bundles/framework-bundle/framework/core-api/pom.xml +++ b/nar-bundles/framework-bundle/framework/core-api/pom.xml @@ -30,7 +30,7 @@ org.apache.nifi - remote-communications-utils + nifi-utils org.apache.nifi @@ -48,10 +48,6 @@ org.apache.commons commons-lang3 - - org.apache.nifi - nifi-utils - org.quartz-scheduler quartz diff --git a/nar-bundles/framework-bundle/framework/core/pom.xml b/nar-bundles/framework-bundle/framework/core/pom.xml index 1836d32fdb..47b52ea1d5 100644 --- a/nar-bundles/framework-bundle/framework/core/pom.xml +++ b/nar-bundles/framework-bundle/framework/core/pom.xml @@ -40,10 +40,6 @@ org.apache.nifi nifi-utils - - org.apache.nifi - nifi-file-utils - org.apache.nifi nifi-properties @@ -52,10 +48,6 @@ org.apache.nifi site-to-site - - org.apache.nifi - nifi-core-flowfile-attributes - ch.qos.logback logback-classic diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FileSystemSwapManager.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FileSystemSwapManager.java index ad95f8ec6f..4b8d43b66a 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FileSystemSwapManager.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FileSystemSwapManager.java @@ -62,7 +62,7 @@ import org.apache.nifi.controller.repository.claim.ContentClaim; import org.apache.nifi.controller.repository.claim.ContentClaimManager; import org.apache.nifi.engine.FlowEngine; import org.apache.nifi.events.EventReporter; -import org.apache.nifi.io.BufferedOutputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; import org.apache.nifi.processor.QueueSize; import org.apache.nifi.reporting.Severity; import org.apache.nifi.util.FormatUtils; diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowController.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowController.java index 545017abb1..e6d67a0117 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowController.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowController.java @@ -125,7 +125,7 @@ import org.apache.nifi.groups.ProcessGroup; import org.apache.nifi.groups.RemoteProcessGroup; import org.apache.nifi.groups.RemoteProcessGroupPortDescriptor; import org.apache.nifi.groups.StandardProcessGroup; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.LogLevel; import org.apache.nifi.logging.LogRepository; import org.apache.nifi.logging.LogRepositoryFactory; diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowUnmarshaller.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowUnmarshaller.java index fa33b49f4c..42d7f1c15c 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowUnmarshaller.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowUnmarshaller.java @@ -26,7 +26,7 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.apache.nifi.encrypt.StringEncryptor; -import org.apache.nifi.io.ByteArrayInputStream; +import org.apache.nifi.stream.io.ByteArrayInputStream; import org.apache.nifi.web.api.dto.FlowSnippetDTO; import org.apache.nifi.web.api.dto.ProcessGroupDTO; diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/SnippetManager.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/SnippetManager.java index 415472f6c3..3a9662edad 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/SnippetManager.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/SnippetManager.java @@ -25,10 +25,10 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -import org.apache.nifi.io.ByteArrayInputStream; -import org.apache.nifi.io.ByteArrayOutputStream; -import org.apache.nifi.io.DataOutputStream; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.ByteArrayInputStream; +import org.apache.nifi.stream.io.ByteArrayOutputStream; +import org.apache.nifi.stream.io.DataOutputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.persistence.StandardSnippetDeserializer; import org.apache.nifi.persistence.StandardSnippetSerializer; diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/StandardFlowService.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/StandardFlowService.java index 144373733a..d459b0047c 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/StandardFlowService.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/StandardFlowService.java @@ -59,7 +59,7 @@ import org.apache.nifi.cluster.protocol.message.ReconnectionRequestMessage; import org.apache.nifi.cluster.protocol.message.ReconnectionResponseMessage; import org.apache.nifi.engine.FlowEngine; import org.apache.nifi.events.BulletinFactory; -import org.apache.nifi.file.FileUtils; +import org.apache.nifi.util.file.FileUtils; import org.apache.nifi.groups.ProcessGroup; import org.apache.nifi.lifecycle.LifeCycleStartException; import org.apache.nifi.logging.LogLevel; diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java index 17a1702c6d..ffea644ca2 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/StandardFlowSynchronizer.java @@ -52,7 +52,7 @@ import org.apache.nifi.connectable.Size; import org.apache.nifi.controller.exception.ProcessorInstantiationException; import org.apache.nifi.controller.label.Label; import org.apache.nifi.events.BulletinFactory; -import org.apache.nifi.file.FileUtils; +import org.apache.nifi.util.file.FileUtils; import org.apache.nifi.fingerprint.FingerprintException; import org.apache.nifi.fingerprint.FingerprintFactory; import org.apache.nifi.flowfile.FlowFilePrioritizer; diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/TemplateManager.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/TemplateManager.java index 68acc2f14c..aa095d132d 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/TemplateManager.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/TemplateManager.java @@ -42,10 +42,10 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; -import org.apache.nifi.io.ByteArrayInputStream; -import org.apache.nifi.io.ByteArrayOutputStream; -import org.apache.nifi.io.DataOutputStream; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.ByteArrayInputStream; +import org.apache.nifi.stream.io.ByteArrayOutputStream; +import org.apache.nifi.stream.io.DataOutputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.persistence.TemplateDeserializer; import org.apache.nifi.persistence.TemplateSerializer; import org.apache.nifi.web.api.dto.ConnectableDTO; diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java index 5fbbfd5533..a3e24c4bd6 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java @@ -65,8 +65,8 @@ import org.apache.nifi.controller.repository.claim.ContentClaim; import org.apache.nifi.controller.repository.claim.ContentClaimManager; import org.apache.nifi.controller.repository.io.SyncOnCloseOutputStream; import org.apache.nifi.engine.FlowEngine; -import org.apache.nifi.file.FileUtils; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.util.file.FileUtils; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.util.FormatUtils; import org.apache.nifi.util.LongHolder; import org.apache.nifi.util.NiFiProperties; diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/StandardProcessSession.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/StandardProcessSession.java index 60dcdb3f75..3d3e854a28 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/StandardProcessSession.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/StandardProcessSession.java @@ -53,9 +53,9 @@ import org.apache.nifi.controller.repository.io.LimitedInputStream; import org.apache.nifi.controller.repository.io.LongHolder; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.NonCloseableInputStream; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.NonCloseableInputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.processor.DataUnit; import org.apache.nifi.processor.FlowFileFilter; import org.apache.nifi.processor.ProcessSession; diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/VolatileContentRepository.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/VolatileContentRepository.java index e39436e839..8deda3c25d 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/VolatileContentRepository.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/repository/VolatileContentRepository.java @@ -44,8 +44,8 @@ import org.apache.nifi.controller.repository.claim.StandardContentClaim; import org.apache.nifi.controller.repository.io.ArrayManagedOutputStream; import org.apache.nifi.controller.repository.io.MemoryManager; import org.apache.nifi.engine.FlowEngine; -import org.apache.nifi.io.ByteArrayInputStream; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.ByteArrayInputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.processor.DataUnit; import org.apache.nifi.util.NiFiProperties; diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/service/ControllerServiceLoader.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/service/ControllerServiceLoader.java index 5afb239529..42bd55f170 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/service/ControllerServiceLoader.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/service/ControllerServiceLoader.java @@ -36,7 +36,7 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; -import org.apache.nifi.file.FileUtils; +import org.apache.nifi.util.file.FileUtils; import org.apache.nifi.util.DomUtils; import org.apache.commons.logging.Log; diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/persistence/StandardXMLFlowConfigurationDAO.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/persistence/StandardXMLFlowConfigurationDAO.java index cabb2726f9..c11aa72c78 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/persistence/StandardXMLFlowConfigurationDAO.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/persistence/StandardXMLFlowConfigurationDAO.java @@ -57,7 +57,7 @@ import org.apache.nifi.controller.reporting.StandardReportingInitializationConte import org.apache.nifi.controller.service.ControllerServiceLoader; import org.apache.nifi.controller.service.ControllerServiceNode; import org.apache.nifi.encrypt.StringEncryptor; -import org.apache.nifi.file.FileUtils; +import org.apache.nifi.util.file.FileUtils; import org.apache.nifi.nar.NarCloseable; import org.apache.nifi.reporting.InitializationException; import org.apache.nifi.reporting.ReportingInitializationContext; diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/remote/StandardRemoteProcessGroup.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/remote/StandardRemoteProcessGroup.java index d3fb41f412..f214728aac 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/remote/StandardRemoteProcessGroup.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/remote/StandardRemoteProcessGroup.java @@ -72,7 +72,7 @@ import org.apache.nifi.groups.ProcessGroup; import org.apache.nifi.groups.ProcessGroupCounts; import org.apache.nifi.groups.RemoteProcessGroup; import org.apache.nifi.groups.RemoteProcessGroupPortDescriptor; -import org.apache.nifi.io.BufferedOutputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; import org.apache.nifi.remote.exception.BadRequestException; import org.apache.nifi.remote.exception.HandshakeException; import org.apache.nifi.remote.exception.PortNotRunningException; diff --git a/nar-bundles/framework-bundle/framework/core/src/test/java/org/apache/nifi/controller/repository/TestWriteAheadFlowFileRepository.java b/nar-bundles/framework-bundle/framework/core/src/test/java/org/apache/nifi/controller/repository/TestWriteAheadFlowFileRepository.java index 82c052b01a..054ef5ea77 100644 --- a/nar-bundles/framework-bundle/framework/core/src/test/java/org/apache/nifi/controller/repository/TestWriteAheadFlowFileRepository.java +++ b/nar-bundles/framework-bundle/framework/core/src/test/java/org/apache/nifi/controller/repository/TestWriteAheadFlowFileRepository.java @@ -35,7 +35,7 @@ import java.util.List; import org.apache.nifi.connectable.Connection; import org.apache.nifi.controller.FlowFileQueue; import org.apache.nifi.controller.repository.claim.StandardContentClaimManager; -import org.apache.nifi.file.FileUtils; +import org.apache.nifi.util.file.FileUtils; import org.junit.Test; import org.mockito.Mockito; diff --git a/nar-bundles/framework-bundle/framework/core/src/test/java/org/apache/nifi/controller/repository/io/TestLimitedOutputStream.java b/nar-bundles/framework-bundle/framework/core/src/test/java/org/apache/nifi/controller/repository/io/TestLimitedOutputStream.java index f13a752b0e..da0c414326 100644 --- a/nar-bundles/framework-bundle/framework/core/src/test/java/org/apache/nifi/controller/repository/io/TestLimitedOutputStream.java +++ b/nar-bundles/framework-bundle/framework/core/src/test/java/org/apache/nifi/controller/repository/io/TestLimitedOutputStream.java @@ -16,13 +16,12 @@ */ package org.apache.nifi.controller.repository.io; -import org.apache.nifi.controller.repository.io.LimitedInputStream; import static org.junit.Assert.assertEquals; import java.io.IOException; import java.io.InputStream; -import org.apache.nifi.io.ByteArrayInputStream; +import org.apache.nifi.stream.io.ByteArrayInputStream; import org.junit.Test; diff --git a/nar-bundles/framework-bundle/framework/file-authorization-provider/pom.xml b/nar-bundles/framework-bundle/framework/file-authorization-provider/pom.xml index cb01488466..c96f739e3f 100644 --- a/nar-bundles/framework-bundle/framework/file-authorization-provider/pom.xml +++ b/nar-bundles/framework-bundle/framework/file-authorization-provider/pom.xml @@ -62,7 +62,7 @@ org.apache.nifi - nifi-file-utils + nifi-utils org.apache.nifi diff --git a/nar-bundles/framework-bundle/framework/file-authorization-provider/src/main/java/org/apache/nifi/authorization/FileAuthorizationProvider.java b/nar-bundles/framework-bundle/framework/file-authorization-provider/src/main/java/org/apache/nifi/authorization/FileAuthorizationProvider.java index 0f4a75c3ef..beedd8eda3 100644 --- a/nar-bundles/framework-bundle/framework/file-authorization-provider/src/main/java/org/apache/nifi/authorization/FileAuthorizationProvider.java +++ b/nar-bundles/framework-bundle/framework/file-authorization-provider/src/main/java/org/apache/nifi/authorization/FileAuthorizationProvider.java @@ -36,7 +36,7 @@ import org.apache.nifi.authorization.exception.AuthorityAccessException; import org.apache.nifi.authorization.exception.IdentityAlreadyExistsException; import org.apache.nifi.authorization.exception.ProviderCreationException; import org.apache.nifi.authorization.exception.UnknownIdentityException; -import org.apache.nifi.file.FileUtils; +import org.apache.nifi.util.file.FileUtils; import org.apache.nifi.user.generated.ObjectFactory; import org.apache.nifi.user.generated.Role; import org.apache.nifi.user.generated.User; diff --git a/nar-bundles/framework-bundle/framework/file-authorization-provider/src/test/java/org/apache/nifi/authorization/FileAuthorizationProviderTest.java b/nar-bundles/framework-bundle/framework/file-authorization-provider/src/test/java/org/apache/nifi/authorization/FileAuthorizationProviderTest.java index 3d0196dbe1..d02d4d7919 100644 --- a/nar-bundles/framework-bundle/framework/file-authorization-provider/src/test/java/org/apache/nifi/authorization/FileAuthorizationProviderTest.java +++ b/nar-bundles/framework-bundle/framework/file-authorization-provider/src/test/java/org/apache/nifi/authorization/FileAuthorizationProviderTest.java @@ -20,7 +20,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache.nifi.authorization.exception.ProviderCreationException; -import org.apache.nifi.file.FileUtils; +import org.apache.nifi.util.file.FileUtils; import org.apache.nifi.util.NiFiProperties; import org.junit.After; import org.junit.Before; diff --git a/nar-bundles/framework-bundle/framework/site-to-site/pom.xml b/nar-bundles/framework-bundle/framework/site-to-site/pom.xml index 30cd325f61..81a9146cfc 100644 --- a/nar-bundles/framework-bundle/framework/site-to-site/pom.xml +++ b/nar-bundles/framework-bundle/framework/site-to-site/pom.xml @@ -29,10 +29,6 @@ org.apache.nifi nifi-security - - org.apache.nifi - nifi-core-flowfile-attributes - org.apache.nifi nifi-administration @@ -49,10 +45,6 @@ org.apache.nifi core-api - - org.apache.nifi - nifi-stream-utils - com.sun.jersey jersey-client @@ -73,10 +65,6 @@ org.apache.httpcomponents httpclient - - org.apache.nifi - remote-communications-utils - org.mockito mockito-core diff --git a/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/codec/StandardFlowFileCodec.java b/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/codec/StandardFlowFileCodec.java index 59feb181b4..d18a4ee9f2 100644 --- a/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/codec/StandardFlowFileCodec.java +++ b/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/codec/StandardFlowFileCodec.java @@ -27,7 +27,7 @@ import java.util.List; import java.util.Map; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.processor.ProcessSession; import org.apache.nifi.processor.io.InputStreamCallback; import org.apache.nifi.processor.io.OutputStreamCallback; diff --git a/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelInput.java b/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelInput.java index de27343a30..9e451fdd5c 100644 --- a/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelInput.java +++ b/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelInput.java @@ -20,8 +20,8 @@ import java.io.IOException; import java.io.InputStream; import java.nio.channels.SocketChannel; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.ByteCountingInputStream; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.ByteCountingInputStream; import org.apache.nifi.remote.io.InterruptableInputStream; import org.apache.nifi.remote.protocol.CommunicationsInput; diff --git a/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelOutput.java b/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelOutput.java index 80c338c8c6..26c01649b4 100644 --- a/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelOutput.java +++ b/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/SocketChannelOutput.java @@ -20,8 +20,8 @@ import java.io.IOException; import java.io.OutputStream; import java.nio.channels.SocketChannel; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.ByteCountingOutputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.ByteCountingOutputStream; import org.apache.nifi.remote.io.InterruptableOutputStream; import org.apache.nifi.remote.protocol.CommunicationsOutput; diff --git a/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelInput.java b/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelInput.java index f7f5bf941f..60ef33f24e 100644 --- a/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelInput.java +++ b/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelInput.java @@ -19,8 +19,8 @@ package org.apache.nifi.remote.io.socket.ssl; import java.io.IOException; import java.io.InputStream; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.ByteCountingInputStream; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.ByteCountingInputStream; import org.apache.nifi.remote.protocol.CommunicationsInput; public class SSLSocketChannelInput implements CommunicationsInput { diff --git a/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelOutput.java b/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelOutput.java index 76d714a07a..dc3d68fbbd 100644 --- a/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelOutput.java +++ b/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/io/socket/ssl/SSLSocketChannelOutput.java @@ -19,8 +19,8 @@ package org.apache.nifi.remote.io.socket.ssl; import java.io.IOException; import java.io.OutputStream; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.ByteCountingOutputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.ByteCountingOutputStream; import org.apache.nifi.remote.protocol.CommunicationsOutput; public class SSLSocketChannelOutput implements CommunicationsOutput { diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProvenanceResource.java b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProvenanceResource.java index 50bfbeb073..2da78286d1 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProvenanceResource.java +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProvenanceResource.java @@ -54,7 +54,7 @@ import org.apache.nifi.cluster.manager.impl.WebClusterManager; import org.apache.nifi.cluster.node.Node; import org.apache.nifi.cluster.protocol.NodeIdentifier; import org.apache.nifi.controller.repository.claim.ContentDirection; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.util.NiFiProperties; import org.apache.nifi.web.NiFiServiceFacade; import static org.apache.nifi.web.api.ApplicationResource.CLIENT_ID; diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/util/ClientResponseUtils.java b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/util/ClientResponseUtils.java index 70ea7d604e..6a587aa71c 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/util/ClientResponseUtils.java +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/util/ClientResponseUtils.java @@ -19,7 +19,7 @@ package org.apache.nifi.web.util; import com.sun.jersey.api.client.ClientResponse; import java.io.BufferedInputStream; import java.io.IOException; -import org.apache.nifi.io.NullOutputStream; +import org.apache.nifi.stream.io.NullOutputStream; import org.apache.nifi.logging.NiFiLog; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; diff --git a/nar-bundles/hadoop-bundle/hdfs-processors/pom.xml b/nar-bundles/hadoop-bundle/hdfs-processors/pom.xml index 9a4bf2b06e..0325535ad0 100644 --- a/nar-bundles/hadoop-bundle/hdfs-processors/pom.xml +++ b/nar-bundles/hadoop-bundle/hdfs-processors/pom.xml @@ -32,7 +32,7 @@ org.apache.nifi - nifi-core-flowfile-attributes + nifi-utils org.apache.nifi @@ -42,10 +42,6 @@ org.apache.nifi flowfile-packager - - org.apache.nifi - nifi-stream-utils - org.apache.hadoop hadoop-common diff --git a/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/FlowFileStreamUnpackerSequenceFileWriter.java b/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/FlowFileStreamUnpackerSequenceFileWriter.java index 28386d875e..d3fb97fab1 100644 --- a/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/FlowFileStreamUnpackerSequenceFileWriter.java +++ b/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/FlowFileStreamUnpackerSequenceFileWriter.java @@ -25,7 +25,7 @@ import java.util.Map; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedInputStream; import org.apache.nifi.processors.hadoop.util.InputStreamWritable; import org.apache.nifi.util.FlowFilePackagerV3; diff --git a/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/PutHDFS.java b/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/PutHDFS.java index be4ebacf54..5768da0d87 100644 --- a/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/PutHDFS.java +++ b/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/PutHDFS.java @@ -33,8 +33,8 @@ import org.apache.nifi.components.ValidationResult; import org.apache.nifi.components.Validator; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.processor.DataUnit; import org.apache.nifi.processor.ProcessContext; import org.apache.nifi.processor.ProcessSession; diff --git a/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/SequenceFileWriterImpl.java b/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/SequenceFileWriterImpl.java index 6eaad9f146..4bb9ca9054 100644 --- a/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/SequenceFileWriterImpl.java +++ b/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/SequenceFileWriterImpl.java @@ -23,7 +23,7 @@ import java.io.UnsupportedEncodingException; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedInputStream; import org.apache.nifi.processor.ProcessSession; import org.apache.nifi.processor.io.StreamCallback; import org.apache.nifi.processors.hadoop.util.ByteFilteringOutputStream; diff --git a/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/TarUnpackerSequenceFileWriter.java b/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/TarUnpackerSequenceFileWriter.java index 2131eb868c..82e1de2d73 100644 --- a/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/TarUnpackerSequenceFileWriter.java +++ b/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/TarUnpackerSequenceFileWriter.java @@ -20,7 +20,7 @@ import java.io.IOException; import java.io.InputStream; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedInputStream; import org.apache.nifi.processors.hadoop.util.InputStreamWritable; import org.apache.commons.compress.archivers.tar.TarArchiveEntry; diff --git a/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/ZipUnpackerSequenceFileWriter.java b/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/ZipUnpackerSequenceFileWriter.java index 476ceb3234..c986e9aed9 100644 --- a/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/ZipUnpackerSequenceFileWriter.java +++ b/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/ZipUnpackerSequenceFileWriter.java @@ -23,7 +23,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedInputStream; import org.apache.nifi.processors.hadoop.util.InputStreamWritable; import org.apache.hadoop.io.SequenceFile.Writer; diff --git a/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/util/OutputStreamWritable.java b/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/util/OutputStreamWritable.java index 9773eb7ba0..62fdc3512e 100644 --- a/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/util/OutputStreamWritable.java +++ b/nar-bundles/hadoop-bundle/hdfs-processors/src/main/java/org/apache/nifi/processors/hadoop/util/OutputStreamWritable.java @@ -21,8 +21,8 @@ import java.io.DataOutput; import java.io.IOException; import java.io.OutputStream; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.DataOutputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.DataOutputStream; import org.apache.hadoop.io.DataInputBuffer; import org.apache.hadoop.io.Writable; diff --git a/nar-bundles/monitor-threshold-bundle/processor/pom.xml b/nar-bundles/monitor-threshold-bundle/processor/pom.xml index ad3b014a0f..256f8787dc 100644 --- a/nar-bundles/monitor-threshold-bundle/processor/pom.xml +++ b/nar-bundles/monitor-threshold-bundle/processor/pom.xml @@ -32,14 +32,6 @@ org.apache.nifi nifi-utils - - org.apache.nifi - nifi-file-utils - - - org.apache.nifi - nifi-stream-utils - org.apache.nifi nifi-processor-utils diff --git a/nar-bundles/monitor-threshold-bundle/processor/src/main/java/org/apache/nifi/processors/monitor/MonitorThreshold.java b/nar-bundles/monitor-threshold-bundle/processor/src/main/java/org/apache/nifi/processors/monitor/MonitorThreshold.java index 7373380acb..ec071083a0 100644 --- a/nar-bundles/monitor-threshold-bundle/processor/src/main/java/org/apache/nifi/processors/monitor/MonitorThreshold.java +++ b/nar-bundles/monitor-threshold-bundle/processor/src/main/java/org/apache/nifi/processors/monitor/MonitorThreshold.java @@ -42,7 +42,7 @@ import java.util.regex.Pattern; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.components.ValidationContext; import org.apache.nifi.components.ValidationResult; -import org.apache.nifi.file.FileUtils; +import org.apache.nifi.util.file.FileUtils; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; diff --git a/nar-bundles/monitor-threshold-bundle/ui/pom.xml b/nar-bundles/monitor-threshold-bundle/ui/pom.xml index 645e4d63f5..af63349bf4 100644 --- a/nar-bundles/monitor-threshold-bundle/ui/pom.xml +++ b/nar-bundles/monitor-threshold-bundle/ui/pom.xml @@ -123,7 +123,7 @@ org.apache.nifi - nifi-file-utils + nifi-utils org.apache.nifi diff --git a/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/pom.xml b/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/pom.xml index 12e06e51fd..ad5cee39d9 100644 --- a/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/pom.xml +++ b/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/pom.xml @@ -35,10 +35,6 @@ org.apache.nifi data-provenance-utils - - org.apache.nifi - nifi-stream-utils - org.apache.nifi nifi-utils @@ -47,10 +43,6 @@ org.apache.nifi nifi-properties - - org.apache.nifi - nifi-core-flowfile-attributes - org.apache.lucene lucene-core diff --git a/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/StandardRecordReader.java b/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/StandardRecordReader.java index a7ae8502d2..5e4744bdbf 100644 --- a/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/StandardRecordReader.java +++ b/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/StandardRecordReader.java @@ -26,8 +26,8 @@ import java.util.Map; import java.util.Set; import java.util.UUID; -import org.apache.nifi.io.ByteCountingInputStream; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.ByteCountingInputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.provenance.serialization.RecordReader; public class StandardRecordReader implements RecordReader { diff --git a/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/StandardRecordWriter.java b/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/StandardRecordWriter.java index a70af9be50..df93084669 100644 --- a/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/StandardRecordWriter.java +++ b/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/StandardRecordWriter.java @@ -25,9 +25,9 @@ import java.util.UUID; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.ByteCountingOutputStream; -import org.apache.nifi.io.DataOutputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.ByteCountingOutputStream; +import org.apache.nifi.stream.io.DataOutputStream; import org.apache.nifi.provenance.serialization.RecordWriter; public class StandardRecordWriter implements RecordWriter { diff --git a/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/rollover/CompressionAction.java b/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/rollover/CompressionAction.java index 0f5e9ce91c..d014618fdf 100644 --- a/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/rollover/CompressionAction.java +++ b/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/rollover/CompressionAction.java @@ -22,8 +22,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; -import org.apache.nifi.io.GZIPOutputStream; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.GZIPOutputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.provenance.lucene.IndexingAction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/serialization/RecordReaders.java b/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/serialization/RecordReaders.java index 198e0187a5..f902b9275f 100644 --- a/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/serialization/RecordReaders.java +++ b/nar-bundles/persistent-provenance-repository-bundle/persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/serialization/RecordReaders.java @@ -26,7 +26,7 @@ import java.nio.file.Path; import java.util.Collection; import java.util.zip.GZIPInputStream; -import org.apache.nifi.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedInputStream; import org.apache.nifi.provenance.StandardRecordReader; import org.apache.nifi.provenance.lucene.LuceneUtil; diff --git a/nar-bundles/standard-bundle/jms-processors/pom.xml b/nar-bundles/standard-bundle/jms-processors/pom.xml index 7dae21d15f..7cc7b17ea8 100644 --- a/nar-bundles/standard-bundle/jms-processors/pom.xml +++ b/nar-bundles/standard-bundle/jms-processors/pom.xml @@ -36,7 +36,7 @@ org.apache.nifi - nifi-stream-utils + nifi-utils javax.jms diff --git a/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/JmsConsumer.java b/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/JmsConsumer.java index 29e62c6b10..24756c497c 100644 --- a/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/JmsConsumer.java +++ b/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/JmsConsumer.java @@ -45,7 +45,7 @@ import javax.jms.MessageConsumer; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.BufferedOutputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/PutJMS.java b/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/PutJMS.java index 3aae5cdf49..062423897b 100644 --- a/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/PutJMS.java +++ b/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/PutJMS.java @@ -71,7 +71,7 @@ import javax.jms.StreamMessage; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.DataUnit; diff --git a/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/util/JmsFactory.java b/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/util/JmsFactory.java index 1f492e8e34..9a8da62f97 100644 --- a/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/util/JmsFactory.java +++ b/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/util/JmsFactory.java @@ -60,7 +60,7 @@ import javax.jms.StreamMessage; import javax.jms.TextMessage; import javax.jms.Topic; -import org.apache.nifi.io.ByteArrayOutputStream; +import org.apache.nifi.stream.io.ByteArrayOutputStream; import org.apache.nifi.processor.ProcessContext; import org.apache.activemq.ActiveMQConnectionFactory; diff --git a/nar-bundles/standard-bundle/standard-processors/pom.xml b/nar-bundles/standard-bundle/standard-processors/pom.xml index 6e08598aad..f4cd2a0046 100644 --- a/nar-bundles/standard-bundle/standard-processors/pom.xml +++ b/nar-bundles/standard-bundle/standard-processors/pom.xml @@ -37,11 +37,7 @@ org.apache.nifi - nifi-stream-utils - - - org.apache.nifi - nifi-core-flowfile-attributes + nifi-utils org.apache.nifi @@ -51,14 +47,6 @@ org.apache.nifi flowfile-packager - - org.apache.nifi - naive-search-ring-buffer - - - org.apache.nifi - nifi-search-utils - org.apache.nifi distributed-cache-client-service-api diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/CompressContent.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/CompressContent.java index bc0d230bff..21dfe9364e 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/CompressContent.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/CompressContent.java @@ -35,9 +35,9 @@ import lzma.streams.LzmaOutputStream; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.GZIPOutputStream; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.GZIPOutputStream; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EncryptContent.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EncryptContent.java index 861b51508c..eb079bba06 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EncryptContent.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EncryptContent.java @@ -23,7 +23,7 @@ import org.apache.nifi.processor.ProcessSession; import org.apache.nifi.processor.Relationship; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.annotation.CapabilityDescription; import org.apache.nifi.processor.annotation.EventDriven; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateRegularExpression.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateRegularExpression.java index 704ec33f0e..7697d06657 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateRegularExpression.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateRegularExpression.java @@ -31,7 +31,7 @@ import java.util.regex.Pattern; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.DataUnit; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXPath.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXPath.java index 2f3f34bf11..a1fc86d000 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXPath.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXPath.java @@ -57,8 +57,8 @@ import org.apache.nifi.components.ValidationContext; import org.apache.nifi.components.ValidationResult; import org.apache.nifi.components.Validator; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXQuery.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXQuery.java index d3c13470cc..8b4ce09bc6 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXQuery.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXQuery.java @@ -54,8 +54,8 @@ import org.apache.nifi.components.ValidationContext; import org.apache.nifi.components.ValidationResult; import org.apache.nifi.components.Validator; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ExecuteStreamCommand.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ExecuteStreamCommand.java index f430199e6b..ab0b2aa262 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ExecuteStreamCommand.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ExecuteStreamCommand.java @@ -37,9 +37,9 @@ import org.apache.nifi.components.ValidationResult; import org.apache.nifi.components.Validator; import org.apache.nifi.expression.AttributeExpression.ResultType; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/HashContent.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/HashContent.java index d6e454e040..bb715891f2 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/HashContent.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/HashContent.java @@ -30,8 +30,8 @@ import java.util.Set; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.NullOutputStream; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.NullOutputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ListenHTTP.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ListenHTTP.java index 23786ab510..5e7ce56e03 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ListenHTTP.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ListenHTTP.java @@ -33,8 +33,8 @@ import javax.ws.rs.Path; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.LeakyBucketStreamThrottler; -import org.apache.nifi.io.StreamThrottler; +import org.apache.nifi.stream.io.LeakyBucketStreamThrottler; +import org.apache.nifi.stream.io.StreamThrottler; import org.apache.nifi.processor.AbstractSessionFactoryProcessor; import org.apache.nifi.processor.DataUnit; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/MergeContent.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/MergeContent.java index 9a932f0954..b6979c6591 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/MergeContent.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/MergeContent.java @@ -46,10 +46,10 @@ import org.apache.nifi.components.ValidationContext; import org.apache.nifi.components.ValidationResult; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.NonCloseableOutputStream; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.NonCloseableOutputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractSessionFactoryProcessor; import org.apache.nifi.processor.DataUnit; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ModifyBytes.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ModifyBytes.java index 473e3bb35f..a8b190d1ef 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ModifyBytes.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ModifyBytes.java @@ -27,7 +27,7 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.DataUnit; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java index 9e87c6862d..14f8a28cf8 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/PostHTTP.java @@ -47,12 +47,12 @@ import org.apache.nifi.components.ValidationContext; import org.apache.nifi.components.ValidationResult; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.GZIPOutputStream; -import org.apache.nifi.io.LeakyBucketStreamThrottler; -import org.apache.nifi.io.StreamThrottler; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.GZIPOutputStream; +import org.apache.nifi.stream.io.LeakyBucketStreamThrottler; +import org.apache.nifi.stream.io.StreamThrottler; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.DataUnit; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/PutFileTransfer.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/PutFileTransfer.java index 9b99df2fc7..31e5105e9d 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/PutFileTransfer.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/PutFileTransfer.java @@ -18,7 +18,7 @@ package org.apache.nifi.processors.standard; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedInputStream; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ReplaceText.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ReplaceText.java index e5e46fdd29..ae5350b50b 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ReplaceText.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ReplaceText.java @@ -28,7 +28,7 @@ import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.components.Validator; import org.apache.nifi.expression.AttributeValueDecorator; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.annotation.CapabilityDescription; import org.apache.nifi.processor.annotation.EventDriven; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ReplaceTextWithMapping.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ReplaceTextWithMapping.java index 0cce0f2b2b..c99935bc1b 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ReplaceTextWithMapping.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ReplaceTextWithMapping.java @@ -44,7 +44,7 @@ import org.apache.nifi.components.ValidationContext; import org.apache.nifi.components.ValidationResult; import org.apache.nifi.expression.AttributeValueDecorator; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.DataUnit; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/RouteOnContent.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/RouteOnContent.java index 7446a0d09e..cb3cff28e7 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/RouteOnContent.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/RouteOnContent.java @@ -32,7 +32,7 @@ import java.util.regex.Pattern; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.expression.AttributeValueDecorator; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.DataUnit; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ScanAttribute.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ScanAttribute.java index 90f3ea1ccb..df13c667f7 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ScanAttribute.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ScanAttribute.java @@ -34,8 +34,8 @@ import java.util.regex.Pattern; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.LastModifiedMonitor; -import org.apache.nifi.io.SynchronousFileWatcher; +import org.apache.nifi.util.file.monitor.LastModifiedMonitor; +import org.apache.nifi.util.file.monitor.SynchronousFileWatcher; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ScanContent.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ScanContent.java index bdf8fa974c..9f534695f7 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ScanContent.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/ScanContent.java @@ -36,9 +36,9 @@ import java.util.concurrent.locks.ReentrantLock; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.LastModifiedMonitor; -import org.apache.nifi.io.SynchronousFileWatcher; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.util.file.monitor.LastModifiedMonitor; +import org.apache.nifi.util.file.monitor.SynchronousFileWatcher; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitContent.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitContent.java index fd8be1707e..7e67c01f41 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitContent.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitContent.java @@ -34,7 +34,7 @@ import org.apache.nifi.components.ValidationResult; import org.apache.nifi.components.Validator; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedInputStream; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitText.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitText.java index 6866c35fc9..8520a55c7c 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitText.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitText.java @@ -19,10 +19,10 @@ package org.apache.nifi.processors.standard; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.ByteArrayOutputStream; -import org.apache.nifi.io.ByteCountingInputStream; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.ByteArrayOutputStream; +import org.apache.nifi.stream.io.ByteCountingInputStream; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitXml.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitXml.java index 5f0993f458..1919dbe4b3 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitXml.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitXml.java @@ -31,7 +31,7 @@ import javax.xml.parsers.SAXParserFactory; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedInputStream; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/TransformXml.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/TransformXml.java index 777479e78d..738591814c 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/TransformXml.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/TransformXml.java @@ -39,7 +39,7 @@ import org.apache.nifi.components.ValidationResult; import org.apache.nifi.components.Validator; import org.apache.nifi.expression.AttributeExpression; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedInputStream; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java index f976bdbe1e..dc6daea3b0 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/UnpackContent.java @@ -33,9 +33,9 @@ import java.util.UUID; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.StreamUtils; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.StreamUtils; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/servlets/ListenHTTPServlet.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/servlets/ListenHTTPServlet.java index d78c139c57..fb52b80734 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/servlets/ListenHTTPServlet.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/servlets/ListenHTTPServlet.java @@ -44,8 +44,8 @@ import javax.ws.rs.core.MediaType; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.BufferedOutputStream; -import org.apache.nifi.io.StreamThrottler; +import org.apache.nifi.stream.io.BufferedOutputStream; +import org.apache.nifi.stream.io.StreamThrottler; import org.apache.nifi.logging.ProcessorLog; import org.apache.nifi.processor.ProcessSession; import org.apache.nifi.processor.ProcessSessionFactory; diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/util/UDPStreamConsumer.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/util/UDPStreamConsumer.java index f0802a8fc7..ad2cca515c 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/util/UDPStreamConsumer.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/util/UDPStreamConsumer.java @@ -28,7 +28,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import org.apache.nifi.flowfile.FlowFile; -import org.apache.nifi.io.BufferedOutputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; import org.apache.nifi.io.nio.BufferPool; import org.apache.nifi.io.nio.consumer.StreamConsumer; import org.apache.nifi.logging.ProcessorLog; diff --git a/nar-bundles/standard-bundle/standard-processors/src/test/java/org/apache/nifi/processors/standard/TestMergeContent.java b/nar-bundles/standard-bundle/standard-processors/src/test/java/org/apache/nifi/processors/standard/TestMergeContent.java index 676b5865e0..d3ad30eccd 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/test/java/org/apache/nifi/processors/standard/TestMergeContent.java +++ b/nar-bundles/standard-bundle/standard-processors/src/test/java/org/apache/nifi/processors/standard/TestMergeContent.java @@ -16,7 +16,6 @@ */ package org.apache.nifi.processors.standard; -import org.apache.nifi.processors.standard.MergeContent; import static org.junit.Assert.assertEquals; import java.io.IOException; @@ -32,7 +31,7 @@ import java.util.Set; import java.util.zip.ZipInputStream; import org.apache.nifi.flowfile.attributes.CoreAttributes; -import org.apache.nifi.io.ByteArrayInputStream; +import org.apache.nifi.stream.io.ByteArrayInputStream; import org.apache.nifi.util.MockFlowFile; import org.apache.nifi.util.TestRunner; import org.apache.nifi.util.TestRunners; diff --git a/nar-bundles/standard-bundle/standard-processors/src/test/java/org/apache/nifi/processors/standard/TestScanContent.java b/nar-bundles/standard-bundle/standard-processors/src/test/java/org/apache/nifi/processors/standard/TestScanContent.java index 9079f82101..8c368457f4 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/test/java/org/apache/nifi/processors/standard/TestScanContent.java +++ b/nar-bundles/standard-bundle/standard-processors/src/test/java/org/apache/nifi/processors/standard/TestScanContent.java @@ -23,10 +23,8 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; -import org.apache.nifi.io.ByteArrayOutputStream; +import org.apache.nifi.stream.io.ByteArrayOutputStream; import org.apache.nifi.util.MockFlowFile; import org.apache.nifi.util.TestRunner; import org.apache.nifi.util.TestRunners; diff --git a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/pom.xml b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/pom.xml index a251393f86..22d7c5bd9c 100644 --- a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/pom.xml +++ b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/pom.xml @@ -40,17 +40,13 @@ org.apache.nifi distributed-cache-protocol - - org.apache.nifi - remote-communications-utils - org.apache.nifi nifi-processor-utils org.apache.nifi - nifi-stream-utils + nifi-utils org.apache.nifi diff --git a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/DistributedMapCacheClientService.java b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/DistributedMapCacheClientService.java index 4a67864319..a0998f63b7 100644 --- a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/DistributedMapCacheClientService.java +++ b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/DistributedMapCacheClientService.java @@ -30,8 +30,8 @@ import org.apache.nifi.controller.ConfigurationContext; import org.apache.nifi.controller.annotation.OnConfigured; import org.apache.nifi.distributed.cache.protocol.ProtocolHandshake; import org.apache.nifi.distributed.cache.protocol.exception.HandshakeException; -import org.apache.nifi.io.ByteArrayOutputStream; -import org.apache.nifi.io.DataOutputStream; +import org.apache.nifi.stream.io.ByteArrayOutputStream; +import org.apache.nifi.stream.io.DataOutputStream; import org.apache.nifi.processor.util.StandardValidators; import org.apache.nifi.remote.StandardVersionNegotiator; import org.apache.nifi.remote.VersionNegotiator; diff --git a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/DistributedSetCacheClientService.java b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/DistributedSetCacheClientService.java index c5882494e7..e58e972a66 100644 --- a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/DistributedSetCacheClientService.java +++ b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/DistributedSetCacheClientService.java @@ -30,8 +30,8 @@ import org.apache.nifi.controller.ConfigurationContext; import org.apache.nifi.controller.annotation.OnConfigured; import org.apache.nifi.distributed.cache.protocol.ProtocolHandshake; import org.apache.nifi.distributed.cache.protocol.exception.HandshakeException; -import org.apache.nifi.io.ByteArrayOutputStream; -import org.apache.nifi.io.DataOutputStream; +import org.apache.nifi.stream.io.ByteArrayOutputStream; +import org.apache.nifi.stream.io.DataOutputStream; import org.apache.nifi.processor.util.StandardValidators; import org.apache.nifi.remote.StandardVersionNegotiator; import org.apache.nifi.remote.VersionNegotiator; diff --git a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/SSLCommsSession.java b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/SSLCommsSession.java index c8be082fac..9b4b656063 100644 --- a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/SSLCommsSession.java +++ b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/SSLCommsSession.java @@ -23,8 +23,8 @@ import java.util.concurrent.TimeUnit; import javax.net.ssl.SSLContext; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; import org.apache.nifi.remote.io.socket.ssl.SSLSocketChannel; import org.apache.nifi.remote.io.socket.ssl.SSLSocketChannelInputStream; import org.apache.nifi.remote.io.socket.ssl.SSLSocketChannelOutputStream; diff --git a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/StandardCommsSession.java b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/StandardCommsSession.java index bbe2917e9f..1f1ff7e48a 100644 --- a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/StandardCommsSession.java +++ b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-client-service/src/main/java/org/apache/nifi/distributed/cache/client/StandardCommsSession.java @@ -25,8 +25,8 @@ import java.util.concurrent.TimeUnit; import javax.net.ssl.SSLContext; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; import org.apache.nifi.remote.io.InterruptableInputStream; import org.apache.nifi.remote.io.InterruptableOutputStream; import org.apache.nifi.remote.io.socket.SocketChannelInputStream; diff --git a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-protocol/pom.xml b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-protocol/pom.xml index f6362616b7..99ba060d09 100644 --- a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-protocol/pom.xml +++ b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-protocol/pom.xml @@ -32,7 +32,7 @@ org.apache.nifi - remote-communications-utils + nifi-utils diff --git a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/pom.xml b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/pom.xml index ca96d82281..0e14a57f3d 100644 --- a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/pom.xml +++ b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/pom.xml @@ -37,16 +37,12 @@ org.apache.nifi - remote-communications-utils + nifi-utils org.apache.nifi nifi-processor-utils - - org.apache.nifi - nifi-stream-utils - org.apache.nifi ssl-context-service-api diff --git a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/src/main/java/org/apache/nifi/distributed/cache/server/AbstractCacheServer.java b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/src/main/java/org/apache/nifi/distributed/cache/server/AbstractCacheServer.java index 9b4e70ef3b..a9643abd9b 100644 --- a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/src/main/java/org/apache/nifi/distributed/cache/server/AbstractCacheServer.java +++ b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/src/main/java/org/apache/nifi/distributed/cache/server/AbstractCacheServer.java @@ -30,8 +30,8 @@ import javax.net.ssl.SSLContext; import org.apache.nifi.distributed.cache.protocol.ProtocolHandshake; import org.apache.nifi.distributed.cache.protocol.exception.HandshakeException; -import org.apache.nifi.io.BufferedInputStream; -import org.apache.nifi.io.BufferedOutputStream; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.nifi.stream.io.BufferedOutputStream; import org.apache.nifi.remote.StandardVersionNegotiator; import org.apache.nifi.remote.VersionNegotiator; import org.apache.nifi.remote.io.socket.SocketChannelInputStream; diff --git a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/src/main/java/org/apache/nifi/distributed/cache/server/SetCacheServer.java b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/src/main/java/org/apache/nifi/distributed/cache/server/SetCacheServer.java index 5d2c0f6248..d0abe5cdcc 100644 --- a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/src/main/java/org/apache/nifi/distributed/cache/server/SetCacheServer.java +++ b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/src/main/java/org/apache/nifi/distributed/cache/server/SetCacheServer.java @@ -29,7 +29,7 @@ import org.apache.nifi.distributed.cache.server.set.PersistentSetCache; import org.apache.nifi.distributed.cache.server.set.SetCache; import org.apache.nifi.distributed.cache.server.set.SetCacheResult; import org.apache.nifi.distributed.cache.server.set.SimpleSetCache; -import org.apache.nifi.io.DataOutputStream; +import org.apache.nifi.stream.io.DataOutputStream; public class SetCacheServer extends AbstractCacheServer { diff --git a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/src/main/java/org/apache/nifi/distributed/cache/server/map/MapCacheServer.java b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/src/main/java/org/apache/nifi/distributed/cache/server/map/MapCacheServer.java index 3e8dd0e248..e4a600e3fe 100644 --- a/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/src/main/java/org/apache/nifi/distributed/cache/server/map/MapCacheServer.java +++ b/nar-bundles/standard-services/distributed-cache-services-bundle/distributed-cache-server/src/main/java/org/apache/nifi/distributed/cache/server/map/MapCacheServer.java @@ -27,7 +27,7 @@ import javax.net.ssl.SSLContext; import org.apache.nifi.distributed.cache.server.AbstractCacheServer; import org.apache.nifi.distributed.cache.server.EvictionPolicy; -import org.apache.nifi.io.DataOutputStream; +import org.apache.nifi.stream.io.DataOutputStream; public class MapCacheServer extends AbstractCacheServer { diff --git a/nar-bundles/update-attribute-bundle/processor/pom.xml b/nar-bundles/update-attribute-bundle/processor/pom.xml index 5167de6ed5..edef6692e1 100644 --- a/nar-bundles/update-attribute-bundle/processor/pom.xml +++ b/nar-bundles/update-attribute-bundle/processor/pom.xml @@ -43,7 +43,7 @@ org.apache.nifi - nifi-core-flowfile-attributes + nifi-utils org.apache.nifi diff --git a/nifi-mock/pom.xml b/nifi-mock/pom.xml index 2bd53c77fb..c79e6dae2c 100644 --- a/nifi-mock/pom.xml +++ b/nifi-mock/pom.xml @@ -39,10 +39,6 @@ org.apache.nifi nifi-expression-language - - org.apache.nifi - nifi-core-flowfile-attributes - org.apache.nifi data-provenance-utils diff --git a/pom.xml b/pom.xml index 2ccdaa943d..e0d9b479a3 100644 --- a/pom.xml +++ b/pom.xml @@ -56,20 +56,20 @@ ${maven.min-version} - commons + commons nifi-api nifi-bootstrap nifi-mock nar-bundles assembly - nifi-docs - + nifi-docs + scm:git:git://git.apache.org/incubator-nifi.git scm:git:https://git-wip-us.apache.org/repos/asf/incubator-nifi.git @@ -645,11 +645,6 @@ nifi-web-utils ${project.version} - - org.apache.nifi - nifi-file-utils - ${project.version} - org.apache.nifi nifi-expression-language @@ -660,26 +655,11 @@ custom-ui-utilities ${project.version} - - org.apache.nifi - nifi-core-flowfile-attributes - ${project.version} - org.apache.nifi flowfile-packager ${project.version} - - org.apache.nifi - naive-search-ring-buffer - ${project.version} - - - org.apache.nifi - nifi-search-utils - ${project.version} - org.apache.nifi nifi-socket-utils @@ -788,11 +768,6 @@ ${project.version} nar - - org.apache.nifi - nifi-stream-utils - ${project.version} - org.apache.nifi nifi-properties @@ -818,11 +793,6 @@ nifi-processor-utils ${project.version} - - org.apache.nifi - remote-communications-utils - ${project.version} - org.apache.nifi nifi-mock From 965e0ab6130246009e5d8b4c1c6c44e189de1b5d Mon Sep 17 00:00:00 2001 From: joewitt Date: Sat, 20 Dec 2014 01:06:46 -0500 Subject: [PATCH 06/41] NIFI-186 disabled code cahce options by default --- .../resources/src/main/resources/conf/bootstrap.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/resources/src/main/resources/conf/bootstrap.conf b/nar-bundles/framework-bundle/framework/resources/src/main/resources/conf/bootstrap.conf index a34fa286d4..79ece96c92 100644 --- a/nar-bundles/framework-bundle/framework/resources/src/main/resources/conf/bootstrap.conf +++ b/nar-bundles/framework-bundle/framework/resources/src/main/resources/conf/bootstrap.conf @@ -29,6 +29,6 @@ java.arg.6=-Djava.protocol.handler.pkgs=sun.net.www.protocol # Java 7 and below have issues with Code Cache. The following lines allow us to run well even with # many classes loaded in the JVM. -java.arg.7=-XX:ReservedCodeCacheSize=256m -java.arg.8=-XX:CodeCacheFlushingMinimumFreeSpace=10m -java.arg.9=-XX:+UseCodeCacheFlushing +#java.arg.7=-XX:ReservedCodeCacheSize=256m +#java.arg.8=-XX:CodeCacheFlushingMinimumFreeSpace=10m +#java.arg.9=-XX:+UseCodeCacheFlushing From 1da5a9c175134b822bac04813673a6536f2546e3 Mon Sep 17 00:00:00 2001 From: joewitt Date: Sat, 20 Dec 2014 12:22:13 -0500 Subject: [PATCH 07/41] NIFI-191 updated readme to reflect export control and added readme to resources for distro --- README.md | 30 +++++++ .../resources/src/main/resources/README | 84 +++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 nar-bundles/framework-bundle/framework/resources/src/main/resources/README diff --git a/README.md b/README.md index 3f051341b5..bc4c008a58 100644 --- a/README.md +++ b/README.md @@ -63,3 +63,33 @@ have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF. + +## Export Control + +This distribution includes cryptographic software. The country in which you +currently reside may have restrictions on the import, possession, use, and/or +re-export to another country, of encryption software. BEFORE using any +encryption software, please check your country's laws, regulations and +policies concerning the import, possession, or use, and re-export of encryption +software, to see if this is permitted. See for more +information. + +The U.S. Government Department of Commerce, Bureau of Industry and Security +(BIS), has classified this software as Export Commodity Control Number (ECCN) +5D002.C.1, which includes information security software using or performing +cryptographic functions with asymmetric algorithms. The form and manner of this +Apache Software Foundation distribution makes it eligible for export under the +License Exception ENC Technology Software Unrestricted (TSU) exception (see the +BIS Export Administration Regulations, Section 740.13) for both object code and +source code. + +The following provides more details on the included cryptographic software: + +Apache NiFi uses BouncyCastle, Jasypt, JCraft Inc., and the built-in +java cryptography libraries for SSL, SSH, and the protection +of sensitive configuration parameters. See +http://bouncycastle.org/about.html +http://www.jasypt.org/faq.html +http://jcraft.com/c-info.html +http://www.oracle.com/us/products/export/export-regulations-345813.html +for more details on each of these libraries cryptography features. diff --git a/nar-bundles/framework-bundle/framework/resources/src/main/resources/README b/nar-bundles/framework-bundle/framework/resources/src/main/resources/README new file mode 100644 index 0000000000..97c4964cbe --- /dev/null +++ b/nar-bundles/framework-bundle/framework/resources/src/main/resources/README @@ -0,0 +1,84 @@ +*********************************************** +Introduction + +Apache NiFi is a dataflow system based on the concepts of flow-based programming. It is currently apart of the Apache Incubator. + +*********************************************** +Features + +Apache NiFi supports powerful and scalable directed graphs of data routing, transformation, and system mediation logic. Some of the high-level capabilities and objectives of Apache NiFi include: + +- Web-based user interface for seamless experience between design, control, feedback, and monitoring of data flows +- Highly configurable along several dimensions of quality of service such as loss tolerant versus guaranteed delivery, low latency versus high throughput, and priority based queuing +- Fine-grained data provenance for all data received, forked, joined, cloned, modified, sent, and ultimately dropped as data reaches its configured end-state +- Component-based extension model along well defined interfaces enabling rapid development and effective testing + +************************************************ +Getting Started + +Execute /bin/nifi.sh start + +************************************************* +Getting Help + +If you have questions, you can reach out to our mailing list: dev@nifi.incubator.apache.org +([archive](http://mail-archives.apache.org/mod_mbox/incubator-nifi-dev)). +We're also often available in IRC: #nifi on +[irc.freenode.net](http://webchat.freenode.net/?channels=#nifi). + +************************************************* +Requirements + +JDK 1.7 or higher + +************************************************* +License and Notices + +See + /LICENSE + /NOTICE + +************************************************** +Disclaimer + +Apache NiFi is an effort undergoing incubation at the Apache Software +Foundation (ASF), sponsored by the Apache Incubator PMC. + +Incubation is required of all newly accepted projects until a further review +indicates that the infrastructure, communications, and decision making process +have stabilized in a manner consistent with other successful ASF projects. + +While incubation status is not necessarily a reflection of the completeness +or stability of the code, it does indicate that the project has yet to be +fully endorsed by the ASF. + +**************************************************** +Export Control + +This distribution includes cryptographic software. The country in which you +currently reside may have restrictions on the import, possession, use, and/or +re-export to another country, of encryption software. BEFORE using any +encryption software, please check your country's laws, regulations and +policies concerning the import, possession, or use, and re-export of encryption +software, to see if this is permitted. See for more +information. + +The U.S. Government Department of Commerce, Bureau of Industry and Security +(BIS), has classified this software as Export Commodity Control Number (ECCN) +5D002.C.1, which includes information security software using or performing +cryptographic functions with asymmetric algorithms. The form and manner of this +Apache Software Foundation distribution makes it eligible for export under the +License Exception ENC Technology Software Unrestricted (TSU) exception (see the +BIS Export Administration Regulations, Section 740.13) for both object code and +source code. + +The following provides more details on the included cryptographic software: + +Apache NiFi uses BouncyCastle, Jasypt, JCraft Inc., and the built-in +java cryptography libraries for SSL, SSH, and the protection +of sensitive configuration parameters. See +http://bouncycastle.org/about.html +http://www.jasypt.org/faq.html +http://jcraft.com/c-info.html +http://www.oracle.com/us/products/export/export-regulations-345813.html +for more details on each of these libraries cryptography features. From a3664a00c8e2ed60b4c159041f8ae3cf108e1840 Mon Sep 17 00:00:00 2001 From: joewitt Date: Sat, 20 Dec 2014 20:42:40 -0500 Subject: [PATCH 08/41] NIFI-192 fixed rpm build, assembly is cleaned up, and references to the license, notice, disclaimer, etc.. are to those at the root only --- README.md | 2 +- assembly/pom.xml | 170 +++++++-------- assembly/src/main/assembly/dependencies.xml | 27 +-- .../resources/src/main/resources/DISCLAIMER | 15 -- .../resources/src/main/resources/LICENSE | 202 ------------------ .../resources/src/main/resources/NOTICE | 7 - .../resources/src/main/resources/README | 84 -------- .../src/main/resources/docs/README.md | 65 ------ 8 files changed, 88 insertions(+), 484 deletions(-) delete mode 100644 nar-bundles/framework-bundle/framework/resources/src/main/resources/DISCLAIMER delete mode 100644 nar-bundles/framework-bundle/framework/resources/src/main/resources/LICENSE delete mode 100644 nar-bundles/framework-bundle/framework/resources/src/main/resources/NOTICE delete mode 100644 nar-bundles/framework-bundle/framework/resources/src/main/resources/README delete mode 100644 nar-bundles/framework-bundle/framework/resources/src/main/resources/docs/README.md diff --git a/README.md b/README.md index bc4c008a58..5fe3cb4a3d 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Apache NiFi supports powerful and scalable directed graphs of data routing, tran ## Getting Started -Execute /bin/nifi.sh +Execute /bin/nifi.sh start ## Getting Help If you have questions, you can reach out to our mailing list: dev@nifi.incubator.apache.org diff --git a/assembly/pom.xml b/assembly/pom.xml index 887086cf6f..45ac535595 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -345,16 +345,10 @@ 5 sec 10 0 sec - - bin - ${project.artifactId}-${project.version}/bin/${project.artifactId} - standard-rpm + rpm false @@ -363,101 +357,91 @@ org.codehaus.mojo rpm-maven-plugin - - - - rpm - - - - ${project.artifactId} - ${project.version} Apache NiFi (incubating) - - Apache Nifi (incubating) is dataflow system - based on the Flow-Based Programming concepts. - - NONE - http://nifi.apache.org + Apache Nifi (incubating) is dataflow system based on the Flow-Based Programming concepts. + Apache License, Version 2.0 and others (see included LICENSE file) + http://nifi.incubator.apache.org Utilities - - jdk - - /opt/${project.artifactId} + /opt/nifi _use_internal_dependency_generator 0 750 640 - nifi - nifi - - - /opt/${project.artifactId}/${project.artifactId}-${project.version} - - - /opt/${project.artifactId}/${project.artifactId}-${project.version}/bin - 750 - - - ${project.build.directory}/generated-resources/bin/nifi - ${project.artifactId} - true - - - ${project.build.directory}/generated-resources/bin/wrapper-linux-x86-32 - - - ${project.build.directory}/generated-resources/bin/wrapper-linux-x86-64 - - - - - /opt/${project.artifactId}/${project.artifactId}-${project.version}/conf - true - - - ${project.build.directory}/generated-resources/conf - - nifi.properties - - true - - - ${project.build.directory}/generated-resources/conf/nifi.properties - ${project.artifactId}.properties - true - - - - - /opt/${project.artifactId}/${project.artifactId}-${project.version}/lib - - - - ${project.build.directory}/generated-resources/lib - - - - - /opt/${project.artifactId}/${project.artifactId}-${project.version}/docs - - - ${project.build.directory}/generated-resources/docs - - - - - /opt/${project.artifactId}/${project.artifactId}-${project.version}/logs - - - ${project.build.directory}/generated-resources/logs - - - - + root + root + + + build-bin-rpm + + attached-rpm + + + bin + + nifi + + + jdk + + + + /opt/nifi/nifi-${project.version} + + + /opt/nifi/nifi-${project.version} + + + ../LICENSE + + + ../NOTICE + + + ../README.md + README + + + + + /opt/nifi/nifi-${project.version}/bin + 750 + + + ${project.build.directory}/generated-resources/bin/nifi.sh + nifi.sh + true + + + + + /opt/nifi/nifi-${project.version}/conf + true + + + ${project.build.directory}/generated-resources/conf + true + + + + + /opt/nifi/nifi-${project.version}/lib + + + + /opt/nifi/nifi-${project.version}/docs + + + ${project.build.directory}/generated-docs + + + + + + + diff --git a/assembly/src/main/assembly/dependencies.xml b/assembly/src/main/assembly/dependencies.xml index 13e5b832c6..4b77a32284 100644 --- a/assembly/src/main/assembly/dependencies.xml +++ b/assembly/src/main/assembly/dependencies.xml @@ -106,38 +106,31 @@ true - ${project.build.directory}/generated-resources/docs/README.md - docs - README.md - 0640 + ../README.md + ./ + README + 0644 true - ${project.build.directory}/generated-resources/DISCLAIMER + ../DISCLAIMER ./ DISCLAIMER - 0640 + 0644 true - ${project.build.directory}/generated-resources/DISCLAIMER - ./ - DISCLAIMER - 0640 - true - - - ${project.build.directory}/generated-resources/LICENSE + ../LICENSE ./ LICENSE - 0640 + 0644 true - ${project.build.directory}/generated-resources/NOTICE + ../NOTICE ./ NOTICE - 0640 + 0644 true diff --git a/nar-bundles/framework-bundle/framework/resources/src/main/resources/DISCLAIMER b/nar-bundles/framework-bundle/framework/resources/src/main/resources/DISCLAIMER deleted file mode 100644 index 0f8e7a1ecc..0000000000 --- a/nar-bundles/framework-bundle/framework/resources/src/main/resources/DISCLAIMER +++ /dev/null @@ -1,15 +0,0 @@ -Apache NiFi is an effort undergoing incubation at the Apache Software -Foundation (ASF), sponsored by the Apache Incubator PMC. - -Incubation is required of all newly accepted projects until a further review -indicates that the infrastructure, communications, and decision making process -have stabilized in a manner consistent with other successful ASF projects. - -While incubation status is not necessarily a reflection of the completeness -or stability of the code, it does indicate that the project has yet to be -fully endorsed by the ASF. - -For more information about the incubation status of the Apache NiFi project -you can go to the following page: - -http://nifi.incubator.apache.org/ diff --git a/nar-bundles/framework-bundle/framework/resources/src/main/resources/LICENSE b/nar-bundles/framework-bundle/framework/resources/src/main/resources/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/nar-bundles/framework-bundle/framework/resources/src/main/resources/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. diff --git a/nar-bundles/framework-bundle/framework/resources/src/main/resources/NOTICE b/nar-bundles/framework-bundle/framework/resources/src/main/resources/NOTICE deleted file mode 100644 index e02ae44d1d..0000000000 --- a/nar-bundles/framework-bundle/framework/resources/src/main/resources/NOTICE +++ /dev/null @@ -1,7 +0,0 @@ -Apache NiFi -Copyright 2014 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -Please see LICENSE for additional copyright and licensing information. diff --git a/nar-bundles/framework-bundle/framework/resources/src/main/resources/README b/nar-bundles/framework-bundle/framework/resources/src/main/resources/README deleted file mode 100644 index 97c4964cbe..0000000000 --- a/nar-bundles/framework-bundle/framework/resources/src/main/resources/README +++ /dev/null @@ -1,84 +0,0 @@ -*********************************************** -Introduction - -Apache NiFi is a dataflow system based on the concepts of flow-based programming. It is currently apart of the Apache Incubator. - -*********************************************** -Features - -Apache NiFi supports powerful and scalable directed graphs of data routing, transformation, and system mediation logic. Some of the high-level capabilities and objectives of Apache NiFi include: - -- Web-based user interface for seamless experience between design, control, feedback, and monitoring of data flows -- Highly configurable along several dimensions of quality of service such as loss tolerant versus guaranteed delivery, low latency versus high throughput, and priority based queuing -- Fine-grained data provenance for all data received, forked, joined, cloned, modified, sent, and ultimately dropped as data reaches its configured end-state -- Component-based extension model along well defined interfaces enabling rapid development and effective testing - -************************************************ -Getting Started - -Execute /bin/nifi.sh start - -************************************************* -Getting Help - -If you have questions, you can reach out to our mailing list: dev@nifi.incubator.apache.org -([archive](http://mail-archives.apache.org/mod_mbox/incubator-nifi-dev)). -We're also often available in IRC: #nifi on -[irc.freenode.net](http://webchat.freenode.net/?channels=#nifi). - -************************************************* -Requirements - -JDK 1.7 or higher - -************************************************* -License and Notices - -See - /LICENSE - /NOTICE - -************************************************** -Disclaimer - -Apache NiFi is an effort undergoing incubation at the Apache Software -Foundation (ASF), sponsored by the Apache Incubator PMC. - -Incubation is required of all newly accepted projects until a further review -indicates that the infrastructure, communications, and decision making process -have stabilized in a manner consistent with other successful ASF projects. - -While incubation status is not necessarily a reflection of the completeness -or stability of the code, it does indicate that the project has yet to be -fully endorsed by the ASF. - -**************************************************** -Export Control - -This distribution includes cryptographic software. The country in which you -currently reside may have restrictions on the import, possession, use, and/or -re-export to another country, of encryption software. BEFORE using any -encryption software, please check your country's laws, regulations and -policies concerning the import, possession, or use, and re-export of encryption -software, to see if this is permitted. See for more -information. - -The U.S. Government Department of Commerce, Bureau of Industry and Security -(BIS), has classified this software as Export Commodity Control Number (ECCN) -5D002.C.1, which includes information security software using or performing -cryptographic functions with asymmetric algorithms. The form and manner of this -Apache Software Foundation distribution makes it eligible for export under the -License Exception ENC Technology Software Unrestricted (TSU) exception (see the -BIS Export Administration Regulations, Section 740.13) for both object code and -source code. - -The following provides more details on the included cryptographic software: - -Apache NiFi uses BouncyCastle, Jasypt, JCraft Inc., and the built-in -java cryptography libraries for SSL, SSH, and the protection -of sensitive configuration parameters. See -http://bouncycastle.org/about.html -http://www.jasypt.org/faq.html -http://jcraft.com/c-info.html -http://www.oracle.com/us/products/export/export-regulations-345813.html -for more details on each of these libraries cryptography features. diff --git a/nar-bundles/framework-bundle/framework/resources/src/main/resources/docs/README.md b/nar-bundles/framework-bundle/framework/resources/src/main/resources/docs/README.md deleted file mode 100644 index 3f051341b5..0000000000 --- a/nar-bundles/framework-bundle/framework/resources/src/main/resources/docs/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Apache NiFi - -Apache NiFi is a dataflow system based on the concepts of flow-based programming. It is currently apart of the Apache Incubator. - -## Table of Contents - -- [Features](#features) -- [Getting Started](#getting-started) -- [Getting Help](#getting-help) -- [Requirements](#requirements) -- [License](#license) -- [Disclaimer](#disclaimer) - -## Features - -Apache NiFi supports powerful and scalable directed graphs of data routing, transformation, and system mediation logic. Some of the high-level capabilities and objectives of Apache NiFi include: - -- Web-based user interface for seamless experience between design, control, feedback, and monitoring of data flows -- Highly configurable along several dimensions of quality of service such as loss tolerant versus guaranteed delivery, low latency versus high throughput, and priority based queuing -- Fine-grained data provenance for all data received, forked, joined, cloned, modified, sent, and ultimately dropped as data reaches its configured end-state -- Component-based extension model along well defined interfaces enabling rapid development and effective testing - -## Getting Started - -Execute /bin/nifi.sh - -## Getting Help -If you have questions, you can reach out to our mailing list: dev@nifi.incubator.apache.org -([archive](http://mail-archives.apache.org/mod_mbox/incubator-nifi-dev)). -We're also often available in IRC: #nifi on -[irc.freenode.net](http://webchat.freenode.net/?channels=#nifi). - - -## Requirements -* JDK 1.7 or higher - -## License - -Except as otherwise noted this software is licensed under the -[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) - -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. - -## Disclaimer - -Apache NiFi is an effort undergoing incubation at the Apache Software -Foundation (ASF), sponsored by the Apache Incubator PMC. - -Incubation is required of all newly accepted projects until a further review -indicates that the infrastructure, communications, and decision making process -have stabilized in a manner consistent with other successful ASF projects. - -While incubation status is not necessarily a reflection of the completeness -or stability of the code, it does indicate that the project has yet to be -fully endorsed by the ASF. From 42f9cfb2d94519fe11c83a7a28ce8ca2bdf896e1 Mon Sep 17 00:00:00 2001 From: joewitt Date: Sat, 20 Dec 2014 21:43:09 -0500 Subject: [PATCH 09/41] NIFI-192 fixed dependency inclusion/exclusion logic for RPM --- assembly/pom.xml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/assembly/pom.xml b/assembly/pom.xml index 45ac535595..7f7f695652 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -383,9 +383,6 @@ nifi - - jdk - /opt/nifi/nifi-${project.version} @@ -428,7 +425,19 @@ /opt/nifi/nifi-${project.version}/lib - + + + org.apache.nifi:nifi-bootstrap + + + + + /opt/nifi/nifi-${project.version}/lib/bootstrap + + + org.apache.nifi:nifi-bootstrap + + /opt/nifi/nifi-${project.version}/docs From 0d8da145bd5e4c152cb9bbefbb1fefaa1a96e790 Mon Sep 17 00:00:00 2001 From: joewitt Date: Sun, 21 Dec 2014 15:14:53 -0500 Subject: [PATCH 10/41] NIFI-183 Updated LICENSE and NOTICE based on thorough analysis of all dependencies. Removed HORNETQ and c3p0 as they are incompatible with ASF licensing policies. --- LICENSE | 384 ++++++++++++++++++ NOTICE | 7 + .../standard-bundle/jms-processors/pom.xml | 4 - .../nifi/processors/jms/util/JmsFactory.java | 28 -- .../processors/jms/util/JmsProperties.java | 3 +- .../index.html | 1 - .../index.html | 1 - .../index.html | 1 - pom.xml | 10 + 9 files changed, 402 insertions(+), 37 deletions(-) diff --git a/LICENSE b/LICENSE index d645695673..37579393e1 100644 --- a/LICENSE +++ b/LICENSE @@ -200,3 +200,387 @@ 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. + +APACHE NIFI SUBCOMPONENTS: + +The Apache NiFi project contains subcomponents with separate copyright +notices and license terms. Your use of the source code for the these +subcomponents is subject to the terms and conditions of the following +licenses. + +The binary distribution of this product bundles 'Antlr 3' which is available +under a "3-clause BSD" license. For details see http://www.antlr3.org/license.html + + Copyright (c) 2010 Terence Parr + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + +The binary distribution of this product bundles 'Paranamer Core' which is +available under a "3-clause BSD" license. +For details see http://paranamer.codehaus.org/paranamer + + Copyright (c) 2006 Paul Hammant & ThoughtWorks Inc + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + +The binary distribution of this product bundles 'xmlenc Library' which is +available under The BSD 2-Clause license found here: +http://www.opensource.org/licenses/bsd-license.php +For details http://xmlenc.sourceforge.net + +The binary distribution of this product bundles 'Protocol Buffer Java API' +which is available under The BSD 2-Clause license found here: +http://www.opensource.org/licenses/bsd-license.php +For details http://code.google.com/p/protobuf + +The binary distribution of this product bundles 'JZlib' which is +available under a "3-clause BSD" license. +For details see http://www.jcraft.com/jzlib/ + + Copyright (c) 2000-2011 ymnk, JCraft,Inc. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the distribution. + + 3. The names of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, + INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The binary distribution of this product bundles 'JSch' which is +available under a "3-clause BSD" license. +For details see http://www.jcraft.com/jsch/ + + Copyright (c) 2002-2014 Atsuhiko Yamanaka, JCraft,Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the distribution. + + 3. The names of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, + INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +This product bundles 'Javascript D3 Library' which is available under a +"3-clause BSD" license. For details see http://d3js.org/ + + Copyright (c) 2010-2014, Michael Bostock + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * The name Michael Bostock may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The binary distribution of this product bundles 'BouncyCastle Provider' +which is available under an MIT style license. +For details see http://www.bouncycastle.org/java.html + + Copyright (c) 2000 - 2013 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org) + + 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. + +The binary distribution of this product bundles 'SLF4J' which is available +under an MIT style license. +For details see http://www.qos.ch + + Copyright (c) 2004-2013 QOS.ch + All rights reserved. + + 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. + +This product bundles 'jQuery Grid' which is available under the MIT License. +http://www.opensource.org/licenses/mit-license.php +For details see http://jqgrid.com/ + Copyright (c) 2008, Tony Tomov, tony@trirand.com + +This product bundles 'CodeMirror' which is available under an MIT style license. +For details see http://codemirror.net/doc/compress.html + + Copyright (C) 2014 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. + +This product bundles 'jQuery UI' which is available under an MIT style license. +For details see http://jqueryui.com + + Copyright 2014 jQuery Foundation and other contributors, + http://jqueryui.com/ + + This software consists of voluntary contributions made by many + individuals (AUTHORS.txt, http://jqueryui.com/about) For exact + contribution history, see the revision history and logs, available + at http://jquery-ui.googlecode.com/svn/ + + 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. + +This product bundles 'SLICKGRID' which is available under an MIT style license. +For details see http://github.com/mleibman/slickgrid + Copyright (c) 2010 Michael Leibman, http://github.com/mleibman/slickgrid + + 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. + +This product bundles 'qTip2' which is available under an MIT style license. +For details see http://qtip2.com + + Copyright (c) 2012 Craig Michael Thompson + + 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. + +This product bundles 'jQuery MiniColors' which is available under the MIT License. +http://opensource.org/licenses/MIT +For details see http://www.abeautifulsite.net/ + Copyright Cory LaViska for A Beautiful Site, LLC. (http://www.abeautifulsite.net/) + +The binary distribution of this product bundles the following libraries: + Expression Languagee 3.0 API, JavaServer Pages(TM) API, + JavaServer Pages(TM) Standard Tag Library API, Expression Language 3.0, + JSP implementation, JavaServer Pages (TM) TagLib Implementation, + Java Servlet API +which are all available under the CDDL 1.0 License. +https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html +For details see https://glassfish.java.net/ + Copyright (c) 2010-2014 Oracle and/or its affiliates. All rights reserved. + +The binary distribution of this product bundles the following libraries: + jersey-core, jersey-json, jersey-server, jersey-servlet, jersey-multipart, + jersey-spring, JAXB RI, JAXB API bundle for GlassFish V3, + MIME streaming extension, JavaMail API (compat) +which are all available under the CDDL 1.1 License. +http://glassfish.java.net/public/CDDL+GPL_1_1.html +For details see https://glassfish.java.net/ + Copyright (c) 2010-2014 Oracle and/or its affiliates. All rights reserved. + +The binary distribution of this product bundles 'H2 Database' which is available +under the MPL 2.0 license. +http://www.h2database.com/html/license.html#mpl2 +For details see http://www.h2database.com + This software contains unmodified binary redistributions for H2 database + engine (http://www.h2database.com/), which is dual licensed and available + under the MPL 2.0 (Mozilla Public License) or under the + EPL 1.0 (Eclipse Public License). + An original copy of the license agreement can be found + at: http://www.h2database.com/html/license.html + +The binary distribution of this product bundles 'Saxon-HE' which is available +under the MPL 2.0 license http://www.mozilla.org/MPL/2.0/ +For details see http://saxonica.com/download/opensource.xml + +The binary distribution of this product bundles 'AspectJ Weaver' which is +available under the EPL 1.0 license http://www.eclipse.org/legal/epl-v10.html +For details see http://www.aspectj.org + +The binary distribution of this product bundles 'Logback' which is available +under the EPL 1.0 license http://www.eclipse.org/legal/epl-v10.html +For details see http://logback.qos.ch + Copyright (C) 1999-2012, QOS.ch. All rights reserved. + +The binary distribution of this product bundles 'XZ for Java' which is available +in the 'public domain'. For details see http://tukaani.org/xz/java.html + +The binary distribution of this product bundles 'AOP Alliance' which is +available in the 'public domain'. +For details see http://aopalliance.sourceforge.net + +This product bundles 'json2.js' which is available in the 'public domain'. +For details see https://github.com/douglascrockford/JSON-js + diff --git a/NOTICE b/NOTICE index e02ae44d1d..41ecce9090 100644 --- a/NOTICE +++ b/NOTICE @@ -4,4 +4,11 @@ Copyright 2014 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). +Please note that this product bundles software libraries which are covered +by the following "weak copyleft" style licenses including; +CDDL v1.0, CDDL v1.1, MPL v2.0, and EPL v1.0 + +Please note that this product bundles software libraries which are licensed +to the 'public domain'. + Please see LICENSE for additional copyright and licensing information. diff --git a/nar-bundles/standard-bundle/jms-processors/pom.xml b/nar-bundles/standard-bundle/jms-processors/pom.xml index 7cc7b17ea8..6e8e37938f 100644 --- a/nar-bundles/standard-bundle/jms-processors/pom.xml +++ b/nar-bundles/standard-bundle/jms-processors/pom.xml @@ -46,10 +46,6 @@ org.apache.activemq activemq-client - - org.hornetq - hornetq-jms-client - org.apache.nifi nifi-mock diff --git a/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/util/JmsFactory.java b/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/util/JmsFactory.java index 9a8da62f97..f425f3ab93 100644 --- a/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/util/JmsFactory.java +++ b/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/util/JmsFactory.java @@ -25,7 +25,6 @@ import static org.apache.nifi.processors.jms.util.JmsProperties.DESTINATION_TYPE import static org.apache.nifi.processors.jms.util.JmsProperties.DESTINATION_TYPE_QUEUE; import static org.apache.nifi.processors.jms.util.JmsProperties.DESTINATION_TYPE_TOPIC; import static org.apache.nifi.processors.jms.util.JmsProperties.DURABLE_SUBSCRIPTION; -import static org.apache.nifi.processors.jms.util.JmsProperties.HORNETQ_PROVIDER; import static org.apache.nifi.processors.jms.util.JmsProperties.JMS_PROVIDER; import static org.apache.nifi.processors.jms.util.JmsProperties.MESSAGE_SELECTOR; import static org.apache.nifi.processors.jms.util.JmsProperties.PASSWORD; @@ -35,8 +34,6 @@ import static org.apache.nifi.processors.jms.util.JmsProperties.USERNAME; import java.io.IOException; import java.io.ObjectOutputStream; -import java.net.URI; -import java.net.URISyntaxException; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; @@ -66,11 +63,6 @@ import org.apache.nifi.processor.ProcessContext; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.command.ActiveMQQueue; import org.apache.activemq.command.ActiveMQTopic; -import org.hornetq.api.core.TransportConfiguration; -import org.hornetq.core.remoting.impl.netty.NettyConnectorFactory; -import org.hornetq.jms.client.HornetQJMSConnectionFactory; -import org.hornetq.jms.client.HornetQQueue; -import org.hornetq.jms.client.HornetQTopic; public class JmsFactory { @@ -341,8 +333,6 @@ public class JmsFactory { public static Queue createQueue(final String jmsProvider, final String queueName) { switch (jmsProvider) { - case HORNETQ_PROVIDER: - return new HornetQQueue(queueName); case ACTIVEMQ_PROVIDER: default: return new ActiveMQQueue(queueName); @@ -352,8 +342,6 @@ public class JmsFactory { private static Topic createTopic(final ProcessContext context) { final String topicName = context.getProperty(DESTINATION_NAME).getValue(); switch (context.getProperty(JMS_PROVIDER).getValue()) { - case HORNETQ_PROVIDER: - return new HornetQTopic(topicName); case ACTIVEMQ_PROVIDER: default: return new ActiveMQTopic(topicName); @@ -374,22 +362,6 @@ public class JmsFactory { factory.setSendTimeout(timeoutMillis); return factory; } - case HORNETQ_PROVIDER: { - final Map params = new HashMap<>(); - - try { - final URI uriObject = new URI(url); - params.put("host", uriObject.getHost()); - params.put("port", uriObject.getPort()); - - final TransportConfiguration transportConfig = new TransportConfiguration(NettyConnectorFactory.class.getName(), params); - final HornetQJMSConnectionFactory factory = new HornetQJMSConnectionFactory(false, transportConfig); - factory.setCallTimeout(timeoutMillis); - return factory; - } catch (final URISyntaxException e) { - return null; // won't happen b/c we already validated the URL - } - } default: throw new IllegalArgumentException("Unknown JMS Provider: " + jmsProvider); } diff --git a/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/util/JmsProperties.java b/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/util/JmsProperties.java index 1a50c4ec08..ac199860fa 100644 --- a/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/util/JmsProperties.java +++ b/nar-bundles/standard-bundle/jms-processors/src/main/java/org/apache/nifi/processors/jms/util/JmsProperties.java @@ -23,7 +23,6 @@ import org.apache.nifi.processor.util.StandardValidators; public class JmsProperties { public static final String ACTIVEMQ_PROVIDER = "ActiveMQ"; - public static final String HORNETQ_PROVIDER = "HornetQ"; public static final String ACK_MODE_CLIENT = "Client Acknowledge"; public static final String ACK_MODE_AUTO = "Auto Acknowledge"; @@ -41,7 +40,7 @@ public class JmsProperties { .name("JMS Provider") .description("The Provider used for the JMS Server") .required(true) - .allowableValues(ACTIVEMQ_PROVIDER, HORNETQ_PROVIDER) + .allowableValues(ACTIVEMQ_PROVIDER) .defaultValue(ACTIVEMQ_PROVIDER) .build(); public static final PropertyDescriptor URL = new PropertyDescriptor.Builder() diff --git a/nar-bundles/standard-bundle/jms-processors/src/main/resources/docs/org.apache.nifi.processors.jms.GetJMSQueue/index.html b/nar-bundles/standard-bundle/jms-processors/src/main/resources/docs/org.apache.nifi.processors.jms.GetJMSQueue/index.html index 58b674d05b..bcbf0dd540 100644 --- a/nar-bundles/standard-bundle/jms-processors/src/main/resources/docs/org.apache.nifi.processors.jms.GetJMSQueue/index.html +++ b/nar-bundles/standard-bundle/jms-processors/src/main/resources/docs/org.apache.nifi.processors.jms.GetJMSQueue/index.html @@ -38,7 +38,6 @@
  • This property specifies the provider used for the JMS server. Available options include:
    • ActiveMQ
    • -
    • HornetQ
  • Default value: ActiveMQ
  • Supports expression language: false
  • diff --git a/nar-bundles/standard-bundle/jms-processors/src/main/resources/docs/org.apache.nifi.processors.jms.GetJMSTopic/index.html b/nar-bundles/standard-bundle/jms-processors/src/main/resources/docs/org.apache.nifi.processors.jms.GetJMSTopic/index.html index 876513d451..3496df8273 100644 --- a/nar-bundles/standard-bundle/jms-processors/src/main/resources/docs/org.apache.nifi.processors.jms.GetJMSTopic/index.html +++ b/nar-bundles/standard-bundle/jms-processors/src/main/resources/docs/org.apache.nifi.processors.jms.GetJMSTopic/index.html @@ -38,7 +38,6 @@
  • This property specifies the provider used for the JMS server. Available options include:
    • ActiveMQ
    • -
    • HornetQ
  • Supports expression language: false
  • diff --git a/nar-bundles/standard-bundle/jms-processors/src/main/resources/docs/org.apache.nifi.processors.jms.PutJMS/index.html b/nar-bundles/standard-bundle/jms-processors/src/main/resources/docs/org.apache.nifi.processors.jms.PutJMS/index.html index 52f2e1fd23..387d03c9b5 100644 --- a/nar-bundles/standard-bundle/jms-processors/src/main/resources/docs/org.apache.nifi.processors.jms.PutJMS/index.html +++ b/nar-bundles/standard-bundle/jms-processors/src/main/resources/docs/org.apache.nifi.processors.jms.PutJMS/index.html @@ -38,7 +38,6 @@
  • This property specifies the provider used for the JMS server. Available options include:
    • ActiveMQ
    • -
    • HornetQ
  • Default value: ActiveMQ
  • Supports expression language: false
  • diff --git a/pom.xml b/pom.xml index e0d9b479a3..960738698a 100644 --- a/pom.xml +++ b/pom.xml @@ -248,6 +248,16 @@ org.quartz-scheduler quartz 2.2.1 + + + + c3p0 + c3p0 + +
    com.sun.jersey.contribs From b375f01519da33c24c2ad93d229e70918191838f Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Mon, 22 Dec 2014 11:05:48 -0500 Subject: [PATCH 11/41] NIFI-182: - Updating styles to better match the rest of the documentation. --- .../src/main/enunciate/images/bg.png | Bin 99 -> 0 bytes .../src/main/enunciate/override.css | 45 +++++++++++++----- 2 files changed, 34 insertions(+), 11 deletions(-) delete mode 100644 nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bg.png diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bg.png b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/images/bg.png deleted file mode 100644 index fda98e52a06ccf2c75a51eed51735388908de1c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b`!3HGn8ON~#Db50q$YKTtZeb8+WSBKa0w^fz s>Eal|aXq=>`@6gKY$Xnh6hzMe Date: Mon, 22 Dec 2014 11:09:51 -0500 Subject: [PATCH 12/41] NIFI-182: - Making the documentation in the help section for cohesive. --- .../main/webapp/WEB-INF/jsp/documentation.jsp | 3 +- .../src/main/webapp/css/component-usage.css | 91 +++++++++++++++---- .../src/main/webapp/css/main.css | 29 ++++-- .../src/main/webapp/js/application.js | 7 +- 4 files changed, 95 insertions(+), 35 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp index b350e6bcba..e31be6f98b 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp @@ -27,7 +27,7 @@ - + @@ -105,7 +105,6 @@
    diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/component-usage.css b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/component-usage.css index b0f2e46383..1728733ede 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/component-usage.css +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/component-usage.css @@ -14,15 +14,24 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic|Noto+Serif:400,400italic,700,700italic|Droid+Sans+Mono:400"; + +html, html a { + -webkit-font-smoothing: antialiased; + text-shadow: 1px 1px 1px rgba(0,0,0,0.004); +} + body { + width: 62.5em; + margin: 0 auto; display: block; - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 12px; + font-family: "Open Sans","DejaVu Sans",sans-serif; } .title { font-weight: bold; - color: #294c58; + color: #7a2518; font-size: 18px; } @@ -33,39 +42,85 @@ body { /* tables */ table { - border-collapse: collapse; + background-color: #fefefe; + border: 1px solid #ccc; + border-left: 6px solid #ccc; + color: #666; + display: block; + margin-bottom: 12px; + padding: 5px 8px; } -table th { - background-image: url(../images/bgTableHeader.png); - background-repeat: repeat-x; - border-bottom: 1px solid #365C6A; - border-right: 1px solid #172B31; - height: 26px; - padding: 0 2px; - color: #fff; - white-space: nowrap; +tr td { + font-size: 14px; + vertical-align:top; + text-align:left; + padding: 4px; + border-width: 0; } -table td { - padding: 2px; +tr th { + font-size: 16px; + vertical-align:top; + text-align:left; + padding: 4px; + border-width: 0; } /* links */ a, a:link, a:visited { cursor: pointer; - color: #1e373f; + color: #2156a5; text-decoration: none; border: none; } a:hover, a:active { - color: #264c58; - text-decoration: underline; + color: #2156a5; + text-decoration: none; border: none; } .clear { clear: both; +} + +/* p */ + +p { + font-family: 'Noto Serif', 'DejaVu Serif', serif; + font-size: 16px; +} + +p strong { + font-weight: bold; +} + +/* ul li */ + +ul li { + font-family: 'Noto Serif', 'DejaVu Serif', serif; + font-size: 16px; +} + +ul li strong { + font-weight: bold; +} + +h2 { + font-weight: normal; + color: #ba3925; +} + +/* pre */ + +pre { + font-size: 14px; + background-color: #fefefe; + border: 1px solid #ccc; + border-left: 6px solid #ccc; + color: #666; + margin-bottom: 10px; + padding: 5px 8px; } \ No newline at end of file diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/main.css b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/main.css index b4daa6baf7..918eb7ad71 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/main.css +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/main.css @@ -19,7 +19,8 @@ padding: 0; } -body { +#documentation-body { + width: 100%; position: absolute; top: 0; right: 0; @@ -111,7 +112,7 @@ div.component-listing { left: 0; bottom: 40px; overflow: auto; - font-size: 12px; + font-size: 16px; padding: 4px; } @@ -124,22 +125,32 @@ div.component-listing div.header { color: #264c58; } -div.component-listing div.component-links { - margin-left: 10px; - color: #1e373f; -} - div.component-links ul { list-style: none; } li.component-item { padding: 2px; + padding-left: 4px; + border-left: 8px solid transparent; + font-family: "Open Sans","DejaVu Sans",sans-serif; + font-size: 15px; +} + +li.component-item a { + color: #1e373f; +} + +li.component-item:hover { + border-left: 8px solid #d1dee5; +} + +li.component-item:hover a { + color: #264c58; } li.component-item.selected { - background-color: #d1dee5; - text-decoration: underline; + border-left: 8px solid #7098ad; } div.component-links span.no-components { diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js index 748fc62da3..ab92aa26a1 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js @@ -257,15 +257,10 @@ $(document).ready(function () { }); // listen for on the rest api and user guide - $('a.rest-api a.user-guide').on('click', function() { + $('a.rest-api, a.user-guide').on('click', function() { selectComponent($(this).text()); }); - // listen for on the rest api and user guide - $('a.rest-api a.user-guide').on('click', function() { - selectComponent($(this).text()); - }); - // get the initial selection var initialComponentLink = $('a.component-link:first'); var initialSelection = $('#initial-selection').text(); From d3f082e25c560c2384f0c948330507b744a3f846 Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Mon, 22 Dec 2014 14:23:02 -0500 Subject: [PATCH 13/41] NIFI-182: - Making the documentation in the help section for cohesive. --- .../src/main/enunciate/override.css | 19 ++++++++++++++++++- .../main/webapp/WEB-INF/jsp/documentation.jsp | 8 +++++--- .../WEB-INF/jsp/no-documentation-found.jsp | 10 +++++----- .../src/main/webapp/css/component-usage.css | 1 + .../src/main/webapp/js/application.js | 4 +++- 5 files changed, 32 insertions(+), 10 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css index d2a95d7ec1..32f1f4480a 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css @@ -101,6 +101,18 @@ a:hover { display: block; margin-bottom: 12px; padding: 5px 8px; + font-family: "Open Sans","DejaVu Sans",sans-serif; + font-size: 16px; +} + +ul.navigation li, ul.xbreadcrumbs li { + font-family: "Open Sans","DejaVu Sans",sans-serif; + font-size: 16px; +} + +ul li { + font-family: 'Noto Serif', 'DejaVu Serif', serif; + font-size: 16px; } /* tables */ @@ -144,6 +156,11 @@ code { white-space: pre; } +h1, h2 { + font-weight: normal; + color: #ba3925; +} + /* footer */ #footer { @@ -153,7 +170,7 @@ code { /* width */ .span-18 { - width: 916px !important; + width: 921px !important; } .span-20 { diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp index e31be6f98b..c148ab5200 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp @@ -39,11 +39,12 @@
    -
    Documents
    -
    @@ -102,10 +103,11 @@
    Developer
    -
    diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/no-documentation-found.jsp b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/no-documentation-found.jsp index ba1cca8820..567d0bed74 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/no-documentation-found.jsp +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/no-documentation-found.jsp @@ -18,14 +18,14 @@ - Component documentation not found + NiFi - - + - -
    No usage documentation found.
    + +

    Yikes!

    +

    Unable to locate the documentation for the selected item.

    \ No newline at end of file diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/component-usage.css b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/component-usage.css index 1728733ede..f12758ef4c 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/component-usage.css +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/component-usage.css @@ -65,6 +65,7 @@ tr th { text-align:left; padding: 4px; border-width: 0; + white-space: nowrap; } /* links */ diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js index ab92aa26a1..b2940bec88 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js @@ -95,12 +95,14 @@ $(document).ready(function () { }; var applyFilter = function () { + var matchingGuides = applyComponentFilter($('#guide-links')); var matchingProcessors = applyComponentFilter($('#processor-links')); var matchingControllerServices = applyComponentFilter($('#controller-service-links')); var matchingReportingTasks = applyComponentFilter($('#reporting-task-links')); + var matchingDev = applyComponentFilter($('#developer-links')); // update the rule count - $('#displayed-components').text(matchingProcessors + matchingControllerServices + matchingReportingTasks); + $('#displayed-components').text(matchingGuides + matchingProcessors + matchingControllerServices + matchingReportingTasks + matchingDev); }; var selectComponent = function (componentName) { From f180d5d2f1713d5aa7037eceea6cb917e41f3d08 Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Mon, 22 Dec 2014 14:38:56 -0500 Subject: [PATCH 14/41] NIFI-182: - No longer logging the REST API documentation URL. --- .../main/java/org/apache/nifi/web/server/JettyServer.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java b/nar-bundles/framework-bundle/framework/web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java index 62d83a40c5..5d370904d2 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java +++ b/nar-bundles/framework-bundle/framework/web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java @@ -652,12 +652,6 @@ public class JettyServer implements NiFiServer { for (final String url : urls) { logger.info(String.format("%s/nifi", url)); } - - // log the rest api location - logger.info("The REST API documentation is available at the following URLs:"); - for (final String url : urls) { - logger.info(String.format("%s/nifi-api/docs", url)); - } } } From 022ba888bb77f950d8ee0a5408166abf816a2d1f Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Mon, 22 Dec 2014 14:56:11 -0500 Subject: [PATCH 15/41] NIFI-182: - Updating headers. - Fixing filtering logic. --- .../src/main/webapp/WEB-INF/jsp/documentation.jsp | 6 +++--- .../web/nifi-web-docs/src/main/webapp/js/application.js | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp index c148ab5200..016dad90ed 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp @@ -39,12 +39,12 @@
    -
    Guides
    -
    diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js index b2940bec88..d98a251bdc 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js @@ -95,14 +95,14 @@ $(document).ready(function () { }; var applyFilter = function () { - var matchingGuides = applyComponentFilter($('#guide-links')); + var matchingGeneral = applyComponentFilter($('#general-links')); var matchingProcessors = applyComponentFilter($('#processor-links')); var matchingControllerServices = applyComponentFilter($('#controller-service-links')); var matchingReportingTasks = applyComponentFilter($('#reporting-task-links')); - var matchingDev = applyComponentFilter($('#developer-links')); + var matchingDeveloper = applyComponentFilter($('#developer-links')); // update the rule count - $('#displayed-components').text(matchingGuides + matchingProcessors + matchingControllerServices + matchingReportingTasks + matchingDev); + $('#displayed-components').text(matchingGeneral + matchingProcessors + matchingControllerServices + matchingReportingTasks + matchingDeveloper); }; var selectComponent = function (componentName) { From 62965770d091ee86f5a28ed23467b7dbe797faa4 Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Mon, 22 Dec 2014 15:22:38 -0500 Subject: [PATCH 16/41] NIFI-182: - Adjusting color of text in tables. --- .../web/nifi-web-api/src/main/enunciate/override.css | 6 +++--- .../nifi-web-docs/src/main/webapp/css/component-usage.css | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css index 32f1f4480a..1cd8e7f61b 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/enunciate/override.css @@ -97,7 +97,7 @@ a:hover { background-color: #fefefe; border: 1px solid #ccc; border-left: 6px solid #ccc; - color: #666; + color: #555; display: block; margin-bottom: 12px; padding: 5px 8px; @@ -121,7 +121,7 @@ table { background-color: #fefefe; border: 1px solid #ccc; border-left: 6px solid #ccc; - color: #666; + color: #555; display: block; margin-bottom: 12px; padding: 5px 8px; @@ -150,7 +150,7 @@ code { background-color: #fefefe; border: 1px solid #ccc; border-left: 6px solid #ccc; - color: #666; + color: #555; margin-bottom: 10px; padding: 5px 8px; white-space: pre; diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/component-usage.css b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/component-usage.css index f12758ef4c..816403427e 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/component-usage.css +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/css/component-usage.css @@ -45,7 +45,7 @@ table { background-color: #fefefe; border: 1px solid #ccc; border-left: 6px solid #ccc; - color: #666; + color: #555; display: block; margin-bottom: 12px; padding: 5px 8px; @@ -121,7 +121,7 @@ pre { background-color: #fefefe; border: 1px solid #ccc; border-left: 6px solid #ccc; - color: #666; + color: #555; margin-bottom: 10px; padding: 5px 8px; } \ No newline at end of file From 527bec55c8b8de320ccd7f1b14b8ab681f3749cd Mon Sep 17 00:00:00 2001 From: Karl-Heinz Marbaise Date: Mon, 22 Dec 2014 21:05:21 +0100 Subject: [PATCH 17/41] WARNING on mvn install in nar-maven-plugin Signed-off-by: joewitt --- nar-maven-plugin/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/nar-maven-plugin/pom.xml b/nar-maven-plugin/pom.xml index 26b6a1144f..e539f0a12d 100644 --- a/nar-maven-plugin/pom.xml +++ b/nar-maven-plugin/pom.xml @@ -20,6 +20,7 @@ org.apache apache 16 + org.apache.nifi nar-maven-plugin From 3b4a7a63c61ccfd303e7187319b439e85bcc6e58 Mon Sep 17 00:00:00 2001 From: Karl-Heinz Marbaise Date: Mon, 22 Dec 2014 21:48:35 +0100 Subject: [PATCH 18/41] [NIFI-194] get mvn clean package working correctly - Removed phase definition for maven-source-plugin - Changed goal to jar-no-fork to prevent life cylcle forking - Removed version ranges. --- nar-bundles/framework-bundle/framework/client-dto/pom.xml | 3 +-- nar-bundles/pom.xml | 8 ++++---- pom.xml | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/client-dto/pom.xml b/nar-bundles/framework-bundle/framework/client-dto/pom.xml index 4b210da0ba..924e83a74e 100644 --- a/nar-bundles/framework-bundle/framework/client-dto/pom.xml +++ b/nar-bundles/framework-bundle/framework/client-dto/pom.xml @@ -35,9 +35,8 @@ attach-sources - verify - jar + jar-no-fork diff --git a/nar-bundles/pom.xml b/nar-bundles/pom.xml index 01f7207bca..4985cdc16a 100644 --- a/nar-bundles/pom.xml +++ b/nar-bundles/pom.xml @@ -97,25 +97,25 @@ org.apache.nifi nifi-api - [0.0.1-SNAPSHOT,1.0.0-SNAPSHOT) + ${project.version} provided org.apache.nifi nifi-runtime - [0.0.1-SNAPSHOT,1.0.0-SNAPSHOT) + ${project.version} provided org.apache.nifi nifi-nar - [0.0.1-SNAPSHOT,1.0.0-SNAPSHOT) + ${project.version} provided org.apache.nifi nifi-properties - [0.0.1-SNAPSHOT,1.0.0-SNAPSHOT) + ${project.version} provided diff --git a/pom.xml b/pom.xml index 960738698a..8d19fda4bb 100644 --- a/pom.xml +++ b/pom.xml @@ -946,4 +946,4 @@ - \ No newline at end of file + From 31921212da0e5406d55838493654b429bdc54070 Mon Sep 17 00:00:00 2001 From: Karl-Heinz Marbaise Date: Mon, 22 Dec 2014 22:41:07 +0100 Subject: [PATCH 19/41] [NIFI-195] Take advantage of inheritance from ASF parent version 16 --- pom.xml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 960738698a..85bbf196ca 100644 --- a/pom.xml +++ b/pom.xml @@ -143,11 +143,6 @@ 2.9 maven-plugin - - org.apache.maven.plugins - maven-jar-plugin - 2.5 - org.apache.maven.plugin-tools maven-plugin-annotations @@ -890,11 +885,6 @@ gnu - - org.apache.maven.plugins - maven-release-plugin - 2.5.1 - org.codehaus.mojo jaxb2-maven-plugin @@ -946,4 +936,4 @@ - \ No newline at end of file + From 1c9393032d4917bf4b9584a5066d84a85dc68a6b Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 09:30:29 -0500 Subject: [PATCH 20/41] NIFI-65: - Adding an authorizeDownload method to the UserService. - Removing an unused/deprecated unit test. --- .../nifi/admin/service/UserService.java | 13 + .../action/AuthorizeDownloadAction.java | 54 ++++ .../service/impl/StandardUserService.java | 36 ++- .../AuthorityProviderFactoryBean.java | 13 + .../java/org/apache/nifi/user/NiFiUser.java | 10 + .../impl/NiFiAuthorizationServiceTest.java | 284 ------------------ 6 files changed, 125 insertions(+), 285 deletions(-) create mode 100644 nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/action/AuthorizeDownloadAction.java delete mode 100644 nar-bundles/framework-bundle/framework/administration/src/test/java/org/apache/nifi/admin/service/impl/NiFiAuthorizationServiceTest.java diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/UserService.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/UserService.java index 76e54d6ee1..86256fd408 100644 --- a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/UserService.java +++ b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/UserService.java @@ -17,8 +17,11 @@ package org.apache.nifi.admin.service; import java.util.Collection; +import java.util.List; +import java.util.Map; import java.util.Set; import org.apache.nifi.authorization.Authority; +import org.apache.nifi.authorization.DownloadAuthorization; import org.apache.nifi.user.NiFiUser; import org.apache.nifi.user.NiFiUserGroup; @@ -43,6 +46,16 @@ public interface UserService { */ Boolean hasPendingUserAccount(); + /** + * Determines if the users in the dnChain are authorized to download content + * with the specified attributes. + * + * @param dnChain + * @param attributes + * @return + */ + DownloadAuthorization authorizeDownload(List dnChain, Map attributes); + /** * Updates a user group using the specified group comprised of the specified * users. Returns all the users that are currently in the specified group. diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/action/AuthorizeDownloadAction.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/action/AuthorizeDownloadAction.java new file mode 100644 index 0000000000..d1b994c366 --- /dev/null +++ b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/action/AuthorizeDownloadAction.java @@ -0,0 +1,54 @@ +/* + * 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.admin.service.action; + +import java.util.List; +import java.util.Map; +import org.apache.nifi.admin.dao.DAOFactory; +import org.apache.nifi.admin.service.AccountNotFoundException; +import org.apache.nifi.admin.service.AdministrationException; +import org.apache.nifi.authorization.AuthorityProvider; +import org.apache.nifi.authorization.DownloadAuthorization; +import org.apache.nifi.authorization.exception.AuthorityAccessException; +import org.apache.nifi.authorization.exception.UnknownIdentityException; + +/** + * Attempts to obtain authorization to download the content with the specified + * attributes for the specified user. + */ +public class AuthorizeDownloadAction implements AdministrationAction { + + private final List dnChain; + private final Map attributes; + + public AuthorizeDownloadAction(List dnChain, Map attributes) { + this.dnChain = dnChain; + this.attributes = attributes; + } + + @Override + public DownloadAuthorization execute(DAOFactory daoFactory, AuthorityProvider authorityProvider) { + try { + return authorityProvider.authorizeDownload(dnChain, attributes); + } catch (UnknownIdentityException uie) { + throw new AccountNotFoundException(uie.getMessage(), uie); + } catch (AuthorityAccessException aae) { + throw new AdministrationException(aae.getMessage(), aae); + } + } + +} diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/impl/StandardUserService.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/impl/StandardUserService.java index 63aa93bafb..5c9af4b721 100644 --- a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/impl/StandardUserService.java +++ b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/admin/service/impl/StandardUserService.java @@ -18,6 +18,8 @@ package org.apache.nifi.admin.service.impl; import java.io.IOException; import java.util.Collection; +import java.util.List; +import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -27,6 +29,7 @@ import org.apache.nifi.admin.service.AccountDisabledException; import org.apache.nifi.admin.service.AccountPendingException; import org.apache.nifi.admin.service.AdministrationException; import org.apache.nifi.admin.service.UserService; +import org.apache.nifi.admin.service.action.AuthorizeDownloadAction; import org.apache.nifi.admin.service.action.AuthorizeUserAction; import org.apache.nifi.admin.service.action.DeleteUserAction; import org.apache.nifi.admin.service.action.DisableUserAction; @@ -48,6 +51,7 @@ import org.apache.nifi.admin.service.transaction.Transaction; import org.apache.nifi.admin.service.transaction.TransactionBuilder; import org.apache.nifi.admin.service.transaction.TransactionException; import org.apache.nifi.authorization.Authority; +import org.apache.nifi.authorization.DownloadAuthorization; import org.apache.nifi.user.NiFiUser; import org.apache.nifi.user.NiFiUserGroup; import org.apache.nifi.util.FormatUtils; @@ -440,7 +444,7 @@ public class StandardUserService implements UserService { * modifying a user account. This method should only be invoked from within * a write lock. * - * @param id + * @param group */ @Override public void invalidateUserGroupAccount(String group) { @@ -500,6 +504,36 @@ public class StandardUserService implements UserService { } } + @Override + public DownloadAuthorization authorizeDownload(final List dnChain, final Map attributes) { + Transaction transaction = null; + + readLock.lock(); + try { + // start the transaction + transaction = transactionBuilder.start(); + + // authorize the download + AuthorizeDownloadAction authorizeDownload = new AuthorizeDownloadAction(dnChain, attributes); + DownloadAuthorization downloadAuthorization = transaction.execute(authorizeDownload); + + // commit the transaction + transaction.commit(); + + // return the authorization + return downloadAuthorization; + } catch (TransactionException | DataAccessException te) { + rollback(transaction); + throw new AdministrationException(te); + } catch (Throwable t) { + rollback(transaction); + throw t; + } finally { + closeQuietly(transaction); + readLock.unlock(); + } + } + @Override public Collection getUsers() { Transaction transaction = null; diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/authorization/AuthorityProviderFactoryBean.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/authorization/AuthorityProviderFactoryBean.java index b05d32fa9c..31a01be82f 100644 --- a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/authorization/AuthorityProviderFactoryBean.java +++ b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/authorization/AuthorityProviderFactoryBean.java @@ -24,6 +24,7 @@ import java.lang.reflect.Method; import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; import javax.xml.XMLConstants; @@ -365,6 +366,11 @@ public class AuthorityProviderFactoryBean implements FactoryBean, ApplicationCon public void ungroup(String group) throws AuthorityAccessException { } + @Override + public DownloadAuthorization authorizeDownload(List dnChain, Map attributes) throws UnknownIdentityException, AuthorityAccessException { + return DownloadAuthorization.approved(); + } + @Override public void initialize(AuthorityProviderInitializationContext initializationContext) throws ProviderCreationException { } @@ -465,6 +471,13 @@ public class AuthorityProviderFactoryBean implements FactoryBean, ApplicationCon } } + @Override + public DownloadAuthorization authorizeDownload(List dnChain, Map attributes) throws UnknownIdentityException, AuthorityAccessException { + try (final NarCloseable narCloseable = NarCloseable.withNarLoader()) { + return baseProvider.authorizeDownload(dnChain, attributes); + } + } + @Override public void initialize(AuthorityProviderInitializationContext initializationContext) throws ProviderCreationException { try (final NarCloseable narCloseable = NarCloseable.withNarLoader()) { diff --git a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/user/NiFiUser.java b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/user/NiFiUser.java index 984a572459..415160af4b 100644 --- a/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/user/NiFiUser.java +++ b/nar-bundles/framework-bundle/framework/administration/src/main/java/org/apache/nifi/user/NiFiUser.java @@ -43,6 +43,8 @@ public class NiFiUser implements Serializable { private AccountStatus status; private EnumSet authorities; + + private NiFiUser chain; /* getters / setters */ public Date getCreation() { @@ -117,6 +119,14 @@ public class NiFiUser implements Serializable { this.lastAccessed = lastAccessed; } + public NiFiUser getChain() { + return chain; + } + + public void setChain(NiFiUser chain) { + this.chain = chain; + } + public Set getAuthorities() { if (authorities == null) { authorities = EnumSet.noneOf(Authority.class); diff --git a/nar-bundles/framework-bundle/framework/administration/src/test/java/org/apache/nifi/admin/service/impl/NiFiAuthorizationServiceTest.java b/nar-bundles/framework-bundle/framework/administration/src/test/java/org/apache/nifi/admin/service/impl/NiFiAuthorizationServiceTest.java deleted file mode 100644 index 5c8b75ac73..0000000000 --- a/nar-bundles/framework-bundle/framework/administration/src/test/java/org/apache/nifi/admin/service/impl/NiFiAuthorizationServiceTest.java +++ /dev/null @@ -1,284 +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.admin.service.impl; - -import org.junit.Ignore; - -/** - * - */ -@Ignore -public class NiFiAuthorizationServiceTest { - -// private static final String UNKNOWN_USER_IN_CACHE_DN = "unknown-user-in-cache-dn"; -// private static final String PENDING_USER_DN = "pending-user-dn"; -// private static final String DISABLED_USER_DN = "disabled-user-dn"; -// private static final String UNKNOWN_USER_IN_IDENTITY_PROVIDER_DN = "unknown-user-in-identity-provider-dn"; -// private static final String ACCESS_EXCEPTION_IN_IDENTITY_PROVIDER_DN = "access-exception-in-identity-provider-dn"; -// private static final String UNABLE_TO_UPDATE_CACHE_DN = "unable-to-update-cache-dn"; -// private static final String VERIFICATION_REQUIRED_DN = "verification-required-dn"; -// private static final String VERIFICATION_NOT_REQUIRED_DN = "verification-not-required-dn"; -// private static final String NEW_USER_DN = "new-user-dn"; -// -// private UserService userService; -// private AuthorityProvider authorityProvider; -// private UserDAO userDAO; -// -// @Before -// public void setup() throws Exception { -// // mock the web security properties -// NiFiProperties properties = Mockito.mock(NiFiProperties.class); -// Mockito.when(properties.getSupportNewAccountRequests()).thenReturn(Boolean.TRUE); -// Mockito.when(properties.getUserCredentialCacheDurationSeconds()).thenReturn(60); -// -// // mock the authority provider -// -// // mock the admin service -// userDAO = Mockito.mock(UserDAO.class); -// Mockito.doAnswer(new Answer() { -// -// @Override -// public Object answer(InvocationOnMock invocation) throws Throwable { -// Object[] args = invocation.getArguments(); -// String dn = (String) args[0]; -// -// NiFiUser user = null; -// switch (dn) { -// case PENDING_USER_DN: -// user = new NiFiUser(); -// user.setDn(dn); -// user.setStatus(AccountStatus.PENDING); -// break; -// case DISABLED_USER_DN: -// user = new NiFiUser(); -// user.setDn(dn); -// user.setStatus(AccountStatus.DISABLED); -// break; -// case UNKNOWN_USER_IN_IDENTITY_PROVIDER_DN: -// case UNABLE_TO_UPDATE_CACHE_DN: -// case ACCESS_EXCEPTION_IN_IDENTITY_PROVIDER_DN: -// user = new NiFiUser(); -// user.setDn(dn); -// user.setStatus(AccountStatus.ACTIVE); -// break; -// case VERIFICATION_REQUIRED_DN: { -// Calendar calendar = Calendar.getInstance(); -// calendar.add(Calendar.SECOND, -65); -// user = new NiFiUser(); -// user.setDn(dn); -// user.setStatus(AccountStatus.ACTIVE); -// user.setLastVerified(calendar.getTime()); -// user.getAuthorities().addAll(EnumSet.of(Authority.ROLE_ADMIN, Authority.ROLE_DFM)); -// break; -// } -// case VERIFICATION_NOT_REQUIRED_DN: { -// Calendar calendar = Calendar.getInstance(); -// calendar.add(Calendar.SECOND, -5); -// user = new NiFiUser(); -// user.setDn(dn); -// user.setStatus(AccountStatus.ACTIVE); -// user.setLastVerified(calendar.getTime()); -// user.getAuthorities().addAll(EnumSet.of(Authority.ROLE_ADMIN, Authority.ROLE_DFM)); -// break; -// } -// } -// return user; -// } -// }).when(userDAO).getUser(Mockito.anyString()); -// Mockito.doAnswer(new Answer() { -// -// @Override -// public Object answer(InvocationOnMock invocation) throws Throwable { -// Object[] args = invocation.getArguments(); -// NiFiUser user = (NiFiUser) args[0]; -// -// if (UNABLE_TO_UPDATE_CACHE_DN.equals(user.getDn())) { -// throw new AdministrationException(); -// } -// return user; -// } -// }).when(userDAO).updateUser(Mockito.any(NiFiUser.class)); -// Mockito.doNothing().when(userDAO).createUser(Mockito.any(NiFiUser.class)); -// -// // mock the authority provider -// authorityProvider = Mockito.mock(AuthorityProvider.class); -// Mockito.doAnswer(new Answer() { -// -// @Override -// public Object answer(InvocationOnMock invocation) throws Throwable { -// Object[] args = invocation.getArguments(); -// String dn = (String) args[0]; -// -// boolean hasDn = false; -// if (VERIFICATION_REQUIRED_DN.equals(dn) || NEW_USER_DN.equals(dn)) { -// hasDn = true; -// } -// return hasDn; -// } -// }).when(authorityProvider).doesDnExist(Mockito.anyString()); -// Mockito.doAnswer(new Answer() { -// -// @Override -// public Object answer(InvocationOnMock invocation) throws Throwable { -// Object[] args = invocation.getArguments(); -// String dn = (String) args[0]; -// -// Set authorities = null; -// switch (dn) { -// case VERIFICATION_REQUIRED_DN: -// case NEW_USER_DN: -// authorities = new HashSet<>(); -// authorities.add("ROLE_MONITOR"); -// break; -// case DISABLED_USER_DN: -// throw new UnknownIdentityException("Unable to find user"); -// } -// return authorities; -// } -// }).when(authorityProvider).getAuthorities(Mockito.anyString()); -// -// // create an instance of the authorization service -// userService = new UserServiceImpl(); -// ((UserServiceImpl) userService).setAuthorityProvider(authorityProvider); -// ((UserServiceImpl) userService).set(authorityProvider); -// -//// authorizationService.setIdentityProvider(identityProvider); -//// authorizationService.setAuthorityProvider(authorityProvider); -//// authorizationService.setProperties(properties); -// } -// -// /** -// * Ensures the authorization service correctly handles users who are -// * unknown. -// * -// * @throws Exception -// */ -// @Test(expected = org.springframework.security.core.userdetails.UsernameNotFoundException.class) -// public void testUnknownUserInCache() throws Exception { -// authorizationService.loadUserByUsername(WebUtils.formatProxyDn(UNKNOWN_USER_IN_CACHE_DN)); -// } -// -// /** -// * Ensures the authorization service correctly handles users whose accounts -// * are PENDING. -// * -// * @throws Exception -// */ -// @Test(expected = nifi.admin.service.AccountPendingException.class) -// public void testPendingUser() throws Exception { -// authorizationService.loadUserByUsername(WebUtils.formatProxyDn(PENDING_USER_DN)); -// } -// -// /** -// * Ensures the authorization service correctly handles users whose accounts -// * are DISABLED. -// * -// * @throws Exception -// */ -// @Test(expected = org.springframework.security.authentication.DisabledException.class) -// public void testDisabledUser() throws Exception { -// authorizationService.loadUserByUsername(WebUtils.formatProxyDn(DISABLED_USER_DN)); -// } -// -// /** -// * Ensures the authorization service correctly handles users whose are in -// * the cache but have been removed from the identity provider. -// * -// * @throws Exception -// */ -// @Test(expected = org.springframework.security.authentication.DisabledException.class) -// public void testUnknownUserInIdentityProvider() throws Exception { -// authorizationService.loadUserByUsername(WebUtils.formatProxyDn(UNKNOWN_USER_IN_IDENTITY_PROVIDER_DN)); -// } -// -// /** -// * Ensures the authorization service correctly handles cases when the cache -// * is unable to be updated. -// * -// * @throws Exception -// */ -// @Test(expected = org.springframework.security.authentication.AuthenticationServiceException.class) -// public void testUnableToUpdateCache() throws Exception { -// authorizationService.loadUserByUsername(WebUtils.formatProxyDn(UNABLE_TO_UPDATE_CACHE_DN)); -// } -// -// /** -// * Ensures the authorization service correctly handles cases when the -// * identity provider has an access exception. -// * -// * @throws Exception -// */ -// @Test(expected = org.springframework.security.authentication.AuthenticationServiceException.class) -// public void testUnableToAccessIdentity() throws Exception { -// authorizationService.loadUserByUsername(WebUtils.formatProxyDn(ACCESS_EXCEPTION_IN_IDENTITY_PROVIDER_DN)); -// } -// -// /** -// * Ensures that user authorities are properly loaded from the authority -// * provider. -// * -// * @throws Exception -// */ -// @Test -// public void testVerificationRequiredUser() throws Exception { -// NiFiUserDetails userDetails = (NiFiUserDetails) authorizationService.loadUserByUsername(WebUtils.formatProxyDn(VERIFICATION_REQUIRED_DN)); -// NiFiUser user = userDetails.getNiFiUser(); -// Mockito.verify(authorityProvider).getAuthorities(VERIFICATION_REQUIRED_DN); -// -// // ensure the user details -// Assert.assertEquals(VERIFICATION_REQUIRED_DN, user.getDn()); -// Assert.assertEquals(1, user.getAuthorities().size()); -// Assert.assertTrue(user.getAuthorities().contains(Authority.ROLE_MONITOR)); -// } -// -// /** -// * Ensures that user authorities are not loaded when the cache is still -// * valid. -// * -// * @throws Exception -// */ -// @Test -// public void testVerificationNotRequiredUser() throws Exception { -// NiFiUserDetails userDetails = (NiFiUserDetails) authorizationService.loadUserByUsername(WebUtils.formatProxyDn(VERIFICATION_NOT_REQUIRED_DN)); -// NiFiUser user = userDetails.getNiFiUser(); -// Mockito.verify(authorityProvider, Mockito.never()).getAuthorities(VERIFICATION_NOT_REQUIRED_DN); -// -// // ensure the user details -// Assert.assertEquals(VERIFICATION_NOT_REQUIRED_DN, user.getDn()); -// Assert.assertEquals(2, user.getAuthorities().size()); -// Assert.assertTrue(user.getAuthorities().contains(Authority.ROLE_ADMIN)); -// Assert.assertTrue(user.getAuthorities().contains(Authority.ROLE_DFM)); -// } -// -// /** -// * Ensures that new users are automatically created when the authority -// * provider has their authorities. -// * -// * @throws Exception -// */ -// @Test -// public void testNewUser() throws Exception { -// NiFiUserDetails userDetails = (NiFiUserDetails) authorizationService.loadUserByUsername(WebUtils.formatProxyDn(NEW_USER_DN)); -// NiFiUser user = userDetails.getNiFiUser(); -// Mockito.verify(authorityProvider).getAuthorities(NEW_USER_DN); -// -// // ensure the user details -// Assert.assertEquals(NEW_USER_DN, user.getDn()); -// Assert.assertEquals(1, user.getAuthorities().size()); -// Assert.assertTrue(user.getAuthorities().contains(Authority.ROLE_MONITOR)); -// } -} From 2df03143b9c2e419788a80271fceb3c3f5aa9aa9 Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 09:30:47 -0500 Subject: [PATCH 21/41] NIFI-65: - Renaming artifact name. --- .../framework/file-authorization-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nar-bundles/framework-bundle/framework/file-authorization-provider/pom.xml b/nar-bundles/framework-bundle/framework/file-authorization-provider/pom.xml index c96f739e3f..691210809e 100644 --- a/nar-bundles/framework-bundle/framework/file-authorization-provider/pom.xml +++ b/nar-bundles/framework-bundle/framework/file-authorization-provider/pom.xml @@ -23,7 +23,7 @@ file-authorization-provider 0.0.1-SNAPSHOT - Authorization Provider: File + NiFi File Authorization Provider From 418d6b03b2a2c81597954b6c29469e180c3e780e Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 09:31:46 -0500 Subject: [PATCH 22/41] NIFI-65: - Adding methods to the AuthorityProvider to authorize the downloading of content. --- .../nifi/authorization/AuthorityProvider.java | 18 ++++ .../authorization/DownloadAuthorization.java | 85 +++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 nifi-api/src/main/java/org/apache/nifi/authorization/DownloadAuthorization.java diff --git a/nifi-api/src/main/java/org/apache/nifi/authorization/AuthorityProvider.java b/nifi-api/src/main/java/org/apache/nifi/authorization/AuthorityProvider.java index cd96a993de..da536c24ff 100644 --- a/nifi-api/src/main/java/org/apache/nifi/authorization/AuthorityProvider.java +++ b/nifi-api/src/main/java/org/apache/nifi/authorization/AuthorityProvider.java @@ -16,6 +16,8 @@ */ package org.apache.nifi.authorization; +import java.util.List; +import java.util.Map; import java.util.Set; import org.apache.nifi.authorization.exception.AuthorityAccessException; import org.apache.nifi.authorization.exception.IdentityAlreadyExistsException; @@ -136,6 +138,22 @@ public interface AuthorityProvider { */ void ungroup(String group) throws AuthorityAccessException; + /** + * Determines whether the user in the specified dnChain should be able to + * download the content for the flowfile with the specified attributes. + * + * The last dn in the chain is the end user that the request was issued on + * behalf of. The previous dn's in the chain represent entities proxying the + * user's request. + * + * @param dnChain + * @param attributes + * @return + * @throws UnknownIdentityException + * @throws AuthorityAccessException + */ + DownloadAuthorization authorizeDownload(List dnChain, Map attributes) throws UnknownIdentityException, AuthorityAccessException; + /** * Called immediately after instance creation for implementers to perform * additional setup diff --git a/nifi-api/src/main/java/org/apache/nifi/authorization/DownloadAuthorization.java b/nifi-api/src/main/java/org/apache/nifi/authorization/DownloadAuthorization.java new file mode 100644 index 0000000000..3855817917 --- /dev/null +++ b/nifi-api/src/main/java/org/apache/nifi/authorization/DownloadAuthorization.java @@ -0,0 +1,85 @@ +/* + * 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.authorization; + +/** + * Represents a decision whether authorization is granted to download content. + */ +public class DownloadAuthorization { + + private static enum Result { + Approved, + Denied; + }; + + private static final DownloadAuthorization APPROVED = new DownloadAuthorization(Result.Approved, null); + + private final Result result; + private final String explanation; + + /** + * Creates a new DownloadAuthorization with the specified result and explanation. + * + * @param result + * @param explanation + */ + private DownloadAuthorization(Result result, String explanation) { + if (Result.Denied.equals(result) && explanation == null) { + throw new IllegalArgumentException("An explanation is request when the download request is denied."); + } + + this.result = result; + this.explanation = explanation; + } + + /** + * Whether or not the download request is approved. + * + * @return + */ + public boolean isApproved() { + return Result.Approved.equals(result); + } + + /** + * If the download request is denied, the reason why. Null otherwise. + * + * @return + */ + public String getExplanation() { + return explanation; + } + + /** + * Creates a new approved DownloadAuthorization. + * + * @return + */ + public static DownloadAuthorization approved() { + return APPROVED; + } + + /** + * Creates a new denied DownloadAuthorization with the specified exlanation. + * + * @param explanation + * @return + */ + public static DownloadAuthorization denied(String explanation) { + return new DownloadAuthorization(Result.Denied, explanation); + } +} From e1ffbdf466b6684b9dec57da2f17849b9bc45c72 Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 09:31:55 -0500 Subject: [PATCH 23/41] NIFI-65: - Adding methods to the AuthorityProvider to authorize the downloading of content. --- .../authorization/FileAuthorizationProvider.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/nar-bundles/framework-bundle/framework/file-authorization-provider/src/main/java/org/apache/nifi/authorization/FileAuthorizationProvider.java b/nar-bundles/framework-bundle/framework/file-authorization-provider/src/main/java/org/apache/nifi/authorization/FileAuthorizationProvider.java index beedd8eda3..5657369ff8 100644 --- a/nar-bundles/framework-bundle/framework/file-authorization-provider/src/main/java/org/apache/nifi/authorization/FileAuthorizationProvider.java +++ b/nar-bundles/framework-bundle/framework/file-authorization-provider/src/main/java/org/apache/nifi/authorization/FileAuthorizationProvider.java @@ -21,6 +21,8 @@ import java.io.IOException; import java.util.Collection; import java.util.EnumSet; import java.util.HashSet; +import java.util.List; +import java.util.Map; import java.util.Set; import javax.xml.XMLConstants; import javax.xml.bind.JAXBContext; @@ -492,6 +494,20 @@ public class FileAuthorizationProvider implements AuthorityProvider { } } + /** + * Grants access to download content regardless of FlowFile attributes. + * + * @param dnChain + * @param attributes + * @return + * @throws UnknownIdentityException + * @throws AuthorityAccessException + */ + @Override + public DownloadAuthorization authorizeDownload(List dnChain, Map attributes) throws UnknownIdentityException, AuthorityAccessException { + return DownloadAuthorization.approved(); + } + /** * Locates the user with the specified DN. * From 2fed138888fbc4d4ae4c93f13c9f9cf81dfcae92 Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 09:32:54 -0500 Subject: [PATCH 24/41] NIFI-65: - Calling the userService to verify the user has authorization to download content. --- .../nifi/web/controller/ControllerFacade.java | 31 +++++++++++++++++++ .../main/resources/nifi-web-api-context.xml | 1 + 2 files changed, 32 insertions(+) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java index 2c2d4dca06..99440bc6ae 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java @@ -26,6 +26,7 @@ import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -111,8 +112,11 @@ import org.apache.nifi.web.util.DownloadableContent; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.nifi.admin.service.UserService; +import org.apache.nifi.authorization.DownloadAuthorization; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.security.access.AccessDeniedException; /** * @@ -124,6 +128,7 @@ public class ControllerFacade implements ControllerServiceProvider { // nifi components private FlowController flowController; private FlowService flowService; + private UserService userService; // properties private NiFiProperties properties; @@ -787,6 +792,28 @@ public class ControllerFacade implements ControllerServiceProvider { throw new ResourceNotFoundException("Unable to find the specified event."); } + // get the flowfile attributes + final Map attributes = event.getAttributes(); + + // calculate the dn chain + final LinkedList dnChain = new LinkedList<>(); + + // build the dn chain + NiFiUser chainedUser = user; + do { + // add the entry for this user + dnChain.push(chainedUser.getDn()); + + // go to the next user in the chain + chainedUser = chainedUser.getChain(); + } while (chainedUser != null); + + // ensure the users in this chain are allowed to download this content + final DownloadAuthorization downloadAuthorization = userService.authorizeDownload(dnChain, attributes); + if (!downloadAuthorization.isApproved()) { + throw new AccessDeniedException(downloadAuthorization.getExplanation()); + } + // get the filename and fall back to the idnetifier (should never happen) String filename = event.getAttributes().get(CoreAttributes.FILENAME.key()); if (filename == null) { @@ -1329,6 +1356,10 @@ public class ControllerFacade implements ControllerServiceProvider { this.properties = properties; } + public void setUserService(UserService userService) { + this.userService = userService; + } + public void setFlowService(FlowService flowService) { this.flowService = flowService; } diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/resources/nifi-web-api-context.xml b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/resources/nifi-web-api-context.xml index 484ceff0e3..39677cacfd 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/resources/nifi-web-api-context.xml +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/resources/nifi-web-api-context.xml @@ -80,6 +80,7 @@ + From 1c7208125796ff3c2dcc540ecf7f9c973396664c Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 09:33:17 -0500 Subject: [PATCH 25/41] NIFI-65: - Adding methods to the AuthorityProvider to authorize the downloading of content. --- .../integration/util/NiFiTestAuthorizationProvider.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/test/java/org/apache/nifi/integration/util/NiFiTestAuthorizationProvider.java b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/test/java/org/apache/nifi/integration/util/NiFiTestAuthorizationProvider.java index d1e75124a8..48f18a9bf6 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/test/java/org/apache/nifi/integration/util/NiFiTestAuthorizationProvider.java +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/test/java/org/apache/nifi/integration/util/NiFiTestAuthorizationProvider.java @@ -19,6 +19,7 @@ package org.apache.nifi.integration.util; import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; import org.apache.nifi.authorization.Authority; @@ -29,6 +30,7 @@ import org.apache.nifi.authorization.exception.AuthorityAccessException; import org.apache.nifi.authorization.exception.ProviderCreationException; import org.apache.nifi.authorization.exception.UnknownIdentityException; import org.apache.commons.lang3.StringUtils; +import org.apache.nifi.authorization.DownloadAuthorization; /** * @@ -169,4 +171,9 @@ public class NiFiTestAuthorizationProvider implements AuthorityProvider { public void ungroup(String group) throws UnknownIdentityException, AuthorityAccessException { } + @Override + public DownloadAuthorization authorizeDownload(List dnChain, Map attributes) throws UnknownIdentityException, AuthorityAccessException { + return DownloadAuthorization.approved(); + } + } From e67eb4f53bca1b63326efc35b86b2f7a36318d7e Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 09:33:43 -0500 Subject: [PATCH 26/41] NIFI-65: - Setting the dn chain on the current NiFiUser. - Adding unit tests. --- .../NiFiAuthorizationService.java | 16 ++ .../NiFiAuthorizationServiceTest.java | 250 ++++++++++++++++++ 2 files changed, 266 insertions(+) create mode 100644 nar-bundles/framework-bundle/framework/web/web-security/src/test/java/org/apache/nifi/web/security/authorization/NiFiAuthorizationServiceTest.java diff --git a/nar-bundles/framework-bundle/framework/web/web-security/src/main/java/org/apache/nifi/web/security/authorization/NiFiAuthorizationService.java b/nar-bundles/framework-bundle/framework/web/web-security/src/main/java/org/apache/nifi/web/security/authorization/NiFiAuthorizationService.java index 6417a05d11..33c4eb66b1 100644 --- a/nar-bundles/framework-bundle/framework/web/web-security/src/main/java/org/apache/nifi/web/security/authorization/NiFiAuthorizationService.java +++ b/nar-bundles/framework-bundle/framework/web/web-security/src/main/java/org/apache/nifi/web/security/authorization/NiFiAuthorizationService.java @@ -72,6 +72,8 @@ public class NiFiAuthorizationService implements UserDetailsService { throw new UntrustedProxyException("Malformed proxy chain."); } + NiFiUser proxy = null; + // process each part of the proxy chain for (final Iterator dnIter = dnList.iterator(); dnIter.hasNext();) { final String dn = dnIter.next(); @@ -88,6 +90,14 @@ public class NiFiAuthorizationService implements UserDetailsService { logger.warn(String.format("Proxy '%s' must have '%s' authority. Current authorities: %s", dn, Authority.ROLE_PROXY.toString(), StringUtils.join(user.getAuthorities(), ", "))); throw new UntrustedProxyException(String.format("Untrusted proxy '%s' must be authorized with '%s'.", dn, Authority.ROLE_PROXY.toString())); } + + // if we've already encountered a proxy, update the chain + if (proxy != null) { + user.setChain(proxy); + } + + // record this user as the proxy for the next user in the chain + proxy = user; } catch (UsernameNotFoundException unfe) { // if this proxy is a new user, conditionally create a new account automatically if (properties.getSupportNewAccountRequests()) { @@ -112,6 +122,12 @@ public class NiFiAuthorizationService implements UserDetailsService { } } else { userDetails = getNiFiUserDetails(dn); + + // if we've already encountered a proxy, update the chain + if (proxy != null) { + final NiFiUser user = userDetails.getNiFiUser(); + user.setChain(proxy); + } } } diff --git a/nar-bundles/framework-bundle/framework/web/web-security/src/test/java/org/apache/nifi/web/security/authorization/NiFiAuthorizationServiceTest.java b/nar-bundles/framework-bundle/framework/web/web-security/src/test/java/org/apache/nifi/web/security/authorization/NiFiAuthorizationServiceTest.java new file mode 100644 index 0000000000..057a854509 --- /dev/null +++ b/nar-bundles/framework-bundle/framework/web/web-security/src/test/java/org/apache/nifi/web/security/authorization/NiFiAuthorizationServiceTest.java @@ -0,0 +1,250 @@ +/* + * 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.web.security.authorization; + +import org.apache.nifi.admin.service.AccountDisabledException; +import org.apache.nifi.admin.service.AccountNotFoundException; +import org.apache.nifi.admin.service.AccountPendingException; +import org.apache.nifi.admin.service.AdministrationException; +import org.apache.nifi.admin.service.UserService; +import org.apache.nifi.authorization.Authority; +import org.apache.nifi.user.NiFiUser; +import org.apache.nifi.util.NiFiProperties; +import org.apache.nifi.web.security.DnUtils; +import org.apache.nifi.web.security.UntrustedProxyException; +import org.apache.nifi.web.security.user.NiFiUserDetails; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; +import org.springframework.security.authentication.AccountStatusException; +import org.springframework.security.authentication.AuthenticationServiceException; +import org.springframework.security.core.userdetails.UsernameNotFoundException; + + +/** + * Test case for NiFiAuthorizationService. + */ +public class NiFiAuthorizationServiceTest { + + private static final String USER = "user"; + private static final String PROXY = "proxy"; + private static final String PROXY_PROXY = "proxy-proxy"; + private static final String USER_NOT_FOUND = "user-not-found"; + private static final String USER_DISABLED = "user-disabled"; + private static final String USER_PENDING = "user-pending"; + private static final String USER_ADMIN_EXCEPTION = "user-admin-exception"; + private static final String PROXY_NOT_FOUND = "proxy-not-found"; + + private NiFiAuthorizationService authorizationService; + private UserService userService; + + @Before + public void setup() throws Exception { + // mock the web security properties + final NiFiProperties properties = Mockito.mock(NiFiProperties.class); + Mockito.when(properties.getSupportNewAccountRequests()).thenReturn(Boolean.TRUE); + + userService = Mockito.mock(UserService.class); + Mockito.doReturn(null).when(userService).createPendingUserAccount(Mockito.anyString(), Mockito.anyString()); + Mockito.doAnswer(new Answer() { + @Override + public Object answer(InvocationOnMock invocation) throws Throwable { + Object[] args = invocation.getArguments(); + String dn = (String) args[0]; + + if (null != dn) { + switch (dn) { + case USER_NOT_FOUND: + case PROXY_NOT_FOUND: + throw new AccountNotFoundException(""); + case USER_DISABLED: + throw new AccountDisabledException(""); + case USER_PENDING: + throw new AccountPendingException(""); + case USER_ADMIN_EXCEPTION: + throw new AdministrationException(); + case USER: + final NiFiUser monitor = new NiFiUser(); + monitor.setDn(dn); + monitor.getAuthorities().add(Authority.ROLE_MONITOR); + return monitor; + case PROXY: + case PROXY_PROXY: + final NiFiUser proxy = new NiFiUser(); + proxy.setDn(dn); + proxy.getAuthorities().add(Authority.ROLE_PROXY); + return proxy; + } + } + + return null; + } + }).when(userService).checkAuthorization(Mockito.anyString()); + + // create the authorization service + authorizationService = new NiFiAuthorizationService(); + authorizationService.setProperties(properties); + authorizationService.setUserService(userService); + } + + /** + * Ensures the authorization service correctly handles users invalid dn chain. + * + * @throws Exception + */ + @Test(expected = UntrustedProxyException.class) + public void testInvalidDnChain() throws Exception { + authorizationService.loadUserByUsername(USER); + } + + /** + * Ensures the authorization service correctly handles account not found. + * + * @throws Exception + */ + @Test(expected = UsernameNotFoundException.class) + public void testAccountNotFound() throws Exception { + authorizationService.loadUserByUsername(DnUtils.formatProxyDn(USER_NOT_FOUND)); + } + + /** + * Ensures the authorization service correctly handles account disabled. + * + * @throws Exception + */ + @Test(expected = AccountStatusException.class) + public void testAccountDisabled() throws Exception { + authorizationService.loadUserByUsername(DnUtils.formatProxyDn(USER_DISABLED)); + } + + /** + * Ensures the authorization service correctly handles account pending. + * + * @throws Exception + */ + @Test(expected = AccountStatusException.class) + public void testAccountPending() throws Exception { + authorizationService.loadUserByUsername(DnUtils.formatProxyDn(USER_PENDING)); + } + + /** + * Ensures the authorization service correctly handles account administration exception. + * + * @throws Exception + */ + @Test(expected = AuthenticationServiceException.class) + public void testAccountAdminException() throws Exception { + authorizationService.loadUserByUsername(DnUtils.formatProxyDn(USER_ADMIN_EXCEPTION)); + } + + /** + * Tests the case when there is no proxy. + * + * @throws Exception + */ + @Test + public void testNoProxy() throws Exception { + final NiFiUserDetails details = (NiFiUserDetails) authorizationService.loadUserByUsername(DnUtils.formatProxyDn(USER)); + final NiFiUser user = details.getNiFiUser(); + + Assert.assertEquals(USER, user.getDn()); + Assert.assertNull(user.getChain()); + } + + /** + * Tests the case when the proxy does not have ROLE_PROXY. + * + * @throws Exception + */ + @Test(expected = UntrustedProxyException.class) + public void testInvalidProxy() throws Exception { + final String dnChain = DnUtils.formatProxyDn(USER) + DnUtils.formatProxyDn(USER); + authorizationService.loadUserByUsername(dnChain); + } + + /** + * Ensures the authorization service correctly handles proxy not found by attempting + * to create an account request for the proxy. + * + * @throws Exception + */ + @Test(expected = UsernameNotFoundException.class) + public void testProxyNotFound() throws Exception { + try { + final String dnChain = DnUtils.formatProxyDn(USER) + DnUtils.formatProxyDn(PROXY_NOT_FOUND); + authorizationService.loadUserByUsername(DnUtils.formatProxyDn(dnChain)); + } finally { + Mockito.verify(userService).createPendingUserAccount(Mockito.eq(PROXY_NOT_FOUND), Mockito.anyString()); + } + } + + /** + * Tests the case when there is a proxy. + * + * @throws Exception + */ + @Test + public void testProxy() throws Exception { + final String dnChain = DnUtils.formatProxyDn(USER) + DnUtils.formatProxyDn(PROXY); + final NiFiUserDetails details = (NiFiUserDetails) authorizationService.loadUserByUsername(dnChain); + final NiFiUser user = details.getNiFiUser(); + + // verify the user + Assert.assertEquals(USER, user.getDn()); + Assert.assertNotNull(user.getChain()); + + // get the proxy + final NiFiUser proxy = user.getChain(); + + // verify the proxy + Assert.assertEquals(PROXY, proxy.getDn()); + Assert.assertNull(proxy.getChain()); + } + + /** + * Tests the case when there is are multiple proxies. + * + * @throws Exception + */ + @Test + public void testProxyProxy() throws Exception { + final String dnChain = DnUtils.formatProxyDn(USER) + DnUtils.formatProxyDn(PROXY) + DnUtils.formatProxyDn(PROXY_PROXY); + final NiFiUserDetails details = (NiFiUserDetails) authorizationService.loadUserByUsername(dnChain); + final NiFiUser user = details.getNiFiUser(); + + // verify the user + Assert.assertEquals(USER, user.getDn()); + Assert.assertNotNull(user.getChain()); + + // get the proxy + NiFiUser proxy = user.getChain(); + + // verify the proxy + Assert.assertEquals(PROXY, proxy.getDn()); + Assert.assertNotNull(proxy.getChain()); + + // get the proxies proxy + proxy = proxy.getChain(); + + // verify the proxies proxy + Assert.assertEquals(PROXY_PROXY, proxy.getDn()); + Assert.assertNull(proxy.getChain()); + } +} From 71ab084d399bd09dd273942f42bceda66cf410d6 Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 09:46:35 -0500 Subject: [PATCH 27/41] NIFI-65: - Adding methods to the AuthorityProvider to authorize the downloading of content. --- .../cluster/authorization/NodeAuthorizationProvider.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/NodeAuthorizationProvider.java b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/NodeAuthorizationProvider.java index c81e9d0f4a..840422ff54 100644 --- a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/NodeAuthorizationProvider.java +++ b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/NodeAuthorizationProvider.java @@ -22,12 +22,15 @@ import org.apache.nifi.cluster.authorization.protocol.message.ProtocolMessage; import java.io.IOException; import java.net.InetSocketAddress; import java.net.Socket; +import java.util.List; +import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; import org.apache.nifi.authorization.Authority; import org.apache.nifi.authorization.AuthorityProvider; import org.apache.nifi.authorization.AuthorityProviderConfigurationContext; import org.apache.nifi.authorization.AuthorityProviderInitializationContext; +import org.apache.nifi.authorization.DownloadAuthorization; import org.apache.nifi.authorization.annotation.AuthorityProviderContext; import org.apache.nifi.authorization.exception.AuthorityAccessException; import org.apache.nifi.authorization.exception.IdentityAlreadyExistsException; @@ -282,6 +285,11 @@ public class NodeAuthorizationProvider implements AuthorityProvider, Application throw new AuthorityAccessException("Nodes are not allowed to ungroup."); } + @Override + public DownloadAuthorization authorizeDownload(List dnChain, Map attributes) throws UnknownIdentityException, AuthorityAccessException { + return DownloadAuthorization.approved(); + } + @Override public String getGroupForUser(String dn) throws UnknownIdentityException, AuthorityAccessException { // create message From 1f4ae7306584d3cd524c08c19886001456df5fce Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 10:27:09 -0500 Subject: [PATCH 28/41] NIFI-65: - Only requiring ROLE_PROVENANCE for downloading content as the AuthorityProvider is able to make authorization decisions based on FlowFile attributes. - Requiring ROLE_PROVENANCE and ROLE_DFM to submit a replay request. --- .../java/org/apache/nifi/web/api/ProvenanceResource.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProvenanceResource.java b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProvenanceResource.java index 2da78286d1..24bdf0c0e7 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProvenanceResource.java +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProvenanceResource.java @@ -160,7 +160,7 @@ public class ProvenanceResource extends ApplicationResource { */ @POST @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) - @PreAuthorize("hasRole('ROLE_PROVENANCE')") + @PreAuthorize("hasRole('ROLE_PROVENANCE') and hasRole('ROLE_DFM')") @Path("/replays") @TypeHint(ProvenanceEventEntity.class) public Response submitReplay( @@ -231,7 +231,7 @@ public class ProvenanceResource extends ApplicationResource { @GET @Produces(MediaType.APPLICATION_OCTET_STREAM) @Path("/events/{id}/content/input") - @PreAuthorize("hasRole('ROLE_PROVENANCE') and hasRole('ROLE_DFM')") + @PreAuthorize("hasRole('ROLE_PROVENANCE')") public Response getInputContent( @QueryParam(CLIENT_ID) @DefaultValue(StringUtils.EMPTY) ClientIdParameter clientId, @QueryParam("clusterNodeId") String clusterNodeId, @@ -305,7 +305,7 @@ public class ProvenanceResource extends ApplicationResource { @GET @Produces(MediaType.APPLICATION_OCTET_STREAM) @Path("/events/{id}/content/output") - @PreAuthorize("hasRole('ROLE_PROVENANCE') and hasRole('ROLE_DFM')") + @PreAuthorize("hasRole('ROLE_PROVENANCE')") public Response getOutputContent( @QueryParam(CLIENT_ID) @DefaultValue(StringUtils.EMPTY) ClientIdParameter clientId, @QueryParam("clusterNodeId") String clusterNodeId, From 7a29166d9cf009e7c259ddf48641f45737b4c76b Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 10:28:41 -0500 Subject: [PATCH 29/41] NIFI-65: - Replacing calls to nf.Common.submit with window.open where appropriate. --- .../js/nf/provenance/nf-provenance-table.js | 107 +++++++++--------- .../js/nf/templates/nf-templates-table.js | 2 +- 2 files changed, 53 insertions(+), 56 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js index bcd0fced82..759bcda0d1 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js @@ -84,17 +84,18 @@ nf.ProvenanceTable = (function () { var downloadContent = function (direction) { var eventId = $('#provenance-event-id').text(); - // build the parameters - var parameters = {}; + // build the url + var url = config.urls.provenance + '/events/' + encodeURIComponent(eventId) + '/content/' + encodeURIComponent(direction); // conditionally include the cluster node id var clusterNodeId = $('#provenance-event-cluster-node-id').text(); if (!nf.Common.isBlank(clusterNodeId)) { - parameters['clusterNodeId'] = clusterNodeId; + window.open(url + '?' + $.param({ + 'clusterNodeId': clusterNodeId + })); + } else { + window.open(url); } - - // get the content - nf.Common.submit('GET', config.urls.provenance + '/events/' + encodeURIComponent(eventId) + '/content/' + encodeURIComponent(direction), parameters); }; /** @@ -191,6 +192,29 @@ nf.ProvenanceTable = (function () { } }); + // input download + $('#input-content-download').on('click', function () { + downloadContent('input'); + }); + + // output download + $('#output-content-download').on('click', function () { + downloadContent('output'); + }); + + // if a content viewer url is specified, use it + if (isContentViewConfigured()) { + // input view + $('#input-content-view').on('click', function () { + viewContent('input'); + }); + + // output view + $('#output-content-view').on('click', function () { + viewContent('output'); + }); + } + // handle the replay and downloading if (nf.Common.isDFM()) { // replay @@ -220,29 +244,6 @@ nf.ProvenanceTable = (function () { $('#event-details-dialog').modal('hide'); }); - // input download - $('#input-content-download').on('click', function () { - downloadContent('input'); - }); - - // output download - $('#output-content-download').on('click', function () { - downloadContent('output'); - }); - - // if a content viewer url is specified, use it - if (isContentViewConfigured()) { - // input view - $('#input-content-view').on('click', function () { - viewContent('input'); - }); - - // output view - $('#output-content-view').on('click', function () { - viewContent('output'); - }); - } - // show the replay panel $('#replay-details').show(); } @@ -1281,19 +1282,17 @@ nf.ProvenanceTable = (function () { $('#output-content-download').hide(); - if (nf.Common.isDFM()) { - if (event.inputContentAvailable === true) { - $('#input-content-download').show(); + if (event.inputContentAvailable === true) { + $('#input-content-download').show(); - if (isContentViewConfigured()) { - $('#input-content-view').show(); - } else { - $('#input-content-view').hide(); - } + if (isContentViewConfigured()) { + $('#input-content-view').show(); } else { - $('#input-content-download').hide(); $('#input-content-view').hide(); } + } else { + $('#input-content-download').hide(); + $('#input-content-view').hide(); } } else { $('#output-content-details').show(); @@ -1327,32 +1326,30 @@ nf.ProvenanceTable = (function () { outputContentSize.attr('title', nf.Common.formatInteger(event.outputContentClaimFileSizeBytes) + ' bytes'); } - if (nf.Common.isDFM()) { - if (event.inputContentAvailable === true) { - $('#input-content-download').show(); + if (event.inputContentAvailable === true) { + $('#input-content-download').show(); - if (isContentViewConfigured()) { - $('#input-content-view').show(); - } else { - $('#input-content-view').hide(); - } + if (isContentViewConfigured()) { + $('#input-content-view').show(); } else { - $('#input-content-download').hide(); $('#input-content-view').hide(); } + } else { + $('#input-content-download').hide(); + $('#input-content-view').hide(); + } - if (event.outputContentAvailable === true) { - $('#output-content-download').show(); + if (event.outputContentAvailable === true) { + $('#output-content-download').show(); - if (isContentViewConfigured()) { - $('#output-content-view').show(); - } else { - $('#output-content-view').hide(); - } + if (isContentViewConfigured()) { + $('#output-content-view').show(); } else { - $('#output-content-download').hide(); $('#output-content-view').hide(); } + } else { + $('#output-content-download').hide(); + $('#output-content-view').hide(); } } diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js index 7f486de761..175620746c 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js @@ -270,7 +270,7 @@ nf.TemplatesTable = (function () { if (nf.Common.isDefinedAndNotNull(grid)) { var data = grid.getData(); var item = data.getItem(row); - nf.Common.submit('GET', config.urls.templates + '/' + encodeURIComponent(item.id)); + window.open(config.urls.templates + '/' + encodeURIComponent(item.id)); } }, From 1374d1db7ca40ce9faffc51a719be962d2af299a Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 12:17:59 -0500 Subject: [PATCH 30/41] NIFI-197: - Fixing issue when initializing the toolbox for non DFM users. --- .../webapp/js/nf/canvas/nf-canvas-toolbox.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbox.js b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbox.js index 530c8a2ac0..725a6516d1 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbox.js +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbox.js @@ -1136,14 +1136,14 @@ nf.CanvasToolbox = (function () { }); } else { // add disabled icons - $('
    ').attr('title', nf.Common.config.type.processor).addClass('processor-icon-disable').addClass('toolbox-icon').appendTo(toolbox); - $('
    ').attr('title', nf.Common.config.type.inputPort).addClass('input-port-icon-disable').addClass('toolbox-icon').appendTo(toolbox); - $('
    ').attr('title', nf.Common.config.type.outputPort).addClass('output-port-icon-disable').addClass('toolbox-icon').appendTo(toolbox); - $('
    ').attr('title', nf.Common.config.type.processGroup).addClass('process-group-icon-disable').addClass('toolbox-icon').appendTo(toolbox); - $('
    ').attr('title', nf.Common.config.type.remoteProcessGroup).addClass('remote-process-group-icon-disable').addClass('toolbox-icon').appendTo(toolbox); - $('
    ').attr('title', nf.Common.config.type.funnel).addClass('funnel-icon-disable').addClass('toolbox-icon').appendTo(toolbox); - $('
    ').attr('title', nf.Common.config.type.template).addClass('template-icon-disable').addClass('toolbox-icon').appendTo(toolbox); - $('
    ').attr('title', nf.Common.config.type.label).addClass('label-icon-disable').addClass('toolbox-icon').appendTo(toolbox); + $('
    ').attr('title', config.type.processor).addClass('processor-icon-disable').addClass('toolbox-icon').appendTo(toolbox); + $('
    ').attr('title', config.type.inputPort).addClass('input-port-icon-disable').addClass('toolbox-icon').appendTo(toolbox); + $('
    ').attr('title', config.type.outputPort).addClass('output-port-icon-disable').addClass('toolbox-icon').appendTo(toolbox); + $('
    ').attr('title', config.type.processGroup).addClass('process-group-icon-disable').addClass('toolbox-icon').appendTo(toolbox); + $('
    ').attr('title', config.type.remoteProcessGroup).addClass('remote-process-group-icon-disable').addClass('toolbox-icon').appendTo(toolbox); + $('
    ').attr('title', config.type.funnel).addClass('funnel-icon-disable').addClass('toolbox-icon').appendTo(toolbox); + $('
    ').attr('title', config.type.template).addClass('template-icon-disable').addClass('toolbox-icon').appendTo(toolbox); + $('
    ').attr('title', config.type.label).addClass('label-icon-disable').addClass('toolbox-icon').appendTo(toolbox); } }, From 469502f30ca01953bceabca590bea8e183ed2c7d Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 13:00:38 -0500 Subject: [PATCH 31/41] NIFI-65: - Code clean up. - Updating authorizeDownload(...) to accept the dnChain in the appropriate order. --- .../org/apache/nifi/web/controller/ControllerFacade.java | 5 ++--- .../org/apache/nifi/authorization/AuthorityProvider.java | 7 ++++--- .../apache/nifi/authorization/DownloadAuthorization.java | 5 +++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java index 99440bc6ae..07e3150241 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java @@ -26,7 +26,6 @@ import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.HashSet; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -796,13 +795,13 @@ public class ControllerFacade implements ControllerServiceProvider { final Map attributes = event.getAttributes(); // calculate the dn chain - final LinkedList dnChain = new LinkedList<>(); + final List dnChain = new ArrayList<>(); // build the dn chain NiFiUser chainedUser = user; do { // add the entry for this user - dnChain.push(chainedUser.getDn()); + dnChain.add(chainedUser.getDn()); // go to the next user in the chain chainedUser = chainedUser.getChain(); diff --git a/nifi-api/src/main/java/org/apache/nifi/authorization/AuthorityProvider.java b/nifi-api/src/main/java/org/apache/nifi/authorization/AuthorityProvider.java index da536c24ff..7754c3502a 100644 --- a/nifi-api/src/main/java/org/apache/nifi/authorization/AuthorityProvider.java +++ b/nifi-api/src/main/java/org/apache/nifi/authorization/AuthorityProvider.java @@ -142,9 +142,10 @@ public interface AuthorityProvider { * Determines whether the user in the specified dnChain should be able to * download the content for the flowfile with the specified attributes. * - * The last dn in the chain is the end user that the request was issued on - * behalf of. The previous dn's in the chain represent entities proxying the - * user's request. + * The first dn in the chain is the end user that the request was issued on + * behalf of. The subsequent dn's in the chain represent entities proxying + * the user's request with the last being the proxy that sent the current + * request. * * @param dnChain * @param attributes diff --git a/nifi-api/src/main/java/org/apache/nifi/authorization/DownloadAuthorization.java b/nifi-api/src/main/java/org/apache/nifi/authorization/DownloadAuthorization.java index 3855817917..08695fa91e 100644 --- a/nifi-api/src/main/java/org/apache/nifi/authorization/DownloadAuthorization.java +++ b/nifi-api/src/main/java/org/apache/nifi/authorization/DownloadAuthorization.java @@ -39,7 +39,7 @@ public class DownloadAuthorization { */ private DownloadAuthorization(Result result, String explanation) { if (Result.Denied.equals(result) && explanation == null) { - throw new IllegalArgumentException("An explanation is request when the download request is denied."); + throw new IllegalArgumentException("An explanation is required when the download request is denied."); } this.result = result; @@ -74,10 +74,11 @@ public class DownloadAuthorization { } /** - * Creates a new denied DownloadAuthorization with the specified exlanation. + * Creates a new denied DownloadAuthorization with the specified explanation. * * @param explanation * @return + * @throws IllegalArgumentException if explanation is null */ public static DownloadAuthorization denied(String explanation) { return new DownloadAuthorization(Result.Denied, explanation); From 2436b5338ecf1752c0f5b51646f59c9a985ceb9c Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 13:46:48 -0500 Subject: [PATCH 32/41] NIFI-65: - Code clean up. --- .../NiFiAuthorizationService.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/web-security/src/main/java/org/apache/nifi/web/security/authorization/NiFiAuthorizationService.java b/nar-bundles/framework-bundle/framework/web/web-security/src/main/java/org/apache/nifi/web/security/authorization/NiFiAuthorizationService.java index 33c4eb66b1..dec7c4b7b7 100644 --- a/nar-bundles/framework-bundle/framework/web/web-security/src/main/java/org/apache/nifi/web/security/authorization/NiFiAuthorizationService.java +++ b/nar-bundles/framework-bundle/framework/web/web-security/src/main/java/org/apache/nifi/web/security/authorization/NiFiAuthorizationService.java @@ -51,10 +51,12 @@ public class NiFiAuthorizationService implements UserDetailsService { private NiFiProperties properties; /** - * Loads the user details for the specified dn. Method must be synchronized - * since multiple requests from the same user may be sent simultaneously. - * Since we don't want to run the account verification process multiple for - * the same user, we treat each request atomically. + * Loads the user details for the specified dn. + * + * Synchronizing because we want each request to be authorized atomically since + * each may contain any number of DNs. We wanted an access decision made + * for each individual request as a whole (without other request potentially + * impacting it). * * @param rawProxyChain * @return @@ -111,6 +113,12 @@ public class NiFiAuthorizationService implements UserDetailsService { throw new UsernameNotFoundException(String.format("An account request was generated for the proxy '%s'.", dn)); } catch (AdministrationException ae) { throw new AuthenticationServiceException(String.format("Unable to create an account request for '%s': %s", dn, ae.getMessage()), ae); + } catch (IllegalArgumentException iae) { + // check then modified... account didn't exist when getting the user details but did when + // attempting to auto create the user account request + final String message = String.format("Account request was already submitted for '%s'", dn); + logger.warn(message); + throw new AccountStatusException(message) {}; } } else { logger.warn(String.format("Untrusted proxy '%s' must be authorized with '%s' authority: %s", dn, Authority.ROLE_PROXY.toString(), unfe.getMessage())); @@ -147,8 +155,7 @@ public class NiFiAuthorizationService implements UserDetailsService { } catch (AdministrationException ase) { throw new AuthenticationServiceException(String.format("An error occurred while accessing the user credentials for '%s': %s", dn, ase.getMessage()), ase); } catch (AccountDisabledException | AccountPendingException e) { - throw new AccountStatusException(e.getMessage(), e) { - }; + throw new AccountStatusException(e.getMessage(), e) {}; } catch (AccountNotFoundException anfe) { throw new UsernameNotFoundException(anfe.getMessage()); } From 1a34e75c5b9cd29cf4496a4ff0d10b2b0519dc76 Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 14:56:08 -0500 Subject: [PATCH 33/41] NIFI-65: - Addressed issues submitting replays while clustered. --- .../main/java/org/apache/nifi/web/api/ProvenanceResource.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProvenanceResource.java b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProvenanceResource.java index 24bdf0c0e7..f0b38a1b96 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProvenanceResource.java +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProvenanceResource.java @@ -166,7 +166,7 @@ public class ProvenanceResource extends ApplicationResource { public Response submitReplay( @Context HttpServletRequest httpServletRequest, @FormParam(CLIENT_ID) @DefaultValue(StringUtils.EMPTY) ClientIdParameter clientId, - @QueryParam("clusterNodeId") String clusterNodeId, + @FormParam("clusterNodeId") String clusterNodeId, @FormParam("eventId") LongParameter eventId) { // ensure the event id is specified @@ -190,7 +190,7 @@ public class ProvenanceResource extends ApplicationResource { targetNodes.add(targetNode.getNodeId()); // replicate the request to the specific node - return clusterManager.applyRequest(HttpMethod.GET, getAbsolutePath(), getRequestParameters(true), getHeaders(), targetNodes).getResponse(); + return clusterManager.applyRequest(HttpMethod.POST, getAbsolutePath(), getRequestParameters(true), getHeaders(), targetNodes).getResponse(); } } From c39445415779cc6c0f21b226ea41c23daf29f6d1 Mon Sep 17 00:00:00 2001 From: joewitt Date: Tue, 23 Dec 2014 15:12:37 -0500 Subject: [PATCH 34/41] NIFI-51 fixed if/else logic/order --- .../java/org/apache/nifi/controller/FlowController.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowController.java b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowController.java index e6d67a0117..bb98418fac 100644 --- a/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowController.java +++ b/nar-bundles/framework-bundle/framework/core/src/main/java/org/apache/nifi/controller/FlowController.java @@ -447,10 +447,11 @@ public class FlowController implements EventAccess, ControllerServiceProvider, H rootGroup.setName(DEFAULT_ROOT_GROUP_NAME); instanceId = UUID.randomUUID().toString(); - if (Boolean.TRUE.equals(isSiteToSiteSecure) && sslContext == null) { - LOG.error("Unable to create Secure Site-to-Site Listener because not all required Keystore/Truststore Properties are set. Site-to-Site functionality will be disabled until this problem is has been fixed."); + if (remoteInputSocketPort == null){ + LOG.info("Not enabling Site-to-Site functionality because nifi.remote.input.socket.port is not set"); externalSiteListener = null; - } else if (remoteInputSocketPort == null) { + } else if (isSiteToSiteSecure && sslContext == null) { + LOG.error("Unable to create Secure Site-to-Site Listener because not all required Keystore/Truststore Properties are set. Site-to-Site functionality will be disabled until this problem is has been fixed."); externalSiteListener = null; } else { // Register the SocketFlowFileServerProtocol as the appropriate resource for site-to-site Server Protocol From 79803c1c67f4dabbdea4611ed910d366dfea010a Mon Sep 17 00:00:00 2001 From: Matt Gilman Date: Tue, 23 Dec 2014 15:58:46 -0500 Subject: [PATCH 35/41] NIFI-58: - Addressed issues submitting replays while clustered. --- .../src/main/webapp/css/cluster.css | 4 +++ .../webapp/js/nf/cluster/nf-cluster-table.js | 35 ++++++++++++++++--- .../src/main/webapp/js/nf/nf-common.js | 2 +- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/css/cluster.css b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/css/cluster.css index c3b547af5f..8bb50bf69c 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/css/cluster.css +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/css/cluster.css @@ -133,6 +133,10 @@ input.cluster-filter-list { overflow: hidden; } +span.sorted { + text-decoration: underline; +} + /* user details dialog */ #node-details-dialog { diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js index addd4be3f1..13b0e5f24c 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js @@ -30,6 +30,8 @@ nf.ClusterTable = (function () { } }; + var prevColumn, count; + /** * Sorts the specified data using the specified sort details. * @@ -44,9 +46,20 @@ nf.ClusterTable = (function () { var bDate = nf.Common.parseDateTime(b[sortDetails.columnId]); return aDate.getTime() - bDate.getTime(); } else if (sortDetails.columnId === 'queued') { - var aCount = nf.Common.parseCount(a[sortDetails.columnId]); - var bCount = nf.Common.parseCount(b[sortDetails.columnId]); - return aCount - bCount; + var aSplit = a[sortDetails.columnId].split(/ \/ /); + var bSplit = b[sortDetails.columnId].split(/ \/ /); + var mod = count %4; + if (mod < 2) { + $('#cluster-table span.queued-title').addClass('sorted'); + var aCount = nf.Common.parseCount(aSplit[0]); + var bCount = nf.Common.parseCount(bSplit[0]); + return aCount - bCount; + } else { + $('#cluster-table span.queued-size-title').addClass('sorted'); + var aSize = nf.Common.parseSize(aSplit[1]); + var bSize = nf.Common.parseSize(bSplit[1]); + return aSize - bSize; + } } else if (sortDetails.columnId === 'status') { var aString = nf.Common.isDefinedAndNotNull(a[sortDetails.columnId]) ? a[sortDetails.columnId] : ''; if (a.primary === true) { @@ -68,8 +81,22 @@ nf.ClusterTable = (function () { } }; + // remove previous sort indicators + $('#cluster-table span.queued-title').removeClass('sorted'); + $('#cluster-table span.queued-size-title').removeClass('sorted'); + + // update/reset the count as appropriate + if (prevColumn !== sortDetails.columnId) { + count = 0; + } else { + count++; + } + // perform the sort data.sort(comparer, sortDetails.sortAsc); + + // record the previous table and sorted column + prevColumn = sortDetails.columnId; }; /** @@ -291,7 +318,7 @@ nf.ClusterTable = (function () { {id: 'moreDetails', name: ' ', sortable: false, resizable: false, formatter: moreDetailsFormatter, width: 50, maxWidth: 50}, {id: 'node', field: 'node', name: 'Node Address', formatter: nodeFormatter, resizable: true, sortable: true}, {id: 'activeThreadCount', field: 'activeThreadCount', name: 'Active Thread Count', resizable: true, sortable: true}, - {id: 'queued', field: 'queued', name: 'Queued (count / size)', resizable: true, sortable: true}, + {id: 'queued', field: 'queued', name: 'Queue / Size', resizable: true, sortable: true}, {id: 'status', field: 'status', name: 'Status', formatter: statusFormatter, resizable: true, sortable: true}, {id: 'uptime', field: 'nodeStartTime', name: 'Uptime', formatter: valueFormatter, resizable: true, sortable: true}, {id: 'heartbeat', field: 'heartbeat', name: 'Last Heartbeat', formatter: valueFormatter, resizable: true, sortable: true} diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js index cdc3ea7cfa..6bf7e08e59 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js @@ -728,7 +728,7 @@ nf.Common = { */ parseSize: function (rawSize) { var tokens = rawSize.split(/ /); - var size = parseFloat(tokens[0]); + var size = parseFloat(tokens[0].replace(/,/g, '')); var units = tokens[1]; if (units === 'KB') { From 7f0eb2e35286b58a1072067599a88ca47af991a8 Mon Sep 17 00:00:00 2001 From: joewitt Date: Tue, 23 Dec 2014 16:05:43 -0500 Subject: [PATCH 36/41] NIFI-51 made a test a little nicer about cleanup as it kept messing up the build and addressed the possible NPE/ordering logic for 51 --- .../java/org/apache/nifi/util/NiFiProperties.java | 14 ++++++-------- .../impl/DataFlowManagementServiceImplTest.java | 6 ++++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java b/commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java index 15208146a6..6fdc4c1819 100644 --- a/commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java +++ b/commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java @@ -374,20 +374,18 @@ public class NiFiProperties extends Properties { return getPropertyAsPort(REMOTE_INPUT_PORT, DEFAULT_REMOTE_INPUT_PORT); } + /** + * @return False if property value is 'false'; True otherwise. + */ public Boolean isSiteToSiteSecure() { - final String secureVal = getProperty(SITE_TO_SITE_SECURE); - if (secureVal == null) { - return null; - } + final String secureVal = getProperty(SITE_TO_SITE_SECURE, "true"); - if ("true".equalsIgnoreCase(secureVal)) { - return true; - } if ("false".equalsIgnoreCase(secureVal)) { return false; + }else{ + return true; } - throw new IllegalStateException("Property value for " + SITE_TO_SITE_SECURE + " is " + secureVal + "; expected 'true' or 'false'"); } /** diff --git a/nar-bundles/framework-bundle/framework/cluster/src/test/java/org/apache/nifi/cluster/flow/impl/DataFlowManagementServiceImplTest.java b/nar-bundles/framework-bundle/framework/cluster/src/test/java/org/apache/nifi/cluster/flow/impl/DataFlowManagementServiceImplTest.java index 6294dfc0da..f9ba016e3a 100644 --- a/nar-bundles/framework-bundle/framework/cluster/src/test/java/org/apache/nifi/cluster/flow/impl/DataFlowManagementServiceImplTest.java +++ b/nar-bundles/framework-bundle/framework/cluster/src/test/java/org/apache/nifi/cluster/flow/impl/DataFlowManagementServiceImplTest.java @@ -74,8 +74,8 @@ public class DataFlowManagementServiceImplTest { @Before public void setup() throws IOException { - primaryLocation = new File(System.getProperty("java.io.tmpdir") + "/primary"); - restoreLocation = new File(System.getProperty("java.io.tmpdir") + "/restore"); + primaryLocation = new File(System.getProperty("java.io.tmpdir") + "/primary" + this.getClass().getSimpleName()); + restoreLocation = new File(System.getProperty("java.io.tmpdir") + "/restore" + this.getClass().getSimpleName()); FileUtils.deleteDirectory(primaryLocation); FileUtils.deleteDirectory(restoreLocation); @@ -114,6 +114,8 @@ public class DataFlowManagementServiceImplTest { ex.printStackTrace(System.out); } } + FileUtils.deleteDirectory(primaryLocation); + FileUtils.deleteDirectory(restoreLocation); } From 07547a74f1324fb44ae67b2c60c6f9a531db856b Mon Sep 17 00:00:00 2001 From: Karl-Heinz Marbaise Date: Tue, 23 Dec 2014 22:53:33 +0100 Subject: [PATCH 37/41] [NIFI-198] Prerequisites is not correctly checked Using maven-enforcer-plugin to check the correct maven version. --- pom.xml | 46 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 85bbf196ca..3835439972 100644 --- a/pom.xml +++ b/pom.xml @@ -52,8 +52,13 @@ http://mail-archives.apache.org/mod_mbox/incubator-nifi-commits + - ${maven.min-version} + ${maven.version} + 1.7 + 1.7 + + 3.0.5 + UTF-8 UTF-8 1.7.8 @@ -836,11 +851,8 @@ maven-compiler-plugin 3.2 - 1.7 - 1.7 true true - UTF-8 true true @@ -928,6 +940,32 @@ + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-maven + + enforce + + + + + + org.apache.maven.plugins:maven-surefire-plugin + org.apache.maven.plugins:maven-failsafe-plugin + org.apache.maven.plugins:maven-surefire-report-plugin + + + + ${maven.version} + + + + + + org.apache.nifi nar-maven-plugin From 03f2ce50006ef526ae55876492261ef09fe2e789 Mon Sep 17 00:00:00 2001 From: Karl-Heinz Marbaise Date: Tue, 23 Dec 2014 22:58:39 +0100 Subject: [PATCH 38/41] [NIFI-199] Removed plugin dependencies from main project cause they are not needed at the moment. --- pom.xml | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index 85bbf196ca..fa6c886aa2 100644 --- a/pom.xml +++ b/pom.xml @@ -132,22 +132,6 @@ ${org.slf4j.version} provided - - org.apache.maven - maven-plugin-api - 2.0.11 - - - org.apache.maven.plugins - maven-dependency-plugin - 2.9 - maven-plugin - - - org.apache.maven.plugin-tools - maven-plugin-annotations - 3.3 - junit junit @@ -846,18 +830,10 @@ - maven-jar-plugin - 2.5 - - + org.apache.maven.plugins maven-war-plugin 2.5 - - org.apache.maven.plugins - maven-plugin-plugin - 3.3 - org.apache.maven.plugins maven-dependency-plugin From 9b0a9a6415f84a170c19cf226b505cb52d48ee04 Mon Sep 17 00:00:00 2001 From: joewitt Date: Tue, 23 Dec 2014 22:28:42 -0500 Subject: [PATCH 39/41] NIFI-198 formatting adjustment, removed comments provided as guides to understand previous patch --- nar-maven-plugin/pom.xml | 32 ++++++++++++++++++++--- pom.xml | 55 ++++++++++++++++++---------------------- 2 files changed, 53 insertions(+), 34 deletions(-) diff --git a/nar-maven-plugin/pom.xml b/nar-maven-plugin/pom.xml index e539f0a12d..c63f272ac8 100644 --- a/nar-maven-plugin/pom.xml +++ b/nar-maven-plugin/pom.xml @@ -68,6 +68,9 @@ https://issues.apache.org/jira/browse/NIFI + 1.7 + 1.7 + 3.0.5 UTF-8 UTF-8 @@ -79,11 +82,8 @@ maven-compiler-plugin 3.2 - 1.7 - 1.7 true true - UTF-8 true true @@ -186,6 +186,32 @@ + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-maven + + enforce + + + + + + org.apache.maven.plugins:maven-surefire-plugin + org.apache.maven.plugins:maven-failsafe-plugin + org.apache.maven.plugins:maven-surefire-report-plugin + + + + ${maven.version} + + + + + + diff --git a/pom.xml b/pom.xml index af2b2f7ace..58831a97ff 100644 --- a/pom.xml +++ b/pom.xml @@ -85,16 +85,9 @@ https://issues.apache.org/jira/browse/NIFI - 1.7 1.7 - 3.0.5 - UTF-8 UTF-8 1.7.8 @@ -917,30 +910,30 @@ - org.apache.maven.plugins - maven-enforcer-plugin - - - enforce-maven - - enforce - - - - - - org.apache.maven.plugins:maven-surefire-plugin - org.apache.maven.plugins:maven-failsafe-plugin - org.apache.maven.plugins:maven-surefire-report-plugin - - - - ${maven.version} - - - - - + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-maven + + enforce + + + + + + org.apache.maven.plugins:maven-surefire-plugin + org.apache.maven.plugins:maven-failsafe-plugin + org.apache.maven.plugins:maven-surefire-report-plugin + + + + ${maven.version} + + + + + org.apache.nifi From ac3c3bb4d5b18329aa48d4663ca8eda9420f2b83 Mon Sep 17 00:00:00 2001 From: joewitt Date: Wed, 24 Dec 2014 22:12:09 -0500 Subject: [PATCH 40/41] NIFI-200 added quotes around appropriate path to allow space to work and ensured nifi root was set properly/tested on paths with spaces and without --- .../resources/src/main/resources/bin/nifi-status.bat | 7 ++++--- .../resources/src/main/resources/bin/run-nifi.bat | 7 ++++--- .../resources/src/main/resources/bin/start-nifi.bat | 8 ++++---- .../resources/src/main/resources/bin/stop-nifi.bat | 7 ++++--- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/nifi-status.bat b/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/nifi-status.bat index d00f31cf55..07dd6c71c3 100644 --- a/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/nifi-status.bat +++ b/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/nifi-status.bat @@ -1,5 +1,4 @@ @echo off - rem rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with @@ -20,8 +19,10 @@ rem rem Use JAVA_HOME if it's set; otherwise, just use java IF "%JAVA_HOME%"=="" (SET JAVA_EXE=java) ELSE (SET JAVA_EXE=%JAVA_HOME%\bin\java.exe) -SET LIB_DIR=%~dp0..\lib\bootstrap -SET CONF_DIR=%~dp0..\conf +SET NIFI_ROOT=%~dp0..\ +CD /d "%NIFI_ROOT%" +SET LIB_DIR=lib\bootstrap +SET CONF_DIR=conf SET BOOTSTRAP_CONF_FILE=%CONF_DIR%\bootstrap.conf SET JAVA_ARGS=-Dorg.apache.nifi.bootstrap.config.file=%BOOTSTRAP_CONF_FILE% diff --git a/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/run-nifi.bat b/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/run-nifi.bat index 5bab3886b1..03123d6b43 100644 --- a/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/run-nifi.bat +++ b/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/run-nifi.bat @@ -16,12 +16,13 @@ rem See the License for the specific language governing permissions and rem limitations under the License. rem - rem Use JAVA_HOME if it's set; otherwise, just use java IF "%JAVA_HOME%"=="" (SET JAVA_EXE=java) ELSE (SET JAVA_EXE=%JAVA_HOME%\bin\java.exe) -SET LIB_DIR=%~dp0..\lib\bootstrap -SET CONF_DIR=%~dp0..\conf +SET NIFI_ROOT=%~dp0..\ +CD /d "%NIFI_ROOT%" +SET LIB_DIR=lib\bootstrap +SET CONF_DIR=conf SET BOOTSTRAP_CONF_FILE=%CONF_DIR%\bootstrap.conf SET JAVA_ARGS=-Dorg.apache.nifi.bootstrap.config.file=%BOOTSTRAP_CONF_FILE% diff --git a/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/start-nifi.bat b/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/start-nifi.bat index 882b719c29..6cc873342f 100644 --- a/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/start-nifi.bat +++ b/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/start-nifi.bat @@ -1,5 +1,4 @@ @echo off - rem rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with @@ -17,12 +16,13 @@ rem See the License for the specific language governing permissions and rem limitations under the License. rem - rem Use JAVA_HOME if it's set; otherwise, just use java IF "%JAVA_HOME%"=="" (SET JAVA_EXE=java) ELSE (SET JAVA_EXE=%JAVA_HOME%\bin\java.exe) -SET LIB_DIR=%~dp0..\lib\bootstrap -SET CONF_DIR=%~dp0..\conf +SET NIFI_ROOT=%~dp0..\ +CD /d "%NIFI_ROOT%" +SET LIB_DIR=lib\bootstrap +SET CONF_DIR=conf SET BOOTSTRAP_CONF_FILE=%CONF_DIR%\bootstrap.conf SET JAVA_ARGS=-Dorg.apache.nifi.bootstrap.config.file=%BOOTSTRAP_CONF_FILE% diff --git a/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/stop-nifi.bat b/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/stop-nifi.bat index 40c2d57b45..e4fc81d200 100644 --- a/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/stop-nifi.bat +++ b/nar-bundles/framework-bundle/framework/resources/src/main/resources/bin/stop-nifi.bat @@ -1,5 +1,4 @@ @echo off - rem rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with @@ -20,8 +19,10 @@ rem rem Use JAVA_HOME if it's set; otherwise, just use java IF "%JAVA_HOME%"=="" (SET JAVA_EXE=java) ELSE (SET JAVA_EXE=%JAVA_HOME%\bin\java.exe) -SET LIB_DIR=%~dp0..\lib\bootstrap -SET CONF_DIR=%~dp0..\conf +SET NIFI_ROOT=%~dp0..\ +CD /d "%NIFI_ROOT%" +SET LIB_DIR=lib\bootstrap +SET CONF_DIR=conf SET BOOTSTRAP_CONF_FILE=%CONF_DIR%\bootstrap.conf SET JAVA_ARGS=-Dorg.apache.nifi.bootstrap.config.file=%BOOTSTRAP_CONF_FILE% From b6f2dd280c4925fcdfd256f96e89b6d2f8b0744b Mon Sep 17 00:00:00 2001 From: joewitt Date: Fri, 26 Dec 2014 23:06:31 -0500 Subject: [PATCH 41/41] NIFI-162 all doc components prepped and integrated to build process. Now just to fill in content --- .../main/webapp/WEB-INF/jsp/documentation.jsp | 5 +- .../src/main/webapp/js/application.js | 4 +- nifi-docs/pom.xml | 59 +++++++++++-------- .../main/asciidoc/administration-guide.adoc | 34 +++++++++++ .../src/main/asciidoc/developer-guide.adoc | 43 ++++++++++++++ nifi-docs/src/main/asciidoc/overview.adoc | 31 ++++++++++ .../{nifi-user-guide.adoc => user-guide.adoc} | 8 +-- nifi-docs/src/main/assembly/dependencies.xml | 6 +- 8 files changed, 152 insertions(+), 38 deletions(-) create mode 100644 nifi-docs/src/main/asciidoc/administration-guide.adoc create mode 100644 nifi-docs/src/main/asciidoc/developer-guide.adoc create mode 100644 nifi-docs/src/main/asciidoc/overview.adoc rename nifi-docs/src/main/asciidoc/{nifi-user-guide.adoc => user-guide.adoc} (99%) diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp index 016dad90ed..9b2d6df9d8 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp @@ -42,7 +42,9 @@
    General
    @@ -106,6 +108,7 @@ diff --git a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js index d98a251bdc..6983f01ea0 100644 --- a/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js +++ b/nar-bundles/framework-bundle/framework/web/nifi-web-docs/src/main/webapp/js/application.js @@ -258,8 +258,8 @@ $(document).ready(function () { } }); - // listen for on the rest api and user guide - $('a.rest-api, a.user-guide').on('click', function() { + // listen for on the rest api and user guide and developer guide and admin guide and overview + $('a.rest-api, a.user-guide, a.developer-guide, a.admin-guide, a.overview').on('click', function() { selectComponent($(this).text()); }); diff --git a/nifi-docs/pom.xml b/nifi-docs/pom.xml index 1979b66526..8785ea1051 100644 --- a/nifi-docs/pom.xml +++ b/nifi-docs/pom.xml @@ -13,31 +13,31 @@ - - org.apache.maven.plugins - maven-resources-plugin - - - copy-asciidoc - generate-resources - - copy-resources - - - - - src/main/asciidoc - - - ${project.build.directory}/asciidoc - - - - + + org.apache.maven.plugins + maven-resources-plugin + + + copy-asciidoc + generate-resources + + copy-resources + + + + + src/main/asciidoc + + + ${project.build.directory}/asciidoc + + + + org.asciidoctor asciidoctor-maven-plugin - 1.5.0 + 1.5.2 output-html @@ -49,13 +49,19 @@ ${project.build.directory}/asciidoc - html + html5 - true + ./images + font + true + ${project.version} + true + + - + true - @@ -71,7 +77,7 @@ - ${project.build.directory}/generated-docs/nifi-user-guide.html + ${project.build.directory}/generated-docs/**.html true DOTALL @@ -99,6 +105,7 @@ $1 + maven-assembly-plugin diff --git a/nifi-docs/src/main/asciidoc/administration-guide.adoc b/nifi-docs/src/main/asciidoc/administration-guide.adoc new file mode 100644 index 0000000000..d3e1def6fd --- /dev/null +++ b/nifi-docs/src/main/asciidoc/administration-guide.adoc @@ -0,0 +1,34 @@ +// +// 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. +// +NiFi System Administrator's Guide +================================= + +How to install +-------------- +Installation instructions... + +Best Practice Configuration +--------------------------- +The following are things which are good to check... + +Security Configuration +---------------------- +Two-way SSL... + +Controlling Levels of Access +---------------------------- +Within the web-ui .... diff --git a/nifi-docs/src/main/asciidoc/developer-guide.adoc b/nifi-docs/src/main/asciidoc/developer-guide.adoc new file mode 100644 index 0000000000..90e24659fd --- /dev/null +++ b/nifi-docs/src/main/asciidoc/developer-guide.adoc @@ -0,0 +1,43 @@ +// +// 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. +// +NiFi Developer's Guide +====================== + +The designed points of extension +-------------------------------- +Processor, Prioritizer, ... + +The NiFi Archive (NAR) and NiFi Classloading +-------------------------------------------- +A NAR is ... + +How to build extensions +----------------------- +Understanding Nars the first step is... + +Design considerations +--------------------- +The right abstraction ... + +Consider the User Experience +---------------------------- +The user... + +How to contribute to Apache NiFi +-------------------------------- +Git, Maven, ASF processes, NiFi processes, ... + diff --git a/nifi-docs/src/main/asciidoc/overview.adoc b/nifi-docs/src/main/asciidoc/overview.adoc new file mode 100644 index 0000000000..4fbc99bdf0 --- /dev/null +++ b/nifi-docs/src/main/asciidoc/overview.adoc @@ -0,0 +1,31 @@ +// +// 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. +// +NiFi Overview +============= + +The problem NiFi solves +----------------------- +Dataflow at scale... + +The design philosophy of NiFi +----------------------------- +FBP, ... + +Key Features +------------ +UI, compponent-based, high performance, provenance + diff --git a/nifi-docs/src/main/asciidoc/nifi-user-guide.adoc b/nifi-docs/src/main/asciidoc/user-guide.adoc similarity index 99% rename from nifi-docs/src/main/asciidoc/nifi-user-guide.adoc rename to nifi-docs/src/main/asciidoc/user-guide.adoc index 65878df5c6..8d145c240f 100644 --- a/nifi-docs/src/main/asciidoc/nifi-user-guide.adoc +++ b/nifi-docs/src/main/asciidoc/user-guide.adoc @@ -14,12 +14,8 @@ // See the License for the specific language governing permissions and // limitations under the License. // -NiFi User Guide (Draft - Preview Version) -========================================= -Apache_NiFi_Team -:toc: -:icons: - +NiFi User Guide +=============== [template="glossary", id="terminology"] Terminology diff --git a/nifi-docs/src/main/assembly/dependencies.xml b/nifi-docs/src/main/assembly/dependencies.xml index 8c41ead4d4..94778aa58a 100644 --- a/nifi-docs/src/main/assembly/dependencies.xml +++ b/nifi-docs/src/main/assembly/dependencies.xml @@ -21,8 +21,8 @@ false - ${project.build.directory}/generated-docs - /user-guide/ - + ${project.build.directory}/generated-docs/ + /html/ +