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 .PolarisCatalogGenericTableApiService ;
3031import org .apache .polaris .service .catalog .common .CatalogAdapter ;
32+ import org .apache .polaris .service .events .CatalogGenericTableServiceEvents ;
33+ import org .apache .polaris .service .events .listeners .PolarisEventListener ;
3134import org .apache .polaris .service .types .CreateGenericTableRequest ;
35+ import org .apache .polaris .service .types .LoadGenericTableResponse ;
3236
3337@ Decorator
3438@ Priority (1000 )
3539public class CatalogGenericTableEventServiceDelegator
3640 implements PolarisCatalogGenericTableApiService , CatalogAdapter {
3741
3842 @ Inject @ Delegate GenericTableCatalogAdapter delegate ;
43+ @ Inject PolarisEventListener polarisEventListener ;
44+ @ Inject CatalogPrefixParser prefixParser ;
3945
4046 @ Override
4147 public Response createGenericTable (
@@ -44,8 +50,17 @@ public Response createGenericTable(
4450 CreateGenericTableRequest createGenericTableRequest ,
4551 RealmContext realmContext ,
4652 SecurityContext securityContext ) {
47- return delegate .createGenericTable (
48- prefix , namespace , createGenericTableRequest , realmContext , securityContext );
53+ String catalogName = prefixParser .prefixToCatalogName (realmContext , prefix );
54+ polarisEventListener .onBeforeCreateGenericTable (
55+ new CatalogGenericTableServiceEvents .BeforeCreateGenericTableEvent (
56+ catalogName , namespace , createGenericTableRequest ));
57+ Response resp =
58+ delegate .createGenericTable (
59+ prefix , namespace , createGenericTableRequest , realmContext , securityContext );
60+ polarisEventListener .onAfterCreateGenericTable (
61+ new CatalogGenericTableServiceEvents .AfterCreateGenericTableEvent (
62+ catalogName , namespace , ((LoadGenericTableResponse ) resp .getEntity ()).getTable ()));
63+ return resp ;
4964 }
5065
5166 @ Override
@@ -55,8 +70,16 @@ public Response dropGenericTable(
5570 String genericTable ,
5671 RealmContext realmContext ,
5772 SecurityContext securityContext ) {
58- return delegate .dropGenericTable (
59- prefix , namespace , genericTable , realmContext , securityContext );
73+ String catalogName = prefixParser .prefixToCatalogName (realmContext , prefix );
74+ polarisEventListener .onBeforeDropGenericTable (
75+ new CatalogGenericTableServiceEvents .BeforeDropGenericTableEvent (
76+ catalogName , namespace , genericTable ));
77+ Response resp =
78+ delegate .dropGenericTable (prefix , namespace , genericTable , realmContext , securityContext );
79+ polarisEventListener .onAfterDropGenericTable (
80+ new CatalogGenericTableServiceEvents .AfterDropGenericTableEvent (
81+ catalogName , namespace , genericTable ));
82+ return resp ;
6083 }
6184
6285 @ Override
@@ -67,8 +90,15 @@ public Response listGenericTables(
6790 Integer pageSize ,
6891 RealmContext realmContext ,
6992 SecurityContext securityContext ) {
70- return delegate .listGenericTables (
71- prefix , namespace , pageToken , pageSize , realmContext , securityContext );
93+ String catalogName = prefixParser .prefixToCatalogName (realmContext , prefix );
94+ polarisEventListener .onBeforeListGenericTables (
95+ new CatalogGenericTableServiceEvents .BeforeListGenericTablesEvent (catalogName , namespace ));
96+ Response resp =
97+ delegate .listGenericTables (
98+ prefix , namespace , pageToken , pageSize , realmContext , securityContext );
99+ polarisEventListener .onAfterListGenericTables (
100+ new CatalogGenericTableServiceEvents .AfterListGenericTablesEvent (catalogName , namespace ));
101+ return resp ;
72102 }
73103
74104 @ Override
@@ -78,7 +108,15 @@ public Response loadGenericTable(
78108 String genericTable ,
79109 RealmContext realmContext ,
80110 SecurityContext securityContext ) {
81- return delegate .loadGenericTable (
82- prefix , namespace , genericTable , realmContext , securityContext );
111+ String catalogName = prefixParser .prefixToCatalogName (realmContext , prefix );
112+ polarisEventListener .onBeforeLoadGenericTable (
113+ new CatalogGenericTableServiceEvents .BeforeLoadGenericTableEvent (
114+ catalogName , namespace , genericTable ));
115+ Response resp =
116+ delegate .loadGenericTable (prefix , namespace , genericTable , realmContext , securityContext );
117+ polarisEventListener .onAfterLoadGenericTable (
118+ new CatalogGenericTableServiceEvents .AfterLoadGenericTableEvent (
119+ catalogName , namespace , ((LoadGenericTableResponse ) resp .getEntity ()).getTable ()));
120+ return resp ;
83121 }
84122}
0 commit comments