Fix validator not allowing canonical resource extensions in bundles

This commit is contained in:
Grahame Grieve 2023-11-24 08:52:18 +11:00
parent 623760d887
commit 3b3ddd28b2
1 changed files with 11 additions and 2 deletions

View File

@ -2219,7 +2219,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
ok = true;
} else if (en.equals("Resource") && container.isResource()) {
ok = true;
} else if (en.equals("CanonicalResource") && VersionUtilities.getExtendedCanonicalResourceNames(context.getVersion()).contains(stack.getLiteralPath())) {
} else if (en.equals("CanonicalResource") && containsAny(VersionUtilities.getExtendedCanonicalResourceNames(context.getVersion()), plist)) {
ok = true;
} else if (hasElementName(plist, en) && pu == null) {
ok = true;
@ -2310,6 +2310,15 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
}
}
private boolean containsAny(Set<String> set, List<String> list) {
for (String p : list) {
if (set.contains(p)) {
return true;
}
}
return false;
}
private boolean hasElementName(List<String> plist, String en) {
String[] ep = en.split("\\.");
for (String s : plist) {
@ -2726,7 +2735,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
if (dok) {
try {
DateTimeType dt = new DateTimeType(e.primitiveValue());
if (isCoreDefinition(profile) || (context.hasExtension(ToolingExtensions.EXT_DATE_RULES) && ToolingExtensions.readStringExtension(context, ToolingExtensions.EXT_DATE_RULES).contains("year-valid"))) {
if (isCoreDefinition(profile) || !context.hasExtension(ToolingExtensions.EXT_DATE_RULES) || ToolingExtensions.readStringExtension(context, ToolingExtensions.EXT_DATE_RULES).contains("year-valid")) {
warning(errors, NO_RULE_DATE, IssueType.INVALID, e.line(), e.col(), path, yearIsValid(e.primitiveValue()), I18nConstants.TYPE_SPECIFIC_CHECKS_DT_DATETIME_REASONABLE, e.primitiveValue());
}
} catch (Exception ex) {