}
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) {
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;
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);
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>
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;