private static void handleQualifiedContent( @NonNull ClassPath classPath, @NonNull QualifiedContent content, @Nullable List<String> baseFilter) { List<String> filter = baseFilter; if (!content.getContentTypes().contains(DefaultContentType.CLASSES)) { // if the content is not meant to contain classes, we ignore them // in case they are present. ImmutableList.Builder<String> builder = ImmutableList.builder(); if (filter != null) { builder.addAll(filter); } builder.add("!**.class"); filter = builder.build(); } else if (!content.getContentTypes().contains(DefaultContentType.RESOURCES)) { // if the content is not meant to contain resources, we ignore them // in case they are present (by accepting only classes.) filter = ImmutableList.of("**.class"); } inputJar(classPath, content.getFile(), filter); }
protected QualifiedContentImpl(@NonNull QualifiedContent qualifiedContent) { this.name = qualifiedContent.getName(); this.file = qualifiedContent.getFile(); this.contentTypes = qualifiedContent.getContentTypes(); this.scopes = qualifiedContent.getScopes(); }
/** * Tries to determine the output class file, for rewriting the given class file. * * <p>This will return {@link Optional#absent()} if the class is not part of the program to * shrink (e.g. comes from a platform JAR). */ @NonNull protected Optional<File> chooseOutputFile( @NonNull T klass, @NonNull File classFile, @NonNull Iterable<TransformInput> inputs, @NonNull TransformOutputProvider output) { String classFilePath = classFile.getAbsolutePath(); for (TransformInput input : inputs) { Iterable<QualifiedContent> directoriesAndJars = Iterables.concat(input.getDirectoryInputs(), input.getJarInputs()); for (QualifiedContent directoryOrJar : directoriesAndJars) { File file = directoryOrJar.getFile(); if (classFilePath.startsWith(file.getAbsolutePath())) { File outputDir = output.getContentLocation( FileUtils.getDirectoryNameForJar(file), directoryOrJar.getContentTypes(), directoryOrJar.getScopes(), Format.DIRECTORY); return Optional.of(new File(outputDir, mGraph.getClassName(klass) + ".class")); } } } return Optional.absent(); }
throw new UnsupportedOperationException("Unknown format readAll input " + input); File f = outputProvider.getContentLocation(input.getName(), input.getContentTypes(), input.getScopes(), format); if (!f.getParentFile().exists()) f.getParentFile().mkdirs();