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 e579692e6f0a60dd073b687def30361552ef9c23
Author: Ferenc Gerlits <[email protected]>
AuthorDate: Wed Aug 2 17:54:15 2023 +0200

    MINIFICPP-2162 Use className instead of getClassName
    
    Closes #1611
    
    Signed-off-by: Marton Szasz <[email protected]>
---
 extensions/jni/jvm/JVMLoader.h                     | 12 +++++----
 .../rocksdb-repos/DatabaseContentRepository.h      |  5 ++--
 extensions/rocksdb-repos/FlowFileRepository.h      |  9 ++++---
 extensions/rocksdb-repos/ProvenanceRepository.h    |  5 ++--
 extensions/rocksdb-repos/RocksDbRepository.h       |  5 ++--
 libminifi/include/agent/agent_docs.h               |  2 +-
 libminifi/include/core/Connectable.h               |  5 ++--
 libminifi/include/core/ContentRepository.h         |  3 ++-
 libminifi/include/core/Core.h                      | 30 +++-------------------
 libminifi/include/core/ObjectFactory.h             |  8 +++---
 libminifi/include/core/Processor.h                 |  2 +-
 libminifi/include/core/Repository.h                |  5 ++--
 libminifi/include/core/SerializableComponent.h     |  8 +++---
 .../include/core/controller/ControllerService.h    |  2 +-
 .../core/controller/ControllerServiceProvider.h    | 12 +++++----
 .../include/core/logging/LoggerConfiguration.h     | 11 ++++----
 libminifi/include/core/logging/LoggerFactory.h     |  8 +++---
 .../include/core/repository/FileSystemRepository.h |  5 ++--
 .../core/repository/VolatileContentRepository.h    |  3 ++-
 .../core/repository/VolatileFlowFileRepository.h   |  5 ++--
 .../core/repository/VolatileProvenanceRepository.h |  5 ++--
 .../include/core/repository/VolatileRepository.h   |  5 ++--
 libminifi/include/provenance/Provenance.h          |  2 +-
 libminifi/include/utils/ClassUtils.h               |  3 ++-
 libminifi/include/utils/StringUtils.h              |  8 +++---
 libminifi/src/FlowController.cpp                   |  2 +-
 libminifi/src/core/Connectable.cpp                 |  8 +++---
 libminifi/src/core/Core.cpp                        |  4 +--
 libminifi/src/core/FlowConfiguration.cpp           |  2 +-
 libminifi/src/core/logging/LoggerConfiguration.cpp | 13 +++++-----
 libminifi/src/core/logging/LoggerFactory.cpp       |  2 +-
 .../core/logging/internal/CompressionManager.cpp   | 18 +++----------
 libminifi/src/provenance/Provenance.cpp            |  2 +-
 libminifi/src/utils/ClassUtils.cpp                 |  2 +-
 libminifi/src/utils/StringUtils.cpp                | 11 ++++----
 libminifi/test/TestBase.cpp                        | 24 ++++++++---------
 libminifi/test/TestBase.h                          | 11 ++++----
 libminifi/test/sql-tests/mocks/MockConnectors.cpp  |  8 +++---
 libminifi/test/unit/CoreTests.cpp                  |  7 -----
 libminifi/test/unit/StringUtilsTests.cpp           |  2 +-
 40 files changed, 131 insertions(+), 153 deletions(-)

diff --git a/extensions/jni/jvm/JVMLoader.h b/extensions/jni/jvm/JVMLoader.h
index 3e2d49c23..628587b16 100644
--- a/extensions/jni/jvm/JVMLoader.h
+++ b/extensions/jni/jvm/JVMLoader.h
@@ -21,11 +21,13 @@
 #include <memory>
 #include <utility>
 #include <string>
+#include <string_view>
 #include <map>
 #include <vector>
 #include <sstream>
 #include <iterator>
 #include <algorithm>
+
 #include "JavaClass.h"
 #include "JavaServicer.h"
 #include "../JavaException.h"
@@ -250,9 +252,9 @@ class JVMLoader {
    * stack overflow. It's a common field, so the hope is that we can 
potentially access any class
    * in which the native pointer is stored in nativePtr.
    */
-  static jfieldID getPtrField(const std::string &className, JNIEnv *env, 
jobject obj) {
+  static jfieldID getPtrField(std::string_view className, JNIEnv *env, jobject 
obj) {
     static std::string fn = "nativePtr", args = "J", lookup = "nativePtrJ";
-    auto field = getClassMapping().getField(className, lookup);
+    auto field = getClassMapping().getField(std::string(className), lookup);
     if (field != nullptr) {
       return field;
     }
@@ -263,14 +265,14 @@ class JVMLoader {
 
   template<typename T>
   static T *getPtr(JNIEnv *env, jobject obj) {
-    jlong handle = env->GetLongField(obj, 
getPtrField(minifi::core::getClassName<T>(), env, obj));
+    jlong handle = env->GetLongField(obj, 
getPtrField(minifi::core::className<T>(), env, obj));
     return reinterpret_cast<T *>(handle);
   }
 
   template<typename T>
   static void setPtr(JNIEnv *env, jobject obj, T *t) {
     jlong handle = reinterpret_cast<jlong>(t);
-    env->SetLongField(obj, getPtrField(minifi::core::getClassName<T>(), env, 
obj), handle);
+    env->SetLongField(obj, getPtrField(minifi::core::className<T>(), env, 
obj), handle);
   }
 
   void setBaseServicer(std::shared_ptr<JavaServicer> servicer) {
@@ -285,7 +287,7 @@ class JVMLoader {
   template<typename T>
   static void putClassMapping(JNIEnv *env, JavaClass &clazz, const std::string 
&fieldStr, const std::string &arg) {
     auto classref = clazz.getReference();
-    auto name = minifi::core::getClassName<T>();
+    auto name = std::string{minifi::core::className<T>()};
     auto field = env->GetFieldID(classref, fieldStr.c_str(), arg.c_str());
     auto fieldName = fieldStr + arg;
     getClassMapping().putField(name, fieldName, field);
diff --git a/extensions/rocksdb-repos/DatabaseContentRepository.h 
b/extensions/rocksdb-repos/DatabaseContentRepository.h
index c57a2c8ea..ec3c24199 100644
--- a/extensions/rocksdb-repos/DatabaseContentRepository.h
+++ b/extensions/rocksdb-repos/DatabaseContentRepository.h
@@ -18,6 +18,7 @@
 
 #include <memory>
 #include <string>
+#include <string_view>
 #include <utility>
 #include <thread>
 
@@ -44,8 +45,8 @@ class DatabaseContentRepository : public 
core::ContentRepository {
  public:
   static constexpr const char* ENCRYPTION_KEY_NAME = 
"nifi.database.content.repository.encryption.key";
 
-  explicit DatabaseContentRepository(std::string name = 
getClassName<DatabaseContentRepository>(), const utils::Identifier& uuid = {})
-    : core::ContentRepository(std::move(name), uuid),
+  explicit DatabaseContentRepository(std::string_view name = 
className<DatabaseContentRepository>(), const utils::Identifier& uuid = {})
+    : core::ContentRepository(name, uuid),
       is_valid_(false),
       db_(nullptr),
       logger_(logging::LoggerFactory<DatabaseContentRepository>::getLogger()) {
diff --git a/extensions/rocksdb-repos/FlowFileRepository.h 
b/extensions/rocksdb-repos/FlowFileRepository.h
index 59d0ffa6f..d22ea0de1 100644
--- a/extensions/rocksdb-repos/FlowFileRepository.h
+++ b/extensions/rocksdb-repos/FlowFileRepository.h
@@ -19,6 +19,7 @@
 #include <utility>
 #include <vector>
 #include <string>
+#include <string_view>
 #include <memory>
 #include <list>
 
@@ -68,16 +69,16 @@ class FlowFileRepository : public RocksDbRepository, public 
SwapManager {
  public:
   static constexpr const char* ENCRYPTION_KEY_NAME = 
"nifi.flowfile.repository.encryption.key";
 
-  FlowFileRepository(std::string name, const utils::Identifier& /*uuid*/)
-    : FlowFileRepository(std::move(name)) {
+  FlowFileRepository(std::string_view name, const utils::Identifier& /*uuid*/)
+    : FlowFileRepository(name) {
   }
 
-  explicit FlowFileRepository(const std::string& repo_name = "",
+  explicit FlowFileRepository(const std::string_view repo_name = "",
                               std::string directory = 
FLOWFILE_REPOSITORY_DIRECTORY,
                               std::chrono::milliseconds maxPartitionMillis = 
MAX_FLOWFILE_REPOSITORY_ENTRY_LIFE_TIME,
                               int64_t maxPartitionBytes = 
MAX_FLOWFILE_REPOSITORY_STORAGE_SIZE,
                               std::chrono::milliseconds purgePeriod = 
FLOWFILE_REPOSITORY_PURGE_PERIOD)
-    : RocksDbRepository(repo_name.length() > 0 ? std::move(repo_name) : 
core::getClassName<FlowFileRepository>(),
+    : RocksDbRepository(repo_name.length() > 0 ? repo_name : 
core::className<FlowFileRepository>(),
                         std::move(directory), maxPartitionMillis, 
maxPartitionBytes, purgePeriod, 
logging::LoggerFactory<FlowFileRepository>::getLogger()) {
   }
 
diff --git a/extensions/rocksdb-repos/ProvenanceRepository.h 
b/extensions/rocksdb-repos/ProvenanceRepository.h
index 1c6874149..eb2f35fee 100644
--- a/extensions/rocksdb-repos/ProvenanceRepository.h
+++ b/extensions/rocksdb-repos/ProvenanceRepository.h
@@ -19,6 +19,7 @@
 #include <cinttypes>
 #include <vector>
 #include <string>
+#include <string_view>
 #include <memory>
 #include <algorithm>
 #include <utility>
@@ -44,12 +45,12 @@ class ProvenanceRepository : public 
core::repository::RocksDbRepository {
     : ProvenanceRepository(std::move(name)) {
   }
 
-  explicit ProvenanceRepository(std::string repo_name = "",
+  explicit ProvenanceRepository(std::string_view repo_name = "",
                                 std::string directory = PROVENANCE_DIRECTORY,
                                 std::chrono::milliseconds maxPartitionMillis = 
MAX_PROVENANCE_ENTRY_LIFE_TIME,
                                 int64_t maxPartitionBytes = 
MAX_PROVENANCE_STORAGE_SIZE,
                                 std::chrono::milliseconds purgePeriod = 
PROVENANCE_PURGE_PERIOD)
-    : RocksDbRepository(repo_name.length() > 0 ? std::move(repo_name) : 
core::getClassName<ProvenanceRepository>(),
+    : RocksDbRepository(repo_name.length() > 0 ? repo_name : 
core::className<ProvenanceRepository>(),
         directory, maxPartitionMillis, maxPartitionBytes, purgePeriod, 
core::logging::LoggerFactory<ProvenanceRepository>::getLogger()) {
   }
 
diff --git a/extensions/rocksdb-repos/RocksDbRepository.h 
b/extensions/rocksdb-repos/RocksDbRepository.h
index 88ab000ce..c4e606cfc 100644
--- a/extensions/rocksdb-repos/RocksDbRepository.h
+++ b/extensions/rocksdb-repos/RocksDbRepository.h
@@ -19,6 +19,7 @@
 #include <utility>
 #include <vector>
 #include <string>
+#include <string_view>
 #include <memory>
 
 #include "database/RocksDatabase.h"
@@ -30,13 +31,13 @@ constexpr auto 
FLOWFILE_REPOSITORY_RETRY_INTERVAL_INCREMENTS = std::chrono::mill
 
 class RocksDbRepository : public ThreadedRepository {
  public:
-  RocksDbRepository(std::string repo_name,
+  RocksDbRepository(std::string_view repo_name,
                     std::string directory,
                     std::chrono::milliseconds max_partition_millis,
                     int64_t max_partition_bytes,
                     std::chrono::milliseconds purge_period,
                     std::shared_ptr<logging::Logger> logger)
-    : ThreadedRepository(std::move(repo_name), std::move(directory), 
max_partition_millis, max_partition_bytes, purge_period),
+    : ThreadedRepository(repo_name, std::move(directory), 
max_partition_millis, max_partition_bytes, purge_period),
       logger_(std::move(logger)) {
   }
 
diff --git a/libminifi/include/agent/agent_docs.h 
b/libminifi/include/agent/agent_docs.h
index fac0bdfc9..7f0789fa5 100644
--- a/libminifi/include/agent/agent_docs.h
+++ b/libminifi/include/agent/agent_docs.h
@@ -73,7 +73,7 @@ inline auto toVector(std::span<const 
core::RelationshipDefinition> relationships
 
 template<typename T>
 std::string classNameWithDots() {
-  std::string class_name = core::getClassName<T>();
+  std::string class_name{core::className<T>()};
   return utils::StringUtils::replaceAll(class_name, "::", ".");
 }
 }  // namespace detail
diff --git a/libminifi/include/core/Connectable.h 
b/libminifi/include/core/Connectable.h
index ef3c12c13..129bf2ef2 100644
--- a/libminifi/include/core/Connectable.h
+++ b/libminifi/include/core/Connectable.h
@@ -20,6 +20,7 @@
 #include <map>
 #include <memory>
 #include <string>
+#include <string_view>
 #include <vector>
 #include <set>
 #include <unordered_set>
@@ -45,9 +46,9 @@ class FlowFile;
  */
 class Connectable : public CoreComponent {
  public:
-  explicit Connectable(std::string name);
+  explicit Connectable(std::string_view name);
 
-  explicit Connectable(std::string name, const utils::Identifier &uuid);
+  explicit Connectable(std::string_view name, const utils::Identifier &uuid);
 
   Connectable(const Connectable &other) = delete;
   Connectable(Connectable &&other) = delete;
diff --git a/libminifi/include/core/ContentRepository.h 
b/libminifi/include/core/ContentRepository.h
index 68230d42b..cff166262 100644
--- a/libminifi/include/core/ContentRepository.h
+++ b/libminifi/include/core/ContentRepository.h
@@ -20,6 +20,7 @@
 #include <map>
 #include <memory>
 #include <string>
+#include <string_view>
 #include <utility>
 #include <list>
 
@@ -37,7 +38,7 @@ namespace org::apache::nifi::minifi::core {
  */
 class ContentRepository : public core::CoreComponent, public 
StreamManager<minifi::ResourceClaim>, public 
utils::EnableSharedFromThis<ContentRepository>, public 
core::RepositoryMetricsSource {
  public:
-  explicit ContentRepository(std::string name, const utils::Identifier& uuid = 
{}) : core::CoreComponent(std::move(name), uuid) {}
+  explicit ContentRepository(std::string_view name, const utils::Identifier& 
uuid = {}) : core::CoreComponent(name, uuid) {}
   ~ContentRepository() override = default;
 
   virtual bool initialize(const std::shared_ptr<Configure> &configure) = 0;
diff --git a/libminifi/include/core/Core.h b/libminifi/include/core/Core.h
index edebcd568..3d96ec71a 100644
--- a/libminifi/include/core/Core.h
+++ b/libminifi/include/core/Core.h
@@ -26,6 +26,7 @@
 #include <memory>
 #include <string>
 #include <string_view>
+#include <type_traits>
 
 #ifdef WIN32
 #pragma comment(lib, "shlwapi.lib")
@@ -75,29 +76,6 @@
  */
 namespace org::apache::nifi::minifi::core {
 
-template<typename T>
-static inline std::string getClassName() {
-#ifndef WIN32
-  char *b = abi::__cxa_demangle(typeid(T).name(), 0, 0, 0);
-  if (b == nullptr)
-    return {};
-  std::string name = b;
-  std::free(b);
-  return name;
-#else
-  std::string_view name = typeid(T).name();
-  const std::string_view class_prefix = "class ";
-  const std::string_view struct_prefix = "struct ";
-
-  if (utils::StringUtils::startsWith(name, class_prefix)) {
-    name.remove_prefix(class_prefix.length());
-  } else if (utils::StringUtils::startsWith(name, struct_prefix)) {
-    name.remove_prefix(struct_prefix.length());
-  }
-  return std::string{name};
-#endif
-}
-
 constexpr std::string_view removeStructOrClassPrefix(std::string_view input) {
   using namespace std::literals;
   for (auto prefix : { "struct "sv, "class "sv }) {
@@ -127,8 +105,6 @@ constexpr auto typeNameArray() {
 # error Unsupported compiler
 #endif
 
-  static_assert(function.find(prefix) != std::string_view::npos && 
function.rfind(suffix) != std::string_view::npos);
-
   constexpr auto start = function.find(prefix) + prefix.size();
   constexpr auto end = function.rfind(suffix);
   static_assert(start < end);
@@ -149,7 +125,7 @@ struct TypeNameHolder {
 
 template<typename T>
 constexpr std::string_view className() {
-  return utils::array_to_string_view(TypeNameHolder<T>::value);
+  return 
utils::array_to_string_view(TypeNameHolder<std::remove_reference_t<T>>::value);
 }
 
 template<typename T>
@@ -168,7 +144,7 @@ std::unique_ptr<T> instantiate(const std::string name = {}) 
{
  */
 class CoreComponent {
  public:
-  explicit CoreComponent(std::string name, const utils::Identifier &uuid = {}, 
const std::shared_ptr<utils::IdGenerator> &idGenerator = 
utils::IdGenerator::getIdGenerator());
+  explicit CoreComponent(std::string_view name, const utils::Identifier &uuid 
= {}, const std::shared_ptr<utils::IdGenerator> &idGenerator = 
utils::IdGenerator::getIdGenerator());
   CoreComponent(const CoreComponent &other) = default;
   CoreComponent(CoreComponent &&other) = default;
   CoreComponent& operator=(const CoreComponent&) = default;
diff --git a/libminifi/include/core/ObjectFactory.h 
b/libminifi/include/core/ObjectFactory.h
index 2a777e80b..d729f6bb5 100644
--- a/libminifi/include/core/ObjectFactory.h
+++ b/libminifi/include/core/ObjectFactory.h
@@ -89,13 +89,13 @@ class ObjectFactory {
 template<class T>
 class DefautObjectFactory : public ObjectFactory {
  public:
-  DefautObjectFactory() {
-    className = core::getClassName<T>();
+  DefautObjectFactory()
+      : className(core::className<T>()) {
   }
 
   explicit DefautObjectFactory(std::string group_name)
-      : ObjectFactory(std::move(group_name)) {
-    className = core::getClassName<T>();
+      : ObjectFactory(std::move(group_name)),
+      className(core::className<T>()) {
   }
 
   /**
diff --git a/libminifi/include/core/Processor.h 
b/libminifi/include/core/Processor.h
index 8e32de05e..f2266ea4b 100644
--- a/libminifi/include/core/Processor.h
+++ b/libminifi/include/core/Processor.h
@@ -45,7 +45,7 @@
 
 #define ADD_GET_PROCESSOR_NAME \
   std::string getProcessorType() const override { \
-    auto class_name = 
org::apache::nifi::minifi::core::getClassName<decltype(*this)>(); \
+    auto class_name = 
org::apache::nifi::minifi::core::className<decltype(*this)>(); \
     auto splitted = 
org::apache::nifi::minifi::utils::StringUtils::split(class_name, "::"); \
     return splitted[splitted.size() - 1]; \
   }
diff --git a/libminifi/include/core/Repository.h 
b/libminifi/include/core/Repository.h
index 0c74732bc..72efd1b40 100644
--- a/libminifi/include/core/Repository.h
+++ b/libminifi/include/core/Repository.h
@@ -26,6 +26,7 @@
 #include <memory>
 #include <set>
 #include <string>
+#include <string_view>
 #include <utility>
 #include <vector>
 
@@ -57,12 +58,12 @@ constexpr auto REPOSITORY_PURGE_PERIOD = 
std::chrono::milliseconds(2500);
 
 class Repository : public core::CoreComponent, public 
core::RepositoryMetricsSource {
  public:
-  explicit Repository(std::string repo_name = "Repository",
+  explicit Repository(std::string_view repo_name = "Repository",
                       std::string directory = REPOSITORY_DIRECTORY,
                       std::chrono::milliseconds maxPartitionMillis = 
MAX_REPOSITORY_ENTRY_LIFE_TIME,
                       int64_t maxPartitionBytes = MAX_REPOSITORY_STORAGE_SIZE,
                       std::chrono::milliseconds purgePeriod = 
REPOSITORY_PURGE_PERIOD)
-    : core::CoreComponent(std::move(repo_name)),
+    : core::CoreComponent(repo_name),
       max_partition_millis_(maxPartitionMillis),
       max_partition_bytes_(maxPartitionBytes),
       purge_period_(purgePeriod),
diff --git a/libminifi/include/core/SerializableComponent.h 
b/libminifi/include/core/SerializableComponent.h
index 3d9480ebf..78676f39a 100644
--- a/libminifi/include/core/SerializableComponent.h
+++ b/libminifi/include/core/SerializableComponent.h
@@ -17,7 +17,7 @@
  */
 #pragma once
 
-#include <string>
+#include <string_view>
 #include <utility>
 
 #include "core/Core.h"
@@ -29,11 +29,11 @@ namespace org::apache::nifi::minifi::core {
 
 class SerializableComponent : public core::CoreComponent {
  public:
-  explicit SerializableComponent(std::string name)
-    : core::CoreComponent(std::move(name)) {
+  explicit SerializableComponent(std::string_view name)
+    : core::CoreComponent(name) {
   }
 
-  virtual ~SerializableComponent() = default;
+  ~SerializableComponent() override = default;
 
   virtual bool serialize(io::OutputStream& output_stream) = 0;
   virtual bool deserialize(io::InputStream &input_stream) = 0;
diff --git a/libminifi/include/core/controller/ControllerService.h 
b/libminifi/include/core/controller/ControllerService.h
index 60823608b..1e21d3091 100644
--- a/libminifi/include/core/controller/ControllerService.h
+++ b/libminifi/include/core/controller/ControllerService.h
@@ -61,7 +61,7 @@ enum ControllerServiceState {
 class ControllerService : public ConfigurableComponent, public Connectable {
  public:
   ControllerService()
-      : Connectable(core::getClassName<ControllerService>()),
+      : Connectable(core::className<ControllerService>()),
         configuration_(std::make_shared<Configure>()) {
     current_state_ = DISABLED;
   }
diff --git a/libminifi/include/core/controller/ControllerServiceProvider.h 
b/libminifi/include/core/controller/ControllerServiceProvider.h
index 55f4d0ca2..a9e60ea71 100644
--- a/libminifi/include/core/controller/ControllerServiceProvider.h
+++ b/libminifi/include/core/controller/ControllerServiceProvider.h
@@ -20,9 +20,11 @@
 
 #include <memory>
 #include <string>
+#include <string_view>
 #include <utility>
 #include <future>
 #include <vector>
+
 #include "core/Core.h"
 #include "ControllerServiceLookup.h"
 #include "core/ConfigurableComponent.h"
@@ -35,18 +37,18 @@ namespace org::apache::nifi::minifi::core::controller {
 
 class ControllerServiceProvider : public CoreComponent, public 
ConfigurableComponent, public ControllerServiceLookup {
  public:
-  explicit ControllerServiceProvider(std::string name)
-      : CoreComponent(std::move(name)) {
+  explicit ControllerServiceProvider(std::string_view name)
+      : CoreComponent(name) {
     controller_map_ = std::make_shared<ControllerServiceMap>();
   }
 
   explicit ControllerServiceProvider(std::shared_ptr<ControllerServiceMap> 
services)
-      : CoreComponent(core::getClassName<ControllerServiceProvider>()),
+      : CoreComponent(core::className<ControllerServiceProvider>()),
         controller_map_(std::move(services)) {
   }
 
-  explicit ControllerServiceProvider(std::string name, 
std::shared_ptr<ControllerServiceMap> services)
-      : CoreComponent(std::move(name)),
+  explicit ControllerServiceProvider(std::string_view name, 
std::shared_ptr<ControllerServiceMap> services)
+      : CoreComponent(name),
         controller_map_(std::move(services)) {
   }
 
diff --git a/libminifi/include/core/logging/LoggerConfiguration.h 
b/libminifi/include/core/logging/LoggerConfiguration.h
index 42f6d7a45..c12465ae8 100644
--- a/libminifi/include/core/logging/LoggerConfiguration.h
+++ b/libminifi/include/core/logging/LoggerConfiguration.h
@@ -26,6 +26,7 @@
 #include <map>
 #include <mutex>
 #include <string>
+#include <string_view>
 #include <unordered_set>
 
 #include "spdlog/common.h"
@@ -109,17 +110,17 @@ class LoggerConfiguration {
   /**
    * Can be used to get arbitrarily named Logger, LoggerFactory should be 
preferred within a class.
    */
-  std::shared_ptr<Logger> getLogger(const std::string& name, const 
std::optional<utils::Identifier>& id = {});
+  std::shared_ptr<Logger> getLogger(std::string_view name, const 
std::optional<utils::Identifier>& id = {});
 
   static const char *spdlog_default_pattern;
 
  protected:
   static std::shared_ptr<internal::LoggerNamespace> 
initialize_namespaces(const std::shared_ptr<LoggerProperties> 
&logger_properties, const std::shared_ptr<Logger> &logger = {});
-  static std::shared_ptr<spdlog::logger> get_logger(const 
std::shared_ptr<Logger>& logger, const 
std::shared_ptr<internal::LoggerNamespace> &root_namespace, const std::string 
&name,
+  static std::shared_ptr<spdlog::logger> get_logger(const 
std::shared_ptr<Logger>& logger, const 
std::shared_ptr<internal::LoggerNamespace> &root_namespace, std::string_view 
name_view,
                                                     const 
std::shared_ptr<spdlog::formatter>& formatter, bool remove_if_present = false);
 
  private:
-  std::shared_ptr<Logger> getLogger(const std::string& name, const 
std::optional<utils::Identifier>& id, const std::lock_guard<std::mutex>& lock);
+  std::shared_ptr<Logger> getLogger(std::string_view name, const 
std::optional<utils::Identifier>& id, const std::lock_guard<std::mutex>& lock);
 
   void initializeCompression(const std::lock_guard<std::mutex>& lock, const 
std::shared_ptr<LoggerProperties>& properties);
 
@@ -132,9 +133,9 @@ class LoggerConfiguration {
 
   class LoggerImpl : public Logger {
    public:
-    explicit LoggerImpl(std::string name, std::optional<utils::Identifier> id, 
const std::shared_ptr<LoggerControl> &controller, const 
std::shared_ptr<spdlog::logger> &delegate)
+    explicit LoggerImpl(std::string_view name, 
std::optional<utils::Identifier> id, const std::shared_ptr<LoggerControl> 
&controller, const std::shared_ptr<spdlog::logger> &delegate)
         : Logger(delegate, controller),
-          name(std::move(name)),
+          name(name),
           id(internal::formatId(id)) {
     }
 
diff --git a/libminifi/include/core/logging/LoggerFactory.h 
b/libminifi/include/core/logging/LoggerFactory.h
index 86c9812ec..69a012727 100644
--- a/libminifi/include/core/logging/LoggerFactory.h
+++ b/libminifi/include/core/logging/LoggerFactory.h
@@ -18,7 +18,7 @@
 
 #pragma once
 
-#include <string>
+#include <string_view>
 #include <memory>
 
 #include "core/logging/Logger.h"
@@ -28,19 +28,19 @@ namespace org::apache::nifi::minifi::core::logging {
 
 class LoggerFactoryBase {
  public:
-  static std::shared_ptr<Logger> getAliasedLogger(const std::string& name, 
const std::optional<utils::Identifier>& id = {});
+  static std::shared_ptr<Logger> getAliasedLogger(std::string_view name, const 
std::optional<utils::Identifier>& id = {});
 };
 
 template<typename T>
 class LoggerFactory : public LoggerFactoryBase {
  public:
   static std::shared_ptr<Logger> getLogger() {
-    static std::shared_ptr<Logger> logger = 
getAliasedLogger(core::getClassName<T>());
+    static std::shared_ptr<Logger> logger = 
getAliasedLogger(core::className<T>());
     return logger;
   }
 
   static std::shared_ptr<Logger> getLogger(const utils::Identifier& uuid) {
-    return getAliasedLogger(core::getClassName<T>(), uuid);
+    return getAliasedLogger(core::className<T>(), uuid);
   }
 };
 
diff --git a/libminifi/include/core/repository/FileSystemRepository.h 
b/libminifi/include/core/repository/FileSystemRepository.h
index 99a26b4e3..160714101 100644
--- a/libminifi/include/core/repository/FileSystemRepository.h
+++ b/libminifi/include/core/repository/FileSystemRepository.h
@@ -20,6 +20,7 @@
 
 #include <memory>
 #include <string>
+#include <string_view>
 #include <utility>
 #include <algorithm>
 
@@ -32,8 +33,8 @@ namespace org::apache::nifi::minifi::core::repository {
 
 class FileSystemRepository : public core::ContentRepository {
  public:
-  explicit FileSystemRepository(std::string name = 
getClassName<FileSystemRepository>())
-    : core::ContentRepository(std::move(name)),
+  explicit FileSystemRepository(std::string_view name = 
className<FileSystemRepository>())
+    : core::ContentRepository(name),
       logger_(logging::LoggerFactory<FileSystemRepository>::getLogger()) {
   }
 
diff --git a/libminifi/include/core/repository/VolatileContentRepository.h 
b/libminifi/include/core/repository/VolatileContentRepository.h
index 0690255f7..04db09c9a 100644
--- a/libminifi/include/core/repository/VolatileContentRepository.h
+++ b/libminifi/include/core/repository/VolatileContentRepository.h
@@ -20,6 +20,7 @@
 #include <map>
 #include <memory>
 #include <string>
+#include <string_view>
 
 #include "AtomicRepoEntries.h"
 #include "io/AtomicEntryStream.h"
@@ -40,7 +41,7 @@ class VolatileContentRepository : public 
core::ContentRepository {
  public:
   static const char *minimal_locking;
 
-  explicit VolatileContentRepository(std::string name = 
getClassName<VolatileContentRepository>())
+  explicit VolatileContentRepository(std::string_view name = 
className<VolatileContentRepository>())
     : core::ContentRepository(name),
       repo_data_(15000, static_cast<size_t>(10_MiB * 0.75)),
       minimize_locking_(true),
diff --git a/libminifi/include/core/repository/VolatileFlowFileRepository.h 
b/libminifi/include/core/repository/VolatileFlowFileRepository.h
index a3b0d9261..c4140af56 100644
--- a/libminifi/include/core/repository/VolatileFlowFileRepository.h
+++ b/libminifi/include/core/repository/VolatileFlowFileRepository.h
@@ -19,6 +19,7 @@
 
 #include <memory>
 #include <string>
+#include <string_view>
 
 #include "VolatileRepository.h"
 #include "FlowFileRecord.h"
@@ -37,12 +38,12 @@ class VolatileFlowFileRepository : public 
VolatileRepository {
   friend struct ::VolatileFlowFileRepositoryTestAccessor;
 
  public:
-  explicit VolatileFlowFileRepository(const std::string& repo_name = "",
+  explicit VolatileFlowFileRepository(std::string_view repo_name = "",
                                       const std::string& /*dir*/ = 
REPOSITORY_DIRECTORY,
                                       std::chrono::milliseconds 
maxPartitionMillis = MAX_REPOSITORY_ENTRY_LIFE_TIME,
                                       int64_t maxPartitionBytes = 
MAX_REPOSITORY_STORAGE_SIZE,
                                       std::chrono::milliseconds purgePeriod = 
REPOSITORY_PURGE_PERIOD)
-    : VolatileRepository(repo_name.length() > 0 ? repo_name : 
core::getClassName<VolatileRepository>(), "", maxPartitionMillis, 
maxPartitionBytes, purgePeriod) {
+    : VolatileRepository(repo_name.length() > 0 ? repo_name : 
core::className<VolatileRepository>(), "", maxPartitionMillis, 
maxPartitionBytes, purgePeriod) {
   }
 
   ~VolatileFlowFileRepository() override {
diff --git a/libminifi/include/core/repository/VolatileProvenanceRepository.h 
b/libminifi/include/core/repository/VolatileProvenanceRepository.h
index ccebf22c9..23bcbb031 100644
--- a/libminifi/include/core/repository/VolatileProvenanceRepository.h
+++ b/libminifi/include/core/repository/VolatileProvenanceRepository.h
@@ -18,6 +18,7 @@
 #pragma once
 
 #include <string>
+#include <string_view>
 
 #include "VolatileRepository.h"
 #include "core/ThreadedRepository.h"
@@ -26,12 +27,12 @@ namespace org::apache::nifi::minifi::core::repository {
 
 class VolatileProvenanceRepository : public VolatileRepository {
  public:
-  explicit VolatileProvenanceRepository(std::string repo_name = "",
+  explicit VolatileProvenanceRepository(std::string_view repo_name = "",
                                         std::string /*dir*/ = 
REPOSITORY_DIRECTORY,
                                         std::chrono::milliseconds 
maxPartitionMillis = MAX_REPOSITORY_ENTRY_LIFE_TIME,
                                         int64_t maxPartitionBytes = 
MAX_REPOSITORY_STORAGE_SIZE,
                                         std::chrono::milliseconds purgePeriod 
= REPOSITORY_PURGE_PERIOD)
-    : VolatileRepository(repo_name.length() > 0 ? repo_name : 
core::getClassName<VolatileRepository>(), "", maxPartitionMillis, 
maxPartitionBytes, purgePeriod) {
+    : VolatileRepository(repo_name.length() > 0 ? repo_name : 
core::className<VolatileRepository>(), "", maxPartitionMillis, 
maxPartitionBytes, purgePeriod) {
   }
 
   ~VolatileProvenanceRepository() override {
diff --git a/libminifi/include/core/repository/VolatileRepository.h 
b/libminifi/include/core/repository/VolatileRepository.h
index f22ace0ad..e742b3233 100644
--- a/libminifi/include/core/repository/VolatileRepository.h
+++ b/libminifi/include/core/repository/VolatileRepository.h
@@ -22,6 +22,7 @@
 #include <map>
 #include <memory>
 #include <string>
+#include <string_view>
 #include <utility>
 #include <vector>
 #include <cinttypes>
@@ -38,12 +39,12 @@ namespace org::apache::nifi::minifi::core::repository {
 
 class VolatileRepository : public core::ThreadedRepository {
  public:
-  explicit VolatileRepository(std::string repo_name = "",
+  explicit VolatileRepository(std::string_view repo_name = "",
                               std::string /*dir*/ = REPOSITORY_DIRECTORY,
                               std::chrono::milliseconds maxPartitionMillis = 
MAX_REPOSITORY_ENTRY_LIFE_TIME,
                               int64_t maxPartitionBytes = 
MAX_REPOSITORY_STORAGE_SIZE,
                               std::chrono::milliseconds purgePeriod = 
REPOSITORY_PURGE_PERIOD)
-    : core::ThreadedRepository(repo_name.length() > 0 ? repo_name : 
core::getClassName<VolatileRepository>(), "", maxPartitionMillis, 
maxPartitionBytes, purgePeriod),
+    : core::ThreadedRepository(repo_name.length() > 0 ? repo_name : 
core::className<VolatileRepository>(), "", maxPartitionMillis, 
maxPartitionBytes, purgePeriod),
       repo_data_(10000, static_cast<size_t>(maxPartitionBytes * 0.75)),
       current_index_(0),
       logger_(logging::LoggerFactory<VolatileRepository>::getLogger()) {
diff --git a/libminifi/include/provenance/Provenance.h 
b/libminifi/include/provenance/Provenance.h
index 275701fcb..2822d57df 100644
--- a/libminifi/include/provenance/Provenance.h
+++ b/libminifi/include/provenance/Provenance.h
@@ -152,7 +152,7 @@ class ProvenanceEventRecord : public 
core::SerializableComponent {
   ProvenanceEventRecord(ProvenanceEventType event, std::string componentId, 
std::string componentType);
 
   ProvenanceEventRecord()
-      : 
core::SerializableComponent(core::getClassName<ProvenanceEventRecord>()) {
+      : core::SerializableComponent(core::className<ProvenanceEventRecord>()) {
     _eventTime = std::chrono::system_clock::now();
   }
 
diff --git a/libminifi/include/utils/ClassUtils.h 
b/libminifi/include/utils/ClassUtils.h
index c24d87757..372665166 100644
--- a/libminifi/include/utils/ClassUtils.h
+++ b/libminifi/include/utils/ClassUtils.h
@@ -17,6 +17,7 @@
 #pragma once
 
 #include <string>
+#include <string_view>
 
 namespace org::apache::nifi::minifi::utils::ClassUtils {
 
@@ -26,6 +27,6 @@ namespace org::apache::nifi::minifi::utils::ClassUtils {
  * @param out output class name that is shortened.
  * @return true if out has been updated, false otherwise
  */
-bool shortenClassName(const std::string &class_name, std::string &out);
+bool shortenClassName(std::string_view class_name, std::string &out);
 
 }  // namespace org::apache::nifi::minifi::utils::ClassUtils
diff --git a/libminifi/include/utils/StringUtils.h 
b/libminifi/include/utils/StringUtils.h
index 5078519bf..7319369e5 100644
--- a/libminifi/include/utils/StringUtils.h
+++ b/libminifi/include/utils/StringUtils.h
@@ -172,10 +172,10 @@ class StringUtils {
     return std::equal(left.begin(), left.end(), right.begin(), [](unsigned 
char lc, unsigned char rc) { return std::tolower(lc) == std::tolower(rc); });
   }
 
-  static std::vector<std::string> split(const std::string &str, const 
std::string &delimiter);
-  static std::vector<std::string> splitRemovingEmpty(const std::string& str, 
const std::string& delimiter);
-  static std::vector<std::string> splitAndTrim(const std::string &str, const 
std::string &delimiter);
-  static std::vector<std::string> splitAndTrimRemovingEmpty(const std::string& 
str, const std::string& delimiter);
+  static std::vector<std::string> split(std::string_view str, std::string_view 
delimiter);
+  static std::vector<std::string> splitRemovingEmpty(std::string_view str, 
std::string_view delimiter);
+  static std::vector<std::string> splitAndTrim(std::string_view str, 
std::string_view delimiter);
+  static std::vector<std::string> splitAndTrimRemovingEmpty(std::string_view 
str, std::string_view delimiter);
 
   /**
    * Converts a string to a float
diff --git a/libminifi/src/FlowController.cpp b/libminifi/src/FlowController.cpp
index 082ac92dd..d8f19a6c0 100644
--- a/libminifi/src/FlowController.cpp
+++ b/libminifi/src/FlowController.cpp
@@ -51,7 +51,7 @@ 
FlowController::FlowController(std::shared_ptr<core::Repository> provenance_repo
                                std::shared_ptr<Configure> configure, 
std::shared_ptr<core::FlowConfiguration> flow_configuration,
                                std::shared_ptr<core::ContentRepository> 
content_repo, std::unique_ptr<state::MetricsPublisherStore> 
metrics_publisher_store,
                                std::shared_ptr<utils::file::FileSystem> 
filesystem, std::function<void()> request_restart)
-    : 
core::controller::ForwardingControllerServiceProvider(core::getClassName<FlowController>()),
+    : 
core::controller::ForwardingControllerServiceProvider(core::className<FlowController>()),
       running_(false),
       initialized_(false),
       thread_pool_(5, false, nullptr, "Flowcontroller threadpool"),
diff --git a/libminifi/src/core/Connectable.cpp 
b/libminifi/src/core/Connectable.cpp
index ad02e3c75..b58c53652 100644
--- a/libminifi/src/core/Connectable.cpp
+++ b/libminifi/src/core/Connectable.cpp
@@ -26,15 +26,15 @@
 
 namespace org::apache::nifi::minifi::core {
 
-Connectable::Connectable(std::string name, const utils::Identifier &uuid)
-    : CoreComponent(std::move(name), uuid),
+Connectable::Connectable(std::string_view name, const utils::Identifier &uuid)
+    : CoreComponent(name, uuid),
       max_concurrent_tasks_(1),
       connectable_version_(nullptr),
       logger_(logging::LoggerFactory<Connectable>::getLogger(uuid_)) {
 }
 
-Connectable::Connectable(std::string name)
-    : CoreComponent(std::move(name)),
+Connectable::Connectable(std::string_view name)
+    : CoreComponent(name),
       max_concurrent_tasks_(1),
       connectable_version_(nullptr),
       logger_(logging::LoggerFactory<Connectable>::getLogger(uuid_)) {
diff --git a/libminifi/src/core/Core.cpp b/libminifi/src/core/Core.cpp
index b3e2722c0..26752cc78 100644
--- a/libminifi/src/core/Core.cpp
+++ b/libminifi/src/core/Core.cpp
@@ -22,8 +22,8 @@
 
 namespace org::apache::nifi::minifi::core {
 
-CoreComponent::CoreComponent(std::string name, const utils::Identifier& uuid, 
const std::shared_ptr<utils::IdGenerator>& idGenerator)
-    : name_(std::move(name)) {
+CoreComponent::CoreComponent(std::string_view name, const utils::Identifier& 
uuid, const std::shared_ptr<utils::IdGenerator>& idGenerator)
+    : name_(name) {
   if (uuid.isNil()) {
     // Generate the global UUID for the flow record
     uuid_ = idGenerator->generate();
diff --git a/libminifi/src/core/FlowConfiguration.cpp 
b/libminifi/src/core/FlowConfiguration.cpp
index b53d3fe90..52172e10b 100644
--- a/libminifi/src/core/FlowConfiguration.cpp
+++ b/libminifi/src/core/FlowConfiguration.cpp
@@ -29,7 +29,7 @@
 namespace org::apache::nifi::minifi::core {
 
 FlowConfiguration::FlowConfiguration(ConfigurationContext ctx)
-    : CoreComponent(core::getClassName<FlowConfiguration>()),
+    : CoreComponent(core::className<FlowConfiguration>()),
       flow_file_repo_(std::move(ctx.flow_file_repo)),
       content_repo_(std::move(ctx.content_repo)),
       stream_factory_(std::move(ctx.stream_factory)),
diff --git a/libminifi/src/core/logging/LoggerConfiguration.cpp 
b/libminifi/src/core/logging/LoggerConfiguration.cpp
index 78199b214..e7dcd70b1 100644
--- a/libminifi/src/core/logging/LoggerConfiguration.cpp
+++ b/libminifi/src/core/logging/LoggerConfiguration.cpp
@@ -94,10 +94,10 @@ LoggerConfiguration::LoggerConfiguration()
       
formatter_(std::make_shared<spdlog::pattern_formatter>(spdlog_default_pattern)) 
{
   controller_ = std::make_shared<LoggerControl>();
   logger_ = std::make_shared<LoggerImpl>(
-      core::getClassName<LoggerConfiguration>(),
+      core::className<LoggerConfiguration>(),
       std::nullopt,
       controller_,
-      get_logger(nullptr, root_namespace_, 
core::getClassName<LoggerConfiguration>(), formatter_));
+      get_logger(nullptr, root_namespace_, 
core::className<LoggerConfiguration>(), formatter_));
   loggers.push_back(logger_);
 }
 
@@ -148,13 +148,13 @@ void LoggerConfiguration::initialize(const 
std::shared_ptr<LoggerProperties> &lo
   logger_->log_debug("Set following pattern on loggers: %s", spdlog_pattern);
 }
 
-std::shared_ptr<Logger> LoggerConfiguration::getLogger(const std::string& 
name, const std::optional<utils::Identifier>& id) {
+std::shared_ptr<Logger> LoggerConfiguration::getLogger(std::string_view name, 
const std::optional<utils::Identifier>& id) {
   std::lock_guard<std::mutex> lock(mutex);
   return getLogger(name, id, lock);
 }
 
-std::shared_ptr<Logger> LoggerConfiguration::getLogger(const std::string& 
name, const std::optional<utils::Identifier>& id, const 
std::lock_guard<std::mutex>& /*lock*/) {
-  std::string adjusted_name = name;
+std::shared_ptr<Logger> LoggerConfiguration::getLogger(std::string_view name, 
const std::optional<utils::Identifier>& id, const std::lock_guard<std::mutex>& 
/*lock*/) {
+  std::string adjusted_name{name};
   const std::string clazz = "class ";
   auto haz_clazz = name.find(clazz);
   if (haz_clazz == 0)
@@ -252,8 +252,9 @@ std::shared_ptr<internal::LoggerNamespace> 
LoggerConfiguration::initialize_names
   return root_namespace;
 }
 
-std::shared_ptr<spdlog::logger> LoggerConfiguration::get_logger(const 
std::shared_ptr<Logger>& logger, const 
std::shared_ptr<internal::LoggerNamespace> &root_namespace, const std::string 
&name,
+std::shared_ptr<spdlog::logger> LoggerConfiguration::get_logger(const 
std::shared_ptr<Logger>& logger, const 
std::shared_ptr<internal::LoggerNamespace> &root_namespace, std::string_view 
name_view,
                                                                 const 
std::shared_ptr<spdlog::formatter>& formatter, bool remove_if_present) {
+  std::string name{name_view};
   std::shared_ptr<spdlog::logger> spdlogger = spdlog::get(name);
   if (spdlogger) {
     if (remove_if_present) {
diff --git a/libminifi/src/core/logging/LoggerFactory.cpp 
b/libminifi/src/core/logging/LoggerFactory.cpp
index 99c0aaf26..12ee1e96d 100644
--- a/libminifi/src/core/logging/LoggerFactory.cpp
+++ b/libminifi/src/core/logging/LoggerFactory.cpp
@@ -21,7 +21,7 @@
 
 namespace org::apache::nifi::minifi::core::logging {
 
-std::shared_ptr<Logger> LoggerFactoryBase::getAliasedLogger(const std::string& 
name, const std::optional<utils::Identifier>& id) {
+std::shared_ptr<Logger> LoggerFactoryBase::getAliasedLogger(std::string_view 
name, const std::optional<utils::Identifier>& id) {
   return LoggerConfiguration::getConfiguration().getLogger(name, id);
 }
 
diff --git a/libminifi/src/core/logging/internal/CompressionManager.cpp 
b/libminifi/src/core/logging/internal/CompressionManager.cpp
index 8733f8dff..3a85100fb 100644
--- a/libminifi/src/core/logging/internal/CompressionManager.cpp
+++ b/libminifi/src/core/logging/internal/CompressionManager.cpp
@@ -27,13 +27,7 @@
 #include "core/TypedValues.h"
 #include "core/Core.h"
 
-namespace org {
-namespace apache {
-namespace nifi {
-namespace minifi {
-namespace core {
-namespace logging {
-namespace internal {
+namespace org::apache::nifi::minifi::core::logging::internal {
 
 std::shared_ptr<LogCompressorSink> CompressionManager::initialize(
     const std::shared_ptr<LoggerProperties>& properties, const 
std::shared_ptr<Logger>& error_logger, const LoggerFactory& logger_factory) {
@@ -61,15 +55,9 @@ std::shared_ptr<LogCompressorSink> 
CompressionManager::initialize(
     sink_ = std::make_shared<internal::LogCompressorSink>(
         LogQueueSize{cached_log_max_size, cache_segment_size},
         LogQueueSize{compressed_log_max_size, compressed_segment_size},
-        logger_factory(getClassName<LogCompressorSink>()));
+        logger_factory(std::string(className<LogCompressorSink>())));
   }
   return sink_;
 }
 
-}  // namespace internal
-}  // namespace logging
-}  // namespace core
-}  // namespace minifi
-}  // namespace nifi
-}  // namespace apache
-}  // namespace org
+}  // namespace org::apache::nifi::minifi::core::logging::internal
diff --git a/libminifi/src/provenance/Provenance.cpp 
b/libminifi/src/provenance/Provenance.cpp
index c3b9cfefc..d72818677 100644
--- a/libminifi/src/provenance/Provenance.cpp
+++ b/libminifi/src/provenance/Provenance.cpp
@@ -41,7 +41,7 @@ const char 
*ProvenanceEventRecord::ProvenanceEventTypeStr[REPLAY + 1] = { "CREAT
     "ATTRIBUTES_MODIFIED", "ROUTE", "ADDINFO", "REPLAY" };
 
 
ProvenanceEventRecord::ProvenanceEventRecord(ProvenanceEventRecord::ProvenanceEventType
 event, std::string componentId, std::string componentType)
-    : core::SerializableComponent(core::getClassName<ProvenanceEventRecord>()),
+    : core::SerializableComponent(core::className<ProvenanceEventRecord>()),
       _eventType(event),
       _componentId(std::move(componentId)),
       _componentType(std::move(componentType)),
diff --git a/libminifi/src/utils/ClassUtils.cpp 
b/libminifi/src/utils/ClassUtils.cpp
index ecd557054..ad58c31d0 100644
--- a/libminifi/src/utils/ClassUtils.cpp
+++ b/libminifi/src/utils/ClassUtils.cpp
@@ -25,7 +25,7 @@
 
 namespace org::apache::nifi::minifi::utils {
 
-bool ClassUtils::shortenClassName(const std::string &class_name, std::string 
&out) {
+bool ClassUtils::shortenClassName(std::string_view class_name, std::string 
&out) {
   std::string class_delim = "::";
   auto class_split = utils::StringUtils::split(class_name, class_delim);
   // support . and ::
diff --git a/libminifi/src/utils/StringUtils.cpp 
b/libminifi/src/utils/StringUtils.cpp
index 9daf145de..4c4f736e8 100644
--- a/libminifi/src/utils/StringUtils.cpp
+++ b/libminifi/src/utils/StringUtils.cpp
@@ -64,7 +64,8 @@ std::string_view StringUtils::trim(const char* str) {
 }
 
 template<typename Fun>
-std::vector<std::string> split_transformed(std::string str, const std::string& 
delimiter, Fun transformation) {
+std::vector<std::string> split_transformed(std::string_view str_view, 
std::string_view delimiter, Fun transformation) {
+  std::string str{str_view};
   std::vector<std::string> result;
   if (delimiter.empty()) {
     for (auto c : str) {
@@ -87,21 +88,21 @@ std::vector<std::string> split_transformed(std::string str, 
const std::string& d
   return result;
 }
 
-std::vector<std::string> StringUtils::split(const std::string& str, const 
std::string& delimiter) {
+std::vector<std::string> StringUtils::split(std::string_view str, 
std::string_view delimiter) {
   return split_transformed(str, delimiter, identity{});
 }
 
-std::vector<std::string> StringUtils::splitRemovingEmpty(const std::string& 
str, const std::string& delimiter) {
+std::vector<std::string> StringUtils::splitRemovingEmpty(std::string_view str, 
std::string_view delimiter) {
   auto result = split(str, delimiter);
   result.erase(std::remove_if(result.begin(), result.end(), [](const 
std::string& str) { return str.empty(); }), result.end());
   return result;
 }
 
-std::vector<std::string> StringUtils::splitAndTrim(const std::string& str, 
const std::string& delimiter) {
+std::vector<std::string> StringUtils::splitAndTrim(std::string_view str, 
std::string_view delimiter) {
   return split_transformed(str, delimiter, static_cast<std::string(*)(const 
std::string&)>(trim));
 }
 
-std::vector<std::string> StringUtils::splitAndTrimRemovingEmpty(const 
std::string& str, const std::string& delimiter) {
+std::vector<std::string> 
StringUtils::splitAndTrimRemovingEmpty(std::string_view str, std::string_view 
delimiter) {
   auto result = splitAndTrim(str, delimiter);
   result.erase(std::remove_if(result.begin(), result.end(), [](const 
std::string& str) { return str.empty(); }), result.end());
   return result;
diff --git a/libminifi/test/TestBase.cpp b/libminifi/test/TestBase.cpp
index c264cfa26..1a08f71b4 100644
--- a/libminifi/test/TestBase.cpp
+++ b/libminifi/test/TestBase.cpp
@@ -58,10 +58,10 @@ std::shared_ptr<LogTestController> 
LogTestController::getInstance(const std::sha
   }
 }
 
-void LogTestController::setLevel(const std::string& name, 
spdlog::level::level_enum level) {
+void LogTestController::setLevel(std::string_view name, 
spdlog::level::level_enum level) {
   const auto levelView(spdlog::level::to_string_view(level));
-  logger_->log_info("Setting log level for %s to %s", name, 
std::string(levelView.begin(), levelView.end()));
-  std::string adjusted_name = name;
+  logger_->log_info("Setting log level for %s to %s", std::string(name), 
std::string(levelView.begin(), levelView.end()));
+  std::string adjusted_name{name};
   const std::string clazz = "class ";
   auto haz_clazz = name.find(clazz);
   if (haz_clazz == 0)
@@ -72,22 +72,22 @@ void LogTestController::setLevel(const std::string& name, 
spdlog::level::level_e
   
logging::LoggerConfiguration::getSpdlogLogger(adjusted_name)->set_level(level);
 }
 
-std::shared_ptr<logging::Logger> LogTestController::getLoggerByClassName(const 
std::string& class_name, const std::optional<utils::Identifier>& id) {
+std::shared_ptr<logging::Logger> 
LogTestController::getLoggerByClassName(std::string_view class_name, const 
std::optional<utils::Identifier>& id) {
   return config ? config->getLogger(class_name, id) : 
logging::LoggerConfiguration::getConfiguration().getLogger(class_name, id);
 }
 
-void LogTestController::setLevelByClassName(spdlog::level::level_enum level, 
const std::string& class_name) {
+void LogTestController::setLevelByClassName(spdlog::level::level_enum level, 
std::string_view class_name) {
   if (config)
     config->getLogger(class_name);
   else
     logging::LoggerConfiguration::getConfiguration().getLogger(class_name);
-  modified_loggers.push_back(class_name);
+  modified_loggers.emplace_back(class_name);
   setLevel(class_name, level);
   // also support shortened classnames
   if (config && config->shortenClassNames()) {
-    std::string adjusted = class_name;
+    std::string adjusted{class_name};
     if (minifi::utils::ClassUtils::shortenClassName(class_name, adjusted)) {
-      modified_loggers.push_back(class_name);
+      modified_loggers.emplace_back(class_name);
       setLevel(class_name, level);
     }
   }
@@ -179,21 +179,21 @@ LogTestController::LogTestController(const 
std::shared_ptr<logging::LoggerProper
     initMain = true;
   }
   my_properties_->set("logger.root", "ERROR,ostream");
-  my_properties_->set("logger." + 
minifi::core::getClassName<LogTestController>(), "INFO");
-  my_properties_->set("logger." + 
minifi::core::getClassName<logging::LoggerConfiguration>(), "INFO");
+  my_properties_->set("logger." + 
std::string(minifi::core::className<LogTestController>()), "INFO");
+  my_properties_->set("logger." + 
std::string(minifi::core::className<logging::LoggerConfiguration>()), "INFO");
   std::shared_ptr<spdlog::sinks::dist_sink_mt> dist_sink = 
std::make_shared<spdlog::sinks::dist_sink_mt>();
   dist_sink->add_sink(std::make_shared<StringStreamSink>(log_output_ptr_, 
log_output_mutex_, true));
   dist_sink->add_sink(std::make_shared<spdlog::sinks::stderr_sink_mt>());
   my_properties_->add_sink("ostream", dist_sink);
   if (initMain) {
     
logging::LoggerConfiguration::getConfiguration().initialize(my_properties_);
-    logger_ = 
logging::LoggerConfiguration::getConfiguration().getLogger(minifi::core::getClassName<LogTestController>());
+    logger_ = 
logging::LoggerConfiguration::getConfiguration().getLogger(minifi::core::className<LogTestController>());
   } else {
     config = logging::LoggerConfiguration::newInstance();
     // create for test purposes. most tests use the main logging factory, but 
this exists to test the logging
     // framework itself.
     config->initialize(my_properties_);
-    logger_ = 
config->getLogger(minifi::core::getClassName<LogTestController>());
+    logger_ = config->getLogger(minifi::core::className<LogTestController>());
   }
 }
 
diff --git a/libminifi/test/TestBase.h b/libminifi/test/TestBase.h
index 33acac229..da3a3ec9a 100644
--- a/libminifi/test/TestBase.h
+++ b/libminifi/test/TestBase.h
@@ -24,6 +24,7 @@
 #include <regex>
 #include <set>
 #include <string>
+#include <string_view>
 #include <utility>
 #include <vector>
 #include <mutex>
@@ -119,16 +120,16 @@ class LogTestController {
    * of changeable test formats
    */
   template<typename T>
-  std::shared_ptr<logging::Logger> getLogger(const 
std::optional<utils::Identifier>& id = {}) { return 
getLoggerByClassName(minifi::core::getClassName<T>(), id); }
+  std::shared_ptr<logging::Logger> getLogger(const 
std::optional<utils::Identifier>& id = {}) { return 
getLoggerByClassName(minifi::core::className<T>(), id); }
 
-  std::shared_ptr<logging::Logger> getLoggerByClassName(const std::string& 
class_name, const std::optional<utils::Identifier>& id = {});
+  std::shared_ptr<logging::Logger> getLoggerByClassName(std::string_view 
class_name, const std::optional<utils::Identifier>& id = {});
 
   template<typename T>
   void setLevel(spdlog::level::level_enum level) {
-    setLevelByClassName(level, minifi::core::getClassName<T>());
+    setLevelByClassName(level, minifi::core::className<T>());
   }
 
-  void setLevelByClassName(spdlog::level::level_enum level, const std::string& 
class_name);
+  void setLevelByClassName(spdlog::level::level_enum level, std::string_view 
class_name);
 
   bool contains(const std::string &ending, std::chrono::milliseconds timeout = 
std::chrono::seconds(3), std::chrono::milliseconds sleep_interval = 
std::chrono::milliseconds(200)) const;
 
@@ -163,7 +164,7 @@ class LogTestController {
 
   explicit LogTestController(const std::shared_ptr<logging::LoggerProperties> 
&loggerProps);
 
-  void setLevel(const std::string& name, spdlog::level::level_enum level);
+  void setLevel(std::string_view name, spdlog::level::level_enum level);
   bool contains(const std::function<std::string()>& log_string_getter, const 
std::string& ending, std::chrono::milliseconds timeout, 
std::chrono::milliseconds sleep_interval) const;
 
   mutable std::shared_ptr<std::mutex> log_output_mutex_ = 
std::make_shared<std::mutex>();
diff --git a/libminifi/test/sql-tests/mocks/MockConnectors.cpp 
b/libminifi/test/sql-tests/mocks/MockConnectors.cpp
index 25d5a23f7..5845c80c7 100644
--- a/libminifi/test/sql-tests/mocks/MockConnectors.cpp
+++ b/libminifi/test/sql-tests/mocks/MockConnectors.cpp
@@ -187,7 +187,7 @@ void MockDB::createTable(const std::string& query) {
   std::regex expr(R"(create table (\w+)\s*\((.*)\);)", 
std::regex_constants::icase);
   std::regex_search(query, match, expr);
   std::string table_name = match[1];
-  auto columns_with_type = 
minifi::utils::StringUtils::splitAndTrimRemovingEmpty(match[2], ",");
+  auto columns_with_type = 
minifi::utils::StringUtils::splitAndTrimRemovingEmpty(match[2].str(), ",");
   std::vector<std::string> col_names;
   std::vector<DataType> col_types;
   for (const auto& col_with_type : columns_with_type) {
@@ -215,11 +215,11 @@ void MockDB::insertInto(const std::string& query, const 
std::vector<std::string>
   if (!tables_.contains(table_name)) {
     throw sql::StatementError("No such table: '" + table_name + "'");
   }
-  std::vector<std::string> values = 
minifi::utils::StringUtils::splitAndTrimRemovingEmpty(match[4], ",");
+  std::vector<std::string> values = 
minifi::utils::StringUtils::splitAndTrimRemovingEmpty(match[4].str(), ",");
   for (auto& value : values) {
     value = minifi::utils::StringUtils::removeFramingCharacters(value, '\'');
   }
-  auto insert_col_names = 
minifi::utils::StringUtils::splitAndTrimRemovingEmpty(match[3], ",");
+  auto insert_col_names = 
minifi::utils::StringUtils::splitAndTrimRemovingEmpty(match[3].str(), ",");
   if (!insert_col_names.empty()) {
     auto col_names = tables_.at(table_name).getColumnNames();
     std::vector<std::string> row;
@@ -251,7 +251,7 @@ std::unique_ptr<Rowset> MockDB::select(const std::string& 
query, const std::vect
   std::smatch match;
   std::regex expr(R"(select\s+(.+)\s+from\s+(\w+)\s*(where ((.+(?= order 
by))|.+$))*\s*(order by (.+))*)", std::regex_constants::icase);
   std::regex_search(replaced_query, match, expr);
-  auto cols = minifi::utils::StringUtils::splitAndTrimRemovingEmpty(match[1], 
",");
+  auto cols = 
minifi::utils::StringUtils::splitAndTrimRemovingEmpty(match[1].str(), ",");
   if (cols[0] == "*") {
     cols = {};
   }
diff --git a/libminifi/test/unit/CoreTests.cpp 
b/libminifi/test/unit/CoreTests.cpp
index 43a825179..32764521f 100644
--- a/libminifi/test/unit/CoreTests.cpp
+++ b/libminifi/test/unit/CoreTests.cpp
@@ -25,13 +25,6 @@ class DummyClass {};
 template<typename T> struct DummyStructTemplate {};
 template<typename T> class DummyClassTemplate {};
 
-TEST_CASE("getClassName() works correctly") {
-  CHECK(core::getClassName<DummyStruct>() == 
"org::apache::nifi::minifi::test::DummyStruct");
-  CHECK(core::getClassName<DummyClass>() == 
"org::apache::nifi::minifi::test::DummyClass");
-  CHECK(core::getClassName<DummyStructTemplate<int>>() == 
"org::apache::nifi::minifi::test::DummyStructTemplate<int>");
-  CHECK(core::getClassName<DummyClassTemplate<int>>() == 
"org::apache::nifi::minifi::test::DummyClassTemplate<int>");
-}
-
 TEST_CASE("className() works correctly and is constexpr") {
   static constexpr auto struct_name = core::className<DummyStruct>();
   static_assert(struct_name == "org::apache::nifi::minifi::test::DummyStruct");
diff --git a/libminifi/test/unit/StringUtilsTests.cpp 
b/libminifi/test/unit/StringUtilsTests.cpp
index 6e1f3012e..f18719ec0 100644
--- a/libminifi/test/unit/StringUtilsTests.cpp
+++ b/libminifi/test/unit/StringUtilsTests.cpp
@@ -58,7 +58,7 @@ TEST_CASE("TestStringUtils::split3", "[test split multiple 
delimiter]") {
 
 TEST_CASE("TestStringUtils::split4", "[test split classname]") {
   std::vector<std::string> expected = { "org", "apache", "nifi", "minifi", 
"utils", "StringUtils" };
-  REQUIRE(expected == 
StringUtils::split(org::apache::nifi::minifi::core::getClassName<org::apache::nifi::minifi::utils::StringUtils>(),
 "::"));
+  REQUIRE(expected == 
StringUtils::split(org::apache::nifi::minifi::core::className<org::apache::nifi::minifi::utils::StringUtils>(),
 "::"));
 }
 
 TEST_CASE("TestStringUtils::split5", "[test split with delimiter set to empty 
string]") {

Reply via email to