44import java .nio .file .Files ;
55import java .nio .file .Path ;
66import java .util .Map ;
7+ import java .util .function .Function ;
78import javasabr .mqtt .acl .engine .AclEngine ;
89import javasabr .mqtt .acl .engine .exception .AclConfigurationException ;
910import javasabr .mqtt .acl .engine .model .rule .AclRule ;
10- import javasabr .mqtt .acl .groovy .dsl .loader .AclRulesLoader ;
1111import javasabr .mqtt .acl .service .AclEngineBasedAuthorizationService ;
1212import javasabr .mqtt .model .acl .Operation ;
1313import javasabr .rlib .collections .array .Array ;
14+ import lombok .AccessLevel ;
1415import lombok .CustomLog ;
16+ import lombok .RequiredArgsConstructor ;
17+ import lombok .experimental .FieldDefaults ;
1518
1619@ CustomLog
17- public class GroovyDslBasedAuthorizationService extends AclEngineBasedAuthorizationService {
20+ @ RequiredArgsConstructor
21+ @ FieldDefaults (level = AccessLevel .PRIVATE , makeFinal = true )
22+ public class UriLoaderAuthorizationService extends AclEngineBasedAuthorizationService {
23+
24+ Function <Path , Map <Operation , Array <AclRule >>> rulerLoader ;
1825
1926 public void loadFrom (URI resource ) {
2027 Path localFile = Path .of (resource );
@@ -23,16 +30,19 @@ public void loadFrom(URI resource) {
2330 } else if (Files .isDirectory (localFile )) {
2431 throw new AclConfigurationException ("ACL configuration:[%s] is directory" .formatted (resource ));
2532 }
26- Map <Operation , Array <AclRule >> loadedAclRulesMap = AclRulesLoader . load (localFile );
33+ Map <Operation , Array <AclRule >> loadedAclRulesMap = rulerLoader . apply (localFile );
2734 switchTo (new AclEngine (loadedAclRulesMap ));
28- log .info (resource , loadedAclRulesMap , GroovyDslBasedAuthorizationService ::buildServiceDescription );
35+ log .info (resource , loadedAclRulesMap , UriLoaderAuthorizationService ::buildServiceDescription );
2936 }
3037
3138 private static String buildServiceDescription (URI resource , Map <Operation , Array <AclRule >> aclRulesMap ) {
3239 var builder = new StringBuilder ();
3340 builder .append ("{\n " );
34- builder .append (" \" SOURCE\" :\" " ).append (resource ).append ("\" ,\n " );
35-
41+ builder
42+ .append (" \" SOURCE\" :\" " )
43+ .append (resource )
44+ .append ("\" ,\n " );
45+
3646 int count = 0 ;
3747 for (Map .Entry <Operation , Array <AclRule >> entry : aclRulesMap .entrySet ()) {
3848 Operation operation = entry .getKey ();
0 commit comments