test_class.declarator: parentContainerContext
test_class.modifier: @Mock
test_class.original_string: @Mock
      ValidationContext parentContainerContext;
test_class.type: ValidationContext
test_class.var_name: parentContainerContext
test_class.declarator: parentContainerProperties
test_class.modifier: @Mock
test_class.original_string: @Mock
      PackageProperties parentContainerProperties;
test_class.type: PackageProperties
test_class.var_name: parentContainerProperties
test_class.declarator: filter
test_class.modifier: @Mock
test_class.original_string: @Mock
      WorkspaceFilter filter;
test_class.type: WorkspaceFilter
test_class.var_name: filter
test_class.declarator: properties
test_class.modifier: @Mock
test_class.original_string: @Mock
      PackageProperties properties;
test_class.type: PackageProperties
test_class.var_name: properties
test_class.declarator: validator
test_class.modifier: private
test_class.original_string: private PackageTypeValidator validator;
test_class.type: PackageTypeValidator
test_class.var_name: validator
test_class.file: vault-validation/src/test/java/org/apache/jackrabbit/vault/validation/spi/impl/PackageTypeValidatorTest.java
test_class.identifier: PackageTypeValidatorTest
test_case.body: @Test
      public void testApplicationPackageType() throws IOException, ConfigurationException {
          validator = new PackageTypeValidator(filter, ValidationMessageSeverity.ERROR, ValidationMessageSeverity.WARN, ValidationMessageSeverity.INFO, false, false, false, PackageType.APPLICATION, PackageTypeValidatorFactory.DEFAULT_JCR_INSTALLER_NODE_PATH_REGEX, PackageTypeValidatorFactory.DEFAULT_ADDITIONAL_JCR_INSTALLER_FILE_NODE_PATH_REGEX, null);
          Assert.assertThat(validator.validate(new NodeContextImpl("/apps/some/script", Paths.get(""), Paths.get(""))), AnyValidationMessageMatcher.noValidationInCollection());
          Assert.assertThat(validator.validate(new NodeContextImpl("/libs",  Paths.get(""), Paths.get(""))), AnyValidationMessageMatcher.noValidationInCollection());
          
          ValidationExecutorTest.assertViolation(validator.validate(new NodeContextImpl("/content/some/node",  Paths.get(""), Paths.get(""))), new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_NO_APP_CONTENT_FOUND, PackageType.APPLICATION, "/content/some/node")));
          ValidationExecutorTest.assertViolation(validator.validate(new NodeContextImpl("/etc/something",  Paths.get(""), Paths.get(""))), new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_NO_APP_CONTENT_FOUND, PackageType.APPLICATION, "/etc/something")));
          ValidationExecutorTest.assertViolation(validator.validate(new NodeContextImpl("/conf/something",  Paths.get(""), Paths.get(""))), new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_NO_APP_CONTENT_FOUND, PackageType.APPLICATION, "/conf/something")));
          
          // no bundles/sub packages
          ValidationExecutorTest.assertViolation(validator.validate(new NodeContextImpl("/apps/install/mybundle.jar", Paths.get(""), Paths.get(""))), new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_OSGI_BUNDLE_OR_CONFIG, PackageType.APPLICATION, "/apps/install/mybundle.jar")));
          ValidationExecutorTest.assertViolation(validator.validate(new NodeContextImpl("/apps/install/config.cfg", Paths.get(""), Paths.get(""))), new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_OSGI_BUNDLE_OR_CONFIG, PackageType.APPLICATION, "/apps/install/config.cfg")));
          
          // no hooks
          Mockito.when(properties.getPackageType()).thenReturn(PackageType.APPLICATION);
          Assert.assertThat(validator.validate(properties), AnyValidationMessageMatcher.noValidationInCollection());
          // with hooks
          Map<String, String> hooks = Collections.singletonMap("key", "com.example.ExtenalHook");
          Mockito.when(properties.getExternalHooks()).thenReturn(hooks);
          ValidationExecutorTest.assertViolation(validator.validate(properties), new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_PACKAGE_HOOKS, PackageType.APPLICATION, hooks)));
          
          // with regular filter
          DefaultWorkspaceFilter filter = new DefaultWorkspaceFilter();
          try (InputStream input = this.getClass().getResourceAsStream("/simple-filter.xml")) {
              filter.load(input);
          }
          Assert.assertThat(validator.validate(filter), AnyValidationMessageMatcher.noValidationInCollection());
          // with filters with include/exclude
          try (InputStream input = this.getClass().getResourceAsStream("/filter.xml")) {
              filter.load(input);
          }
          ValidationExecutorTest.assertViolation(validator.validate(filter), new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_FILTER_HAS_INCLUDE_EXCLUDES, PackageType.APPLICATION)));
          
          // validate sling:OsgiConfig node
          DocViewNode node = new DocViewNode("someconfigpid", "someconfigpid", null, Collections.emptyMap(), null, "sling:OsgiConfig");
          Assert.assertThat(validator.validate(new NodeContextImpl("/apps/config/someconfigpid", Paths.get(""), Paths.get(""))), AnyValidationMessageMatcher.noValidationInCollection());
          ValidationExecutorTest.assertViolation(
                  validator.validate(node, "/apps/config/someconfigpid", Paths.get(""), true),
                  new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_OSGI_BUNDLE_OR_CONFIG, PackageType.APPLICATION, "/apps/config/someconfigpid")));
          
          // validate sub packages of type Content
          Mockito.when(parentContainerProperties.getPackageType()).thenReturn(PackageType.APPLICATION);
          Mockito.when(properties.getPackageType()).thenReturn(PackageType.CONTENT);
          PackageTypeValidator subPackageValidator = new PackageTypeValidator(filter, ValidationMessageSeverity.ERROR, ValidationMessageSeverity.WARN, ValidationMessageSeverity.INFO, false, false, false, PackageType.CONTENT, PackageTypeValidatorFactory.DEFAULT_JCR_INSTALLER_NODE_PATH_REGEX, PackageTypeValidatorFactory.DEFAULT_ADDITIONAL_JCR_INSTALLER_FILE_NODE_PATH_REGEX, parentContainerContext);
          ValidationExecutorTest.assertViolation(subPackageValidator.validate(properties), new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_UNSUPPORTED_SUB_PACKAGE, PackageType.APPLICATION)));
          // validate sub packages of type Application
          subPackageValidator = new PackageTypeValidator(filter, ValidationMessageSeverity.ERROR, ValidationMessageSeverity.WARN, ValidationMessageSeverity.INFO, false, false, false, PackageType.CONTENT, PackageTypeValidatorFactory.DEFAULT_JCR_INSTALLER_NODE_PATH_REGEX, PackageTypeValidatorFactory.DEFAULT_ADDITIONAL_JCR_INSTALLER_FILE_NODE_PATH_REGEX, parentContainerContext);
          Mockito.when(properties.getPackageType()).thenReturn(PackageType.APPLICATION);
          Mockito.when(properties.getExternalHooks()).thenReturn(Collections.emptyMap());
          ValidationExecutorTest.assertViolation(subPackageValidator.validate(properties), new ValidationMessage(ValidationMessageSeverity.ERROR, String.format(PackageTypeValidator.MESSAGE_UNSUPPORTED_SUB_PACKAGE, PackageType.APPLICATION)));
      }
test_case.class_method_signature: PackageTypeValidatorTest.testApplicationPackageType()
test_case.full_signature: @Test public void testApplicationPackageType()
test_case.identifier: testApplicationPackageType
test_case.invocations: assertThat validate get get noValidationInCollection assertThat validate get get noValidationInCollection assertViolation validate get get format assertViolation validate get get format assertViolation validate get get format assertViolation validate get get format assertViolation validate get get format thenReturn when getPackageType assertThat validate noValidationInCollection singletonMap thenReturn when getExternalHooks assertViolation validate format getResourceAsStream getClass load assertThat validate noValidationInCollection getResourceAsStream getClass load assertViolation validate format emptyMap assertThat validate get get noValidationInCollection assertViolation validate get format thenReturn when getPackageType thenReturn when getPackageType assertViolation validate format thenReturn when getPackageType thenReturn when getExternalHooks emptyMap assertViolation validate format
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testApplicationPackageType()
focal_class.declarator: MESSAGE_FILTER_HAS_INCLUDE_EXCLUDES = "Package of type '%s' is not supposed to contain includes/excludes below any of its filters!"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_FILTER_HAS_INCLUDE_EXCLUDES = "Package of type '%s' is not supposed to contain includes/excludes below any of its filters!";
focal_class.type: String
focal_class.var_name: MESSAGE_FILTER_HAS_INCLUDE_EXCLUDES
focal_class.declarator: MESSAGE_UNSUPPORTED_SUB_PACKAGE_OF_TYPE = "Package of type '%s' must only contain sub packages of type '%s' but found sub package of type '%s'!"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_UNSUPPORTED_SUB_PACKAGE_OF_TYPE = "Package of type '%s' must only contain sub packages of type '%s' but found sub package of type '%s'!";
focal_class.type: String
focal_class.var_name: MESSAGE_UNSUPPORTED_SUB_PACKAGE_OF_TYPE
focal_class.declarator: MESSAGE_UNSUPPORTED_SUB_PACKAGE = "Package of type '%s' is not supposed to contain any sub packages!"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_UNSUPPORTED_SUB_PACKAGE = "Package of type '%s' is not supposed to contain any sub packages!";
focal_class.type: String
focal_class.var_name: MESSAGE_UNSUPPORTED_SUB_PACKAGE
focal_class.declarator: MESSAGE_DEPENDENCY = "Package of type '%s' must not have package dependencies but found dependencies '%s'!"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_DEPENDENCY = "Package of type '%s' must not have package dependencies but found dependencies '%s'!";
focal_class.type: String
focal_class.var_name: MESSAGE_DEPENDENCY
focal_class.declarator: MESSAGE_LEGACY_TYPE = "Package of type '%s' is legacy. Use one of the other types instead!"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_LEGACY_TYPE = "Package of type '%s' is legacy. Use one of the other types instead!";
focal_class.type: String
focal_class.var_name: MESSAGE_LEGACY_TYPE
focal_class.declarator: MESSAGE_PACKAGE_HOOKS = "Package of type '%s' must not contain package hooks but has '%s'!"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_PACKAGE_HOOKS = "Package of type '%s' must not contain package hooks but has '%s'!";
focal_class.type: String
focal_class.var_name: MESSAGE_PACKAGE_HOOKS
focal_class.declarator: MESSAGE_NO_PACKAGE_TYPE_SET = "No package type set, make sure that property 'packageType' is set in the properties.xml!"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_NO_PACKAGE_TYPE_SET = "No package type set, make sure that property 'packageType' is set in the properties.xml!";
focal_class.type: String
focal_class.var_name: MESSAGE_NO_PACKAGE_TYPE_SET
focal_class.declarator: MESSAGE_OSGI_BUNDLE_OR_CONFIG = "Package of type '%s' is not supposed to contain OSGi bundles or configurations!"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_OSGI_BUNDLE_OR_CONFIG = "Package of type '%s' is not supposed to contain OSGi bundles or configurations!";
focal_class.type: String
focal_class.var_name: MESSAGE_OSGI_BUNDLE_OR_CONFIG
focal_class.declarator: MESSAGE_NO_OSGI_BUNDLE_OR_CONFIG_OR_SUB_PACKAGE = "Package of type '%s' is not supposed to contain anything but OSGi bundles/configurations and sub packages!"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_NO_OSGI_BUNDLE_OR_CONFIG_OR_SUB_PACKAGE = "Package of type '%s' is not supposed to contain anything but OSGi bundles/configurations and sub packages!";
focal_class.type: String
focal_class.var_name: MESSAGE_NO_OSGI_BUNDLE_OR_CONFIG_OR_SUB_PACKAGE
focal_class.declarator: MESSAGE_APP_CONTENT = "Package of type '%s' is not supposed to contain content inside '/libs' and '/apps'!"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_APP_CONTENT = "Package of type '%s' is not supposed to contain content inside '/libs' and '/apps'!";
focal_class.type: String
focal_class.var_name: MESSAGE_APP_CONTENT
focal_class.declarator: MESSAGE_NO_APP_CONTENT_FOUND = "Package of type '%s' is not supposed to contain content outside '/libs' and '/apps'!"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_NO_APP_CONTENT_FOUND = "Package of type '%s' is not supposed to contain content outside '/libs' and '/apps'!";
focal_class.type: String
focal_class.var_name: MESSAGE_NO_APP_CONTENT_FOUND
focal_class.declarator: MESSAGE_INDEX_DEFINITIONS = "Package of type '%s' is not supposed to contain Oak index definitions but has 'allowIndexDefinitions' set to true."
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_INDEX_DEFINITIONS = "Package of type '%s' is not supposed to contain Oak index definitions but has 'allowIndexDefinitions' set to true.";
focal_class.type: String
focal_class.var_name: MESSAGE_INDEX_DEFINITIONS
focal_class.declarator: MESSAGE_PROHIBITED_MUTABLE_PACKAGE_TYPE = "All mutable package types are prohibited and this package is of mutable type '%s'"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_PROHIBITED_MUTABLE_PACKAGE_TYPE = "All mutable package types are prohibited and this package is of mutable type '%s'";
focal_class.type: String
focal_class.var_name: MESSAGE_PROHIBITED_MUTABLE_PACKAGE_TYPE
focal_class.declarator: MESSAGE_PROHIBITED_IMMUTABLE_PACKAGE_TYPE = "All mutable package types are prohibited and this package is of mutable type '%s'"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String MESSAGE_PROHIBITED_IMMUTABLE_PACKAGE_TYPE = "All mutable package types are prohibited and this package is of mutable type '%s'";
focal_class.type: String
focal_class.var_name: MESSAGE_PROHIBITED_IMMUTABLE_PACKAGE_TYPE
focal_class.declarator: SLING_OSGI_CONFIG = "sling:OsgiConfig"
focal_class.modifier: protected static final
focal_class.original_string: protected static final String SLING_OSGI_CONFIG = "sling:OsgiConfig";
focal_class.type: String
focal_class.var_name: SLING_OSGI_CONFIG
focal_class.declarator: PATH_HOOKS = Paths.get(Constants.VAULT_DIR, Constants.HOOKS_DIR)
focal_class.modifier: protected static final
focal_class.original_string: protected static final Path PATH_HOOKS = Paths.get(Constants.VAULT_DIR, Constants.HOOKS_DIR);
focal_class.type: Path
focal_class.var_name: PATH_HOOKS
focal_class.declarator: type
focal_class.modifier: private final @NotNull
focal_class.original_string: private final @NotNull PackageType type;
focal_class.type: PackageType
focal_class.var_name: type
focal_class.declarator: severity
focal_class.modifier: private final @NotNull
focal_class.original_string: private final @NotNull ValidationMessageSeverity severity;
focal_class.type: ValidationMessageSeverity
focal_class.var_name: severity
focal_class.declarator: severityForLegacyType
focal_class.modifier: private final @NotNull
focal_class.original_string: private final @NotNull ValidationMessageSeverity severityForLegacyType;
focal_class.type: ValidationMessageSeverity
focal_class.var_name: severityForLegacyType
focal_class.declarator: jcrInstallerNodePathRegex
focal_class.modifier: private final @NotNull
focal_class.original_string: private final @NotNull Pattern jcrInstallerNodePathRegex;
focal_class.type: Pattern
focal_class.var_name: jcrInstallerNodePathRegex
focal_class.declarator: additionalJcrInstallerFileNodePathRegex
focal_class.modifier: private final @NotNull
focal_class.original_string: private final @NotNull Pattern additionalJcrInstallerFileNodePathRegex;
focal_class.type: Pattern
focal_class.var_name: additionalJcrInstallerFileNodePathRegex
focal_class.declarator: containerValidationContext
focal_class.modifier: private final @Nullable
focal_class.original_string: private final @Nullable ValidationContext containerValidationContext;
focal_class.type: ValidationContext
focal_class.var_name: containerValidationContext
focal_class.declarator: severityForNoPackageType
focal_class.modifier: private final
focal_class.original_string: private final ValidationMessageSeverity severityForNoPackageType;
focal_class.type: ValidationMessageSeverity
focal_class.var_name: severityForNoPackageType
focal_class.declarator: prohibitMutableContent
focal_class.modifier: private final
focal_class.original_string: private final boolean prohibitMutableContent;
focal_class.type: boolean
focal_class.var_name: prohibitMutableContent
focal_class.declarator: prohibitImmutableContent
focal_class.modifier: private final
focal_class.original_string: private final boolean prohibitImmutableContent;
focal_class.type: boolean
focal_class.var_name: prohibitImmutableContent
focal_class.declarator: allowComplexFilterRulesInApplicationPackages
focal_class.modifier: private final
focal_class.original_string: private final boolean allowComplexFilterRulesInApplicationPackages;
focal_class.type: boolean
focal_class.var_name: allowComplexFilterRulesInApplicationPackages
focal_class.declarator: filter
focal_class.modifier: private final @NotNull
focal_class.original_string: private final @NotNull WorkspaceFilter filter;
focal_class.type: WorkspaceFilter
focal_class.var_name: filter
focal_class.declarator: validContainerNodePaths
focal_class.modifier: private
focal_class.original_string: private List<String> validContainerNodePaths;
focal_class.type: List<String>
focal_class.var_name: validContainerNodePaths
focal_class.declarator: potentiallyDisallowedContainerNodes
focal_class.modifier: private
focal_class.original_string: private List<NodeContext> potentiallyDisallowedContainerNodes;
focal_class.type: List<NodeContext>
focal_class.var_name: potentiallyDisallowedContainerNodes
focal_class.file: vault-validation/src/main/java/org/apache/jackrabbit/vault/validation/spi/impl/PackageTypeValidator.java
focal_class.identifier: PackageTypeValidator
focal_class.interfaces: implements NodePathValidator, FilterValidator, PropertiesValidator, MetaInfPathValidator, DocumentViewXmlValidator
focal_class.class_method_signature: PackageTypeValidator.PackageTypeValidator(@NotNull WorkspaceFilter workspaceFilter, @NotNull ValidationMessageSeverity severity,
              @NotNull ValidationMessageSeverity severityForNoPackageType, @NotNull ValidationMessageSeverity severityForLegacyType,
              boolean prohibitMutableContent, boolean prohibitImmutableContent, boolean allowComplexFilterRulesInApplicationPackages,
              @NotNull PackageType type, @NotNull Pattern jcrInstallerNodePathRegex, @NotNull Pattern additionalJcrInstallerFileNodePathRegex,
              @Nullable ValidationContext containerValidationContext)
focal_class.full_signature: public  PackageTypeValidator(@NotNull WorkspaceFilter workspaceFilter, @NotNull ValidationMessageSeverity severity,
              @NotNull ValidationMessageSeverity severityForNoPackageType, @NotNull ValidationMessageSeverity severityForLegacyType,
              boolean prohibitMutableContent, boolean prohibitImmutableContent, boolean allowComplexFilterRulesInApplicationPackages,
              @NotNull PackageType type, @NotNull Pattern jcrInstallerNodePathRegex, @NotNull Pattern additionalJcrInstallerFileNodePathRegex,
              @Nullable ValidationContext containerValidationContext)
focal_class.identifier: PackageTypeValidator
focal_class.modifiers: public
focal_class.parameters: (@NotNull WorkspaceFilter workspaceFilter, @NotNull ValidationMessageSeverity severity,
              @NotNull ValidationMessageSeverity severityForNoPackageType, @NotNull ValidationMessageSeverity severityForLegacyType,
              boolean prohibitMutableContent, boolean prohibitImmutableContent, boolean allowComplexFilterRulesInApplicationPackages,
              @NotNull PackageType type, @NotNull Pattern jcrInstallerNodePathRegex, @NotNull Pattern additionalJcrInstallerFileNodePathRegex,
              @Nullable ValidationContext containerValidationContext)
focal_class.signature:  PackageTypeValidator(@NotNull WorkspaceFilter workspaceFilter, @NotNull ValidationMessageSeverity severity,
              @NotNull ValidationMessageSeverity severityForNoPackageType, @NotNull ValidationMessageSeverity severityForLegacyType,
              boolean prohibitMutableContent, boolean prohibitImmutableContent, boolean allowComplexFilterRulesInApplicationPackages,
              @NotNull PackageType type, @NotNull Pattern jcrInstallerNodePathRegex, @NotNull Pattern additionalJcrInstallerFileNodePathRegex,
              @Nullable ValidationContext containerValidationContext)
focal_class.class_method_signature: PackageTypeValidator.isOsgiBundleOrConfiguration(String nodePath, boolean onlyFile)
focal_class.full_signature:  boolean isOsgiBundleOrConfiguration(String nodePath, boolean onlyFile)
focal_class.identifier: isOsgiBundleOrConfiguration
focal_class.parameters: (String nodePath, boolean onlyFile)
focal_class.return: boolean
focal_class.signature: boolean isOsgiBundleOrConfiguration(String nodePath, boolean onlyFile)
focal_class.class_method_signature: PackageTypeValidator.isSubPackage(String nodePath)
focal_class.full_signature: static boolean isSubPackage(String nodePath)
focal_class.identifier: isSubPackage
focal_class.modifiers: static
focal_class.parameters: (String nodePath)
focal_class.return: boolean
focal_class.signature: boolean isSubPackage(String nodePath)
focal_class.class_method_signature: PackageTypeValidator.isAppContent(String nodePath)
focal_class.full_signature: static boolean isAppContent(String nodePath)
focal_class.identifier: isAppContent
focal_class.modifiers: static
focal_class.parameters: (String nodePath)
focal_class.return: boolean
focal_class.signature: boolean isAppContent(String nodePath)
focal_class.class_method_signature: PackageTypeValidator.done()
focal_class.full_signature: @Override public @Nullable Collection<ValidationMessage> done()
focal_class.identifier: done
focal_class.modifiers: @Override public @Nullable
focal_class.parameters: ()
focal_class.return: Collection<ValidationMessage>
focal_class.signature: Collection<ValidationMessage> done()
focal_class.class_method_signature: PackageTypeValidator.validate(@NotNull NodeContext nodeContext)
focal_class.full_signature: @Override public @Nullable Collection<ValidationMessage> validate(@NotNull NodeContext nodeContext)
focal_class.identifier: validate
focal_class.modifiers: @Override public @Nullable
focal_class.parameters: (@NotNull NodeContext nodeContext)
focal_class.return: Collection<ValidationMessage>
focal_class.signature: Collection<ValidationMessage> validate(@NotNull NodeContext nodeContext)
focal_class.class_method_signature: PackageTypeValidator.validate(@NotNull WorkspaceFilter filter)
focal_class.full_signature: @Override public Collection<ValidationMessage> validate(@NotNull WorkspaceFilter filter)
focal_class.identifier: validate
focal_class.modifiers: @Override public
focal_class.parameters: (@NotNull WorkspaceFilter filter)
focal_class.return: Collection<ValidationMessage>
focal_class.signature: Collection<ValidationMessage> validate(@NotNull WorkspaceFilter filter)
focal_class.class_method_signature: PackageTypeValidator.validate(@NotNull PackageProperties properties)
focal_class.full_signature: @Override public Collection<ValidationMessage> validate(@NotNull PackageProperties properties)
focal_class.identifier: validate
focal_class.modifiers: @Override public
focal_class.parameters: (@NotNull PackageProperties properties)
focal_class.return: Collection<ValidationMessage>
focal_class.signature: Collection<ValidationMessage> validate(@NotNull PackageProperties properties)
focal_class.class_method_signature: PackageTypeValidator.hasIncludesOrExcludes(WorkspaceFilter filter)
focal_class.full_signature: static boolean hasIncludesOrExcludes(WorkspaceFilter filter)
focal_class.identifier: hasIncludesOrExcludes
focal_class.modifiers: static
focal_class.parameters: (WorkspaceFilter filter)
focal_class.return: boolean
focal_class.signature: boolean hasIncludesOrExcludes(WorkspaceFilter filter)
focal_class.class_method_signature: PackageTypeValidator.validateSubPackageType(PackageType packageType, @Nullable PackageType containerPackageType)
focal_class.full_signature: private ValidationMessage validateSubPackageType(PackageType packageType, @Nullable PackageType containerPackageType)
focal_class.identifier: validateSubPackageType
focal_class.modifiers: private
focal_class.parameters: (PackageType packageType, @Nullable PackageType containerPackageType)
focal_class.return: ValidationMessage
focal_class.signature: ValidationMessage validateSubPackageType(PackageType packageType, @Nullable PackageType containerPackageType)
focal_class.class_method_signature: PackageTypeValidator.validateMetaInfPath(@NotNull Path filePath, @NotNull Path basePath, boolean isFolder)
focal_class.full_signature: @Override public Collection<ValidationMessage> validateMetaInfPath(@NotNull Path filePath, @NotNull Path basePath, boolean isFolder)
focal_class.identifier: validateMetaInfPath
focal_class.modifiers: @Override public
focal_class.parameters: (@NotNull Path filePath, @NotNull Path basePath, boolean isFolder)
focal_class.return: Collection<ValidationMessage>
focal_class.signature: Collection<ValidationMessage> validateMetaInfPath(@NotNull Path filePath, @NotNull Path basePath, boolean isFolder)
focal_class.class_method_signature: PackageTypeValidator.validate(@NotNull DocViewNode node, @NotNull String nodePath,
              @NotNull Path filePath, boolean isRoot)
focal_class.full_signature: @Override public @Nullable Collection<ValidationMessage> validate(@NotNull DocViewNode node, @NotNull String nodePath,
              @NotNull Path filePath, boolean isRoot)
focal_class.identifier: validate
focal_class.modifiers: @Override public @Nullable
focal_class.parameters: (@NotNull DocViewNode node, @NotNull String nodePath,
              @NotNull Path filePath, boolean isRoot)
focal_class.return: Collection<ValidationMessage>
focal_class.signature: Collection<ValidationMessage> validate(@NotNull DocViewNode node, @NotNull String nodePath,
              @NotNull Path filePath, boolean isRoot)
focal_method.body: @Override
      public @Nullable Collection<ValidationMessage> validate(@NotNull NodeContext nodeContext) {
          // ignore uncovered nodePaths
          if (!filter.covers(nodeContext.getNodePath())) {
              return null;
          }
          Collection<ValidationMessage> messages = new LinkedList<>();
          switch (type) {
          case CONTENT:
              if (isAppContent(nodeContext.getNodePath())) {
                  messages.add(new ValidationMessage(severity, String.format(MESSAGE_APP_CONTENT, type)));
              }
              if (isOsgiBundleOrConfiguration(nodeContext.getNodePath(), true)) {
                  messages.add(new ValidationMessage(severity, String.format(MESSAGE_OSGI_BUNDLE_OR_CONFIG, type)));
              }
              break;
          case APPLICATION:
              if (!isAppContent(nodeContext.getNodePath())) {
                  messages.add(new ValidationMessage(severity, String.format(MESSAGE_NO_APP_CONTENT_FOUND, type)));
              }
              if (isOsgiBundleOrConfiguration(nodeContext.getNodePath(), true)) {
                  messages.add(new ValidationMessage(severity, String.format(MESSAGE_OSGI_BUNDLE_OR_CONFIG, type)));
              }
              // sub packages are detected via validate(Properties) on the sub package
              break;
          case CONTAINER:
              // sling:OsgiConfig
              if (isOsgiBundleOrConfiguration(nodeContext.getNodePath(), false)) {
                  validContainerNodePaths.add(nodeContext.getNodePath());
              }
              else if (isSubPackage(nodeContext.getNodePath())) {
                  validContainerNodePaths.add(nodeContext.getNodePath());
              } else {
                  // only potentially disallowed, as the node may be a parent of a sub package or osgi bundle, which is allowed as well
                  potentiallyDisallowedContainerNodes.add(nodeContext);
              }
              break;
          case MIXED:
              // no validations currently as most relaxed type
              break;
          }
          return messages;
      }
focal_method.class_method_signature: PackageTypeValidator.validate(@NotNull NodeContext nodeContext)
focal_method.full_signature: @Override public @Nullable Collection<ValidationMessage> validate(@NotNull NodeContext nodeContext)
focal_method.identifier: validate
focal_method.invocations: covers getNodePath isAppContent getNodePath add format isOsgiBundleOrConfiguration getNodePath add format isAppContent getNodePath add format isOsgiBundleOrConfiguration getNodePath add format isOsgiBundleOrConfiguration getNodePath add getNodePath isSubPackage getNodePath add getNodePath add
focal_method.modifiers: @Override public @Nullable
focal_method.parameters: (@NotNull NodeContext nodeContext)
focal_method.return: Collection<ValidationMessage>
focal_method.signature: Collection<ValidationMessage> validate(@NotNull NodeContext nodeContext)