2626import jakarta .ws .rs .core .Response ;
2727import jakarta .ws .rs .core .SecurityContext ;
2828import org .apache .polaris .core .context .RealmContext ;
29+ import org .apache .polaris .service .catalog .CatalogPrefixParser ;
2930import org .apache .polaris .service .catalog .api .PolarisCatalogPolicyApiService ;
3031import org .apache .polaris .service .catalog .common .CatalogAdapter ;
32+ import org .apache .polaris .service .events .CatalogPolicyServiceEvents ;
33+ import org .apache .polaris .service .events .listeners .PolarisEventListener ;
3134import org .apache .polaris .service .types .AttachPolicyRequest ;
3235import org .apache .polaris .service .types .CreatePolicyRequest ;
3336import org .apache .polaris .service .types .DetachPolicyRequest ;
37+ import org .apache .polaris .service .types .GetApplicablePoliciesResponse ;
38+ import org .apache .polaris .service .types .LoadPolicyResponse ;
3439import org .apache .polaris .service .types .UpdatePolicyRequest ;
3540
3641@ Decorator
@@ -39,6 +44,8 @@ public class CatalogPolicyEventServiceDelegator
3944 implements PolarisCatalogPolicyApiService , CatalogAdapter {
4045
4146 @ Inject @ Delegate PolicyCatalogAdapter delegate ;
47+ @ Inject PolarisEventListener polarisEventListener ;
48+ @ Inject CatalogPrefixParser prefixParser ;
4249
4350 @ Override
4451 public Response createPolicy (
@@ -47,8 +54,17 @@ public Response createPolicy(
4754 CreatePolicyRequest createPolicyRequest ,
4855 RealmContext realmContext ,
4956 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 ;
5268 }
5369
5470 @ Override
@@ -60,8 +76,15 @@ public Response listPolicies(
6076 String policyType ,
6177 RealmContext realmContext ,
6278 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 ;
6588 }
6689
6790 @ Override
@@ -71,7 +94,15 @@ public Response loadPolicy(
7194 String policyName ,
7295 RealmContext realmContext ,
7396 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 ;
75106 }
76107
77108 @ Override
@@ -82,8 +113,17 @@ public Response updatePolicy(
82113 UpdatePolicyRequest updatePolicyRequest ,
83114 RealmContext realmContext ,
84115 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 ;
87127 }
88128
89129 @ Override
@@ -94,8 +134,17 @@ public Response dropPolicy(
94134 Boolean detachAll ,
95135 RealmContext realmContext ,
96136 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 ;
99148 }
100149
101150 @ Override
@@ -106,8 +155,17 @@ public Response attachPolicy(
106155 AttachPolicyRequest attachPolicyRequest ,
107156 RealmContext realmContext ,
108157 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 ;
111169 }
112170
113171 @ Override
@@ -118,8 +176,17 @@ public Response detachPolicy(
118176 DetachPolicyRequest detachPolicyRequest ,
119177 RealmContext realmContext ,
120178 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 ;
123190 }
124191
125192 @ Override
@@ -132,14 +199,27 @@ public Response getApplicablePolicies(
132199 String policyType ,
133200 RealmContext realmContext ,
134201 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 ;
144224 }
145225}
0 commit comments