2626import jakarta .ws .rs .core .Response ;
2727import jakarta .ws .rs .core .SecurityContext ;
2828import org .apache .polaris .core .admin .model .AddGrantRequest ;
29+ import org .apache .polaris .core .admin .model .Catalog ;
30+ import org .apache .polaris .core .admin .model .CatalogRole ;
2931import org .apache .polaris .core .admin .model .CreateCatalogRequest ;
3032import org .apache .polaris .core .admin .model .CreateCatalogRoleRequest ;
3133import org .apache .polaris .core .admin .model .RevokeGrantRequest ;
3234import org .apache .polaris .core .admin .model .UpdateCatalogRequest ;
3335import org .apache .polaris .core .admin .model .UpdateCatalogRoleRequest ;
3436import org .apache .polaris .core .context .RealmContext ;
3537import org .apache .polaris .service .admin .api .PolarisCatalogsApiService ;
38+ import org .apache .polaris .service .events .CatalogsServiceEvents ;
39+ import org .apache .polaris .service .events .listeners .PolarisEventListener ;
3640
3741@ Decorator
3842@ Priority (1000 )
3943public class PolarisCatalogsEventServiceDelegator implements PolarisCatalogsApiService {
4044
4145 @ Inject @ Delegate PolarisCatalogsApiService delegate ;
46+ @ Inject PolarisEventListener polarisEventListener ;
4247
4348 @ Override
4449 public Response createCatalog (
4550 CreateCatalogRequest request , RealmContext realmContext , SecurityContext securityContext ) {
51+ // TODO: After changing the API response, we should change this to emit the corresponding event.
4652 return delegate .createCatalog (request , realmContext , securityContext );
4753 }
4854
4955 @ Override
5056 public Response deleteCatalog (
5157 String catalogName , RealmContext realmContext , SecurityContext securityContext ) {
52- return delegate .deleteCatalog (catalogName , realmContext , securityContext );
58+ polarisEventListener .onBeforeDeleteCatalog (
59+ new CatalogsServiceEvents .BeforeDeleteCatalogEvent (catalogName ));
60+ Response resp = delegate .deleteCatalog (catalogName , realmContext , securityContext );
61+ polarisEventListener .onAfterDeleteCatalog (
62+ new CatalogsServiceEvents .AfterDeleteCatalogEvent (catalogName ));
63+ return resp ;
5364 }
5465
5566 @ Override
5667 public Response getCatalog (
5768 String catalogName , RealmContext realmContext , SecurityContext securityContext ) {
58- return delegate .getCatalog (catalogName , realmContext , securityContext );
69+ polarisEventListener .onBeforeGetCatalog (
70+ new CatalogsServiceEvents .BeforeGetCatalogEvent (catalogName ));
71+ Response resp = delegate .getCatalog (catalogName , realmContext , securityContext );
72+ polarisEventListener .onAfterGetCatalog (
73+ new CatalogsServiceEvents .AfterGetCatalogEvent ((Catalog ) resp .getEntity ()));
74+ return resp ;
5975 }
6076
6177 @ Override
@@ -64,12 +80,21 @@ public Response updateCatalog(
6480 UpdateCatalogRequest updateRequest ,
6581 RealmContext realmContext ,
6682 SecurityContext securityContext ) {
67- return delegate .updateCatalog (catalogName , updateRequest , realmContext , securityContext );
83+ polarisEventListener .onBeforeUpdateCatalog (
84+ new CatalogsServiceEvents .BeforeUpdateCatalogEvent (catalogName , updateRequest ));
85+ Response resp =
86+ delegate .updateCatalog (catalogName , updateRequest , realmContext , securityContext );
87+ polarisEventListener .onAfterUpdateCatalog (
88+ new CatalogsServiceEvents .AfterUpdateCatalogEvent ((Catalog ) resp .getEntity ()));
89+ return resp ;
6890 }
6991
7092 @ Override
7193 public Response listCatalogs (RealmContext realmContext , SecurityContext securityContext ) {
72- return delegate .listCatalogs (realmContext , securityContext );
94+ polarisEventListener .onBeforeListCatalog (new CatalogsServiceEvents .BeforeListCatalogEvent ());
95+ Response resp = delegate .listCatalogs (realmContext , securityContext );
96+ polarisEventListener .onAfterListCatalog (new CatalogsServiceEvents .AfterListCatalogEvent ());
97+ return resp ;
7398 }
7499
75100 @ Override
@@ -78,6 +103,7 @@ public Response createCatalogRole(
78103 CreateCatalogRoleRequest request ,
79104 RealmContext realmContext ,
80105 SecurityContext securityContext ) {
106+ // TODO: After changing the API response, we should change this to emit the corresponding event.
81107 return delegate .createCatalogRole (catalogName , request , realmContext , securityContext );
82108 }
83109
@@ -87,7 +113,13 @@ public Response deleteCatalogRole(
87113 String catalogRoleName ,
88114 RealmContext realmContext ,
89115 SecurityContext securityContext ) {
90- return delegate .deleteCatalogRole (catalogName , catalogRoleName , realmContext , securityContext );
116+ polarisEventListener .onBeforeDeleteCatalogRole (
117+ new CatalogsServiceEvents .BeforeDeleteCatalogRoleEvent (catalogName , catalogRoleName ));
118+ Response resp =
119+ delegate .deleteCatalogRole (catalogName , catalogRoleName , realmContext , securityContext );
120+ polarisEventListener .onAfterDeleteCatalogRole (
121+ new CatalogsServiceEvents .AfterDeleteCatalogRoleEvent (catalogName , catalogRoleName ));
122+ return resp ;
91123 }
92124
93125 @ Override
@@ -96,7 +128,14 @@ public Response getCatalogRole(
96128 String catalogRoleName ,
97129 RealmContext realmContext ,
98130 SecurityContext securityContext ) {
99- return delegate .getCatalogRole (catalogName , catalogRoleName , realmContext , securityContext );
131+ polarisEventListener .onBeforeGetCatalogRole (
132+ new CatalogsServiceEvents .BeforeGetCatalogRoleEvent (catalogName , catalogRoleName ));
133+ Response resp =
134+ delegate .getCatalogRole (catalogName , catalogRoleName , realmContext , securityContext );
135+ polarisEventListener .onAfterGetCatalogRole (
136+ new CatalogsServiceEvents .AfterGetCatalogRoleEvent (
137+ catalogName , (CatalogRole ) resp .getEntity ()));
138+ return resp ;
100139 }
101140
102141 @ Override
@@ -106,14 +145,27 @@ public Response updateCatalogRole(
106145 UpdateCatalogRoleRequest updateRequest ,
107146 RealmContext realmContext ,
108147 SecurityContext securityContext ) {
109- return delegate .updateCatalogRole (
110- catalogName , catalogRoleName , updateRequest , realmContext , securityContext );
148+ polarisEventListener .onBeforeUpdateCatalogRole (
149+ new CatalogsServiceEvents .BeforeUpdateCatalogRoleEvent (
150+ catalogName , catalogRoleName , updateRequest ));
151+ Response resp =
152+ delegate .updateCatalogRole (
153+ catalogName , catalogRoleName , updateRequest , realmContext , securityContext );
154+ polarisEventListener .onAfterUpdateCatalogRole (
155+ new CatalogsServiceEvents .AfterUpdateCatalogRoleEvent (
156+ catalogName , (CatalogRole ) resp .getEntity ()));
157+ return resp ;
111158 }
112159
113160 @ Override
114161 public Response listCatalogRoles (
115162 String catalogName , RealmContext realmContext , SecurityContext securityContext ) {
116- return delegate .listCatalogRoles (catalogName , realmContext , securityContext );
163+ polarisEventListener .onAfterListCatalogRoles (
164+ new CatalogsServiceEvents .AfterListCatalogRolesEvent (catalogName ));
165+ Response resp = delegate .listCatalogRoles (catalogName , realmContext , securityContext );
166+ polarisEventListener .onBeforeListCatalogRoles (
167+ new CatalogsServiceEvents .BeforeListCatalogRolesEvent (catalogName ));
168+ return resp ;
117169 }
118170
119171 @ Override
@@ -123,6 +175,7 @@ public Response addGrantToCatalogRole(
123175 AddGrantRequest grantRequest ,
124176 RealmContext realmContext ,
125177 SecurityContext securityContext ) {
178+ // TODO: After changing the API response, we should change this to emit the corresponding event.
126179 return delegate .addGrantToCatalogRole (
127180 catalogName , catalogRoleName , grantRequest , realmContext , securityContext );
128181 }
@@ -135,6 +188,7 @@ public Response revokeGrantFromCatalogRole(
135188 RevokeGrantRequest grantRequest ,
136189 RealmContext realmContext ,
137190 SecurityContext securityContext ) {
191+ // TODO: After changing the API response, we should change this to emit the corresponding event.
138192 return delegate .revokeGrantFromCatalogRole (
139193 catalogName , catalogRoleName , cascade , grantRequest , realmContext , securityContext );
140194 }
@@ -145,8 +199,16 @@ public Response listAssigneePrincipalRolesForCatalogRole(
145199 String catalogRoleName ,
146200 RealmContext realmContext ,
147201 SecurityContext securityContext ) {
148- return delegate .listAssigneePrincipalRolesForCatalogRole (
149- catalogName , catalogRoleName , realmContext , securityContext );
202+ polarisEventListener .onBeforeListAssigneePrincipalRolesForCatalogRole (
203+ new CatalogsServiceEvents .BeforeListAssigneePrincipalRolesForCatalogRoleEvent (
204+ catalogName , catalogRoleName ));
205+ Response resp =
206+ delegate .listAssigneePrincipalRolesForCatalogRole (
207+ catalogName , catalogRoleName , realmContext , securityContext );
208+ polarisEventListener .onAfterListAssigneePrincipalRolesForCatalogRole (
209+ new CatalogsServiceEvents .AfterListAssigneePrincipalRolesForCatalogRoleEvent (
210+ catalogName , catalogRoleName ));
211+ return resp ;
150212 }
151213
152214 @ Override
@@ -155,7 +217,14 @@ public Response listGrantsForCatalogRole(
155217 String catalogRoleName ,
156218 RealmContext realmContext ,
157219 SecurityContext securityContext ) {
158- return delegate .listGrantsForCatalogRole (
159- catalogName , catalogRoleName , realmContext , securityContext );
220+ polarisEventListener .onBeforeListGrantsForCatalogRole (
221+ new CatalogsServiceEvents .BeforeListGrantsForCatalogRoleEvent (
222+ catalogName , catalogRoleName ));
223+ Response resp =
224+ delegate .listGrantsForCatalogRole (
225+ catalogName , catalogRoleName , realmContext , securityContext );
226+ polarisEventListener .onAfterListGrantsForCatalogRole (
227+ new CatalogsServiceEvents .AfterListGrantsForCatalogRoleEvent (catalogName , catalogRoleName ));
228+ return resp ;
160229 }
161230}
0 commit comments