Treat unknown enum values in deed and rune JSON as parse failures
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7309159f83
commit
08d4bc2501
3 files changed
+11
-40
No files matched your search
+7
-23
@@ -84,8 +84,7 @@ public class CacheParserUtil {
|
||||
}
|
||||
|
||||
// Exact match on the cleaned name first, then upper case (ResourceType).
|
||||
// Unknown values are logged and returned as null so one bad value
|
||||
// doesn't drop the whole template.
|
||||
// Unknown values throw so the template fails to load.
|
||||
|
||||
public static <E extends Enum<E>> E readEnum(Class<E> enumClass, String value, int templateId, String fieldName) {
|
||||
|
||||
@@ -100,22 +99,16 @@ public class CacheParserUtil {
|
||||
try {
|
||||
return Enum.valueOf(enumClass, name.toUpperCase());
|
||||
} catch (IllegalArgumentException e) {
|
||||
Logger.error(templateId + ": " + fieldName + " has no " + enumClass.getSimpleName() + " for '" + value + "'");
|
||||
return null;
|
||||
throw new IllegalArgumentException(templateId + ": " + fieldName + " has no " + enumClass.getSimpleName() + " for '" + value + "'");
|
||||
}
|
||||
}
|
||||
|
||||
public static <E extends Enum<E>> EnumSet<E> readEnumSet(Class<E> enumClass, JSONArray valuesJson, int templateId, String fieldName) {
|
||||
|
||||
EnumSet<E> enumSet = EnumSet.noneOf(enumClass);
|
||||
E enumValue;
|
||||
|
||||
for (int i = 0; i < valuesJson.length(); i++) {
|
||||
enumValue = readEnum(enumClass, valuesJson.getString(i), templateId, fieldName);
|
||||
|
||||
if (enumValue != null)
|
||||
enumSet.add(enumValue);
|
||||
}
|
||||
for (int i = 0; i < valuesJson.length(); i++)
|
||||
enumSet.add(readEnum(enumClass, valuesJson.getString(i), templateId, fieldName));
|
||||
|
||||
return enumSet;
|
||||
}
|
||||
@@ -128,14 +121,10 @@ public class CacheParserUtil {
|
||||
|
||||
EnumMap<E, Integer> enumMap = new EnumMap<>(enumClass);
|
||||
JSONObject entry;
|
||||
E enumValue;
|
||||
|
||||
for (int i = 0; i < entriesJson.length(); i++) {
|
||||
entry = entriesJson.getJSONObject(i);
|
||||
enumValue = readEnum(enumClass, entry.getString(keyName), templateId, fieldName);
|
||||
|
||||
if (enumValue != null)
|
||||
enumMap.put(enumValue, entry.getInt(valueName));
|
||||
enumMap.put(readEnum(enumClass, entry.getString(keyName), templateId, fieldName), entry.getInt(valueName));
|
||||
}
|
||||
|
||||
return enumMap;
|
||||
@@ -162,14 +151,9 @@ public class CacheParserUtil {
|
||||
int templateId, String fieldName) {
|
||||
|
||||
EnumMap<E, Float> enumMap = new EnumMap<>(enumClass);
|
||||
E enumValue;
|
||||
|
||||
for (String key : mapJson.keySet()) {
|
||||
enumValue = readEnum(enumClass, key, templateId, fieldName);
|
||||
|
||||
if (enumValue != null)
|
||||
enumMap.put(enumValue, mapJson.getFloat(key));
|
||||
}
|
||||
for (String key : mapJson.keySet())
|
||||
enumMap.put(readEnum(enumClass, key, templateId, fieldName), mapJson.getFloat(key));
|
||||
|
||||
return enumMap;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user