|
16 | 16 | import org.elasticsearch.entitlement.runtime.policy.entitlements.CreateClassLoaderEntitlement; |
17 | 17 | import org.elasticsearch.entitlement.runtime.policy.entitlements.Entitlement; |
18 | 18 | import org.elasticsearch.entitlement.runtime.policy.entitlements.ExitVMEntitlement; |
19 | | -import org.elasticsearch.entitlement.runtime.policy.entitlements.FileEntitlement; |
| 19 | +import org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement; |
20 | 20 | import org.elasticsearch.entitlement.runtime.policy.entitlements.InboundNetworkEntitlement; |
21 | 21 | import org.elasticsearch.entitlement.runtime.policy.entitlements.LoadNativeLibrariesEntitlement; |
22 | 22 | import org.elasticsearch.entitlement.runtime.policy.entitlements.OutboundNetworkEntitlement; |
@@ -73,14 +73,16 @@ public static ModuleEntitlements none(String componentName) { |
73 | 73 | } |
74 | 74 |
|
75 | 75 | public static ModuleEntitlements from(String componentName, List<Entitlement> entitlements) { |
76 | | - var fileEntitlements = entitlements.stream() |
77 | | - .filter(e -> e.getClass().equals(FileEntitlement.class)) |
78 | | - .map(e -> (FileEntitlement) e) |
79 | | - .toList(); |
| 76 | + FilesEntitlement filesEntitlement = FilesEntitlement.EMPTY; |
| 77 | + for (Entitlement entitlement : entitlements) { |
| 78 | + if (entitlement instanceof FilesEntitlement) { |
| 79 | + filesEntitlement = (FilesEntitlement) entitlement; |
| 80 | + } |
| 81 | + } |
80 | 82 | return new ModuleEntitlements( |
81 | 83 | componentName, |
82 | 84 | entitlements.stream().collect(groupingBy(Entitlement::getClass)), |
83 | | - FileAccessTree.of(fileEntitlements) |
| 85 | + FileAccessTree.of(filesEntitlement) |
84 | 86 | ); |
85 | 87 | } |
86 | 88 |
|
@@ -164,23 +166,14 @@ private static Map<String, List<Entitlement>> buildScopeEntitlementsMap(Policy p |
164 | 166 | } |
165 | 167 |
|
166 | 168 | private static void validateEntitlementsPerModule(String componentName, String moduleName, List<Entitlement> entitlements) { |
167 | | - Set<Class<? extends Entitlement>> flagEntitlements = new HashSet<>(); |
| 169 | + Set<Class<? extends Entitlement>> found = new HashSet<>(); |
168 | 170 | for (var e : entitlements) { |
169 | | - if (e instanceof FileEntitlement) { |
170 | | - continue; |
171 | | - } |
172 | | - if (flagEntitlements.contains(e.getClass())) { |
| 171 | + if (found.contains(e.getClass())) { |
173 | 172 | throw new IllegalArgumentException( |
174 | | - "[" |
175 | | - + componentName |
176 | | - + "] using module [" |
177 | | - + moduleName |
178 | | - + "] found duplicate flag entitlements [" |
179 | | - + e.getClass().getName() |
180 | | - + "]" |
| 173 | + "[" + componentName + "] using module [" + moduleName + "] found duplicate entitlement [" + e.getClass().getName() + "]" |
181 | 174 | ); |
182 | 175 | } |
183 | | - flagEntitlements.add(e.getClass()); |
| 176 | + found.add(e.getClass()); |
184 | 177 | } |
185 | 178 | } |
186 | 179 |
|
|
0 commit comments