@@ -62,6 +62,21 @@ public List<Route> routes() {
62
62
}
63
63
64
64
private void flushCacheApiRequestHandlers (RequestHandler .RequestHandlersBuilder requestHandlersBuilder ) {
65
+ requestHandlersBuilder .allMethodsNotImplemented ().override (Method .DELETE , (channel , request , client ) -> {
66
+ final ConfigUpdateRequest configUpdateRequest ;
67
+ if (request .path ().contains ("/user/" )) {
68
+ // Extract the username from the request
69
+ final String username = request .param ("username" );
70
+ if (username == null || username .isEmpty ()) {
71
+ internalSeverError (channel , "No username provided for cache invalidation." );
72
+ return ;
73
+ }
74
+ // Validate and handle user-specific cache invalidation
75
+ configUpdateRequest = new ConfigUpdateRequest (CType .INTERNALUSERS .toLCString (), new String [] { username });
76
+ } else {
77
+ configUpdateRequest = new ConfigUpdateRequest (CType .lcStringValues ().toArray (new String [0 ]));
78
+ }
79
+ client .execute (ConfigUpdateAction .INSTANCE , configUpdateRequest , new ActionListener <>() {
65
80
requestHandlersBuilder .allMethodsNotImplemented ().override (Method .DELETE , (channel , request , client ) -> {
66
81
final ConfigUpdateRequest configUpdateRequest ;
67
82
if (request .path ().contains ("/user/" )) {
@@ -105,16 +120,11 @@ public void onResponse(ConfigUpdateResponse configUpdateResponse) {
105
120
ok (channel , "Cache flushed successfully." );
106
121
}
107
122
108
- @ Override
109
- public void onFailure (final Exception e ) {
110
- LOGGER .error ("Cannot flush cache due to" , e );
111
- internalSeverError (channel , "Cannot flush cache due to " + e .getMessage () + "." );
112
- }
113
- @ Override
114
- public void onFailure (final Exception e ) {
115
- LOGGER .error ("Cannot flush cache due to" , e );
116
- internalServerError (channel , "Cannot flush cache due to " + e .getMessage () + "." );
117
- }
123
+ @ Override
124
+ public void onFailure (final Exception e ) {
125
+ LOGGER .error ("Cannot flush cache due to" , e );
126
+ internalSeverError (channel , "Cannot flush cache due to " + e .getMessage () + "." );
127
+ }
118
128
119
129
});
120
130
});
0 commit comments