diff --git a/src/oatpp/core/data/mapping/type/Type.cpp b/src/oatpp/core/data/mapping/type/Type.cpp
index ba13c167..6b16929c 100644
--- a/src/oatpp/core/data/mapping/type/Type.cpp
+++ b/src/oatpp/core/data/mapping/type/Type.cpp
@@ -43,9 +43,8 @@ namespace __class {
std::atomic_int ClassId::ID_COUNTER(0);
-ClassId::ClassId(const char* pName, const char* pQualifier)
+ClassId::ClassId(const char* pName)
: name(pName)
- , qualifier(pQualifier)
, id(ID_COUNTER ++)
{}
diff --git a/src/oatpp/core/data/mapping/type/Type.hpp b/src/oatpp/core/data/mapping/type/Type.hpp
index 2a711fa0..db0e2990 100644
--- a/src/oatpp/core/data/mapping/type/Type.hpp
+++ b/src/oatpp/core/data/mapping/type/Type.hpp
@@ -35,15 +35,35 @@ namespace oatpp { namespace data { namespace mapping { namespace type {
class Type; // FWD
+/**
+ * Structure representing `ID` of the type class.
+ */
class ClassId {
private:
static std::atomic_int ID_COUNTER;
public:
+ /**
+ * Get count of all type classes created.
+ * @return
+ */
static int getClassCount();
public:
- ClassId(const char* pName, const char* pQualifier = nullptr);
+
+ /**
+ * Constructor.
+ * @param pName
+ */
+ ClassId(const char* pName);
+
+ /**
+ * Name of the type class.
+ */
const char* const name;
- const char* const qualifier;
+
+ /**
+ * Integer ID of the type class.
+ * *Note: class type IDs are integer values incremented continuously from [0 to `getClassCount()`]*
+ */
const v_int32 id;
};
diff --git a/src/oatpp/parser/json/mapping/Deserializer.hpp b/src/oatpp/parser/json/mapping/Deserializer.hpp
index 643b1446..b873f3d0 100644
--- a/src/oatpp/parser/json/mapping/Deserializer.hpp
+++ b/src/oatpp/parser/json/mapping/Deserializer.hpp
@@ -179,12 +179,31 @@ private:
std::vector m_methods;
public:
+ /**
+ * Constructor.
+ * @param config
+ */
Deserializer(const std::shared_ptr& config = std::make_shared());
+ /**
+ * Set deserializer method for type.
+ * @param classId - &id:oatpp::data::mapping::type::ClassId;.
+ * @param method - `typedef AbstractObjectWrapper (*DeserializerMethod)(Deserializer*, parser::Caret&, const Type* const)`.
+ */
void setDeserializerMethod(const data::mapping::type::ClassId& classId, DeserializerMethod method);
+ /**
+ * Deserialize text.
+ * @param caret - &id:oatpp::parser::Caret;.
+ * @param type - &id:oatpp::data::mapping::type::Type;
+ * @return - `AbstractObjectWrapper` over deserialized object.
+ */
AbstractObjectWrapper deserialize(parser::Caret& caret, const Type* const type);
+ /**
+ * Get deserializer config.
+ * @return
+ */
const std::shared_ptr& getConfig();
};
diff --git a/src/oatpp/parser/json/mapping/Serializer.hpp b/src/oatpp/parser/json/mapping/Serializer.hpp
index 2f42d5de..ae6d0c00 100644
--- a/src/oatpp/parser/json/mapping/Serializer.hpp
+++ b/src/oatpp/parser/json/mapping/Serializer.hpp
@@ -151,12 +151,30 @@ private:
std::vector m_methods;
public:
+ /**
+ * Constructor.
+ * @param config - serializer config.
+ */
Serializer(const std::shared_ptr& config = std::make_shared());
+ /**
+ * Set serializer method for type.
+ * @param classId - &id:oatpp::data::mapping::type::ClassId;.
+ * @param method - `typedef void (*SerializerMethod)(Serializer*, data::stream::ConsistentOutputStream*, const data::mapping::type::AbstractObjectWrapper&)`.
+ */
void setSerializerMethod(const data::mapping::type::ClassId& classId, SerializerMethod method);
+ /**
+ * Serialize object to stream.
+ * @param stream - &id:oatpp::data::stream::ConsistentOutputStream;.
+ * @param polymorph - DTO as &id:oatpp::data::mapping::type::AbstractObjectWrapper;.
+ */
void serializeToStream(data::stream::ConsistentOutputStream* stream, const data::mapping::type::AbstractObjectWrapper& polymorph);
+ /**
+ * Get serializer config.
+ * @return
+ */
const std::shared_ptr& getConfig();
};
diff --git a/test/oatpp/parser/json/mapping/DeserializerTest.hpp b/test/oatpp/parser/json/mapping/DeserializerTest.hpp
index b3d140c5..2173ce3d 100644
--- a/test/oatpp/parser/json/mapping/DeserializerTest.hpp
+++ b/test/oatpp/parser/json/mapping/DeserializerTest.hpp
@@ -32,7 +32,7 @@ namespace oatpp { namespace test { namespace parser { namespace json { namespace
class DeserializerTest : public UnitTest{
public:
- DeserializerTest():UnitTest("TEST[parser::json::mapping::DeserializerTestTest]"){}
+ DeserializerTest():UnitTest("TEST[parser::json::mapping::DeserializerTest]"){}
void onRun() override;
};