in vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/PackageTypeValidator.java [221:281]
public Collection<ValidationMessage> validate(@NotNull PackageProperties properties) {
PackageType packageType = properties.getPackageType();
if (packageType == null) {
return Collections.singleton(new ValidationMessage(severityForNoPackageType, MESSAGE_NO_PACKAGE_TYPE_SET));
}
Collection<ValidationMessage> messages = new LinkedList<>();
// is sub package?
if (containerValidationContext != null) {
messages.add(new ValidationMessage(ValidationMessageSeverity.DEBUG, "Found sub package"));
ValidationMessage message = validateSubPackageType(properties.getPackageType(),
containerValidationContext.getProperties().getPackageType());
if (message != null) {
messages.add(message);
}
}
switch (packageType) {
case APPLICATION:
// must not contain hooks (this detects external hooks)
if (!properties.getExternalHooks().isEmpty() && !allowInstallHooksInApplicationPackages) {
messages.add(new ValidationMessage(severity,
String.format(Locale.ENGLISH, MESSAGE_PACKAGE_HOOKS, properties.getPackageType(), properties.getExternalHooks())));
}
if (prohibitImmutableContent) {
messages.add(new ValidationMessage(severity,
String.format(Locale.ENGLISH, MESSAGE_PROHIBITED_IMMUTABLE_PACKAGE_TYPE, properties.getPackageType())));
}
break;
case CONTENT:
if (prohibitMutableContent) {
messages.add(new ValidationMessage(severity,
String.format(Locale.ENGLISH, MESSAGE_PROHIBITED_MUTABLE_PACKAGE_TYPE, properties.getPackageType())));
}
break;
case CONTAINER:
// no dependencies
if (properties.getDependencies() != null && properties.getDependencies().length > 0) {
messages.add(new ValidationMessage(severity,
String.format(Locale.ENGLISH, MESSAGE_DEPENDENCY, properties.getPackageType(), StringUtils.join(properties.getDependencies()))));
}
if (prohibitImmutableContent) {
messages.add(new ValidationMessage(ValidationMessageSeverity.ERROR,
String.format(Locale.ENGLISH, MESSAGE_PROHIBITED_IMMUTABLE_PACKAGE_TYPE, properties.getPackageType())));
}
break;
case MIXED:
messages.add(
new ValidationMessage(severityForLegacyType, String.format(Locale.ENGLISH, MESSAGE_LEGACY_TYPE, properties.getPackageType())));
if (prohibitImmutableContent) {
messages.add(new ValidationMessage(ValidationMessageSeverity.ERROR,
String.format(Locale.ENGLISH, MESSAGE_PROHIBITED_IMMUTABLE_PACKAGE_TYPE, properties.getPackageType())));
}
if (prohibitMutableContent) {
messages.add(new ValidationMessage(ValidationMessageSeverity.ERROR,
String.format(Locale.ENGLISH, MESSAGE_PROHIBITED_MUTABLE_PACKAGE_TYPE, properties.getPackageType())));
}
break;
}
return messages;
}