refactoring: generalize operations 60/246360/2
authorAdrian Szyndela <adrian.s@samsung.com>
Wed, 28 Oct 2020 09:40:45 +0000 (10:40 +0100)
committerAdrian Szyndela <adrian.s@samsung.com>
Fri, 30 Oct 2020 11:46:21 +0000 (12:46 +0100)
Change-Id: I6af4d846397b73dc3dfaf45ccf5ebb0fd1ceef46

src/internal/storage_backend_flatbuffers.cpp
src/internal/storage_backend_flatbuffers.hpp

index 07b1213..feba813 100644 (file)
@@ -60,7 +60,7 @@ bool StorageBackendFlatbuffers::match(const ldp_xml_parser::MatchItemAccess &mat
 }
 
 template <typename T, typename P = typename type_helper<T>::policy_type>
-ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItem(const T &item, const P *policy) const {
+ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItem(const T &item, const P *policy, ldp_serialization::ItemsType) const {
        const auto *v = policyGetItems(policy);
        auto rend = containerGetReverseIteratorEnd(v);
        for (auto rit = containerGetReverseIterator(v); rit != rend; ++rit) {
@@ -99,7 +99,8 @@ auto StorageBackendFlatbuffers::getDecisionItemFromTree(const FB::PolicyOwnNode
 
 template <>
 ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItem(const ldp_xml_parser::MatchItemOwn &item,
-                                                                        const PolicyOwn *policy) const {
+                                                                        const PolicyOwn *policy,
+                                                                        ldp_serialization::TreeType) const {
        if (item.getName().length() == 0)
                return ldp_xml_parser::Decision::DENY;
 
@@ -122,10 +123,10 @@ ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItem(const Ma
        return getDecisionItem(item, setUserGroupGetPolicy(elem.second));
 }
 
-ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemFromSendIndex(const MatchItemSend &item, const FB::PolicySend *policy) const {
+ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItem(const MatchItemSend &item, const FB::PolicySend *policy) const {
 
        if (!policyHasIndex(policy))
-               return getDecisionItem(item, policy);   // make it old way for old databases
+               return getDecisionItem(item, policy, ldp_serialization::ItemsType());   // make it old way for old databases
 
        auto index = policyGetIndex(policy);
 
@@ -242,27 +243,9 @@ TYPE_HELPER(Send, send)
 TYPE_HELPER(Receive, receive)
 TYPE_HELPER(Access, access)
 
-template <>
-ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemContextMandatory(const MatchItemSend &item) const {
-       return getDecisionItemFromSendIndex(item, setGetContextMandatory(getPolicySet<MatchItemSend>()));
-}
-
-template <>
-ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemContextDefault(const MatchItemSend &item) const {
-       return getDecisionItemFromSendIndex(item, setGetContextDefault(getPolicySet<MatchItemSend>()));
-}
-
-template <>
-ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemUser(uid_t uid, const MatchItemSend &item) const {
-       auto map = setGetUser(getPolicySet<MatchItemSend>());
-
-       if (containerEmpty(map))
-               return ldp_xml_parser::Decision::ANY;
-
-       auto elem = containerLookupByKey(map, uid);
-       if (!elem.first)
-               return ldp_xml_parser::Decision::ANY;
-       return getDecisionItemFromSendIndex(item, setUserGroupGetPolicy(elem.second));
+template <typename T, typename P>
+ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItem(const T &item, P policy) const {
+       return getDecisionItem(item, policy, typename ldp_serialization::PolicyContentType<P>::result());
 }
 
 template <typename T>
index 536808a..cf7d4e1 100644 (file)
@@ -214,9 +214,15 @@ private:
        auto getPolicySet() const;
 
        template <typename T, typename P>
-       ldp_xml_parser::DecisionItem getDecisionItem(const T &item, const P *policy) const;
+       ldp_xml_parser::DecisionItem getDecisionItem(const T &item, const P *policy, ldp_serialization::ItemsType) const;
 
-       ldp_xml_parser::DecisionItem getDecisionItemFromSendIndex(const ldp_xml_parser::MatchItemSend &item, const FB::PolicySend *policy) const;
+       template <typename T, typename P>
+       ldp_xml_parser::DecisionItem getDecisionItem(const T &item, const P *policy, ldp_serialization::TreeType) const;
+
+       template <typename T, typename P>
+       ldp_xml_parser::DecisionItem getDecisionItem(const T &item, P policy) const;
+
+       ldp_xml_parser::DecisionItem getDecisionItem(const ldp_xml_parser::MatchItemSend &item, const FB::PolicySend *policy) const;
 
        template <typename MatchItem, typename Map>
        ldp_xml_parser::DecisionItem getDecisionItem(const MatchItem &item, const Map &map, id_t id) const;