1- package eu .xenit . contentcloud . abac .opa .client ;
1+ package eu .contentcloud .opa .client ;
22
33import com .fasterxml .jackson .databind .ObjectMapper ;
4- import eu .xenit .contentcloud .abac .opa .client .api .DataApi ;
5- import eu .xenit .contentcloud .abac .opa .client .impl .PolicyComponent ;
6- import eu .xenit .contentcloud .abac .opa .client .api .CompileApi ;
7- import eu .xenit .contentcloud .abac .opa .client .api .PolicyApi ;
8- import eu .xenit .contentcloud .abac .opa .client .impl .DataComponent ;
9- import eu .xenit .contentcloud .abac .opa .client .impl .CompileComponent ;
10- import eu .xenit .contentcloud .abac .opa .client .rest .OpaHttpClient ;
11- import eu .xenit .contentcloud .abac .opa .client .rest .RestClientConfiguration .LogSpecification ;
12- import eu .xenit .contentcloud .abac .opa .client .rest .client .jdk .DefaultOpaHttpClient ;
4+ import eu .contentcloud .opa .client .api .CompileApi ;
5+ import eu .contentcloud .opa .client .api .DataApi ;
6+ import eu .contentcloud .opa .client .api .PolicyApi ;
7+ import eu .contentcloud .opa .client .api .QueryApi ;
8+ import eu .contentcloud .opa .client .impl .CompileComponent ;
9+ import eu .contentcloud .opa .client .impl .DataComponent ;
10+ import eu .contentcloud .opa .client .impl .PolicyComponent ;
11+ import eu .contentcloud .opa .client .impl .QueryComponent ;
12+ import eu .contentcloud .opa .client .rest .OpaHttpClient ;
13+ import eu .contentcloud .opa .client .rest .RestClientConfiguration .LogSpecification ;
14+ import eu .contentcloud .opa .client .rest .client .jdk .DefaultOpaHttpClient ;
1315import java .net .http .HttpClient ;
1416import java .net .http .HttpClient .Redirect ;
1517import java .time .Duration ;
1618import java .util .Objects ;
1719import java .util .concurrent .CompletableFuture ;
1820import lombok .extern .slf4j .Slf4j ;
1921
20- public class OpaClient implements PolicyApi , DataApi , CompileApi {
22+ public class OpaClient implements PolicyApi , QueryApi , DataApi , CompileApi {
2123
22- private final CompileApi compileApi ;
23- private final DataApi dataApi ;
24- private final PolicyApi policyApi ;
24+ private final CompileApi compileComponent ;
25+ private final QueryApi queryComponent ;
26+ private final DataApi dataComponent ;
27+ private final PolicyApi policyComponent ;
2528
26- OpaClient (PolicyApi policyApi , DataApi dataApi , CompileApi compileApi ) {
27- this .policyApi = policyApi ;
28- this .dataApi = dataApi ;
29- this .compileApi = compileApi ;
29+ OpaClient (PolicyApi policyComponent , QueryApi queryComponent , DataApi dataComponent , CompileApi compileComponent ) {
30+ this .policyComponent = policyComponent ;
31+ this .queryComponent = queryComponent ;
32+ this .dataComponent = dataComponent ;
33+ this .compileComponent = compileComponent ;
3034 }
3135
3236 /**
@@ -38,37 +42,42 @@ public static Builder builder() {
3842
3943 @ Override
4044 public CompletableFuture <PartialEvalResponse > compile (PartialEvaluationRequest request ) {
41- return this .compileApi .compile (request );
45+ return this .compileComponent .compile (request );
4246 }
4347
4448 @ Override
4549 public CompletableFuture <ListPoliciesResponse > listPolicies () {
46- return this .policyApi .listPolicies ();
50+ return this .policyComponent .listPolicies ();
4751 }
4852
4953 @ Override
5054 public CompletableFuture <UpsertPolicyResponse > upsertPolicy (String id , String policy ) {
51- return this .policyApi .upsertPolicy (id , policy );
55+ return this .policyComponent .upsertPolicy (id , policy );
5256 }
5357
5458 @ Override
5559 public CompletableFuture <GetPolicyResponse > getPolicy (String id ) {
56- return this .policyApi .getPolicy (id );
60+ return this .policyComponent .getPolicy (id );
5761 }
5862
5963 @ Override
6064 public CompletableFuture <DeletePolicyResponse > deletePolicy (String id ) {
61- return this .policyApi .deletePolicy (id );
65+ return this .policyComponent .deletePolicy (id );
6266 }
6367
6468 @ Override
65- public <TData > CompletableFuture <Void > upsertData (String path , TData data ) {
66- return this .dataApi .upsertData (path , data );
69+ public <TData > CompletableFuture <UpsertDataResult > upsertData (String path , TData data ) {
70+ return this .dataComponent .upsertData (path , data );
6771 }
6872
6973 @ Override
7074 public <TData > CompletableFuture <TData > getData (String path , Class <TData > responseType ) {
71- return this .dataApi .getData (path , responseType );
75+ return this .dataComponent .getData (path , responseType );
76+ }
77+
78+ @ Override
79+ public CompletableFuture <QueryResponse > query (String query ) {
80+ return this .queryComponent .query (query );
7281 }
7382
7483
@@ -107,16 +116,17 @@ public Builder restClient(OpaHttpClient restClient) {
107116
108117 public OpaClient build () {
109118
110- var opaRestClient = this .getOrCreateDefaultRestClient ();
119+ var opaHttpClient = this .getOrCreateDefaultHttpClient ();
111120
112121 return new OpaClient (
113- new PolicyComponent (opaRestClient ),
114- new DataComponent (opaRestClient ),
115- new CompileComponent (opaRestClient ));
122+ new PolicyComponent (opaHttpClient ),
123+ new QueryComponent (opaHttpClient ),
124+ new DataComponent (opaHttpClient ),
125+ new CompileComponent (opaHttpClient ));
116126
117127 }
118128
119- private OpaHttpClient getOrCreateDefaultRestClient () {
129+ private OpaHttpClient getOrCreateDefaultHttpClient () {
120130 var client = this .restClient ;
121131
122132 // configure the provided client
0 commit comments