You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by al...@apache.org on 2018/10/19 14:44:27 UTC

nifi-minifi-cpp git commit: MINIFICPP-647: Begin process of deprecating functions and remove those which were added recently that aren't needed

Repository: nifi-minifi-cpp
Updated Branches:
  refs/heads/master 90dfc06aa -> 8e258f545


MINIFICPP-647: Begin process of deprecating functions and remove those which were added recently that aren't needed

This closes #420.

Signed-off-by: Aldrin Piri <al...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/commit/8e258f54
Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/tree/8e258f54
Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/diff/8e258f54

Branch: refs/heads/master
Commit: 8e258f545765e978db1e12f5a2d4926f190703b7
Parents: 90dfc06
Author: Marc Parisi <ph...@apache.org>
Authored: Wed Oct 17 19:50:01 2018 -0400
Committer: Aldrin Piri <al...@apache.org>
Committed: Fri Oct 19 10:42:15 2018 -0400

----------------------------------------------------------------------
 libminifi/include/capi/api.h      | 10 ++++-----
 libminifi/src/capi/api.cpp        | 37 +++++++++++++---------------------
 libminifi/test/capi/CAPITests.cpp | 32 +++++++++++++++--------------
 python/minifi/__init__.py         | 12 +++--------
 4 files changed, 38 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e258f54/libminifi/include/capi/api.h
----------------------------------------------------------------------
diff --git a/libminifi/include/capi/api.h b/libminifi/include/capi/api.h
index dff29ed..94b05fa 100644
--- a/libminifi/include/capi/api.h
+++ b/libminifi/include/capi/api.h
@@ -30,7 +30,10 @@ int initialize_api();
 extern "C" {
 #endif
 
-#define API_VERSION "0.01"
+/**
+ * Updates with every release
+ */
+#define API_VERSION "0.02"
 
 void enable_logging();
 
@@ -39,11 +42,6 @@ void enable_logging();
  *  BASE NIFI OPERATIONS
  * ##################################################################
  */
-nifi_port *create_port(const char *port);
-
-int free_port(nifi_port *port);
-
-
 
 nifi_instance *create_instance(const char *url, nifi_port *port);
 

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e258f54/libminifi/src/capi/api.cpp
----------------------------------------------------------------------
diff --git a/libminifi/src/capi/api.cpp b/libminifi/src/capi/api.cpp
index 592fb6b..6bec57c 100644
--- a/libminifi/src/capi/api.cpp
+++ b/libminifi/src/capi/api.cpp
@@ -57,38 +57,28 @@ class DirectoryConfiguration {
   }
 };
 
-nifi_port *create_port(const char *port) {
-  if (nullptr == port)
-    return nullptr;
-  nifi_port *p = new nifi_port();
-  p->port_id = new char[strlen(port) + 1];
-  memset(p->port_id, 0x00, strlen(port) + 1);
-  strncpy(p->port_id, port, strlen(port));
-  return p;
-}
-
-int free_port(nifi_port *port) {
-  if (port == nullptr)
-    return -1;
-  delete[] port->port_id;
-  delete port;
-  return 0;
-}
-
 /**
  * Creates a NiFi Instance from the url and output port.
  * @param url http URL for NiFi instance
  * @param port Remote output port.
+ * @Deprecated for API version 0.2 in favor of the following prototype
+ * nifi_instance *create_instance(nifi_port const *port) {
  */
 nifi_instance *create_instance(const char *url, nifi_port *port) {
   // make sure that we have a thread safe way of initializing the content directory
   DirectoryConfiguration::initialize();
 
-  nifi_instance *instance = new nifi_instance;
-
+  // need reinterpret cast until we move to C for this module.
+  nifi_instance *instance = reinterpret_cast<nifi_instance*>( malloc(sizeof(nifi_instance)) );
+  /**
+   * This API will gradually move away from C++, hence malloc is used for nifi_instance
+   * Since minifi::Instance is currently being used, then we need to use new in that case.
+   */
   instance->instance_ptr = new minifi::Instance(url, port->port_id);
-  instance->port.port_id = port->port_id;
-
+  // may have to translate port ID here in the future
+  // need reinterpret cast until we move to C for this module.
+  instance->port.port_id = reinterpret_cast<char*>(malloc(strlen(port->port_id) + 1));
+  snprintf(instance->port.port_id, strlen(port->port_id) + 1, "%s", port->port_id);
   return instance;
 }
 
@@ -135,7 +125,8 @@ int set_instance_property(nifi_instance *instance, const char *key, const char *
 void free_instance(nifi_instance* instance) {
   if (instance != nullptr) {
     delete ((minifi::Instance*) instance->instance_ptr);
-    delete instance;
+    free(instance->port.port_id);
+    free(instance);
   }
 }
 

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e258f54/libminifi/test/capi/CAPITests.cpp
----------------------------------------------------------------------
diff --git a/libminifi/test/capi/CAPITests.cpp b/libminifi/test/capi/CAPITests.cpp
index d07b75b..1739e1b 100644
--- a/libminifi/test/capi/CAPITests.cpp
+++ b/libminifi/test/capi/CAPITests.cpp
@@ -24,7 +24,6 @@
 #include <set>
 #include <fstream>
 
-
 #include "utils/file/FileUtils.h"
 #include "../TestBase.h"
 
@@ -33,8 +32,14 @@
 #include <chrono>
 #include <thread>
 
+static nifi_instance *create_instance_obj(const char *name = "random_instance") {
+  nifi_port port;
+  port.port_id = "12345";
+  return create_instance("random_instance", &port);
+}
+
 TEST_CASE("Test Creation of instance, one processor", "[createInstanceAndFlow]") {
-  nifi_instance *instance = create_instance("random_instance", create_port("12345"));
+  auto instance = create_instance_obj();
   REQUIRE(instance != nullptr);
   flow *test_flow = create_flow(instance, nullptr);
   REQUIRE(test_flow != nullptr);
@@ -45,7 +50,7 @@ TEST_CASE("Test Creation of instance, one processor", "[createInstanceAndFlow]")
 }
 
 TEST_CASE("Invalid processor returns null", "[addInvalidProcessor]") {
-  nifi_instance *instance = create_instance("random_instance", create_port("12345"));
+  auto instance = create_instance_obj();
   REQUIRE(instance != nullptr);
   flow *test_flow = create_flow(instance, nullptr);
   processor *test_proc = add_processor(test_flow, "NeverExisted");
@@ -57,7 +62,7 @@ TEST_CASE("Invalid processor returns null", "[addInvalidProcessor]") {
 }
 
 TEST_CASE("Set valid and invalid properties", "[setProcesssorProperties]") {
-  nifi_instance *instance = create_instance("random_instance", create_port("12345"));
+  auto instance = create_instance_obj();
   REQUIRE(instance != nullptr);
   flow *test_flow = create_flow(instance, nullptr);
   REQUIRE(test_flow != nullptr);
@@ -82,8 +87,7 @@ TEST_CASE("get file and put file", "[getAndPutFile]") {
   const char *sourcedir = testController.createTempDirectory(src_format);
   const char *putfiledir = testController.createTempDirectory(put_format);
   std::string test_file_content = "C API raNdOMcaSe test d4t4 th1s is!";
-
-  nifi_instance *instance = create_instance("random_instance", create_port("12345"));
+  auto instance = create_instance_obj();
   REQUIRE(instance != nullptr);
   flow *test_flow = create_flow(instance, nullptr);
   REQUIRE(test_flow != nullptr);
@@ -135,8 +139,7 @@ TEST_CASE("Test manipulation of attributes", "[testAttributes]") {
   file.open(ss.str(), std::ios::out);
   file << test_file_content;
   file.close();
-
-  nifi_instance *instance = create_instance("random_instance", create_port("12345"));
+  auto instance = create_instance_obj();
   REQUIRE(instance != nullptr);
   flow *test_flow = create_flow(instance, nullptr);
   REQUIRE(test_flow != nullptr);
@@ -144,14 +147,13 @@ TEST_CASE("Test manipulation of attributes", "[testAttributes]") {
   processor *get_proc = add_processor(test_flow, "GetFile");
   REQUIRE(get_proc != nullptr);
   REQUIRE(set_property(get_proc, "Input Directory", sourcedir) == 0);
-  processor *extract_test  = add_processor_with_linkage(test_flow, "ExtractText");
+  processor *extract_test = add_processor_with_linkage(test_flow, "ExtractText");
   REQUIRE(extract_test != nullptr);
   REQUIRE(set_property(extract_test, "Attribute", "TestAttr") == 0);
-  // TODO(aboda): enable this after decision made in MINIFICPP-640
   /*processor *update_attribute = add_processor_with_linkage(test_flow, "UpdateAttribute");
-  REQUIRE(update_attribute != nullptr);
+   REQUIRE(update_attribute != nullptr);
 
-  REQUIRE(set_property(update_attribute, "TestAttribute", "TestValue") == 0);*/
+   REQUIRE(set_property(update_attribute, "TestAttribute", "TestValue") == 0);*/
 
   flow_file_record *record = get_next_flow_file(instance, test_flow);
 
@@ -171,17 +173,17 @@ TEST_CASE("Test manipulation of attributes", "[testAttributes]") {
   const char * new_testattr_value = "S0me t3st t3xt";
 
   // Attribute already exist, should fail
-  REQUIRE(add_attribute(record, test_attr.key, (void*)new_testattr_value, strlen(new_testattr_value)) != 0); // NOLINT
+  REQUIRE(add_attribute(record, test_attr.key, (void* )new_testattr_value, strlen(new_testattr_value)) != 0);  // NOLINT
 
   // Update overwrites values
-  update_attribute(record, test_attr.key, (void*)new_testattr_value, strlen(new_testattr_value)); // NOLINT
+  update_attribute(record, test_attr.key, (void*) new_testattr_value, strlen(new_testattr_value));  // NOLINT
 
   int attr_size = get_attribute_qty(record);
   REQUIRE(attr_size > 0);
 
   attribute_set attr_set;
   attr_set.size = attr_size;
-  attr_set.attributes = (attribute*)malloc(attr_set.size * sizeof(attribute)); // NOLINT
+  attr_set.attributes = (attribute*) malloc(attr_set.size * sizeof(attribute));  // NOLINT
 
   REQUIRE(get_all_attributes(record, &attr_set) == attr_set.size);
 

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e258f54/python/minifi/__init__.py
----------------------------------------------------------------------
diff --git a/python/minifi/__init__.py b/python/minifi/__init__.py
index 01fb705..7352eb7 100644
--- a/python/minifi/__init__.py
+++ b/python/minifi/__init__.py
@@ -66,9 +66,9 @@ class PyProcessor(object):
     def get(self, session):
         ff = self._minifi.get(self._instance.get_instance(),self._flow, session)
         if ff:
-          return FlowFile(self._minifi, ff)
+            return FlowFile(self._minifi, ff)
         else:
-          return None
+            return None
 
     def transfer(self, session, ff, rel):
         self._minifi.transfer(session, self._flow, rel.encode("UTF-8"))
@@ -119,12 +119,6 @@ class MiNiFi(object):
         """ create instance """
         self._minifi.create_instance.argtypes = [ctypes.c_char_p , ctypes.POINTER(RPG_PORT)]
         self._minifi.create_instance.restype = ctypes.POINTER(NIFI_STRUCT)
-        """ create port """
-        self._minifi.create_port.argtype = ctypes.c_char_p
-        self._minifi.create_port.restype = ctypes.POINTER(RPG_PORT)
-        """ free port """
-        self._minifi.free_port.argtype = ctypes.POINTER(RPG_PORT)
-        self._minifi.free_port.restype = ctypes.c_int
         """ create new flow """
         self._minifi.create_new_flow.argtype = ctypes.POINTER(NIFI_STRUCT)
         self._minifi.create_new_flow.restype = ctypes.POINTER(CFlow)
@@ -167,7 +161,7 @@ class MiNiFi(object):
 
 
     def __open_rpg(self, url, port):
-        rpgPort = self._minifi.create_port(port)
+        rpgPort = (RPG_PORT)(port)
         rpg = self._minifi.create_instance(url, rpgPort)
         ret = RPG(rpg)
         return ret