Skip to content

Commit 5881fb1

Browse files
committed
feat: rename the filtered-file-adapter and change the inheritance hierarchy.
1 parent b3d64af commit 5881fb1

File tree

4 files changed

+29
-28
lines changed

4 files changed

+29
-28
lines changed

casbin/persist/adapter.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,19 @@
2323

2424
// LoadPolicyLine loads a text line as a policy rule to model.
2525
void LoadPolicyLine(string line, Model* model) {
26-
if(line == "" || line.find("#")==0) {
26+
if(line == "" || line.find("#")==0)
2727
return;
28-
}
2928

3029
vector<string> tokens = Split(line, ",", -1);
31-
for (int i = 0; i < tokens.size(); i++) {
30+
for (int i = 0; i < tokens.size(); i++)
3231
tokens[i] = Trim(tokens[i]);
33-
}
3432

3533
string key = tokens[0];
3634
string sec = key.substr(0,1);
3735
vector<string> new_tokens(tokens.begin()+1, tokens.end());
38-
36+
37+
if (model->m.find(sec) == model->m.end())
38+
model->m[sec] = AssertionMap();
39+
3940
(model->m[sec].assertion_map[key]->policy).push_back(new_tokens);
4041
}

casbin/persist/file_adapter/filtered_adapter.cpp renamed to casbin/persist/file_adapter/filtered_file_adapter.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55
#include <fstream>
66

7-
#include "./filtered_adapter.h"
7+
#include "./filtered_file_adapter.h"
88
#include "../../exception/io_exception.h"
99
#include "../../exception/casbin_adapter_exception.h"
1010
#include "../../util/util.h"
1111

1212
using namespace std;
1313

14-
bool FilteredAdapter :: filterLine(string line, Filter* filter) {
14+
bool FilteredFileAdapter :: filterLine(string line, Filter* filter) {
1515
if (filter == NULL)
1616
return false;
1717

@@ -29,7 +29,7 @@ bool FilteredAdapter :: filterLine(string line, Filter* filter) {
2929
return filterWords(p, filter_slice);
3030
}
3131

32-
bool FilteredAdapter :: filterWords(vector<string> line, vector<string> filter) {
32+
bool FilteredFileAdapter :: filterWords(vector<string> line, vector<string> filter) {
3333
if (line.size() < filter.size()+1)
3434
return true;
3535

@@ -44,7 +44,7 @@ bool FilteredAdapter :: filterWords(vector<string> line, vector<string> filter)
4444
return skip_line;
4545
}
4646

47-
void FilteredAdapter :: loadFilteredPolicyFile(Model* model, Filter* filter, void (*handler)(string, Model*)) {
47+
void FilteredFileAdapter :: loadFilteredPolicyFile(Model* model, Filter* filter, void (*handler)(string, Model*)) {
4848
ifstream out_file;
4949
try {
5050
out_file.open(this->file_path);
@@ -66,21 +66,21 @@ void FilteredAdapter :: loadFilteredPolicyFile(Model* model, Filter* filter, voi
6666
}
6767

6868
// NewFilteredAdapter is the constructor for FilteredAdapter.
69-
FilteredAdapter* FilteredAdapter :: NewFilteredAdapter(string file_path) {
70-
FilteredAdapter* a = new FilteredAdapter;
69+
FilteredFileAdapter* FilteredFileAdapter :: NewFilteredAdapter(string file_path) {
70+
FilteredFileAdapter* a = new FilteredFileAdapter;
7171
a->filtered = true;
7272
a->file_path = file_path;
7373
return a;
7474
}
7575

7676
// LoadPolicy loads all policy rules from the storage.
77-
void FilteredAdapter :: LoadPolicy(Model* model) {
77+
void FilteredFileAdapter :: LoadPolicy(Model* model) {
7878
this->filtered = false;
7979
this->FileAdapter::LoadPolicy(model);
8080
}
8181

8282
// LoadFilteredPolicy loads only policy rules that match the filter.
83-
void FilteredAdapter :: LoadFilteredPolicy(Model* model, Filter* filter) {
83+
void FilteredFileAdapter :: LoadFilteredPolicy(Model* model, Filter* filter) {
8484
if (filter == NULL) {
8585
this->LoadPolicy(model);
8686
}
@@ -94,12 +94,12 @@ void FilteredAdapter :: LoadFilteredPolicy(Model* model, Filter* filter) {
9494
}
9595

9696
// IsFiltered returns true if the loaded policy has been filtered.
97-
bool FilteredAdapter :: IsFiltered() {
97+
bool FilteredFileAdapter :: IsFiltered() {
9898
return this->filtered;
9999
}
100100

101101
// SavePolicy saves all policy rules to the storage.
102-
void FilteredAdapter :: SavePolicy(Model* model) {
102+
void FilteredFileAdapter :: SavePolicy(Model* model) {
103103
if (this->filtered) {
104104
throw CasbinAdapterException("Cannot save a filtered policy");
105105
}

casbin/persist/file_adapter/filtered_adapter.h renamed to casbin/persist/file_adapter/filtered_file_adapter.h

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,9 @@
22
#define CASBIN_CPP_PERSIST_FILE_ADAPTER_FILTERED_ADAPTER
33

44
#include "file_adapter.h"
5+
#include "../filtered_adapter.h"
56

6-
// Filter defines the filtering rules for a FilteredAdapter's policy. Empty values
7-
// are ignored, but all others must match the filter.
8-
class Filter{
9-
public:
10-
vector<string> P;
11-
vector<string> G;
12-
};
13-
14-
class FilteredAdapter : public FileAdapter {
7+
class FilteredFileAdapter : public FileAdapter, public FilteredAdapter {
158
private:
169

1710
static bool filterLine(string line, Filter* filter);
@@ -23,7 +16,7 @@ class FilteredAdapter : public FileAdapter {
2316
public:
2417

2518
// NewFilteredAdapter is the constructor for FilteredAdapter.
26-
static FilteredAdapter* NewFilteredAdapter(string file_path);
19+
static FilteredFileAdapter* NewFilteredAdapter(string file_path);
2720

2821
// LoadPolicy loads all policy rules from the storage.
2922
void LoadPolicy(Model* model);

casbin/persist/Adapter_Filtered.h renamed to casbin/persist/filtered_adapter.h

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,20 @@
1919

2020
#include "./adapter.h"
2121

22+
// Filter defines the filtering rules for a FilteredAdapter's policy. Empty values
23+
// are ignored, but all others must match the filter.
24+
class Filter{
25+
public:
26+
vector<string> P;
27+
vector<string> G;
28+
};
29+
2230
// FilteredAdapter is the interface for Casbin adapters supporting filtered policies.
23-
class FilteredAdapter : public Adapter {
31+
class FilteredAdapter : virtual public Adapter {
2432
public:
2533

2634
// LoadFilteredPolicy loads only policy rules that match the filter.
27-
template <typename Filter>
28-
void LoadFilteredPolicy(Model model, Filter filter);
35+
void LoadFilteredPolicy(Model* model, Filter* filter);
2936
// IsFiltered returns true if the loaded policy has been filtered.
3037
virtual bool IsFiltered() = 0;
3138
};

0 commit comments

Comments
 (0)