Skip to content

Commit adbb777

Browse files
committed
Handling unparsing of shared resources for extension items
1 parent 83caee7 commit adbb777

2 files changed

Lines changed: 18 additions & 4 deletions

File tree

ehcache-xml/src/jakarta/java/org/ehcache/xml/ResourceConfigurationParser.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,15 @@ public ResourcesType unparse(Document target, ResourcePools resourcePools) {
209209
throw new AssertionError("Parser not found for resource type: " + resourceType);
210210
}
211211
} else {
212-
//TODO what happens for sharing of "extension items"?
213-
throw new AssertionError("Parser not found for resource type: " + resourceType);
212+
Map<Class<? extends ResourcePool>, CacheResourceConfigurationParser> parsers = new HashMap<>();
213+
extensionParsers.forEach(parser -> parser.getResourceTypes().forEach(rt -> parsers.put(rt, parser)));
214+
CacheResourceConfigurationParser parser = parsers.get(resourcePool.getClass());
215+
if (parser != null) {
216+
resources.add(parser.unparse(target, resourcePool));
217+
}
218+
else {
219+
throw new AssertionError("Parser not found for resource type: " + resourceType);
220+
}
214221
}
215222
} else {
216223
Map<Class<? extends ResourcePool>, CacheResourceConfigurationParser> parsers = new HashMap<>();

ehcache-xml/src/main/java/org/ehcache/xml/ResourceConfigurationParser.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,15 @@ public ResourcesType unparse(Document target, ResourcePools resourcePools) {
210210
throw new AssertionError("Parser not found for resource type: " + resourceType);
211211
}
212212
} else {
213-
//TODO what happens for sharing of "extension items"?
214-
throw new AssertionError("Parser not found for resource type: " + resourceType);
213+
Map<Class<? extends ResourcePool>, CacheResourceConfigurationParser> parsers = new HashMap<>();
214+
extensionParsers.forEach(parser -> parser.getResourceTypes().forEach(rt -> parsers.put(rt, parser)));
215+
CacheResourceConfigurationParser parser = parsers.get(resourcePool.getClass());
216+
if (parser != null) {
217+
resources.add(parser.unparse(target, resourcePool));
218+
}
219+
else {
220+
throw new AssertionError("Parser not found for resource type: " + resourceType);
221+
}
215222
}
216223
} else {
217224
Map<Class<? extends ResourcePool>, CacheResourceConfigurationParser> parsers = new HashMap<>();

0 commit comments

Comments
 (0)