blob: 5dd51d4edf4858e1d8a47dc1187b8c49b55acf1f [file] [log] [blame]
// Copyright 2016 The Bazel Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.devtools.build.android.dexer;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableSet;
import java.util.zip.ZipEntry;
class ZipEntryPredicates {
public static Predicate<ZipEntry> isDirectory() {
return new Predicate<ZipEntry>() {
@Override
public boolean apply(ZipEntry input) {
return input.isDirectory();
}
};
}
public static Predicate<ZipEntry> suffixes(final String... suffixes) {
return new Predicate<ZipEntry>() {
@Override
public boolean apply(ZipEntry input) {
String filename = input.getName();
for (String suffix : suffixes) {
if (filename.endsWith(suffix)) {
return true;
}
}
return false;
}
};
}
public static Predicate<ZipEntry> classFileFilter(final ImmutableSet<String> classFileNames) {
return Predicates.compose(classFileNameFilter(classFileNames), zipEntry -> zipEntry.getName());
}
public static Predicate<String> classFileNameFilter(final ImmutableSet<String> classFileNames) {
return new Predicate<String>() {
@Override
public boolean apply(String filename) {
if (filename.endsWith(".class.dex")) {
// Chop off file suffix generated by DexBuilder
filename = filename.substring(0, filename.length() - ".dex".length());
}
return filename.endsWith(".class") && classFileNames.contains(filename);
}
};
}
private ZipEntryPredicates() {}
}