26
26
import jakarta .ws .rs .core .Response ;
27
27
import jakarta .ws .rs .core .SecurityContext ;
28
28
import org .apache .polaris .core .context .RealmContext ;
29
+ import org .apache .polaris .service .catalog .CatalogPrefixParser ;
29
30
import org .apache .polaris .service .catalog .api .PolarisCatalogPolicyApiService ;
30
31
import org .apache .polaris .service .catalog .common .CatalogAdapter ;
32
+ import org .apache .polaris .service .events .CatalogPolicyServiceEvents ;
33
+ import org .apache .polaris .service .events .listeners .PolarisEventListener ;
31
34
import org .apache .polaris .service .types .AttachPolicyRequest ;
32
35
import org .apache .polaris .service .types .CreatePolicyRequest ;
33
36
import org .apache .polaris .service .types .DetachPolicyRequest ;
37
+ import org .apache .polaris .service .types .GetApplicablePoliciesResponse ;
38
+ import org .apache .polaris .service .types .LoadPolicyResponse ;
34
39
import org .apache .polaris .service .types .UpdatePolicyRequest ;
35
40
36
41
@ Decorator
@@ -39,6 +44,8 @@ public class CatalogPolicyEventServiceDelegator
39
44
implements PolarisCatalogPolicyApiService , CatalogAdapter {
40
45
41
46
@ Inject @ Delegate PolicyCatalogAdapter delegate ;
47
+ @ Inject PolarisEventListener polarisEventListener ;
48
+ @ Inject CatalogPrefixParser prefixParser ;
42
49
43
50
@ Override
44
51
public Response createPolicy (
@@ -47,8 +54,17 @@ public Response createPolicy(
47
54
CreatePolicyRequest createPolicyRequest ,
48
55
RealmContext realmContext ,
49
56
SecurityContext securityContext ) {
50
- return delegate .createPolicy (
51
- prefix , namespace , createPolicyRequest , realmContext , securityContext );
57
+ String catalogName = prefixParser .prefixToCatalogName (realmContext , prefix );
58
+ polarisEventListener .onBeforeCreatePolicy (
59
+ new CatalogPolicyServiceEvents .BeforeCreatePolicyEvent (
60
+ catalogName , namespace , createPolicyRequest ));
61
+ Response resp =
62
+ delegate .createPolicy (
63
+ prefix , namespace , createPolicyRequest , realmContext , securityContext );
64
+ polarisEventListener .onAfterCreatePolicy (
65
+ new CatalogPolicyServiceEvents .AfterCreatePolicyEvent (
66
+ catalogName , namespace , (LoadPolicyResponse ) resp .getEntity ()));
67
+ return resp ;
52
68
}
53
69
54
70
@ Override
@@ -60,8 +76,15 @@ public Response listPolicies(
60
76
String policyType ,
61
77
RealmContext realmContext ,
62
78
SecurityContext securityContext ) {
63
- return delegate .listPolicies (
64
- prefix , namespace , pageToken , pageSize , policyType , realmContext , securityContext );
79
+ String catalogName = prefixParser .prefixToCatalogName (realmContext , prefix );
80
+ polarisEventListener .onBeforeListPolicies (
81
+ new CatalogPolicyServiceEvents .BeforeListPoliciesEvent (catalogName , namespace , policyType ));
82
+ Response resp =
83
+ delegate .listPolicies (
84
+ prefix , namespace , pageToken , pageSize , policyType , realmContext , securityContext );
85
+ polarisEventListener .onAfterListPolicies (
86
+ new CatalogPolicyServiceEvents .AfterListPoliciesEvent (catalogName , namespace , policyType ));
87
+ return resp ;
65
88
}
66
89
67
90
@ Override
@@ -71,7 +94,15 @@ public Response loadPolicy(
71
94
String policyName ,
72
95
RealmContext realmContext ,
73
96
SecurityContext securityContext ) {
74
- return delegate .loadPolicy (prefix , namespace , policyName , realmContext , securityContext );
97
+ String catalogName = prefixParser .prefixToCatalogName (realmContext , prefix );
98
+ polarisEventListener .onBeforeLoadPolicy (
99
+ new CatalogPolicyServiceEvents .BeforeLoadPolicyEvent (catalogName , namespace , policyName ));
100
+ Response resp =
101
+ delegate .loadPolicy (prefix , namespace , policyName , realmContext , securityContext );
102
+ polarisEventListener .onAfterLoadPolicy (
103
+ new CatalogPolicyServiceEvents .AfterLoadPolicyEvent (
104
+ catalogName , namespace , (LoadPolicyResponse ) resp .getEntity ()));
105
+ return resp ;
75
106
}
76
107
77
108
@ Override
@@ -82,8 +113,17 @@ public Response updatePolicy(
82
113
UpdatePolicyRequest updatePolicyRequest ,
83
114
RealmContext realmContext ,
84
115
SecurityContext securityContext ) {
85
- return delegate .updatePolicy (
86
- prefix , namespace , policyName , updatePolicyRequest , realmContext , securityContext );
116
+ String catalogName = prefixParser .prefixToCatalogName (realmContext , prefix );
117
+ polarisEventListener .onBeforeUpdatePolicy (
118
+ new CatalogPolicyServiceEvents .BeforeUpdatePolicyEvent (
119
+ catalogName , namespace , policyName , updatePolicyRequest ));
120
+ Response resp =
121
+ delegate .updatePolicy (
122
+ prefix , namespace , policyName , updatePolicyRequest , realmContext , securityContext );
123
+ polarisEventListener .onAfterUpdatePolicy (
124
+ new CatalogPolicyServiceEvents .AfterUpdatePolicyEvent (
125
+ catalogName , namespace , (LoadPolicyResponse ) resp .getEntity ()));
126
+ return resp ;
87
127
}
88
128
89
129
@ Override
@@ -94,8 +134,17 @@ public Response dropPolicy(
94
134
Boolean detachAll ,
95
135
RealmContext realmContext ,
96
136
SecurityContext securityContext ) {
97
- return delegate .dropPolicy (
98
- prefix , namespace , policyName , detachAll , realmContext , securityContext );
137
+ String catalogName = prefixParser .prefixToCatalogName (realmContext , prefix );
138
+ polarisEventListener .onBeforeDropPolicy (
139
+ new CatalogPolicyServiceEvents .BeforeDropPolicyEvent (
140
+ catalogName , namespace , policyName , detachAll ));
141
+ Response resp =
142
+ delegate .dropPolicy (
143
+ prefix , namespace , policyName , detachAll , realmContext , securityContext );
144
+ polarisEventListener .onAfterDropPolicy (
145
+ new CatalogPolicyServiceEvents .AfterDropPolicyEvent (
146
+ catalogName , namespace , policyName , detachAll ));
147
+ return resp ;
99
148
}
100
149
101
150
@ Override
@@ -106,8 +155,17 @@ public Response attachPolicy(
106
155
AttachPolicyRequest attachPolicyRequest ,
107
156
RealmContext realmContext ,
108
157
SecurityContext securityContext ) {
109
- return delegate .attachPolicy (
110
- prefix , namespace , policyName , attachPolicyRequest , realmContext , securityContext );
158
+ String catalogName = prefixParser .prefixToCatalogName (realmContext , prefix );
159
+ polarisEventListener .onBeforeAttachPolicy (
160
+ new CatalogPolicyServiceEvents .BeforeAttachPolicyEvent (
161
+ catalogName , namespace , policyName , attachPolicyRequest ));
162
+ Response resp =
163
+ delegate .attachPolicy (
164
+ prefix , namespace , policyName , attachPolicyRequest , realmContext , securityContext );
165
+ polarisEventListener .onAfterAttachPolicy (
166
+ new CatalogPolicyServiceEvents .AfterAttachPolicyEvent (
167
+ catalogName , namespace , policyName , attachPolicyRequest ));
168
+ return resp ;
111
169
}
112
170
113
171
@ Override
@@ -118,8 +176,17 @@ public Response detachPolicy(
118
176
DetachPolicyRequest detachPolicyRequest ,
119
177
RealmContext realmContext ,
120
178
SecurityContext securityContext ) {
121
- return delegate .detachPolicy (
122
- prefix , namespace , policyName , detachPolicyRequest , realmContext , securityContext );
179
+ String catalogName = prefixParser .prefixToCatalogName (realmContext , prefix );
180
+ polarisEventListener .onBeforeDetachPolicy (
181
+ new CatalogPolicyServiceEvents .BeforeDetachPolicyEvent (
182
+ catalogName , namespace , policyName , detachPolicyRequest ));
183
+ Response resp =
184
+ delegate .detachPolicy (
185
+ prefix , namespace , policyName , detachPolicyRequest , realmContext , securityContext );
186
+ polarisEventListener .onAfterDetachPolicy (
187
+ new CatalogPolicyServiceEvents .AfterDetachPolicyEvent (
188
+ catalogName , namespace , policyName , detachPolicyRequest ));
189
+ return resp ;
123
190
}
124
191
125
192
@ Override
@@ -132,14 +199,27 @@ public Response getApplicablePolicies(
132
199
String policyType ,
133
200
RealmContext realmContext ,
134
201
SecurityContext securityContext ) {
135
- return delegate .getApplicablePolicies (
136
- prefix ,
137
- pageToken ,
138
- pageSize ,
139
- namespace ,
140
- targetName ,
141
- policyType ,
142
- realmContext ,
143
- securityContext );
202
+ String catalogName = prefixParser .prefixToCatalogName (realmContext , prefix );
203
+ polarisEventListener .onBeforeGetApplicablePolicies (
204
+ new CatalogPolicyServiceEvents .BeforeGetApplicablePoliciesEvent (
205
+ catalogName , namespace , targetName , policyType ));
206
+ Response resp =
207
+ delegate .getApplicablePolicies (
208
+ prefix ,
209
+ pageToken ,
210
+ pageSize ,
211
+ namespace ,
212
+ targetName ,
213
+ policyType ,
214
+ realmContext ,
215
+ securityContext );
216
+ polarisEventListener .onAfterGetApplicablePolicies (
217
+ new CatalogPolicyServiceEvents .AfterGetApplicablePoliciesEvent (
218
+ catalogName ,
219
+ namespace ,
220
+ targetName ,
221
+ policyType ,
222
+ (GetApplicablePoliciesResponse ) resp .getEntity ()));
223
+ return resp ;
144
224
}
145
225
}
0 commit comments