You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by sz...@apache.org on 2021/07/19 14:31:49 UTC

[nifi-minifi-cpp] branch main updated (2d2f300 -> c683cbe)

This is an automated email from the ASF dual-hosted git repository.

szaszm pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git.


    from 2d2f300  MINIFICPP-1605 Always refresh AWS credentials through default credentials chain
     new bf79391  MINIFICPP-1367 Add ENABLE_NANOFI cmake option, disable by default
     new f7f29cb  MINIFICPP-1606 ProcessSession::read() should return int64_t
     new a178c9f  MINIFICPP-1601 Add example flow configurations
     new c683cbe  MINIFICPP-1587 Fix CWEL test compilation if path contains whitespace

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/workflows/ci.yml                           |   8 +-
 .gitignore                                         |   9 ++
 CMakeLists.txt                                     |  19 +--
 PROCESSORS.md                                      |  10 +-
 README.md                                          |   7 +-
 bootstrap.sh                                       |   4 +
 bstrp_functions.sh                                 |  28 ++++-
 cmake/BuildTests.cmake                             |  89 +++++++-------
 cmake/DockerConfig.cmake                           |   1 +
 conf/config.yml                                    |   2 +-
 docker/Dockerfile                                  |   5 +-
 examples/README.md                                 | 128 ++++++++++++++++++++-
 examples/azure_storage_config.yml                  |  46 ++++++++
 .../consumejournald_config.yml                     |  26 ++++-
 examples/consumekafka_config.yml                   |  53 +++++++++
 examples/cwel_config.yml                           |  50 ++++++++
 examples/getfile_putfile_config.yml                |  50 ++++++++
 examples/http_post_config.yml                      |  85 ++++++++++++++
 examples/lists3_fetchs3_config.yml                 |  66 +++++++++++
 examples/pdh_config.yml                            |  49 ++++++++
 examples/publishkafka_config.yml                   |  49 ++++++++
 examples/publishkafka_ssl_config.yml               |  55 +++++++++
 examples/puts3_config.yml                          |  45 ++++++++
 examples/querydbtable_config.yml                   |  52 +++++++++
 examples/site_to_site_config.yml                   |  43 +++++++
 examples/tailfile_config.yml                       |  47 ++++++++
 extensions/libarchive/MergeContent.h               |   6 +-
 .../custom-provider/generate-and-register.bat      |  13 ++-
 libminifi/include/core/ProcessSession.h            |   2 +-
 .../include/serialization/FlowFileSerializer.h     |   4 +-
 .../include/serialization/FlowFileV3Serializer.h   |   2 +-
 .../include/serialization/PayloadSerializer.h      |   2 +-
 libminifi/src/core/ProcessSession.cpp              |   4 +-
 .../src/serialization/FlowFileV3Serializer.cpp     |   4 +-
 libminifi/src/serialization/PayloadSerializer.cpp  |   2 +-
 win_build_vs.bat                                   |   4 +-
 36 files changed, 983 insertions(+), 86 deletions(-)
 create mode 100644 examples/azure_storage_config.yml
 copy libminifi/test/resources/TestEmpty.yml => examples/consumejournald_config.yml (50%)
 create mode 100644 examples/consumekafka_config.yml
 create mode 100644 examples/cwel_config.yml
 create mode 100644 examples/getfile_putfile_config.yml
 create mode 100644 examples/http_post_config.yml
 create mode 100644 examples/lists3_fetchs3_config.yml
 create mode 100644 examples/pdh_config.yml
 create mode 100644 examples/publishkafka_config.yml
 create mode 100644 examples/publishkafka_ssl_config.yml
 create mode 100644 examples/puts3_config.yml
 create mode 100644 examples/querydbtable_config.yml
 create mode 100644 examples/site_to_site_config.yml
 create mode 100644 examples/tailfile_config.yml

[nifi-minifi-cpp] 01/04: MINIFICPP-1367 Add ENABLE_NANOFI cmake option, disable by default

Posted by sz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

szaszm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit bf7939175a77ba6725a2372a6a08f6f68e2e7366
Author: Gabor Gyimesi <ga...@gmail.com>
AuthorDate: Mon Jul 19 15:38:05 2021 +0200

    MINIFICPP-1367 Add ENABLE_NANOFI cmake option, disable by default
    
    This closes #1124
    
    Signed-off-by: Marton Szasz <sz...@apache.org>
---
 .github/workflows/ci.yml |  8 ++---
 CMakeLists.txt           | 19 ++++++-----
 README.md                |  3 +-
 bootstrap.sh             |  4 +++
 bstrp_functions.sh       | 28 +++++++++++++--
 cmake/BuildTests.cmake   | 89 +++++++++++++++++++++++++-----------------------
 cmake/DockerConfig.cmake |  1 +
 docker/Dockerfile        |  5 +--
 win_build_vs.bat         |  4 ++-
 9 files changed, 100 insertions(+), 61 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d380294..f9ceac0 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -33,7 +33,7 @@ jobs:
         run: |
           export PATH="/usr/local/opt/lua@5.3/lib:/usr/local/opt/lua@5.3/include:/usr/local/opt/lua@5.3/bin:$PATH"
           export PKG_CONFIG_PATH="/usr/local/opt/lua@5.3/lib/pkgconfig"
-          ./bootstrap.sh -e -t && cd build  && cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_LUA_SCRIPTING=1 -DENABLE_AWS=ON -DENABLE_AZURE=ON -DENABLE_SQL=ON -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_RULE_MESSAGES=OFF -DSTRICT_GSL_CHECKS=AUDIT -DFAIL_ON_WARNINGS=ON .. && cmake --build . --parallel 4
+          ./bootstrap.sh -e -t && cd build  && cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_LUA_SCRIPTING=1 -DENABLE_AWS=ON -DENABLE_AZURE=ON -DENABLE_SQL=ON -DENABLE_NANOFI=ON -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_RULE_MESSAGES=OFF -DSTRICT_GSL_CHECKS=AUDIT -DFAIL_ON_WARNINGS=ON .. && cmake --build . --parallel 4
       - name: test
         run: cd build && make test ARGS="--timeout 300 -j4 --output-on-failure"
   macos_xcode_12_0:
@@ -111,7 +111,7 @@ jobs:
         run: |
           PATH %PATH%;C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64
           PATH %PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
-          win_build_vs.bat build /64 /CI /S /A /PDH /K /L /R /Z
+          win_build_vs.bat build /64 /CI /S /A /PDH /K /L /R /Z /N
         shell: cmd
       - name: test
         run: cd build && ctest --timeout 300 --parallel 8 -C Release --output-on-failure
@@ -228,7 +228,7 @@ jobs:
           echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
           echo -e "127.0.0.1\t$HOSTNAME" | sudo tee -a /etc/hosts > /dev/null
       - name: build
-        run: ./bootstrap.sh -e -t && cd build  && cmake -DUSE_SHARED_LIBS= -DCMAKE_BUILD_TYPE=Release -DENABLE_JNI=ON -DENABLE_SENSORS=ON -DENABLE_OPENWSMAN=ON -DENABLE_OPENCV=ON -DENABLE_MQTT=ON -DENABLE_GPS=ON -DENABLE_USB_CAMERA=ON -DENABLE_LIBRDKAFKA=ON -DENABLE_OPC=ON -DENABLE_SFTP=ON -DENABLE_COAP=ON -DENABLE_PYTHON=ON -DENABLE_SQL=ON -DENABLE_AWS=ON -DSTRICT_GSL_CHECKS=AUDIT -DFAIL_ON_WARNINGS=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. &&  cmake --build . --parallel 4
+        run: ./bootstrap.sh -e -t && cd build  && cmake -DUSE_SHARED_LIBS= -DCMAKE_BUILD_TYPE=Release -DENABLE_NANOFI=ON -DENABLE_JNI=ON -DENABLE_SENSORS=ON -DENABLE_OPENWSMAN=ON -DENABLE_OPENCV=ON -DENABLE_MQTT=ON -DENABLE_GPS=ON -DENABLE_USB_CAMERA=ON -DENABLE_LIBRDKAFKA=ON -DENABLE_OPC=ON -DENABLE_SFTP=ON -DENABLE_COAP=ON -DENABLE_PYTHON=ON -DENABLE_SQL=ON -DENABLE_AWS=ON -DSTRICT_GSL_CHECKS=AUDIT -DFAIL_ON_WARNINGS=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. &&  cmake [...]
       - name: test
         run: cd build && make test ARGS="--timeout 300 -j8 --output-on-failure"
   ubuntu_16_04_all:
@@ -255,7 +255,7 @@ jobs:
           echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
           echo -e "127.0.0.1\t$HOSTNAME" | sudo tee -a /etc/hosts > /dev/null
       - name: build
-        run: sudo mount tmpfs -t tmpfs /tmp && ./bootstrap.sh -e -t && cd build  && cmake -DUSE_SHARED_LIBS= -DENABLE_OPENWSMAN=ON -DENABLE_OPENCV=ON -DENABLE_GPS=ON -DENABLE_USB_CAMERA=ON -DENABLE_LIBRDKAFKA=ON -DENABLE_OPC=ON -DENABLE_SFTP=ON -DENABLE_MQTT=ON -DENABLE_COAP=ON -DENABLE_PYTHON=ON -DENABLE_SQL=ON -DENABLE_AWS=ON -DENABLE_AZURE=ON -DSTRICT_GSL_CHECKS=AUDIT -DFAIL_ON_WARNINGS=ON .. &&  cmake --build . --parallel 4
+        run: sudo mount tmpfs -t tmpfs /tmp && ./bootstrap.sh -e -t && cd build  && cmake -DUSE_SHARED_LIBS= -DENABLE_NANOFI=ON -DENABLE_OPENWSMAN=ON -DENABLE_OPENCV=ON -DENABLE_GPS=ON -DENABLE_USB_CAMERA=ON -DENABLE_LIBRDKAFKA=ON -DENABLE_OPC=ON -DENABLE_SFTP=ON -DENABLE_MQTT=ON -DENABLE_COAP=ON -DENABLE_PYTHON=ON -DENABLE_SQL=ON -DENABLE_AWS=ON -DENABLE_AZURE=ON -DSTRICT_GSL_CHECKS=AUDIT -DFAIL_ON_WARNINGS=ON .. &&  cmake --build . --parallel 4
       - name: test
         run: cd build && make test ARGS="--timeout 300 -j8 --output-on-failure"
   debian:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 370d80d..89e134a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -50,6 +50,7 @@ option(ENABLE_OPS "Enable Operations/zlib Tools" ON)
 option(ENABLE_JNI "Instructs the build system to enable the JNI extension" OFF)
 option(ENABLE_OPENCV "Instructs the build system to enable the OpenCV extension" OFF)
 option(ENABLE_OPC "Instructs the build system to enable the OPC extension" OFF)
+option(ENABLE_NANOFI "Instructs the build system to enable nanofi library" OFF)
 option(BUILD_SHARED_LIBS "Build yaml cpp shared lib" OFF)
 
 option(BUILD_ROCKSDB "Instructs the build system to use RocksDB from the third party directory" ON)
@@ -574,8 +575,10 @@ endif()
 ## NOW WE CAN ADD LIBRARIES AND EXTENSIONS TO MAIN
 add_subdirectory(main)
 
-add_subdirectory(nanofi)
-add_dependencies(nanofi minifiexe)
+if (ENABLE_NANOFI)
+	add_subdirectory(nanofi)
+	add_dependencies(nanofi minifiexe)
+endif()
 
 option(ENABLE_ENCRYPT_CONFIG "Enables build of encrypt-config binary." ON)
 if (ENABLE_ENCRYPT_CONFIG)
@@ -589,12 +592,12 @@ if (NOT DISABLE_CURL AND NOT DISABLE_CONTROLLER)
 endif()
 
 
-if (NOT DISABLE_CURL)
-  if (ENABLE_PYTHON)
-  	if (NOT WIN32)
-  		add_subdirectory(python/library)
-  	endif()
-  endif(ENABLE_PYTHON)
+if (NOT DISABLE_CURL AND ENABLE_PYTHON AND NOT WIN32)
+	if (ENABLE_NANOFI)
+		add_subdirectory(python/library)
+	else()
+		message(FATAL_ERROR "Nanofi, a dependency of the python extension is disabled, therefore Python extension cannot be enabled.")
+	endif()
 endif()
 
 get_property(selected_extensions GLOBAL PROPERTY EXTENSION-OPTIONS)
diff --git a/README.md b/README.md
index 39c5261..bf71160 100644
--- a/README.md
+++ b/README.md
@@ -367,6 +367,7 @@ $ # It is recommended that you install bison from source as HomeBrew now uses an
     W. Openwsman Support ...........Disabled
     X. Azure Support ...............Disabled
     Y. Systemd Support .............Enabled
+    Z. NanoFi Support ..............Enabled
     ****************************************
                 Build Options.
     ****************************************
@@ -383,7 +384,7 @@ $ # It is recommended that you install bison from source as HomeBrew now uses an
       version of cmake or other software, or
       incompatibility with other extensions
 
-    Enter choice [ A - Y or 1-7 ]
+    Enter choice [ A - Z or 1-7 ]
   ```
 
 - Boostrap now saves state between runs. State will automatically be saved. Provide -c or --clear to clear this state. The -i option provides a guided menu install with the ability to change
diff --git a/bootstrap.sh b/bootstrap.sh
index d92d6f1..4b1a974 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -39,6 +39,7 @@ export CMAKE_MIN_VERSION=()
 export INCOMPATIBLE_WITH=()
 export DEPLOY_LIMITS=()
 export DEPENDENCIES=()
+export DEPENDS_ON=()
 
 CORES=1
 BUILD="false"
@@ -326,6 +327,9 @@ add_disabled_option AZURE_ENABLED ${FALSE} "ENABLE_AZURE"
 
 add_disabled_option SYSTEMD_ENABLED ${TRUE} "ENABLE_SYSTEMD"
 
+add_disabled_option NANOFI_ENABLED ${FALSE} "ENABLE_NANOFI"
+set_dependency PYTHON_ENABLED NANOFI_ENABLED
+
 USE_SHARED_LIBS=${TRUE}
 ASAN_ENABLED=${FALSE}
 FAIL_ON_WARNINGS=${FALSE}
diff --git a/bstrp_functions.sh b/bstrp_functions.sh
index 99e98dd..66d08bb 100755
--- a/bstrp_functions.sh
+++ b/bstrp_functions.sh
@@ -69,6 +69,10 @@ add_multi_option(){
 	done
 }
 
+set_dependency(){
+  DEPENDS_ON+=("$1:$2")
+}
+
 set_incompatible_with(){
   INCOMPATIBLE_WITH+=("$1:$2")
   INCOMPATIBLE_WITH+=("$2:$1")
@@ -187,6 +191,17 @@ check_compatibility(){
       fi
     fi
   done
+  for option in "${DEPENDS_ON[@]}" ; do
+    OPT=${option%%:*}
+    if [ "$OPT" = "$1" ]; then
+      OTHER_FEATURE=${option#*:}
+      OTHER_FEATURE_VALUE=${!OTHER_FEATURE}
+      if [ "${OTHER_FEATURE_VALUE}" != "Enabled" ]; then
+        echo "false"
+        return
+      fi
+    fi
+  done
   echo "true"
 }
 
@@ -214,6 +229,13 @@ ToggleFeature(){
   ALL_FEATURES_ENABLED="Disabled"
   if [ "${VARIABLE_VALUE}" = "Enabled" ]; then
     eval "$1=${FALSE}"
+    for option in "${DEPENDS_ON[@]}" ; do
+      DEPENDENT_FEATURE=${option%%:*}
+      FEATURE=${option#*:}
+      if [ "$FEATURE" = "$1" ]; then
+        eval "$DEPENDENT_FEATURE=${FALSE}"
+      fi
+    done
   else
     for option in "${CMAKE_MIN_VERSION[@]}" ; do
       OPT=${option%%:*}
@@ -368,6 +390,7 @@ show_supported_features() {
   echo "W. Openwsman Support ...........$(print_feature_status OPENWSMAN_ENABLED)"
   echo "X. Azure Support ...............$(print_feature_status AZURE_ENABLED)"
   echo "Y. Systemd Support .............$(print_feature_status SYSTEMD_ENABLED)"
+  echo "Z. NanoFi Support ..............$(print_feature_status NANOFI_ENABLED)"
   echo "****************************************"
   echo "            Build Options."
   echo "****************************************"
@@ -390,7 +413,7 @@ show_supported_features() {
 
 read_feature_options(){
   local choice
-  echo -n "Enter choice [ A - Y or 1-7 ] "
+  echo -n "Enter choice [ A - Z or 1-7 ] "
   read -r choice
   choice=$(echo "${choice}" | tr '[:upper:]' '[:lower:]')
   case $choice in
@@ -421,6 +444,7 @@ read_feature_options(){
     w) ToggleFeature OPENWSMAN_ENABLED ;;
     x) ToggleFeature AZURE_ENABLED ;;
     y) ToggleFeature SYSTEMD_ENABLED ;;
+    z) ToggleFeature NANOFI_ENABLED ;;
     1) ToggleFeature TESTS_ENABLED ;;
     2) EnableAllFeatures ;;
     3) ToggleFeature JNI_ENABLED;;
@@ -439,7 +463,7 @@ read_feature_options(){
       fi
       ;;
     q) exit 0;;
-    *) echo -e "${RED}Please enter an option A-X or 1-7...${NO_COLOR}" && sleep 2
+    *) echo -e "${RED}Please enter an option A-Z or 1-7...${NO_COLOR}" && sleep 2
   esac
 }
 
diff --git a/cmake/BuildTests.cmake b/cmake/BuildTests.cmake
index 337f26e..4bea79c 100644
--- a/cmake/BuildTests.cmake
+++ b/cmake/BuildTests.cmake
@@ -39,51 +39,54 @@ if(NOT EXCLUDE_BOOST)
 endif()
 
 function(appendIncludes testName)
-    target_include_directories(${testName} SYSTEM BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/thirdparty/catch")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/include")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/c2/protocols")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/c2")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/core")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/core/controller")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/core/repository")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/core/yaml")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/core/statemanagement")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/core/statemanagement/metrics")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/io")
-    if(WIN32)
-    	target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/opsys/win")
-    	target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/opsys/win/io")
-    else()
-    	target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/opsys/posix")
-    	target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/opsys/posix/io")
-    endif()
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/utils")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/processors")
-    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/provenance")
+  target_include_directories(${testName} SYSTEM BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/thirdparty/catch")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/include")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/c2/protocols")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/c2")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/core")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/core/controller")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/core/repository")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/core/yaml")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/core/statemanagement")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/core/statemanagement/metrics")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/io")
+  if(WIN32)
+    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/opsys/win")
+    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/opsys/win/io")
+  else()
+    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/opsys/posix")
+    target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/opsys/posix/io")
+  endif()
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/utils")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/processors")
+  target_include_directories(${testName} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/provenance")
 endfunction()
 
 function(createTests testName)
-    message ("-- Adding test: ${testName}")
-    appendIncludes("${testName}")
+  message(DEBUG "-- Adding test: ${testName}")
+  appendIncludes("${testName}")
 
-	if (ENABLE_BINARY_DIFF)
-    	target_include_directories(${testName} SYSTEM BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/thirdparty/bsdiff/")
+  if (ENABLE_BINARY_DIFF)
+    target_include_directories(${testName} SYSTEM BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/thirdparty/bsdiff/")
     endif(ENABLE_BINARY_DIFF)
 
     if (Boost_FOUND)
-        target_include_directories(${testName} BEFORE PRIVATE "${Boost_INCLUDE_DIRS}")
+      target_include_directories(${testName} BEFORE PRIVATE "${Boost_INCLUDE_DIRS}")
     endif()
     target_link_libraries(${testName} ${CMAKE_DL_LIBS} ${TEST_BASE_LIB})
     target_link_libraries(${testName} core-minifi yaml-cpp spdlog Threads::Threads)
     if (NOT excludeBase)
       target_wholearchive_library(${testName} minifi)
-	endif()
-	add_dependencies(${testName} minifiexe nanofi)
-    if (Boost_FOUND)
-        target_link_libraries(${testName} ${Boost_SYSTEM_LIBRARY})
-        target_link_libraries(${testName} ${Boost_FILESYSTEM_LIBRARY})
-    endif()
+  endif()
+  add_dependencies(${testName} minifiexe)
+  if (ENABLE_NANOFI)
+    add_dependencies(${testName} nanofi)
+  endif()
+  if (Boost_FOUND)
+    target_link_libraries(${testName} ${Boost_SYSTEM_LIBRARY})
+    target_link_libraries(${testName} ${Boost_FILESYSTEM_LIBRARY})
+  endif()
 endfunction()
 
 enable_testing(test)
@@ -94,9 +97,9 @@ target_link_libraries(${TEST_BASE_LIB} core-minifi)
 target_include_directories(${TEST_BASE_LIB} SYSTEM BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/thirdparty/catch")
 target_include_directories(${TEST_BASE_LIB} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/include/")
 if(WIN32)
-   	target_include_directories(${TEST_BASE_LIB} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/opsys/win")
+  target_include_directories(${TEST_BASE_LIB} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/opsys/win")
 else()
-   	target_include_directories(${TEST_BASE_LIB} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/opsys/posix")
+  target_include_directories(${TEST_BASE_LIB} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/libminifi/opsys/posix")
 endif()
 
 SET(CATCH_MAIN_LIB catch_main)
@@ -120,9 +123,9 @@ FOREACH(testfile ${UNIT_TESTS})
 ENDFOREACH()
 message("-- Finished building ${UNIT_TEST_COUNT} unit test file(s)...")
 
-if(NOT WIN32)
-SET(UNIT_TEST_COUNT 0)
-FOREACH(testfile ${NANOFI_UNIT_TESTS})
+if(NOT WIN32 AND ENABLE_NANOFI)
+  SET(UNIT_TEST_COUNT 0)
+  FOREACH(testfile ${NANOFI_UNIT_TESTS})
     get_filename_component(testfilename "${testfile}" NAME_WE)
     add_executable("${testfilename}" "${NANOFI_TEST_DIR}/${testfile}")
     target_include_directories(${testfilename} BEFORE PRIVATE "${CMAKE_SOURCE_DIR}/nanofi/include")
@@ -140,9 +143,10 @@ FOREACH(testfile ${NANOFI_UNIT_TESTS})
       target_link_libraries(${testfilename} ${Boost_SYSTEM_LIBRARY})
       target_link_libraries(${testfilename} ${Boost_FILESYSTEM_LIBRARY})
     endif()
-ENDFOREACH()
-message("-- Finished building ${UNIT_TEST_COUNT} NanoFi unit test file(s)...")
-endif(NOT WIN32)
+  ENDFOREACH()
+  message("-- Finished building ${UNIT_TEST_COUNT} NanoFi unit test file(s)...")
+endif()
+
 SET(INT_TEST_COUNT 0)
 FOREACH(testfile ${INTEGRATION_TESTS})
   get_filename_component(testfilename "${testfile}" NAME_WE)
@@ -157,6 +161,5 @@ message("-- Finished building ${INT_TEST_COUNT} integration test file(s)...")
 
 get_property(extensions GLOBAL PROPERTY EXTENSION-TESTS)
 foreach(EXTENSION ${extensions})
-	add_subdirectory(${EXTENSION})
+  add_subdirectory(${EXTENSION})
 endforeach()
-
diff --git a/cmake/DockerConfig.cmake b/cmake/DockerConfig.cmake
index 1947f65..c6059eb 100644
--- a/cmake/DockerConfig.cmake
+++ b/cmake/DockerConfig.cmake
@@ -43,6 +43,7 @@ add_custom_target(
         -c ENABLE_OPENWSMAN=${ENABLE_OPENWSMAN}
         -c ENABLE_AZURE=${ENABLE_AZURE}
         -c ENABLE_ENCRYPT_CONFIG=${ENABLE_ENCRYPT_CONFIG}
+        -c ENABLE_NANOFI=${ENABLE_NANOFI}
         -c DISABLE_CURL=${DISABLE_CURL}
         -c DISABLE_JEMALLOC=${DISABLE_JEMALLOC}
         -c DISABLE_CIVET=${DISABLE_CIVET}
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 9aef963..bbe9930 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -49,6 +49,7 @@ ARG ENABLE_SFTP=OFF
 ARG ENABLE_OPENWSMAN=OFF
 ARG ENABLE_AZURE=OFF
 ARG ENABLE_ENCRYPT_CONFIG=ON
+ARG ENABLE_NANOFI=OFF
 ARG DISABLE_CURL=OFF
 ARG DISABLE_JEMALLOC=ON
 ARG DISABLE_CIVET=OFF
@@ -108,8 +109,8 @@ RUN cmake -DSTATIC_BUILD= -DSKIP_TESTS=true -DENABLE_ALL="${ENABLE_ALL}" -DENABL
     -DENABLE_JNI="${ENABLE_JNI}" -DENABLE_OPENCV="${ENABLE_OPENCV}" -DENABLE_OPC="${ENABLE_OPC}" -DENABLE_GPS="${ENABLE_GPS}" \
     -DENABLE_COAP="${ENABLE_COAP}" -DENABLE_SQL="${ENABLE_SQL}" -DENABLE_MQTT="${ENABLE_MQTT}" -DENABLE_PCAP="${ENABLE_PCAP}" \
     -DENABLE_LIBRDKAFKA="${ENABLE_LIBRDKAFKA}" -DENABLE_SENSORS="${ENABLE_SENSORS}" -DENABLE_USB_CAMERA="${ENABLE_USB_CAMERA}" \
-    -DENABLE_TENSORFLOW="${ENABLE_TENSORFLOW}" -DENABLE_AWS="${ENABLE_AWS}" -DENABLE_BUSTACHE="${ENABLE_BUSTACHE}" \
-    -DENABLE_SFTP="${ENABLE_SFTP}" -DENABLE_OPENWSMAN="${ENABLE_OPENWSMAN}" -DENABLE_AZURE="${ENABLE_AZURE}" -DENABLE_SYSTEMD=OFF \
+    -DENABLE_TENSORFLOW="${ENABLE_TENSORFLOW}" -DENABLE_AWS="${ENABLE_AWS}" -DENABLE_BUSTACHE="${ENABLE_BUSTACHE}" -DENABLE_SFTP="${ENABLE_SFTP}" \
+    -DENABLE_OPENWSMAN="${ENABLE_OPENWSMAN}" -DENABLE_AZURE="${ENABLE_AZURE}" -DENABLE_NANOFI=${ENABLE_NANOFI} -DENABLE_SYSTEMD=OFF \
     -DDISABLE_CURL="${DISABLE_CURL}" -DDISABLE_JEMALLOC="${DISABLE_JEMALLOC}" -DDISABLE_CIVET="${DISABLE_CIVET}" \
     -DDISABLE_EXPRESSION_LANGUAGE="${DISABLE_EXPRESSION_LANGUAGE}" -DDISABLE_ROCKSDB="${DISABLE_ROCKSDB}" \
     -DDISABLE_LIBARCHIVE="${DISABLE_LIBARCHIVE}" -DDISABLE_LZMA="${DISABLE_LZMA}" -DDISABLE_BZIP2="${DISABLE_BZIP2}" \
diff --git a/win_build_vs.bat b/win_build_vs.bat
index 8f2693f..e2e33de 100755
--- a/win_build_vs.bat
+++ b/win_build_vs.bat
@@ -38,6 +38,7 @@ set installer_merge_modules=OFF
 set strict_gsl_checks=
 set redist=
 set build_linter=OFF
+set build_nanofi=OFF
 
 set arg_counter=0
 for %%x in (%*) do (
@@ -55,6 +56,7 @@ for %%x in (%*) do (
     if [%%~x] EQU [/PDH]         set build_PDH=ON
     if [%%~x] EQU [/M]           set installer_merge_modules=ON
     if [%%~x] EQU [/Z]           set build_azure=ON
+    if [%%~x] EQU [/N]           set build_nanofi=ON
     if [%%~x] EQU [/64]          set build_platform=x64
     if [%%~x] EQU [/D]           set cmake_build_type=RelWithDebInfo
     if [%%~x] EQU [/DD]          set cmake_build_type=Debug
@@ -66,7 +68,7 @@ for %%x in (%*) do (
 mkdir %builddir%
 pushd %builddir%\
 
-cmake -G %generator% -A %build_platform% -DINSTALLER_MERGE_MODULES=%installer_merge_modules% -DTEST_CUSTOM_WEL_PROVIDER=%test_custom_wel_provider% -DENABLE_SQL=%build_SQL% -DCMAKE_BUILD_TYPE_INIT=%cmake_build_type% -DCMAKE_BUILD_TYPE=%cmake_build_type% -DWIN32=WIN32 -DENABLE_LIBRDKAFKA=%build_kafka% -DENABLE_JNI=%build_jni% -DOPENSSL_OFF=OFF -DENABLE_COAP=%build_coap% -DENABLE_AWS=%build_AWS% -DENABLE_PDH=%build_PDH% -DENABLE_AZURE=%build_azure% -DENABLE_SFTP=%build_SFTP%  -DUSE_SHARED_L [...]
+cmake -G %generator% -A %build_platform% -DINSTALLER_MERGE_MODULES=%installer_merge_modules% -DTEST_CUSTOM_WEL_PROVIDER=%test_custom_wel_provider% -DENABLE_SQL=%build_SQL% -DCMAKE_BUILD_TYPE_INIT=%cmake_build_type% -DCMAKE_BUILD_TYPE=%cmake_build_type% -DWIN32=WIN32 -DENABLE_LIBRDKAFKA=%build_kafka% -DENABLE_JNI=%build_jni% -DOPENSSL_OFF=OFF -DENABLE_COAP=%build_coap% -DENABLE_AWS=%build_AWS% -DENABLE_PDH=%build_PDH% -DENABLE_AZURE=%build_azure% -DENABLE_SFTP=%build_SFTP% -DENABLE_NANOFI [...]
 IF %ERRORLEVEL% NEQ 0 EXIT /b %ERRORLEVEL%
 if [%cpack%] EQU [ON] (
     cpack -C %cmake_build_type%

[nifi-minifi-cpp] 02/04: MINIFICPP-1606 ProcessSession::read() should return int64_t

Posted by sz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

szaszm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit f7f29cbc7f32a852912b2121c57a2e2ee81cf185
Author: Ferenc Gerlits <fg...@gmail.com>
AuthorDate: Mon Jul 19 15:44:13 2021 +0200

    MINIFICPP-1606 ProcessSession::read() should return int64_t
    
    Since ProcessSession::read() returns the size of the flow file, and its return
    type was int, we still couldn't handle flow files larger than around 2 GB.
    
    Closes #1131
    
    Signed-off-by: Marton Szasz <sz...@apache.org>
---
 extensions/libarchive/MergeContent.h                   | 6 ++++--
 libminifi/include/core/ProcessSession.h                | 2 +-
 libminifi/include/serialization/FlowFileSerializer.h   | 4 ++--
 libminifi/include/serialization/FlowFileV3Serializer.h | 2 +-
 libminifi/include/serialization/PayloadSerializer.h    | 2 +-
 libminifi/src/core/ProcessSession.cpp                  | 4 ++--
 libminifi/src/serialization/FlowFileV3Serializer.cpp   | 4 ++--
 libminifi/src/serialization/PayloadSerializer.cpp      | 2 +-
 8 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/extensions/libarchive/MergeContent.h b/extensions/libarchive/MergeContent.h
index 7fd852a..3d36652 100644
--- a/extensions/libarchive/MergeContent.h
+++ b/extensions/libarchive/MergeContent.h
@@ -77,11 +77,13 @@ class BinaryConcatenationMerge : public MergeBin {
         std::deque<std::shared_ptr<core::FlowFile>> &flows, FlowFileSerializer& serializer) :
       header_(header), footer_(footer), demarcator_(demarcator), flows_(flows), serializer_(serializer) {
     }
+
     std::string &header_;
     std::string &footer_;
     std::string &demarcator_;
     std::deque<std::shared_ptr<core::FlowFile>> &flows_;
     FlowFileSerializer& serializer_;
+
     int64_t process(const std::shared_ptr<io::BaseStream>& stream) override {
       size_t write_size_sum = 0;
       if (!header_.empty()) {
@@ -98,7 +100,7 @@ class BinaryConcatenationMerge : public MergeBin {
             return -1;
           write_size_sum += write_ret;
         }
-        int len = serializer_.serialize(flow, stream);
+        const auto len = serializer_.serialize(flow, stream);
         if (len < 0)
           return len;
         write_size_sum += gsl::narrow<size_t>(len);
@@ -231,7 +233,7 @@ class ArchiveMerge {
             }
           }
         }
-        int ret = serializer_.serialize(flow, std::make_shared<ArchiveWriter>(arch, entry));
+        const auto ret = serializer_.serialize(flow, std::make_shared<ArchiveWriter>(arch, entry));
         if (ret < 0) {
           return ret;
         }
diff --git a/libminifi/include/core/ProcessSession.h b/libminifi/include/core/ProcessSession.h
index 302c8b1..5511790 100644
--- a/libminifi/include/core/ProcessSession.h
+++ b/libminifi/include/core/ProcessSession.h
@@ -94,7 +94,7 @@ class ProcessSession : public ReferenceContainer {
   // Remove Flow File
   void remove(const std::shared_ptr<core::FlowFile> &flow);
   // Execute the given read callback against the content
-  int read(const std::shared_ptr<core::FlowFile> &flow, InputStreamCallback *callback);
+  int64_t read(const std::shared_ptr<core::FlowFile> &flow, InputStreamCallback *callback);
   // Execute the given write callback against the content
   void write(const std::shared_ptr<core::FlowFile> &flow, OutputStreamCallback *callback);
   // Replace content with buffer
diff --git a/libminifi/include/serialization/FlowFileSerializer.h b/libminifi/include/serialization/FlowFileSerializer.h
index 02f21e4..5393068 100644
--- a/libminifi/include/serialization/FlowFileSerializer.h
+++ b/libminifi/include/serialization/FlowFileSerializer.h
@@ -42,11 +42,11 @@ class InputStreamCallback;
 
 class FlowFileSerializer {
  public:
-  using FlowFileReader = std::function<int(const std::shared_ptr<core::FlowFile>&, InputStreamCallback*)>;
+  using FlowFileReader = std::function<int64_t(const std::shared_ptr<core::FlowFile>&, InputStreamCallback*)>;
 
   explicit FlowFileSerializer(FlowFileReader reader) : reader_(std::move(reader)) {}
 
-  virtual int serialize(const std::shared_ptr<core::FlowFile>& flowFile, const std::shared_ptr<io::OutputStream>& out) = 0;
+  virtual int64_t serialize(const std::shared_ptr<core::FlowFile>& flowFile, const std::shared_ptr<io::OutputStream>& out) = 0;
 
   virtual ~FlowFileSerializer() = default;
 
diff --git a/libminifi/include/serialization/FlowFileV3Serializer.h b/libminifi/include/serialization/FlowFileV3Serializer.h
index 06a284c..656422a 100644
--- a/libminifi/include/serialization/FlowFileV3Serializer.h
+++ b/libminifi/include/serialization/FlowFileV3Serializer.h
@@ -41,7 +41,7 @@ class FlowFileV3Serializer : public FlowFileSerializer {
  public:
   using FlowFileSerializer::FlowFileSerializer;
 
-  int serialize(const std::shared_ptr<core::FlowFile>& flowFile, const std::shared_ptr<io::OutputStream>& out) override;
+  int64_t serialize(const std::shared_ptr<core::FlowFile>& flowFile, const std::shared_ptr<io::OutputStream>& out) override;
 };
 
 } /* namespace minifi */
diff --git a/libminifi/include/serialization/PayloadSerializer.h b/libminifi/include/serialization/PayloadSerializer.h
index ed26e85..efa3384 100644
--- a/libminifi/include/serialization/PayloadSerializer.h
+++ b/libminifi/include/serialization/PayloadSerializer.h
@@ -31,7 +31,7 @@ class PayloadSerializer : public FlowFileSerializer {
  public:
   using FlowFileSerializer::FlowFileSerializer;
 
-  int serialize(const std::shared_ptr<core::FlowFile>& flowFile, const std::shared_ptr<io::OutputStream>& out) override;
+  int64_t serialize(const std::shared_ptr<core::FlowFile>& flowFile, const std::shared_ptr<io::OutputStream>& out) override;
 };
 
 } /* namespace minifi */
diff --git a/libminifi/src/core/ProcessSession.cpp b/libminifi/src/core/ProcessSession.cpp
index 887798e..3c57b68 100644
--- a/libminifi/src/core/ProcessSession.cpp
+++ b/libminifi/src/core/ProcessSession.cpp
@@ -290,7 +290,7 @@ void ProcessSession::append(const std::shared_ptr<core::FlowFile> &flow, OutputS
   }
 }
 
-int ProcessSession::read(const std::shared_ptr<core::FlowFile> &flow, InputStreamCallback *callback) {
+int64_t ProcessSession::read(const std::shared_ptr<core::FlowFile> &flow, InputStreamCallback *callback) {
   try {
     std::shared_ptr<ResourceClaim> claim = nullptr;
 
@@ -317,7 +317,7 @@ int ProcessSession::read(const std::shared_ptr<core::FlowFile> &flow, InputStrea
     if (ret < 0) {
       throw Exception(FILE_OPERATION_EXCEPTION, "Failed to process flowfile content");
     }
-    return gsl::narrow<int>(ret);
+    return ret;
   } catch (std::exception &exception) {
     logger_->log_debug("Caught Exception %s", exception.what());
     throw;
diff --git a/libminifi/src/serialization/FlowFileV3Serializer.cpp b/libminifi/src/serialization/FlowFileV3Serializer.cpp
index 2407f87..588c36f 100644
--- a/libminifi/src/serialization/FlowFileV3Serializer.cpp
+++ b/libminifi/src/serialization/FlowFileV3Serializer.cpp
@@ -61,7 +61,7 @@ size_t FlowFileV3Serializer::writeString(const std::string &str, const std::shar
   return sum;
 }
 
-int FlowFileV3Serializer::serialize(const std::shared_ptr<core::FlowFile>& flowFile, const std::shared_ptr<io::OutputStream>& out) {
+int64_t FlowFileV3Serializer::serialize(const std::shared_ptr<core::FlowFile>& flowFile, const std::shared_ptr<io::OutputStream>& out) {
   size_t sum = 0;
   {
     const auto ret = out->write(MAGIC_HEADER, sizeof(MAGIC_HEADER));
@@ -98,7 +98,7 @@ int FlowFileV3Serializer::serialize(const std::shared_ptr<core::FlowFile>& flowF
     if (ret < 0) return -1;
     sum += gsl::narrow<size_t>(ret);
   }
-  return gsl::narrow<int>(sum);
+  return gsl::narrow<int64_t>(sum);
 }
 
 } /* namespace minifi */
diff --git a/libminifi/src/serialization/PayloadSerializer.cpp b/libminifi/src/serialization/PayloadSerializer.cpp
index 44b0ed4..8bfa112 100644
--- a/libminifi/src/serialization/PayloadSerializer.cpp
+++ b/libminifi/src/serialization/PayloadSerializer.cpp
@@ -24,7 +24,7 @@ namespace apache {
 namespace nifi {
 namespace minifi {
 
-int PayloadSerializer::serialize(const std::shared_ptr<core::FlowFile>& flowFile, const std::shared_ptr<io::OutputStream>& out) {
+int64_t PayloadSerializer::serialize(const std::shared_ptr<core::FlowFile>& flowFile, const std::shared_ptr<io::OutputStream>& out) {
   InputStreamPipe pipe(out);
   return reader_(flowFile, &pipe);
 }

[nifi-minifi-cpp] 03/04: MINIFICPP-1601 Add example flow configurations

Posted by sz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

szaszm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit a178c9f10c676f212bf0110789e89757e90d233c
Author: Gabor Gyimesi <ga...@gmail.com>
AuthorDate: Mon Jul 19 15:50:39 2021 +0200

    MINIFICPP-1601 Add example flow configurations
    
    New files under examples/:
    - getfile_putfile_config.yml: Getting File Data and Putting It in an Output Directory
    - tailfile_config.yml: Tailing a Single File
    - cwel_config.yml: Consuming Windows Event Logs (Win-only)
    - pdh_config.yml: Reading System Performance Data (Win-only)
    - consumejournald_config.yml: Consume Systemd-Journald System Journal
      Messages (Linux-only)
    - http_post_config.yml: HTTP POST Invocation
    - site_to_site_config.yml: Transfer Data to Remote Nifi Instance
    - publishkafka_config.yml: Publish Message to Kafka Broker
    - publishkafka_ssl_config.yml: Publish Message to Kafka Broker Through SSL
    - consumekafka_config.yml: Consume Messages from Kafka
    - azure_storage_config.yml: Upload Blob to Azure Storage
    - puts3_config.yml: Put Object in AWS S3 Bucket
    - lists3_fetchs3_config.yml: List and Fetch Content from AWS S3 Bucket
    - querydbtable_config.yml: Query Database Table
    
    Closes #1127
    
    Signed-off-by: Marton Szasz <sz...@apache.org>
---
 PROCESSORS.md                        |  10 +--
 README.md                            |   4 ++
 conf/config.yml                      |   2 +-
 examples/README.md                   | 128 ++++++++++++++++++++++++++++++++++-
 examples/azure_storage_config.yml    |  46 +++++++++++++
 examples/consumejournald_config.yml  |  43 ++++++++++++
 examples/consumekafka_config.yml     |  53 +++++++++++++++
 examples/cwel_config.yml             |  50 ++++++++++++++
 examples/getfile_putfile_config.yml  |  50 ++++++++++++++
 examples/http_post_config.yml        |  85 +++++++++++++++++++++++
 examples/lists3_fetchs3_config.yml   |  66 ++++++++++++++++++
 examples/pdh_config.yml              |  49 ++++++++++++++
 examples/publishkafka_config.yml     |  49 ++++++++++++++
 examples/publishkafka_ssl_config.yml |  55 +++++++++++++++
 examples/puts3_config.yml            |  45 ++++++++++++
 examples/querydbtable_config.yml     |  52 ++++++++++++++
 examples/site_to_site_config.yml     |  43 ++++++++++++
 examples/tailfile_config.yml         |  47 +++++++++++++
 18 files changed, 869 insertions(+), 8 deletions(-)

diff --git a/PROCESSORS.md b/PROCESSORS.md
index e2f7b30..c110348 100644
--- a/PROCESSORS.md
+++ b/PROCESSORS.md
@@ -1195,11 +1195,11 @@ In the list below, the names of required properties appear in bold. Any other pr
 | Name | Default Value | Allowable Values | Description |
 | - | - | - | - |
 |**Container Name**|||Name of the Azure storage container. In case of PutAzureBlobStorage processor, container can be created if it does not exist.<br/>**Supports Expression Language: true**|
-|Storage Account Name||||The storage account name.<br/>**Supports Expression Language: true**|
-|Storage Account Key||||The storage account key. This is an admin-like password providing access to every container in this account. It is recommended one uses Shared Access Signature (SAS) token instead for fine-grained control with policies.<br/>**Supports Expression Language: true**|
-|SAS Token||||Shared Access Signature token. Specify either SAS Token (recommended) or Account Key.<br/>**Supports Expression Language: true**|
-|Common Storage Account Endpoint Suffix||||Storage accounts in public Azure always use a common FQDN suffix. Override this endpoint suffix with a different suffix in certain circumstances (like Azure Stack or non-public Azure regions).<br/>**Supports Expression Language: true**|
-|Connection String||||Connection string used to connect to Azure Storage service. This overrides all other set credential properties.<br/>**Supports Expression Language: true**|
+|Storage Account Name|||The storage account name.<br/>**Supports Expression Language: true**|
+|Storage Account Key|||The storage account key. This is an admin-like password providing access to every container in this account. It is recommended one uses Shared Access Signature (SAS) token instead for fine-grained control with policies.<br/>**Supports Expression Language: true**|
+|SAS Token|||Shared Access Signature token. Specify either SAS Token (recommended) or Account Key.<br/>**Supports Expression Language: true**|
+|Common Storage Account Endpoint Suffix|||Storage accounts in public Azure always use a common FQDN suffix. Override this endpoint suffix with a different suffix in certain circumstances (like Azure Stack or non-public Azure regions).<br/>**Supports Expression Language: true**|
+|Connection String|||Connection string used to connect to Azure Storage service. This overrides all other set credential properties.<br/>**Supports Expression Language: true**|
 |Azure Storage Credentials Service|||Name of the Azure Storage Credentials Service used to retrieve the connection string from.|
 |**Blob**|||The filename of the blob.<br/>**Supports Expression Language: true**|
 |**Create Container**|false||Specifies whether to check if the container exists and to automatically create it if it does not. Permission to list containers is required. If false, this check is not made, but the Put operation will fail if the container does not exist.|
diff --git a/README.md b/README.md
index bf71160..3928a94 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,7 @@ MiNiFi is a child project effort of Apache NiFi.  This repository is for a nativ
 - [Operations](#operations)
 - [Issue Tracking](#issue-tracking)
 - [Documentation](#documentation)
+- [Examples](#examples)
 - [License](#license)
 
 ## Features
@@ -588,6 +589,9 @@ See https://issues.apache.org/jira/projects/MINIFICPP/issues for the issue track
 ## Documentation
 See https://nifi.apache.org/minifi for the latest documentation.
 
+## Examples
+See our [examples page](examples/README.md) for flow examples.
+
 ## Contributing
 
 We welcome all contributions to Apache MiNiFi. To make development easier, we've included
diff --git a/conf/config.yml b/conf/config.yml
index 0f7f2a5..a3e1837 100644
--- a/conf/config.yml
+++ b/conf/config.yml
@@ -18,4 +18,4 @@ Flow Controller:
 Processors: []
 Connections: []
 Remote Processing Groups: []
-Provenance Reporting:
\ No newline at end of file
+Provenance Reporting:
diff --git a/examples/README.md b/examples/README.md
index f12935a..5c154d7 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -12,6 +12,130 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-# Apache NiFi -  MiNiFi - C++ Examples
+# Apache NiFi - MiNiFi - C++ Examples
 
-- [Site-2-Site Bi-directional Configuration](BidirectionalSiteToSite/README.md)
\ No newline at end of file
+The following examples show simple flow configurations for several common use cases. Use the path of these yaml files as the flow configuration set in the `nifi.flow.configuration.file` property of `conf/minifi.properties` file or replace the default `conf/config.yml` file to try them out.
+
+- [Filesystem Operations](#filesystem-operations)
+  - [Getting File Data and Putting It in an Output Directory](#getting-file-data-and-putting-it-in-an-output-directory)
+  - [Tailing a Single File](#tailing-a-single-file)
+- [Windows Specific Processors](#windows-specific-processors)
+  - [Consuming Windows Event Logs](#consuming-windows-event-logs)
+  - [Reading System Performance Data](#reading-system-performance-data)
+- [Linux Specific Processors](#linux-specific-processors)
+  - [Consume Systemd-Journald System Journal Messages](#consume-systemd-journald-system-journal-messages)
+- [HTTP Operations](#http-operations)
+  - [HTTP POST Invocation](#http-post-invocation)
+- [Site to Site Operations](#site-to-site-operations)
+  - [Transfer Data to Remote Nifi Instance](#transfer-data-to-remote-nifi-instance)
+  - [Site-2-Site Bi-directional Configuration](#site-2-site-bi-directional-configuration)
+- [Kafka Operations](#kafka-operations)
+  - [Publish Message to Kafka Broker](#publish-message-to-kafka-broker)
+  - [Publish Message to Kafka Broker Through SSL](#publish-message-to-kafka-broker-through-ssl)
+  - [Consume Messages from Kafka](#consume-messages-from-kafka)
+- [Public Cloud Operations](#public-cloud-operations)
+  - [Upload Blob to Azure Storage](#upload-blob-to-azure-storage)
+  - [Put Object in AWS S3 Bucket](#put-object-in-aws-s3-bucket)
+  - [List and Fetch Content from AWS S3 Bucket](#list-and-fetch-content-from-aws-s3-bucket)
+- [SQL Operations](#sql-operations)
+  - [Query Database Table](#query-database-table)
+
+## Filesystem Operations
+
+### Getting File Data and Putting It in an Output Directory
+
+Using the [getfile_putfile_config.yml](getfile_putfile_config.yml) flow configuration MiNiFi gets all files of minimum 1MB size from the `/tmp/getfile_dir` directory and puts them in the `/tmp/out_dir` output directory.
+
+The flow: GetFile &#10132; success &#10132; PutFile
+
+### Tailing a Single File
+
+Using the [tailfile_config.yml](tailfile_config.yml) flow configuration MiNiFi tails a single file `/tmp/test_file.log` and creates flowfiles from every single line, then logs the flowfile attributes.
+
+The flow: TailFile &#10132; success &#10132; LogAttribute
+
+## Windows Specific Processors
+
+### Consuming Windows Event Logs
+
+Using the [cwel_config.yml](cwel_config.yml) flow configuration MiNiFi queries all Windows system events and puts them to the `C:\temp\` directory in flattened JSON format.
+
+The flow: ConsumeWindowsEventLog &#10132; PutFile
+
+### Reading System Performance Data
+
+Using the [pdh_config.yml](pdh_config.yml) flow configuration MiNiFi reads CPU and Disk performance data through Windows' Performance Data Helper (PDH) component and puts the data to the `C:\temp\` directory in a compact JSON format.
+
+The flow: PerformanceDataMonitor &#10132; PutFile
+
+## Linux Specific Processors
+
+### Consume Systemd-Journald System Journal Messages
+
+Using the [consumejournald_config.yml](consumejournald_config.yml) flow configuration MiNiFi reads systemd-journald journal messages and logs them on `info` level.
+
+The flow: ConsumeJournald &#10132; LogAttribute
+
+## HTTP Operations
+
+### HTTP POST Invocation
+
+Using the [http_post_config.yml](http_post_config.yml) flow configuration MiNiFi transfers flowfile data received from the GetFile processor by invoking an HTTP endpoint with POST method.
+
+The flow: GetFile &#10132; success &#10132; InvokeHTTP
+
+## Site to Site Operations
+
+### Transfer Data to Remote Nifi Instance
+
+Using the [site_to_site_config.yml](site_to_site_config.yml) flow configuration MiNiFi transfers data received from the GetFile processor to a remote NiFi instance located at `http://nifi:8080/nifi`.
+
+### [Site-2-Site Bi-directional Configuration](BidirectionalSiteToSite/README.md)
+
+## Kafka Operations
+
+### Publish Message to Kafka Broker
+
+Using the [publishkafka_config.yml](publishkafka_config.yml) flow configuration MiNiFi publishes data received from the GetFile processor to a configured Kafka broker's `test` topic.
+
+The flow: GetFile &#10132; success &#10132; PublishKafka
+
+### Publish Message to Kafka Broker Through SSL
+
+Using the [publishkafka_ssl_config.yml](publishkafka_ssl_config.yml) flow configuration MiNiFi publishes data received from the GetFile processor to a configured Kafka broker's `test` topic through SSL connection.
+
+The flow: GetFile &#10132; success &#10132; PublishKafka
+
+### Consume Messages from Kafka
+
+Using the [consumekafka_config.yml](consumekafka_config.yml) flow configuration MiNiFi consumes messages from the configured Kafka broker's `ConsumeKafkaTest` topic from the earliest available message. The messages are forwarded to the `PutFile` processor and put in the `/tmp/output` directory.
+
+The flow: ConsumeKafka &#10132; success &#10132; PutFile
+
+## Public Cloud Operations
+
+### Upload Blob to Azure Storage
+
+Using the [azure_storage_config.yml](azure_storage_config.yml) flow configuration MiNiFi uploads data received from the GetFile processor to Azure's blob storage container `test-container`.
+
+The flow: GetFile &#10132; success &#10132; PutAzureBlobStorage
+
+### Put Object in AWS S3 Bucket
+
+Using the [puts3_config.yml](puts3_config.yml) flow configuration MiNiFi uploads data received from the GetFile processor to AWS S3 bucket `test_bucket`.
+
+The flow: GetFile &#10132; success &#10132; PutS3Object
+
+### List and Fetch Content from AWS S3 Bucket
+
+Using the [lists3_fetchs3_config.yml](lists3_fetchs3_config.yml) flow configuration MiNiFi lists S3 bucket `test_bucket` and fetches its contents in flowfiles then logs the attributes. The flow uses `AWSCredentialsService` controller service to provide credentials for all S3 processors. It has `Use Default Credentials` property set which retrieves credentials from AWS default credentials provider chain (environment variables, configuration file, instance profile).
+
+The flow: ListS3 &#10132; FetchS3Object &#10132; LogAttribute
+
+## SQL Operations
+
+### Query Database Table
+
+Using the [querydbtable_config.yml](querydbtable_config.yml) flow configuration MiNiFi queries the `id` and `name` columns of the `users` table with a `where` clause and the results are put in the `/tmp/output` directory. The database connection data is set in the `ODBCService` controller service.
+
+The flow: QueryDatabaseTable &#10132; PutFile
diff --git a/examples/azure_storage_config.yml b/examples/azure_storage_config.yml
new file mode 100644
index 0000000..777be17
--- /dev/null
+++ b/examples/azure_storage_config.yml
@@ -0,0 +1,46 @@
+# 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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/input
+  id: d5fef466-fef0-4d90-814e-9c19a67e454a
+  class: org.apache.nifi.processors.standard.GetFile
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 2 sec
+  Properties:
+    Input Directory: /tmp/input
+- name: Upload Blob to test-container in Azure Storage
+  id: e7b3f9c6-d1ee-4d9b-b676-48c872cc7ae3
+  class: org.apache.nifi.processors.standard.PutAzureBlobStorage
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - success
+  - failure
+  Properties:
+    Blob: test-blob
+    Storage Account Name: test-account
+    Storage Account Key: test-key
+    Container Name: test-container
+    Create Container: 'true'
+Connections:
+- name: GetFile/success/PutAzureBlobStorage
+  source id: d5fef466-fef0-4d90-814e-9c19a67e454a
+  source relationship name: success
+  destination id: e7b3f9c6-d1ee-4d9b-b676-48c872cc7ae3
+Controller Services: []
+Remote Processing Groups: []
diff --git a/examples/consumejournald_config.yml b/examples/consumejournald_config.yml
new file mode 100644
index 0000000..89ea553
--- /dev/null
+++ b/examples/consumejournald_config.yml
@@ -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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Consume journal messages
+  id: 66fbb65d-8b11-43a9-aaad-746a07d2fe35
+  class: org.apache.nifi.minifi.extensions.systemd.ConsumeJournald
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 5 sec
+- name: Log messages to info level
+  id: f7281113-9576-4680-9a87-a8e961101b5c
+  class: org.apache.nifi.minifi.processors.LogAttribute
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list: [success]
+  Properties:
+    FlowFiles To Log: 0
+    Log Level: info
+    Log Payload: true
+    Log Prefix: '====='
+    Maxumim Payload Line Length: 0
+Connections:
+- name: ConsumeJournald/success/LogAttribute
+  id: f57713d9-fa0b-4416-948d-4b316b1a1c0d
+  source id: 66fbb65d-8b11-43a9-aaad-746a07d2fe35
+  source relationship name: success
+  destination id: f7281113-9576-4680-9a87-a8e961101b5c
+Remote Processing Groups: []
+Provenance Reporting:
diff --git a/examples/consumekafka_config.yml b/examples/consumekafka_config.yml
new file mode 100644
index 0000000..3878bd3
--- /dev/null
+++ b/examples/consumekafka_config.yml
@@ -0,0 +1,53 @@
+# 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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Consume Kafka messages from ConsumeKafkaTest topic
+  id: 37d6e8e5-6284-423e-8620-c5168a71add7
+  class: org.apache.nifi.processors.standard.ConsumeKafka
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1 sec
+  auto-terminated relationships list:
+  - failure
+  Properties:
+    Group ID: test_group
+    Honor Transactions: 'true'
+    Kafka Brokers: kafka-broker:9092
+    Key Attribute Encoding: UTF-8
+    Max Poll Time: 4 sec
+    Message Header Encoding: UTF-8
+    Offset Reset: earliest
+    Session Timeout: 60 sec
+    Topic Name Format: Names
+    Topic Names: ConsumeKafkaTest
+- name: Put files to /tmp/output
+  class: org.apache.nifi.processors.standard.PutFile
+  id: 7f9c6f0b-e936-499e-b659-acfaf6872772
+  auto-terminated relationships list:
+  - success
+  - failure
+  scheduling strategy: EVENT_DRIVEN
+  Properties:
+    Directory: /tmp/output
+Connections:
+- name: ConsumeKafka/success/PutFile
+  source id: 37d6e8e5-6284-423e-8620-c5168a71add7
+  source relationship name: success
+  destination id: 7f9c6f0b-e936-499e-b659-acfaf6872772
+Controller Services: []
+Remote Processing Groups: []
diff --git a/examples/cwel_config.yml b/examples/cwel_config.yml
new file mode 100644
index 0000000..252e16b
--- /dev/null
+++ b/examples/cwel_config.yml
@@ -0,0 +1,50 @@
+# 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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Consume Windows Events in JSON format
+  id: 2f2a3b47-f5ba-49f6-82b5-bc1c86b96e27
+  class: org.apache.nifi.minifi.processors.ConsumeWindowsEventLog
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1000 ms
+  Properties:
+    Channel: "System"
+    Query: "*"
+    Output Format: "JSON"
+    JSON Format: "Flattened"
+    Batch Commit Size: "10"
+- name: Put files to C:\temp\
+  id: e143601d-de4f-44ba-a6ec-d1f97d77ec94
+  class: org.apache.nifi.minifi.processors.PutFile
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - failure
+  - success
+  Properties:
+    Conflict Resolution Strategy: fail
+    Create Missing Directories: 'true'
+    Directory: C:\temp\
+Connections:
+- name: ConsumeWindowsEventLog/success/PutFile
+  id: 098a56ba-f4bf-4323-a3f3-6f8a5e3586bf
+  source id: 2f2a3b47-f5ba-49f6-82b5-bc1c86b96e27
+  source relationship names:
+  - success
+  destination id: e143601d-de4f-44ba-a6ec-d1f97d77ec94
+Controller Services: []
+Remote Process Groups: []
diff --git a/examples/getfile_putfile_config.yml b/examples/getfile_putfile_config.yml
new file mode 100644
index 0000000..e1fe675
--- /dev/null
+++ b/examples/getfile_putfile_config.yml
@@ -0,0 +1,50 @@
+# 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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/getfile_dir
+  id: 2f2a3b47-f5ba-49f6-82b5-bc1c86b96e27
+  class: org.apache.nifi.minifi.processors.GetFile
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1000 ms
+  Properties:
+    Input Directory: /tmp/getfile_dir
+    Keep Source File: 'true'
+    Recurse Subdirectories: 'true'
+    Ignore Hidden Files: 'false'
+    Minimum File Size: '1 MB'
+- name: Put files to /tmp/out_dir
+  id: e143601d-de4f-44ba-a6ec-d1f97d77ec94
+  class: org.apache.nifi.minifi.processors.PutFile
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - failure
+  - success
+  Properties:
+    Conflict Resolution Strategy: fail
+    Create Missing Directories: 'true'
+    Directory: /tmp/out_dir
+Connections:
+- name: GetFile/success/PutFile
+  id: 098a56ba-f4bf-4323-a3f3-6f8a5e3586bf
+  source id: 2f2a3b47-f5ba-49f6-82b5-bc1c86b96e27
+  source relationship names:
+  - success
+  destination id: e143601d-de4f-44ba-a6ec-d1f97d77ec94
+Controller Services: []
+Remote Process Groups: []
diff --git a/examples/http_post_config.yml b/examples/http_post_config.yml
new file mode 100644
index 0000000..4ce683b
--- /dev/null
+++ b/examples/http_post_config.yml
@@ -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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/input
+  id: 962790e7-ea35-4096-9362-96f527288669
+  class: org.apache.nifi.processors.standard.GetFile
+  scheduling period: 2 sec
+  scheduling strategy: TIMER_DRIVEN
+  Properties:
+    Input Directory: /tmp/input
+    Keep Source File: 'true'
+- name: Invoke POST request on remote URL
+  id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+  class: org.apache.nifi.processors.standard.InvokeHTTP
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - success
+  - response
+  Properties:
+    HTTP Method: POST
+    Remote URL: http://1.2.3.4:8080/contentListener
+- name: Retry on HTTP 5xx status codes
+  id: 3b1c6971-541b-4530-9f72-175757500699
+  class: org.apache.nifi.processors.standard.RetryFlowFile
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - failure
+  Properties:
+    Maximum Retries: 5
+- name: Log failed flow files
+  id: 1f669bb0-6d50-41e6-9230-90c1cc3e21f9
+  class: org.apache.nifi.minifi.processors.LogAttribute
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list: [success]
+  Properties:
+    FlowFiles To Log: 0
+    Log Level: warn
+    Log Prefix: '=== Failed HTTP request ==='
+    Maxumim Payload Line Length: 0
+Connections:
+- name: GetFile/success/InvokeHTTP
+  source id: 962790e7-ea35-4096-9362-96f527288669
+  source relationship name: success
+  destination id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+- name: InvokeHTTP/failure/InvokeHTTP
+  source id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+  source relationship name: failure
+  destination id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+- name: InvokeHTTP/retry/RetryFlowFile
+  id: c8a96f1d-48cd-4ee3-8a2f-081c3e3c7bcd
+  source id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+  source relationship names: retry
+  destination id: 3b1c6971-541b-4530-9f72-175757500699
+- name: RetryFlowFile/retry/InvokeHTTP
+  id: cadf51f0-3468-423a-9d12-5c40270aa7ca
+  source id: 3b1c6971-541b-4530-9f72-175757500699
+  source relationship names: retry
+  destination id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+- name: RetryFlowFile/retries_exceeded/LogAttribute
+  id: 160fc0f4-6efe-4274-8bc7-2a416570bdeb
+  source id: 3b1c6971-541b-4530-9f72-175757500699
+  source relationship names: retries_exceeded
+  destination id: 1f669bb0-6d50-41e6-9230-90c1cc3e21f9
+- name: InvokeHTTP/no retry/LogAttribute
+  source id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+  source relationship name: no retry
+  destination id: 1f669bb0-6d50-41e6-9230-90c1cc3e21f9
+Controller Services: []
+Remote Processing Groups: []
diff --git a/examples/lists3_fetchs3_config.yml b/examples/lists3_fetchs3_config.yml
new file mode 100644
index 0000000..e9e7d88
--- /dev/null
+++ b/examples/lists3_fetchs3_config.yml
@@ -0,0 +1,66 @@
+# 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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Fetch S3 object from test_bucket
+  id: 6ccd8be9-4aa3-4b86-ae10-0a68668f1c25
+  class: org.apache.nifi.minifi.aws.processors.FetchS3Object
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - failure
+  Properties:
+    AWS Credentials Provider service: AWSCredentialsService
+    Bucket: test_bucket
+    Communications Timeout: 30 sec
+- name: List test_bucket S3 bucket
+  id: 6f2c20f5-e990-4d9f-bfd6-f7471e3df469
+  class: org.apache.nifi.minifi.aws.processors.ListS3
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 10000 ms
+  Properties:
+    AWS Credentials Provider service: AWSCredentialsService
+    Bucket: test_bucket
+    Communications Timeout: 30 sec
+- name: Log S3 object attributes
+  id: 73fd7f54-7639-4f27-b20b-889708f493cb
+  class: org.apache.nifi.minifi.processors.LogAttribute
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - success
+  Properties:
+    FlowFiles To Log: '0'
+Controller Services:
+- name: AWSCredentialsService
+  id: 2094d776-2006-4d02-9bb9-28eac9d0fc95
+  class: org.apache.nifi.minifi.aws.controllers.AWSCredentialsService
+  Properties:
+    Use Default Credentials: 'true'
+Connections:
+- name: FetchS3Object/success/LogAttribute
+  id: 2c13ddd6-543e-4e37-a295-e4cb8fe85fa5
+  source id: 6ccd8be9-4aa3-4b86-ae10-0a68668f1c25
+  source relationship names:
+  - success
+  destination id: 73fd7f54-7639-4f27-b20b-889708f493cb
+- name: ListS3/success/FetchS3Object
+  id: 7895c12e-9657-4baa-a8ec-6b8cb11f32cd
+  source id: 6f2c20f5-e990-4d9f-bfd6-f7471e3df469
+  source relationship names:
+  - success
+  destination id: 6ccd8be9-4aa3-4b86-ae10-0a68668f1c25
+Remote Process Groups: []
diff --git a/examples/pdh_config.yml b/examples/pdh_config.yml
new file mode 100644
index 0000000..143cb98
--- /dev/null
+++ b/examples/pdh_config.yml
@@ -0,0 +1,49 @@
+# 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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Read disk and CPU performance data
+  id: 2f2a3b47-f5ba-49f6-82b5-bc1c86b96e27
+  class: org.apache.nifi.minifi.processors.PerformanceDataMonitor
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 10000 ms
+  Properties:
+    Predefined Groups: "Disk,CPU"
+    Custom PDH Counters: "\\System\\Processes,\\Process(*)\\ID Process,\\Process(*)\\Private Bytes"
+    Output Format: "JSON"
+    Output Compactness: "Compact"
+- name: Put files to C:\temp\
+  id: e143601d-de4f-44ba-a6ec-d1f97d77ec94
+  class: org.apache.nifi.minifi.processors.PutFile
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - failure
+  - success
+  Properties:
+    Conflict Resolution Strategy: fail
+    Create Missing Directories: 'true'
+    Directory: C:\temp\
+Connections:
+- name: PerformanceDataMonitor/success/PutFile
+  id: 098a56ba-f4bf-4323-a3f3-6f8a5e3586bf
+  source id: 2f2a3b47-f5ba-49f6-82b5-bc1c86b96e27
+  source relationship names:
+  - success
+  destination id: e143601d-de4f-44ba-a6ec-d1f97d77ec94
+Controller Services: []
+Remote Process Groups: []
diff --git a/examples/publishkafka_config.yml b/examples/publishkafka_config.yml
new file mode 100644
index 0000000..104c931
--- /dev/null
+++ b/examples/publishkafka_config.yml
@@ -0,0 +1,49 @@
+# 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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/input
+  id: 7fd166aa-0662-4c42-affa-88f6fb39807f
+  class: org.apache.nifi.processors.standard.GetFile
+  scheduling period: 2 sec
+  scheduling strategy: TIMER_DRIVEN
+  Properties:
+    Input Directory: /tmp/input
+- name: Publish messages to Kafka topic test
+  id: 8a534b4a-2b4a-4e1e-ab07-8a09fa08f848
+  class: org.apache.nifi.processors.standard.PublishKafka
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - success
+  - failure
+  Properties:
+    Batch Size: '10'
+    Client Name: test-client
+    Compress Codec: none
+    Delivery Guarantee: '1'
+    Known Brokers: kafka-broker:9092
+    Message Timeout: 12 sec
+    Request Timeout: 10 sec
+    Topic Name: test
+Connections:
+- name: GetFile/success/PublishKafka
+  source id: 7fd166aa-0662-4c42-affa-88f6fb39807f
+  source relationship name: success
+  destination id: 8a534b4a-2b4a-4e1e-ab07-8a09fa08f848
+Controller Services: []
+Remote Processing Groups: []
diff --git a/examples/publishkafka_ssl_config.yml b/examples/publishkafka_ssl_config.yml
new file mode 100644
index 0000000..16f90b8
--- /dev/null
+++ b/examples/publishkafka_ssl_config.yml
@@ -0,0 +1,55 @@
+# 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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/input
+  id: a78f9d7d-cc68-4f30-aac1-ee716d42bf9d
+  class: org.apache.nifi.processors.standard.GetFile
+  scheduling period: 2 sec
+  scheduling strategy: TIMER_DRIVEN
+  Properties:
+    Input Directory: /tmp/input
+- name: Publish messages to Kafka topic test
+  id: 8c0791c7-920c-4541-bcde-f5d559f42ed2
+  class: org.apache.nifi.processors.standard.PublishKafka
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - success
+  - failure
+  Properties:
+    Batch Size: 10
+    Client Name: test_client
+    Compress Codec: none
+    Delivery Guarantee: 1
+    Known Brokers: kafka-broker:9093
+    Message Timeout: 12 sec
+    Message Timeout Phrase: 12 sec
+    Request Timeout: 10 sec
+    Security CA Key: /tmp/resources/certs/ca-cert
+    Security Cert: /tmp/resources/certs/client_test_client_client.pem
+    Security Pass Phrase: abcdefgh
+    Security Private Key: /tmp/resources/certs/client_test_client_client.key
+    Security Protocol: ssl
+    Topic Name: test
+Connections:
+- name: GetFile/success/PublishKafka
+  source id: a78f9d7d-cc68-4f30-aac1-ee716d42bf9d
+  source relationship name: success
+  destination id: 8c0791c7-920c-4541-bcde-f5d559f42ed2
+Controller Services: []
+Remote Processing Groups: []
diff --git a/examples/puts3_config.yml b/examples/puts3_config.yml
new file mode 100644
index 0000000..5786d6b
--- /dev/null
+++ b/examples/puts3_config.yml
@@ -0,0 +1,45 @@
+# 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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/input
+  id: bfd376a8-c845-453b-9f74-4cf6f3a95e74
+  class: org.apache.nifi.processors.standard.GetFile
+  scheduling period: 2 sec
+  scheduling strategy: TIMER_DRIVEN
+  Properties:
+    Input Directory: /tmp/input
+- name: Upload to S3 test_bucket
+  id: 8c9e2512-e814-4b73-ac5c-f33753332128
+  class: org.apache.nifi.processors.standard.PutS3Object
+  scheduling period: 1 sec
+  scheduling strategy: TIMER_DRIVEN
+  auto-terminated relationships list:
+  - success
+  - failure
+  Properties:
+    Access Key: test_access_key
+    Bucket: test_bucket
+    Secret Key: test_secret
+Connections:
+- name: GetFile/success/PutS3Object
+  source id: bfd376a8-c845-453b-9f74-4cf6f3a95e74
+  source relationship name: success
+  destination id: 8c9e2512-e814-4b73-ac5c-f33753332128
+Controller Services: []
+Remote Processing Groups: []
diff --git a/examples/querydbtable_config.yml b/examples/querydbtable_config.yml
new file mode 100644
index 0000000..903bd5f
--- /dev/null
+++ b/examples/querydbtable_config.yml
@@ -0,0 +1,52 @@
+# 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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Query users table
+  id: 0bd6ebcd-7fef-47e3-8e36-4413d39d01d5
+  class: org.apache.nifi.processors.standard.QueryDatabaseTable
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1 sec
+  Properties:
+    Columns to Return: id,name
+    DB Controller Service: ODBCService
+    Output Format: JSON
+    Table Name: users
+    Where Clause: id = 1
+- name: Put files to /tmp/output
+  id: 32700228-e078-42a6-89d7-03e4e478c9da
+  class: org.apache.nifi.processors.standard.PutFile
+  scheduling strategy: EVENT_DRIVEN
+  scheduling period: 1 sec
+  auto-terminated relationships list:
+  - success
+  - failure
+  Properties:
+    Directory: /tmp/output
+Controller Services:
+- name: ODBCService
+  id: 64fafacd-74ad-4c3b-b1cc-a816ef128e09
+  class: ODBCService
+  Properties:
+    Connection String: Driver={PostgreSQL ANSI};Server=postgresql-server;Port=5432;Database=postgres;Uid=postgres;Pwd=password;
+Connections:
+- name: QueryDatabaseTable/success/PutFile
+  destination id: 32700228-e078-42a6-89d7-03e4e478c9da
+  source id: 0bd6ebcd-7fef-47e3-8e36-4413d39d01d5
+  source relationship name: success
+Remote Processing Groups: []
diff --git a/examples/site_to_site_config.yml b/examples/site_to_site_config.yml
new file mode 100644
index 0000000..2030b16
--- /dev/null
+++ b/examples/site_to_site_config.yml
@@ -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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/input
+  id: 45c2a56e-7c29-42f3-8c1d-89c0c84a6ee7
+  class: org.apache.nifi.processors.standard.GetFile
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 2 sec
+  Properties:
+    Input Directory: /tmp/input
+Remote Processing Groups:
+- Input Ports:
+  - Properties: {}
+    id: 4222cd3a-746e-3497-abd0-b7695faa750c
+    max concurrent tasks: 1
+    name: to_nifi
+  id: 38878f84-23cd-4aaa-9c45-45151bb2d681
+  name: RemoteProcessGroup
+  timeout: 30 sec
+  url: http://nifi:8080/nifi
+  yield period: 3 sec
+Connections:
+- name: GetFile/success/RPG
+  source id: 45c2a56e-7c29-42f3-8c1d-89c0c84a6ee7
+  source relationship name: success
+  destination id: 4222cd3a-746e-3497-abd0-b7695faa750c
+Controller Services: []
diff --git a/examples/tailfile_config.yml b/examples/tailfile_config.yml
new file mode 100644
index 0000000..ada27ff
--- /dev/null
+++ b/examples/tailfile_config.yml
@@ -0,0 +1,47 @@
+# 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.
+
+MiNiFi Config Version: 3
+Flow Controller:
+  name: MiNiFi Flow
+Processors:
+- name: Log tailfile attributes
+  id: 41141af1-3c43-4fa4-8236-2b207b0fe9d8
+  class: org.apache.nifi.minifi.processors.LogAttribute
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1000 ms
+  auto-terminated relationships list:
+  - success
+  Properties:
+    FlowFiles To Log: '0'
+- name: Tail /tmp/test_file.log
+  id: 0ef22940-ac0a-4813-9ad9-fe41c2b51fff
+  class: org.apache.nifi.minifi.processors.TailFile
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1000 ms
+  Properties:
+    File to Tail: /tmp/test_file.log
+    Initial Start Position: Beginning of File
+    Input Delimiter: \n
+    tail-mode: Single file
+Connections:
+- name: TailFile/success/LogAttribute
+  id: eda7f758-c548-46d6-aba0-faa6e9937d8c
+  source id: 0ef22940-ac0a-4813-9ad9-fe41c2b51fff
+  source relationship names:
+  - success
+  destination id: 41141af1-3c43-4fa4-8236-2b207b0fe9d8
+Controller Services: []
+Remote Process Groups: []

[nifi-minifi-cpp] 04/04: MINIFICPP-1587 Fix CWEL test compilation if path contains whitespace

Posted by sz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

szaszm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit c683cbef65c39c75d52e1818fa89369a348daca5
Author: Gabor Gyimesi <ga...@gmail.com>
AuthorDate: Mon Jul 19 15:57:42 2021 +0200

    MINIFICPP-1587 Fix CWEL test compilation if path contains whitespace
    
    Closes #1119
    
    Signed-off-by: Marton Szasz <sz...@apache.org>
---
 .gitignore                                                  |  9 +++++++++
 .../tests/custom-provider/generate-and-register.bat         | 13 ++++++++++---
 win_build_vs.bat                                            |  2 +-
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/.gitignore b/.gitignore
index 8754b95..bcc7486 100644
--- a/.gitignore
+++ b/.gitignore
@@ -77,3 +77,12 @@ __pycache__/
 .vs/slnx.sqlite
 /.ccls-cache
 /.vscode
+
+# generated files from WEL test
+extensions/windows-event-log/tests/custom-provider/unit-test-provider.cs
+extensions/windows-event-log/tests/custom-provider/unit-test-provider.dll
+extensions/windows-event-log/tests/custom-provider/unit-test-provider.h
+extensions/windows-event-log/tests/custom-provider/unit-test-provider.man
+extensions/windows-event-log/tests/custom-provider/unit-test-provider.rc
+extensions/windows-event-log/tests/custom-provider/unit-test-provider.res
+extensions/windows-event-log/tests/custom-provider/unit-test-providerTEMP.BIN
diff --git a/extensions/windows-event-log/tests/custom-provider/generate-and-register.bat b/extensions/windows-event-log/tests/custom-provider/generate-and-register.bat
index c74090b..177768a 100644
--- a/extensions/windows-event-log/tests/custom-provider/generate-and-register.bat
+++ b/extensions/windows-event-log/tests/custom-provider/generate-and-register.bat
@@ -16,6 +16,13 @@ rem limitations under the License.
 
 cd %1
 
+rem Define full path to file and remove quotation marks
+set man_path=%1"\unit-test-provider.man"
+set man_path=%man_path:"=%
+
+set dll_path=%1"\unit-test-provider.dll"
+set dll_path=%dll_path:"=%
+
 (
   echo ^<?xml version="1.0" encoding="UTF-8"?^>
   echo ^<instrumentationManifest xsi:schemaLocation="http://schemas.microsoft.com/win/2004/08/events eventman.xsd"
@@ -29,8 +36,8 @@ cd %1
   echo     ^<provider name="minifi_unit_test_provider"
   echo        symbol="minifi_unit_test_provider"
   echo          guid="{ABCDEF01-8174-F1CA-87BE-DA129FF6001B}"
-  echo          resourceFileName="%1\unit-test-provider.dll"
-  echo          messageFileName="%1\unit-test-provider.dll"^>  
+  echo          resourceFileName="%dll_path%"
+  echo          messageFileName="%dll_path%"^>
   echo        ^<events^>
   echo          ^<event symbol="CustomEvent" value="10000" version="1" channel="minifi_unit_test_provider/Log" template="CustomTemplate" /^>
   echo        ^</events^>
@@ -53,7 +60,7 @@ cd %1
   echo  ^</instrumentation^>
   echo  ^<localization/^>
   echo  ^</instrumentationManifest^>
-) > "%1/unit-test-provider.man"
+) > "%man_path%"
 
 mc -css Namespace unit-test-provider.man
 mc -um unit-test-provider.man
diff --git a/win_build_vs.bat b/win_build_vs.bat
index e2e33de..5d90db3 100755
--- a/win_build_vs.bat
+++ b/win_build_vs.bat
@@ -68,7 +68,7 @@ for %%x in (%*) do (
 mkdir %builddir%
 pushd %builddir%\
 
-cmake -G %generator% -A %build_platform% -DINSTALLER_MERGE_MODULES=%installer_merge_modules% -DTEST_CUSTOM_WEL_PROVIDER=%test_custom_wel_provider% -DENABLE_SQL=%build_SQL% -DCMAKE_BUILD_TYPE_INIT=%cmake_build_type% -DCMAKE_BUILD_TYPE=%cmake_build_type% -DWIN32=WIN32 -DENABLE_LIBRDKAFKA=%build_kafka% -DENABLE_JNI=%build_jni% -DOPENSSL_OFF=OFF -DENABLE_COAP=%build_coap% -DENABLE_AWS=%build_AWS% -DENABLE_PDH=%build_PDH% -DENABLE_AZURE=%build_azure% -DENABLE_SFTP=%build_SFTP% -DENABLE_NANOFI [...]
+cmake -G %generator% -A %build_platform% -DINSTALLER_MERGE_MODULES=%installer_merge_modules% -DTEST_CUSTOM_WEL_PROVIDER=%test_custom_wel_provider% -DENABLE_SQL=%build_SQL% -DCMAKE_BUILD_TYPE_INIT=%cmake_build_type% -DCMAKE_BUILD_TYPE=%cmake_build_type% -DWIN32=WIN32 -DENABLE_LIBRDKAFKA=%build_kafka% -DENABLE_JNI=%build_jni% -DOPENSSL_OFF=OFF -DENABLE_COAP=%build_coap% -DENABLE_AWS=%build_AWS% -DENABLE_PDH=%build_PDH% -DENABLE_AZURE=%build_azure% -DENABLE_SFTP=%build_SFTP% -DENABLE_NANOFI [...]
 IF %ERRORLEVEL% NEQ 0 EXIT /b %ERRORLEVEL%
 if [%cpack%] EQU [ON] (
     cpack -C %cmake_build_type%