diff options
author | Sadaf Ebrahimi <sadafebrahimi@google.com> | 2024-03-18 16:14:43 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-03-18 16:14:43 +0000 |
commit | b956aa205b341677038bd599a78bc8173b7b4bad (patch) | |
tree | 864c52fff91ada9d6a095df9ed49786356575bf6 /src/proguard/DataEntryReaderFactory.java | |
parent | ff9c0adb6dd6dc100776b29aca8bf7e8a8cf4969 (diff) | |
parent | 517437ecee41d115457a744f14c6aa0ed5006027 (diff) | |
download | proguard-b956aa205b341677038bd599a78bc8173b7b4bad.tar.gz |
Diffstat (limited to 'src/proguard/DataEntryReaderFactory.java')
-rw-r--r-- | src/proguard/DataEntryReaderFactory.java | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/src/proguard/DataEntryReaderFactory.java b/src/proguard/DataEntryReaderFactory.java deleted file mode 100644 index 57f3faa..0000000 --- a/src/proguard/DataEntryReaderFactory.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * ProGuard -- shrinking, optimization, obfuscation, and preverification - * of Java bytecode. - * - * Copyright (c) 2002-2014 Eric Lafortune (eric@graphics.cornell.edu) - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package proguard; - -import proguard.io.*; -import proguard.util.*; - -import java.util.List; - - -/** - * This class can create DataEntryReader instances based on class path entries. - * The readers will unwrap the input data entries from any jars, wars, ears, - * and zips, before passing them to a given reader. - * - * @author Eric Lafortune - */ -public class DataEntryReaderFactory -{ - /** - * Creates a DataEntryReader that can read the given class path entry. - * - * @param messagePrefix a prefix for messages that are printed out. - * @param classPathEntry the input class path entry. - * @param reader a data entry reader to which the reading of actual - * classes and resource files can be delegated. - * @return a DataEntryReader for reading the given class path entry. - */ - public static DataEntryReader createDataEntryReader(String messagePrefix, - ClassPathEntry classPathEntry, - DataEntryReader reader) - { - boolean isApk = classPathEntry.isApk(); - boolean isJar = classPathEntry.isJar(); - boolean isAar = classPathEntry.isAar(); - boolean isWar = classPathEntry.isWar(); - boolean isEar = classPathEntry.isEar(); - boolean isZip = classPathEntry.isZip(); - - List filter = classPathEntry.getFilter(); - List apkFilter = classPathEntry.getApkFilter(); - List jarFilter = classPathEntry.getJarFilter(); - List aarFilter = classPathEntry.getAarFilter(); - List warFilter = classPathEntry.getWarFilter(); - List earFilter = classPathEntry.getEarFilter(); - List zipFilter = classPathEntry.getZipFilter(); - - System.out.println(messagePrefix + - (isApk ? "apk" : - isJar ? "jar" : - isAar ? "aar" : - isWar ? "war" : - isEar ? "ear" : - isZip ? "zip" : - "directory") + - " [" + classPathEntry.getName() + "]" + - (filter != null || - apkFilter != null || - jarFilter != null || - aarFilter != null || - warFilter != null || - earFilter != null || - zipFilter != null ? " (filtered)" : "")); - - // Add a filter, if specified. - if (filter != null) - { - reader = new FilteredDataEntryReader( - new DataEntryNameFilter( - new ListParser(new FileNameParser()).parse(filter)), - reader); - } - - // Unzip any apks, if necessary. - reader = wrapInJarReader(reader, isApk, apkFilter, ".apk"); - if (!isApk) - { - // Unzip any jars, if necessary. - reader = wrapInJarReader(reader, isJar, jarFilter, ".jar"); - if (!isJar) - { - // Unzip any aars, if necessary. - reader = wrapInJarReader(reader, isAar, aarFilter, ".aar"); - if (!isAar) - { - // Unzip any wars, if necessary. - reader = wrapInJarReader(reader, isWar, warFilter, ".war"); - if (!isWar) - { - // Unzip any ears, if necessary. - reader = wrapInJarReader(reader, isEar, earFilter, ".ear"); - if (!isEar) - { - // Unzip any zips, if necessary. - reader = wrapInJarReader(reader, isZip, zipFilter, ".zip"); - } - } - } - } - } - - return reader; - } - - - /** - * Wraps the given DataEntryReader in a JarReader, filtering it if necessary. - */ - private static DataEntryReader wrapInJarReader(DataEntryReader reader, - boolean isJar, - List jarFilter, - String jarExtension) - { - // Unzip any jars, if necessary. - DataEntryReader jarReader = new JarReader(reader); - - if (isJar) - { - // Always unzip. - return jarReader; - } - else - { - // Add a filter, if specified. - if (jarFilter != null) - { - jarReader = new FilteredDataEntryReader( - new DataEntryNameFilter( - new ListParser(new FileNameParser()).parse(jarFilter)), - jarReader); - } - - // Only unzip the right type of jars. - return new FilteredDataEntryReader( - new DataEntryNameFilter( - new ExtensionMatcher(jarExtension)), - jarReader, - reader); - } - } -} |