private void processFeaturePackCopyArtifacts( FeaturePack featurePack, File outputDirectory, Set<String> filesProcessed, ArtifactFileResolver artifactFileResolver, File schemaOutputDirectory, boolean excludeDependencies) throws IOException { processCopyArtifacts( featurePack.getDescription().getCopyArtifacts(), featurePack.getArtifactResolver(), outputDirectory, filesProcessed, artifactFileResolver, schemaOutputDirectory); if (!excludeDependencies) { for (FeaturePack dependency : featurePack.getDependencies()) { processFeaturePackCopyArtifacts( dependency, outputDirectory, filesProcessed, artifactFileResolver, schemaOutputDirectory, excludeDependencies); } } }
private void processFeaturePackContents( FeaturePack featurePack, ServerProvisioningDescription.FeaturePack.ContentFilters contentFilters, File outputDirectory, Set<String> filesProcessed, boolean excludeDependencies) throws IOException { final int fileNameWithoutContentsStart = Locations.CONTENT.length() + 1; try (JarFile jar = new JarFile(featurePack.getFeaturePackFile())) { for (String contentFile : featurePack.getContentFiles()) { final String outputFile = contentFile.substring(fileNameWithoutContentsStart); boolean include = true; if (contentFilters != null) { include = contentFilters.isInclude(); for (FileFilter contentFilter : contentFilters.getFilters()) { if (contentFilter.matches(outputFile) && !contentFilter.isInclude()) { include = false; break; } } } if (!include) { getLog() .debugf( "Skipping feature pack %s filtered content file %s", featurePack.getFeaturePackFile(), outputFile); continue; } if (!filesProcessed.add(outputFile)) { getLog() .debugf( "Skipping already processed feature pack %s content file %s", featurePack.getFeaturePackFile(), outputFile); continue; } getLog() .debugf( "Adding feature pack %s content file %s", featurePack.getFeaturePackFile(), outputFile); FileUtils.extractFile(jar, contentFile, new java.io.File(outputDirectory, outputFile)); } } if (!excludeDependencies) { for (FeaturePack dependency : featurePack.getDependencies()) { processFeaturePackContents( dependency, contentFilters, outputDirectory, filesProcessed, excludeDependencies); } } }
private void processFeaturePackFilePermissions( FeaturePack featurePack, File outputDirectory, boolean excludeDependencies) throws IOException { final Path baseDir = Paths.get(outputDirectory.getAbsolutePath()); final List<FilePermission> filePermissions = featurePack.getDescription().getFilePermissions(); Files.walkFileTree( baseDir, new SimpleFileVisitor<Path>() { @Override public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { String relative = baseDir.relativize(dir).toString(); if (!OS_WINDOWS) { for (FilePermission perm : filePermissions) { if (perm.includeFile(relative)) { Files.setPosixFilePermissions(dir, perm.getPermission()); continue; } } } return FileVisitResult.CONTINUE; } @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { String relative = baseDir.relativize(file).toString(); if (!OS_WINDOWS) { for (FilePermission perm : filePermissions) { if (perm.includeFile(relative)) { Files.setPosixFilePermissions(file, perm.getPermission()); continue; } } } return FileVisitResult.CONTINUE; } }); if (!excludeDependencies) { for (FeaturePack dependency : featurePack.getDependencies()) { processFeaturePackFilePermissions(dependency, outputDirectory, excludeDependencies); } } }