summaryrefslogtreecommitdiffstats
path: root/jack/src
diff options
context:
space:
mode:
authormikaelpeltier <mikaelpeltier@google.com>2014-11-12 10:44:19 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-11-12 10:44:19 +0000
commit857eccf2866f32268038b836fd4f4c9205cb7680 (patch)
tree8cf68a7dfa978ff85bbed0ed56d0eef64cdbde15 /jack/src
parent824c2140f680c61ba846e809499450a7a85e6f0b (diff)
parent7dafd6e62e1f2062ae31c6ecbe0361de07d3170b (diff)
downloadtoolchain_jack-857eccf2866f32268038b836fd4f4c9205cb7680.zip
toolchain_jack-857eccf2866f32268038b836fd4f4c9205cb7680.tar.gz
toolchain_jack-857eccf2866f32268038b836fd4f4c9205cb7680.tar.bz2
Merge "Replace BinaryKind by FileType into library" into ub-jack
Diffstat (limited to 'jack/src')
-rw-r--r--jack/src/com/android/jack/Jack.java4
-rw-r--r--jack/src/com/android/jack/backend/dex/DexFileWriter.java4
-rw-r--r--jack/src/com/android/jack/backend/dex/DexWriter.java4
-rw-r--r--jack/src/com/android/jack/backend/dex/DexWritingTool.java15
-rw-r--r--jack/src/com/android/jack/backend/dex/IntermediateDexPerTypeWriter.java11
-rw-r--r--jack/src/com/android/jack/backend/dex/SingleDexWritingTool.java23
-rw-r--r--jack/src/com/android/jack/backend/jayce/JayceFileImporter.java4
-rw-r--r--jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java3
-rw-r--r--jack/src/com/android/jack/experimental/incremental/JackIncremental.java4
-rw-r--r--jack/src/com/android/jack/ir/ast/JSession.java10
-rw-r--r--jack/src/com/android/jack/library/BinaryKind.java61
-rw-r--r--jack/src/com/android/jack/library/CommonJackLibrary.java6
-rw-r--r--jack/src/com/android/jack/library/FileType.java95
-rw-r--r--jack/src/com/android/jack/library/FileTypeDoesNotExistException.java (renamed from jack/src/com/android/jack/library/BinaryDoesNotExistException.java)17
-rw-r--r--jack/src/com/android/jack/library/InputJackLibrary.java34
-rw-r--r--jack/src/com/android/jack/library/InputLibrary.java12
-rw-r--r--jack/src/com/android/jack/library/JackLibrary.java3
-rw-r--r--jack/src/com/android/jack/library/OutputLibrary.java6
-rw-r--r--jack/src/com/android/jack/library/UnsupportedFileTypeException.java (renamed from jack/src/com/android/jack/library/NotBinaryException.java)8
-rw-r--r--jack/src/com/android/jack/library/v0000/InputJackLibraryImpl.java70
-rw-r--r--jack/src/com/android/jack/library/v0000/OutputJackLibraryImpl.java21
-rw-r--r--jack/src/com/android/jack/library/v0001/InputJackLibraryImpl.java69
-rw-r--r--jack/src/com/android/jack/library/v0001/OutputJackLibraryImpl.java22
-rw-r--r--jack/src/com/android/jack/scheduling/adapter/ExcludeTypeFromLibWithBinaryAdapter.java2
24 files changed, 249 insertions, 259 deletions
diff --git a/jack/src/com/android/jack/Jack.java b/jack/src/com/android/jack/Jack.java
index 9114675..1b5ce13 100644
--- a/jack/src/com/android/jack/Jack.java
+++ b/jack/src/com/android/jack/Jack.java
@@ -83,7 +83,7 @@ import com.android.jack.ir.formatter.TypePackageAndMethodFormatter;
import com.android.jack.ir.formatter.UserFriendlyFormatter;
import com.android.jack.ir.sourceinfo.SourceInfoCreation;
import com.android.jack.jayce.JaycePackageLoader;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
import com.android.jack.library.InputJackLibrary;
import com.android.jack.library.JackLibraryFactory;
import com.android.jack.library.LibraryReadingException;
@@ -541,7 +541,7 @@ public abstract class Jack {
if (options.out != null || options.outZip != null) {
request.addProduction(IntermediateDexProduct.class);
request.addProduction(DexFileProduct.class);
- session.addGeneratedBinaryKind(BinaryKind.DEX);
+ session.addGeneratedFileType(FileType.DEX);
} else {
assert options.jayceOutDir != null || options.jayceOutZip != null;
request.addProduction(JayceFormatProduct.class);
diff --git a/jack/src/com/android/jack/backend/dex/DexFileWriter.java b/jack/src/com/android/jack/backend/dex/DexFileWriter.java
index e2776cf..decf0c9 100644
--- a/jack/src/com/android/jack/backend/dex/DexFileWriter.java
+++ b/jack/src/com/android/jack/backend/dex/DexFileWriter.java
@@ -19,7 +19,7 @@ package com.android.jack.backend.dex;
import com.android.jack.JackAbortException;
import com.android.jack.Options;
import com.android.jack.ir.ast.JSession;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
import com.android.jack.reporting.Reporter.Severity;
import com.android.jack.scheduling.marker.ClassDefItemMarker;
import com.android.sched.item.Description;
@@ -51,7 +51,7 @@ public class DexFileWriter extends DexWriter implements RunnableSchedulable<JSes
static final String DEX_PREFIX = "classes";
@Nonnull
- public static final String DEX_FILENAME = DEX_PREFIX + BinaryKind.DEX.getFileExtension();
+ public static final String DEX_FILENAME = DEX_PREFIX + FileType.DEX.getFileExtension();
@Nonnull
public static final
diff --git a/jack/src/com/android/jack/backend/dex/DexWriter.java b/jack/src/com/android/jack/backend/dex/DexWriter.java
index 67fbcaf..5c7d71d 100644
--- a/jack/src/com/android/jack/backend/dex/DexWriter.java
+++ b/jack/src/com/android/jack/backend/dex/DexWriter.java
@@ -18,7 +18,7 @@ package com.android.jack.backend.dex;
import com.android.jack.ir.ast.JDefinedClassOrInterface;
import com.android.jack.ir.formatter.BinaryQualifiedNameFormatter;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
import com.android.sched.vfs.VPath;
import javax.annotation.Nonnull;
@@ -31,6 +31,6 @@ public abstract class DexWriter {
@Nonnull
static VPath getFilePath(@Nonnull JDefinedClassOrInterface type) {
return new VPath(BinaryQualifiedNameFormatter.getFormatter().getName(type)
- + BinaryKind.DEX.getFileExtension(), '/');
+ + FileType.DEX.getFileExtension(), '/');
}
}
diff --git a/jack/src/com/android/jack/backend/dex/DexWritingTool.java b/jack/src/com/android/jack/backend/dex/DexWritingTool.java
index fffbe25..0f7042c 100644
--- a/jack/src/com/android/jack/backend/dex/DexWritingTool.java
+++ b/jack/src/com/android/jack/backend/dex/DexWritingTool.java
@@ -24,8 +24,8 @@ import com.android.jack.dx.dex.file.DexFile;
import com.android.jack.dx.io.DexBuffer;
import com.android.jack.ir.ast.JDefinedClassOrInterface;
import com.android.jack.ir.formatter.BinaryQualifiedNameFormatter;
-import com.android.jack.library.BinaryDoesNotExistException;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
+import com.android.jack.library.FileTypeDoesNotExistException;
import com.android.jack.library.InputLibrary;
import com.android.jack.library.LibraryFormatException;
import com.android.jack.library.TypeInInputLibraryLocation;
@@ -113,7 +113,7 @@ public abstract class DexWritingTool {
if (dexCount == 1) {
dexName = DexFileWriter.DEX_FILENAME;
} else {
- dexName = DexFileWriter.DEX_PREFIX + dexCount + BinaryKind.DEX.getFileExtension();
+ dexName = DexFileWriter.DEX_PREFIX + dexCount + FileType.DEX.getFileExtension();
}
try {
return outputVDir.createOutputVFile(new VPath(dexName, '/'));
@@ -131,12 +131,11 @@ public abstract class DexWritingTool {
if (loc instanceof TypeInInputLibraryLocation) {
InputLibrary inputLibrary =
((TypeInInputLibraryLocation) loc).getInputLibraryLocation().getInputLibrary();
- if (inputLibrary.hasBinary(BinaryKind.DEX)) {
+ if (inputLibrary.containsFileType(FileType.DEX)) {
try {
- inputVFile = inputLibrary.getBinary(
- new VPath(BinaryQualifiedNameFormatter.getFormatter().getName(type), '/'),
- BinaryKind.DEX);
- } catch (BinaryDoesNotExistException e) {
+ inputVFile = inputLibrary.getFile(FileType.DEX,
+ new VPath(BinaryQualifiedNameFormatter.getFormatter().getName(type), '/'));
+ } catch (FileTypeDoesNotExistException e) {
logger.log(Level.SEVERE,
"Library " + inputLibrary.getLocation().getDescription() + " is invalid",
e);
diff --git a/jack/src/com/android/jack/backend/dex/IntermediateDexPerTypeWriter.java b/jack/src/com/android/jack/backend/dex/IntermediateDexPerTypeWriter.java
index 0312a94..1a9690e 100644
--- a/jack/src/com/android/jack/backend/dex/IntermediateDexPerTypeWriter.java
+++ b/jack/src/com/android/jack/backend/dex/IntermediateDexPerTypeWriter.java
@@ -25,7 +25,7 @@ import com.android.jack.dx.dex.file.DexFile;
import com.android.jack.experimental.incremental.JackIncremental;
import com.android.jack.ir.ast.JDefinedClassOrInterface;
import com.android.jack.ir.formatter.BinaryQualifiedNameFormatter;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
import com.android.jack.library.OutputLibrary;
import com.android.jack.library.TypeInInputLibraryLocation;
import com.android.jack.scheduling.marker.ClassDefItemMarker;
@@ -71,8 +71,8 @@ public class IntermediateDexPerTypeWriter extends DexWriter implements
@Override
public void run(@Nonnull JDefinedClassOrInterface type) throws Exception {
assert !(type.getLocation() instanceof TypeInInputLibraryLocation
- && !((TypeInInputLibraryLocation) type.getLocation()).getInputLibraryLocation()
- .getInputLibrary().getBinaryKinds().isEmpty());
+ && ((TypeInInputLibraryLocation) type.getLocation()).getInputLibraryLocation()
+ .getInputLibrary().containsFileType(FileType.DEX));
ClassDefItemMarker cdiMarker = type.getMarker(ClassDefItemMarker.class);
assert cdiMarker != null;
@@ -91,9 +91,8 @@ public class IntermediateDexPerTypeWriter extends DexWriter implements
// incremental support will be updated and Intermediate_dex_dir usage was cleaned.
if (outputLibrary != null && !isIncrementalMode && intermediateDexDir == null) {
assert generateDexFile || intermediateDexDir == null;
- vFile = outputLibrary.getBinaryOutputVFile(
- new VPath(BinaryQualifiedNameFormatter.getFormatter().getName(type), '/'),
- BinaryKind.DEX);
+ vFile = outputLibrary.createFile(FileType.DEX,
+ new VPath(BinaryQualifiedNameFormatter.getFormatter().getName(type), '/'));
} else {
assert intermediateDexDir != null;
vFile = intermediateDexDir.createOutputVFile(getFilePath(type));
diff --git a/jack/src/com/android/jack/backend/dex/SingleDexWritingTool.java b/jack/src/com/android/jack/backend/dex/SingleDexWritingTool.java
index 20af242..5652c05 100644
--- a/jack/src/com/android/jack/backend/dex/SingleDexWritingTool.java
+++ b/jack/src/com/android/jack/backend/dex/SingleDexWritingTool.java
@@ -16,9 +16,11 @@
package com.android.jack.backend.dex;
+import com.google.common.collect.Iterators;
+
import com.android.jack.Jack;
import com.android.jack.ir.ast.JDefinedClassOrInterface;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
import com.android.jack.library.InputLibrary;
import com.android.jack.library.TypeInInputLibraryLocation;
import com.android.jack.tools.merger.JackMerger;
@@ -33,6 +35,7 @@ import com.android.sched.vfs.OutputVDir;
import com.android.sched.vfs.OutputVFile;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import javax.annotation.Nonnull;
@@ -51,11 +54,10 @@ public class SingleDexWritingTool extends DexWritingTool {
OutputVFile outputDex = getOutputDex(outputVDir);
List<InputVFile> dexList = new ArrayList<InputVFile>();
getAllDexFilesFromDir(getIntermediateDexDir(), dexList);
- getAllDexFilesFromLib(dexList);
-
- for (InputVFile currentDex : dexList) {
+ Iterator<InputVFile> inputVFileIt = getAllDexFilesFromLib(dexList.iterator());
+ while (inputVFileIt.hasNext()) {
try {
- mergeDex(merger, currentDex);
+ mergeDex(merger, inputVFileIt.next());
} catch (MergingOverflowException e) {
throw new DexWritingException(new SingleDexOverflowException(e));
}
@@ -63,7 +65,8 @@ public class SingleDexWritingTool extends DexWritingTool {
finishMerge(merger, outputDex);
}
- private void getAllDexFilesFromLib(@Nonnull List<InputVFile> dexFiles) {
+ private Iterator<InputVFile> getAllDexFilesFromLib(@Nonnull Iterator<InputVFile> inputVFileIt) {
+ Iterator<InputVFile> newInputVFileIt = inputVFileIt;
List<InputLibrary> librariesDone = new ArrayList<InputLibrary>();
for (JDefinedClassOrInterface jdcoi : Jack.getSession().getTypesToEmit()) {
Location loc = jdcoi.getLocation();
@@ -71,13 +74,15 @@ public class SingleDexWritingTool extends DexWritingTool {
InputLibrary inputLibrary =
((TypeInInputLibraryLocation) loc).getInputLibraryLocation().getInputLibrary();
if (!librariesDone.contains(inputLibrary)) {
- if (inputLibrary.hasBinary(BinaryKind.DEX)) {
- dexFiles.addAll(inputLibrary.getBinaries(BinaryKind.DEX));
+ if (inputLibrary.containsFileType(FileType.DEX)) {
+ newInputVFileIt =
+ Iterators.concat(newInputVFileIt, inputLibrary.iterator(FileType.DEX));
}
librariesDone.add(inputLibrary);
}
}
}
+ return (newInputVFileIt);
}
private void getAllDexFilesFromDir(@Nonnull InputVDir dexFileVDir,
@@ -85,7 +90,7 @@ public class SingleDexWritingTool extends DexWritingTool {
for (InputVElement subFile : dexFileVDir.list()) {
if (subFile.isVDir()) {
getAllDexFilesFromDir((InputVDir) subFile, dexFiles);
- } else if (BinaryKind.DEX.isBinaryFile((InputVFile) subFile)) {
+ } else if (FileType.DEX.isOfType((InputVFile) subFile)) {
dexFiles.add((InputOutputVFile) subFile);
}
}
diff --git a/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java b/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java
index 0581fba..698bdd4 100644
--- a/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java
+++ b/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java
@@ -24,7 +24,7 @@ import com.android.jack.ir.ast.JPackageLookupException;
import com.android.jack.ir.ast.JSession;
import com.android.jack.ir.ast.JTypeLookupException;
import com.android.jack.ir.ast.Resource;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
import com.android.jack.library.InputJackLibrary;
import com.android.jack.library.InputLibrary;
import com.android.jack.library.JackLibrary;
@@ -191,7 +191,7 @@ public class JayceFileImporter {
VPath path = new VPath(currentPath, VPATH_SEPARATOR);
// library.properties and dex files are not resources
if (path.equals(JackLibrary.LIBRARY_PROPERTIES_VPATH) ||
- currentPath.endsWith(BinaryKind.DEX.getFileExtension())) {
+ currentPath.endsWith(FileType.DEX.getFileExtension())) {
return;
}
Resource newResource = new Resource(path, file);
diff --git a/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java b/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java
index 108ce65..998245b 100644
--- a/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java
+++ b/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java
@@ -24,6 +24,7 @@ import com.android.jack.ir.NonJackFormatIr;
import com.android.jack.ir.ast.JDefinedClassOrInterface;
import com.android.jack.ir.formatter.BinaryQualifiedNameFormatter;
import com.android.jack.jayce.JayceWriterFactory;
+import com.android.jack.library.FileType;
import com.android.jack.library.LibraryIOException;
import com.android.jack.library.OutputJackLibrary;
import com.android.jack.scheduling.feature.JayceFileOutput;
@@ -71,7 +72,7 @@ public class JayceSingleTypeWriter implements RunnableSchedulable<JDefinedClassO
@Override
public void run(@Nonnull JDefinedClassOrInterface type) throws Exception {
- OutputVFile vFile = outputJackLibrary.getJayceOutputVFile(
+ OutputVFile vFile = outputJackLibrary.createFile(FileType.JAYCE,
new VPath(BinaryQualifiedNameFormatter.getFormatter().getName(type), '/'));
try {
diff --git a/jack/src/com/android/jack/experimental/incremental/JackIncremental.java b/jack/src/com/android/jack/experimental/incremental/JackIncremental.java
index 74dd299..75b13ea 100644
--- a/jack/src/com/android/jack/experimental/incremental/JackIncremental.java
+++ b/jack/src/com/android/jack/experimental/incremental/JackIncremental.java
@@ -31,7 +31,7 @@ import com.android.jack.frontend.FrontendCompilationException;
import com.android.jack.ir.ast.JSession;
import com.android.jack.ir.formatter.BinaryQualifiedNameFormatter;
import com.android.jack.ir.formatter.TypeFormatter;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
import com.android.jack.load.JackLoadingException;
import com.android.jack.scheduling.marker.ClassDefItemMarker;
import com.android.jack.util.TextUtils;
@@ -569,7 +569,7 @@ public class JackIncremental extends CommandLine {
@Nonnull
protected static File getDexFile(@Nonnull String typeName) {
- return new File(dexFilesFolder, new VPath(typeName + BinaryKind.DEX.getFileExtension(),
+ return new File(dexFilesFolder, new VPath(typeName + FileType.DEX.getFileExtension(),
fileSeparator).getPathAsString(File.separatorChar));
}
}
diff --git a/jack/src/com/android/jack/ir/ast/JSession.java b/jack/src/com/android/jack/ir/ast/JSession.java
index 20118d0..db6976f 100644
--- a/jack/src/com/android/jack/ir/ast/JSession.java
+++ b/jack/src/com/android/jack/ir/ast/JSession.java
@@ -23,7 +23,7 @@ import com.android.jack.ir.JNodeInternalError;
import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
import com.android.jack.ir.sourceinfo.SourceInfo;
import com.android.jack.ir.sourceinfo.SourceInfoFactory;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
import com.android.jack.library.OutputJackLibrary;
import com.android.jack.lookup.JNodeLookup;
import com.android.jack.lookup.JPhantomLookup;
@@ -86,7 +86,7 @@ public class JSession extends JNode {
private final Reporter reporter = ThreadConfig.get(Reporter.REPORTER);
@Nonnull
- private final List<BinaryKind> generatedBinaryKinds = new ArrayList<BinaryKind>(1);
+ private final List<FileType> generatedBinaryKinds = new ArrayList<FileType>(2);
@CheckForNull
private OutputJackLibrary jackOutputLibrary;
@@ -210,12 +210,12 @@ public class JSession extends JNode {
}
@Nonnull
- public List<BinaryKind> getGeneratedBinaryKinds() {
+ public List<FileType> getGeneratedFileTypes() {
return generatedBinaryKinds;
}
- public void addGeneratedBinaryKind(@Nonnull BinaryKind binaryKind) {
- generatedBinaryKinds.add(binaryKind);
+ public void addGeneratedFileType(@Nonnull FileType fileType) {
+ generatedBinaryKinds.add(fileType);
}
public void addImportSource(@Nonnull InputRootVDir source) {
diff --git a/jack/src/com/android/jack/library/BinaryKind.java b/jack/src/com/android/jack/library/BinaryKind.java
deleted file mode 100644
index 7356a55..0000000
--- a/jack/src/com/android/jack/library/BinaryKind.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * 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.android.jack.library;
-
-import com.android.sched.vfs.InputVFile;
-
-import javax.annotation.Nonnull;
-
-
-/**
- * Binary kind supported by jack library.
- */
-public enum BinaryKind {
- DEX(".dex") {
- @Override
- public String toString() {
- return "dex";
- }
- };
-
- @Nonnull
- private final String extension;
-
- private BinaryKind(@Nonnull String extension) {
- this.extension = extension;
- }
-
- public boolean isBinaryFile(@Nonnull InputVFile v){
- return (v.getName().endsWith(getFileExtension()));
- }
-
- @Nonnull
- public String getFileExtension() {
- return extension;
- }
-
- @Nonnull
- public static BinaryKind getBinaryKind(@Nonnull InputVFile v) throws NotBinaryException {
- for (BinaryKind kind : BinaryKind.values()) {
- if (kind.isBinaryFile(v)) {
- return kind;
- }
- }
-
- throw new NotBinaryException(v);
- }
-}
diff --git a/jack/src/com/android/jack/library/CommonJackLibrary.java b/jack/src/com/android/jack/library/CommonJackLibrary.java
index c910e68..1fb6151 100644
--- a/jack/src/com/android/jack/library/CommonJackLibrary.java
+++ b/jack/src/com/android/jack/library/CommonJackLibrary.java
@@ -39,6 +39,12 @@ public abstract class CommonJackLibrary implements JackLibrary {
this.libraryProperties = libraryProperties;
}
+ @Override
+ @Nonnull
+ public boolean containsProperty(@Nonnull String key) {
+ return libraryProperties.containsKey(key);
+ }
+
@Nonnull
@Override
public String getProperty(@Nonnull String key) throws LibraryFormatException {
diff --git a/jack/src/com/android/jack/library/FileType.java b/jack/src/com/android/jack/library/FileType.java
new file mode 100644
index 0000000..748cc15
--- /dev/null
+++ b/jack/src/com/android/jack/library/FileType.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.android.jack.library;
+
+import com.android.jack.backend.dex.DexProperties;
+import com.android.jack.jayce.JayceProperties;
+import com.android.sched.vfs.InputVFile;
+
+import javax.annotation.Nonnull;
+
+
+/**
+ * File types supported by jack library.
+ */
+public enum FileType {
+ DEX("dex", ".dex") {
+ @Override
+ public String toString() {
+ return "dex";
+ }
+ @Override
+ public void check() throws LibraryFormatException {
+ }
+ @Override
+ public String getPropertyName() {
+ return DexProperties.KEY_DEX;
+ }
+ },
+ JAYCE("jayce", ".jayce") {
+ @Override
+ public String toString() {
+ return "jayce";
+ }
+ @Override
+ public void check() throws LibraryFormatException {
+ }
+ @Override
+ public String getPropertyName() {
+ return JayceProperties.KEY_JAYCE;
+ }
+ };
+
+ @Nonnull
+ private final String extension;
+
+ @Nonnull
+ private final String prefix;
+
+ private FileType(@Nonnull String prefix, @Nonnull String extension) {
+ this.prefix = prefix;
+ this.extension = extension;
+ }
+
+ public abstract void check() throws LibraryFormatException;
+
+ /**
+ * Get the name of a boolean property that specify if a library contains this file type.
+ * @return The property name.
+ */
+ public abstract String getPropertyName();
+
+ public boolean isOfType(@Nonnull InputVFile v){
+ return (v.getName().endsWith(getFileExtension()));
+ }
+
+ @Nonnull
+ public String getFileExtension() {
+ return extension;
+ }
+
+ @Nonnull
+ public static FileType getFileType(@Nonnull InputVFile v) throws UnsupportedFileTypeException {
+ for (FileType fileType : FileType.values()) {
+ if (fileType.isOfType(v)) {
+ return fileType;
+ }
+ }
+
+ throw new UnsupportedFileTypeException(v);
+ }
+}
diff --git a/jack/src/com/android/jack/library/BinaryDoesNotExistException.java b/jack/src/com/android/jack/library/FileTypeDoesNotExistException.java
index 0c2f54a..4c0dab3 100644
--- a/jack/src/com/android/jack/library/BinaryDoesNotExistException.java
+++ b/jack/src/com/android/jack/library/FileTypeDoesNotExistException.java
@@ -22,11 +22,10 @@ import com.android.sched.vfs.VPath;
import javax.annotation.Nonnull;
/**
- * Exception specifying that the binary of type {@link BinaryKind} for a
- * {@link VPath} representing a type does not exist at {@link Location}.
+ * Exception specifying that a {@link FileType} for a {@link VPath} representing a type does not
+ * exist at {@link Location}.
*/
-public class BinaryDoesNotExistException extends Exception {
-
+public class FileTypeDoesNotExistException extends Exception {
private static final long serialVersionUID = 1L;
@Nonnull
@@ -36,18 +35,18 @@ public class BinaryDoesNotExistException extends Exception {
private final VPath typePath;
@Nonnull
- private final BinaryKind binaryKind;
+ private final FileType fileType;
- public BinaryDoesNotExistException(@Nonnull Location location,
- @Nonnull VPath typePath, @Nonnull BinaryKind binaryKind) {
+ public FileTypeDoesNotExistException(@Nonnull Location location,
+ @Nonnull VPath typePath, @Nonnull FileType fileType) {
this.location = location;
this.typePath = typePath;
- this.binaryKind = binaryKind;
+ this.fileType = fileType;
}
@Override
public String getMessage() {
- return binaryKind + " binary does not exist for "
+ return fileType + " does not exist for "
+ typePath.getPathAsString('.') + " in "
+ location.getDescription();
}
diff --git a/jack/src/com/android/jack/library/InputJackLibrary.java b/jack/src/com/android/jack/library/InputJackLibrary.java
index 2ce1313..176ea74 100644
--- a/jack/src/com/android/jack/library/InputJackLibrary.java
+++ b/jack/src/com/android/jack/library/InputJackLibrary.java
@@ -18,7 +18,10 @@ package com.android.jack.library;
import com.android.jack.Jack;
+import java.util.Collection;
+import java.util.HashSet;
import java.util.Properties;
+import java.util.Set;
import java.util.logging.Level;
import javax.annotation.Nonnull;
@@ -29,10 +32,37 @@ import javax.annotation.Nonnull;
*/
public abstract class InputJackLibrary extends CommonJackLibrary implements InputLibrary {
+ @Nonnull
+ private final Set<FileType> fileTypes = new HashSet<FileType>(2);
+
public InputJackLibrary(@Nonnull Properties libraryProperties) {
super(libraryProperties);
}
+ @Override
+ @Nonnull
+ public Collection<FileType> getFileTypes() {
+ return Jack.getUnmodifiableCollections().getUnmodifiableCollection(fileTypes);
+ }
+
+ @Override
+ public boolean containsFileType(@Nonnull FileType fileType) {
+ return fileTypes.contains(fileType);
+ }
+
+ protected void fillFileTypes() {
+ for (FileType ft : FileType.values()) {
+ try {
+ String propertyName = ft.getPropertyName();
+ if (containsProperty(propertyName) && Boolean.parseBoolean(getProperty(propertyName))) {
+ fileTypes.add(ft);
+ }
+ } catch (LibraryFormatException e) {
+ throw new AssertionError();
+ }
+ }
+ }
+
protected void check() throws LibraryVersionException, LibraryFormatException {
getProperty(JackLibrary.KEY_LIB_EMITTER);
getProperty(JackLibrary.KEY_LIB_EMITTER_VERSION);
@@ -60,6 +90,10 @@ public abstract class InputJackLibrary extends CommonJackLibrary implements Inp
Integer.valueOf(majorVersion), Integer.valueOf(minorVersion),
Integer.valueOf(majorVersion), Integer.valueOf(supportedMinor)});
}
+
+ for (FileType ft : getFileTypes()) {
+ ft.check();
+ }
}
public abstract int getSupportedMinor();
diff --git a/jack/src/com/android/jack/library/InputLibrary.java b/jack/src/com/android/jack/library/InputLibrary.java
index 23738f1..a21f5dc 100644
--- a/jack/src/com/android/jack/library/InputLibrary.java
+++ b/jack/src/com/android/jack/library/InputLibrary.java
@@ -21,7 +21,7 @@ import com.android.sched.vfs.InputVFile;
import com.android.sched.vfs.VPath;
import java.util.Collection;
-import java.util.List;
+import java.util.Iterator;
import javax.annotation.Nonnull;
@@ -34,16 +34,16 @@ public interface InputLibrary extends Library {
public InputRootVDir getInputVDir();
@Nonnull
- public Collection<BinaryKind> getBinaryKinds();
+ public Collection<FileType> getFileTypes();
- public boolean hasBinary(@Nonnull BinaryKind binaryKind);
+ public boolean containsFileType(@Nonnull FileType fileType);
@Nonnull
- public List<InputVFile> getBinaries(@Nonnull BinaryKind binaryKind);
+ public InputVFile getFile(@Nonnull FileType fileType, @Nonnull VPath typePath)
+ throws FileTypeDoesNotExistException;
@Nonnull
- public InputVFile getBinary(@Nonnull VPath typePath, @Nonnull BinaryKind binaryKind)
- throws BinaryDoesNotExistException;
+ public Iterator<InputVFile> iterator(@Nonnull FileType fileType);
@Override
@Nonnull
diff --git a/jack/src/com/android/jack/library/JackLibrary.java b/jack/src/com/android/jack/library/JackLibrary.java
index b85a8a1..3f98f4d 100644
--- a/jack/src/com/android/jack/library/JackLibrary.java
+++ b/jack/src/com/android/jack/library/JackLibrary.java
@@ -46,4 +46,7 @@ public interface JackLibrary extends Library {
@Nonnull
public String getProperty(@Nonnull String key) throws LibraryFormatException;
+
+ @Nonnull
+ public boolean containsProperty(@Nonnull String key);
}
diff --git a/jack/src/com/android/jack/library/OutputLibrary.java b/jack/src/com/android/jack/library/OutputLibrary.java
index 0bc4592..84b9c0a 100644
--- a/jack/src/com/android/jack/library/OutputLibrary.java
+++ b/jack/src/com/android/jack/library/OutputLibrary.java
@@ -29,11 +29,7 @@ public interface OutputLibrary extends Library {
public boolean needsSequentialWriting();
- @Nonnull
- public OutputVFile getJayceOutputVFile(@Nonnull VPath typePath) throws CannotCreateFileException;
-
- @Nonnull
- public OutputVFile getBinaryOutputVFile(@Nonnull VPath typePath, @Nonnull BinaryKind binaryKind)
+ public OutputVFile createFile(@Nonnull FileType fileType, @Nonnull VPath typePath)
throws CannotCreateFileException;
public void close() throws LibraryIOException;
diff --git a/jack/src/com/android/jack/library/NotBinaryException.java b/jack/src/com/android/jack/library/UnsupportedFileTypeException.java
index 9c1cbaa..1a7a13d 100644
--- a/jack/src/com/android/jack/library/NotBinaryException.java
+++ b/jack/src/com/android/jack/library/UnsupportedFileTypeException.java
@@ -21,21 +21,21 @@ import com.android.sched.vfs.InputVFile;
import javax.annotation.Nonnull;
/**
- * Exception specifying that an {@link InputVFile} is not a binary.
+ * Exception specifying that an {@link InputVFile} is not supported by the library
*/
-public class NotBinaryException extends Exception {
+public class UnsupportedFileTypeException extends Exception {
private static final long serialVersionUID = 1L;
@Nonnull
private final InputVFile vFile;
- public NotBinaryException(@Nonnull InputVFile vFile) {
+ public UnsupportedFileTypeException(@Nonnull InputVFile vFile) {
this.vFile = vFile;
}
@Override
public String getMessage() {
- return vFile + " is not a binary";
+ return vFile + " is not supported by the library";
}
}
diff --git a/jack/src/com/android/jack/library/v0000/InputJackLibraryImpl.java b/jack/src/com/android/jack/library/v0000/InputJackLibraryImpl.java
index fd56c1d..a98ce61 100644
--- a/jack/src/com/android/jack/library/v0000/InputJackLibraryImpl.java
+++ b/jack/src/com/android/jack/library/v0000/InputJackLibraryImpl.java
@@ -16,15 +16,13 @@
package com.android.jack.library.v0000;
-import com.android.jack.Jack;
-import com.android.jack.library.BinaryDoesNotExistException;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
+import com.android.jack.library.FileTypeDoesNotExistException;
import com.android.jack.library.InputJackLibrary;
import com.android.jack.library.InputLibrary;
import com.android.jack.library.InputLibraryLocation;
import com.android.jack.library.LibraryFormatException;
import com.android.jack.library.LibraryVersionException;
-import com.android.jack.library.NotBinaryException;
import com.android.sched.util.file.NotFileOrDirectoryException;
import com.android.sched.util.log.LoggerFactory;
import com.android.sched.vfs.InputRootVDir;
@@ -34,11 +32,9 @@ import com.android.sched.vfs.InputVFile;
import com.android.sched.vfs.VPath;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Properties;
-import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -82,16 +78,13 @@ public class InputJackLibraryImpl extends InputJackLibrary {
}
};
- @Nonnull
- private final Set<BinaryKind> binaryKinds = new HashSet<BinaryKind>(1);
-
public InputJackLibraryImpl(@Nonnull InputRootVDir libraryVDir,
@Nonnull Properties libraryProperties) throws LibraryVersionException,
LibraryFormatException {
super(libraryProperties);
this.libraryVDir = libraryVDir;
check();
- fillBinaryKinds(libraryVDir);
+ fillFileTypes();
}
@Override
@@ -102,63 +95,38 @@ public class InputJackLibraryImpl extends InputJackLibrary {
@Override
@Nonnull
- public Collection<BinaryKind> getBinaryKinds() {
- return Jack.getUnmodifiableCollections().getUnmodifiableCollection(binaryKinds);
- }
-
- @Override
- public boolean hasBinary(@Nonnull BinaryKind binaryKind) {
- return binaryKinds.contains(binaryKind);
- }
-
- @Override
- @Nonnull
- public List<InputVFile> getBinaries(@Nonnull BinaryKind binaryKind) {
- List<InputVFile> binaries = new ArrayList<InputVFile>();
- fillBinaries(libraryVDir, binaryKind, binaries);
- return binaries;
- }
-
- @Override
- @Nonnull
- public InputVFile getBinary(@Nonnull VPath typePath, @Nonnull BinaryKind binaryKind)
- throws BinaryDoesNotExistException {
+ public InputVFile getFile(@Nonnull FileType fileType, @Nonnull VPath typePath)
+ throws FileTypeDoesNotExistException {
try {
return libraryVDir.getInputVFile(
- new VPath(typePath.getPathAsString('/') + BinaryKind.DEX.getFileExtension(), '/'));
+ new VPath(typePath.getPathAsString('/') + fileType.getFileExtension(), '/'));
} catch (NotFileOrDirectoryException e) {
- throw new BinaryDoesNotExistException(getLocation(), typePath, binaryKind);
+ throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
}
}
@Override
@Nonnull
- public InputRootVDir getInputVDir() {
- return libraryVDir;
+ public Iterator<InputVFile> iterator(@Nonnull FileType fileType) {
+ List<InputVFile> inputVFiles = new ArrayList<InputVFile>();
+ fillFiles(libraryVDir, fileType, inputVFiles);
+ return inputVFiles.iterator();
}
- private void fillBinaryKinds(@Nonnull InputVDir vDir) {
- for (InputVElement subFile : vDir.list()) {
- if (subFile.isVDir()) {
- fillBinaryKinds((InputVDir) subFile);
- } else {
- try {
- binaryKinds.add(BinaryKind.getBinaryKind((InputVFile) subFile));
- } catch (NotBinaryException e) {
- // Ok, nothing to do
- }
- }
- }
+ @Override
+ @Nonnull
+ public InputRootVDir getInputVDir() {
+ return libraryVDir;
}
- private void fillBinaries(@Nonnull InputVDir vDir, @Nonnull BinaryKind binaryKind,
+ private void fillFiles(@Nonnull InputVDir vDir, @Nonnull FileType fileType,
@Nonnull List<InputVFile> binaries) {
for (InputVElement subFile : vDir.list()) {
if (subFile.isVDir()) {
- fillBinaries((InputVDir) subFile, binaryKind, binaries);
+ fillFiles((InputVDir) subFile, fileType, binaries);
} else {
InputVFile vFile = (InputVFile) subFile;
- if (binaryKind.isBinaryFile(vFile)) {
+ if (fileType.isOfType(vFile)) {
binaries.add(vFile);
}
}
diff --git a/jack/src/com/android/jack/library/v0000/OutputJackLibraryImpl.java b/jack/src/com/android/jack/library/v0000/OutputJackLibraryImpl.java
index 8666964..84752bd 100644
--- a/jack/src/com/android/jack/library/v0000/OutputJackLibraryImpl.java
+++ b/jack/src/com/android/jack/library/v0000/OutputJackLibraryImpl.java
@@ -16,9 +16,7 @@
package com.android.jack.library.v0000;
-import com.android.jack.backend.dex.DexProperties;
-import com.android.jack.backend.jayce.JayceFileImporter;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
import com.android.jack.library.LibraryIOException;
import com.android.jack.library.OutputJackLibrary;
import com.android.jack.library.OutputLibrary;
@@ -80,9 +78,11 @@ public class OutputJackLibraryImpl extends OutputJackLibrary {
@Override
@Nonnull
- public OutputVFile getJayceOutputVFile(@Nonnull VPath typePath) throws CannotCreateFileException {
+ public OutputVFile createFile(@Nonnull FileType fileType, @Nonnull VPath typePath)
+ throws CannotCreateFileException {
+ putProperty(fileType.getPropertyName(), String.valueOf(true));
return outputVDir.createOutputVFile(
- new VPath(typePath.getPathAsString('/') + JayceFileImporter.JAYCE_FILE_EXTENSION, '/'));
+ new VPath(typePath.getPathAsString('/') + fileType.getFileExtension(), '/'));
}
@Override
@@ -92,17 +92,6 @@ public class OutputJackLibraryImpl extends OutputJackLibrary {
@Override
@Nonnull
- public OutputVFile getBinaryOutputVFile(@Nonnull VPath typePath, @Nonnull BinaryKind binaryKind)
- throws CannotCreateFileException {
- if (binaryKind == BinaryKind.DEX) {
- putProperty(DexProperties.KEY_DEX, String.valueOf(true));
- }
- return outputVDir.createOutputVFile(
- new VPath(typePath.getPathAsString('/') + binaryKind.getFileExtension(), '/'));
- }
-
- @Override
- @Nonnull
public OutputLibraryLocation getLocation() {
return location;
}
diff --git a/jack/src/com/android/jack/library/v0001/InputJackLibraryImpl.java b/jack/src/com/android/jack/library/v0001/InputJackLibraryImpl.java
index 5d3bc99..8222359 100644
--- a/jack/src/com/android/jack/library/v0001/InputJackLibraryImpl.java
+++ b/jack/src/com/android/jack/library/v0001/InputJackLibraryImpl.java
@@ -16,15 +16,13 @@
package com.android.jack.library.v0001;
-import com.android.jack.Jack;
-import com.android.jack.library.BinaryDoesNotExistException;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
+import com.android.jack.library.FileTypeDoesNotExistException;
import com.android.jack.library.InputJackLibrary;
import com.android.jack.library.InputLibrary;
import com.android.jack.library.InputLibraryLocation;
import com.android.jack.library.LibraryFormatException;
import com.android.jack.library.LibraryVersionException;
-import com.android.jack.library.NotBinaryException;
import com.android.sched.util.file.NotFileOrDirectoryException;
import com.android.sched.util.log.LoggerFactory;
import com.android.sched.vfs.InputRootVDir;
@@ -34,11 +32,9 @@ import com.android.sched.vfs.InputVFile;
import com.android.sched.vfs.VPath;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Properties;
-import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -82,16 +78,13 @@ public class InputJackLibraryImpl extends InputJackLibrary {
}
};
- @Nonnull
- private final Set<BinaryKind> binaryKinds = new HashSet<BinaryKind>(1);
-
public InputJackLibraryImpl(@Nonnull InputRootVDir libraryVDir,
@Nonnull Properties libraryProperties) throws LibraryVersionException,
LibraryFormatException {
super(libraryProperties);
this.libraryVDir = libraryVDir;
check();
- fillBinaryKinds(libraryVDir);
+ fillFileTypes();
}
@Override
@@ -102,63 +95,39 @@ public class InputJackLibraryImpl extends InputJackLibrary {
@Override
@Nonnull
- public Collection<BinaryKind> getBinaryKinds() {
- return Jack.getUnmodifiableCollections().getUnmodifiableCollection(binaryKinds);
- }
-
- @Override
- public boolean hasBinary(@Nonnull BinaryKind binaryKind) {
- return binaryKinds.contains(binaryKind);
- }
-
- @Override
- @Nonnull
- public List<InputVFile> getBinaries(@Nonnull BinaryKind binaryKind) {
- List<InputVFile> binaries = new ArrayList<InputVFile>();
- fillBinaries(libraryVDir, binaryKind, binaries);
- return binaries;
- }
-
- @Override
- @Nonnull
- public InputVFile getBinary(@Nonnull VPath typePath, @Nonnull BinaryKind binaryKind)
- throws BinaryDoesNotExistException {
+ public InputVFile getFile(@Nonnull FileType fileType, @Nonnull VPath typePath)
+ throws FileTypeDoesNotExistException {
try {
return libraryVDir.getInputVFile(
- new VPath(typePath.getPathAsString('/') + BinaryKind.DEX.getFileExtension(), '/'));
+ new VPath(typePath.getPathAsString('/') + fileType.getFileExtension(), '/'));
} catch (NotFileOrDirectoryException e) {
- throw new BinaryDoesNotExistException(getLocation(), typePath, binaryKind);
+ throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
}
}
@Override
@Nonnull
+ public Iterator<InputVFile> iterator(@Nonnull FileType fileType) {
+ List<InputVFile> inputVFiles = new ArrayList<InputVFile>();
+ fillFiles(libraryVDir, fileType, inputVFiles);
+ return inputVFiles.listIterator();
+ }
+
+ @Override
+ @Nonnull
public InputRootVDir getInputVDir() {
return libraryVDir;
}
- private void fillBinaryKinds(@Nonnull InputVDir vDir) {
- for (InputVElement subFile : vDir.list()) {
- if (subFile.isVDir()) {
- fillBinaryKinds((InputVDir) subFile);
- } else {
- try {
- binaryKinds.add(BinaryKind.getBinaryKind((InputVFile) subFile));
- } catch (NotBinaryException e) {
- // Ok, nothing to do
- }
- }
- }
- }
- private void fillBinaries(@Nonnull InputVDir vDir, @Nonnull BinaryKind binaryKind,
+ private void fillFiles(@Nonnull InputVDir vDir, @Nonnull FileType fileType,
@Nonnull List<InputVFile> binaries) {
for (InputVElement subFile : vDir.list()) {
if (subFile.isVDir()) {
- fillBinaries((InputVDir) subFile, binaryKind, binaries);
+ fillFiles((InputVDir) subFile, fileType, binaries);
} else {
InputVFile vFile = (InputVFile) subFile;
- if (binaryKind.isBinaryFile(vFile)) {
+ if (fileType.isOfType(vFile)) {
binaries.add(vFile);
}
}
diff --git a/jack/src/com/android/jack/library/v0001/OutputJackLibraryImpl.java b/jack/src/com/android/jack/library/v0001/OutputJackLibraryImpl.java
index e8ea371..e1a548f 100644
--- a/jack/src/com/android/jack/library/v0001/OutputJackLibraryImpl.java
+++ b/jack/src/com/android/jack/library/v0001/OutputJackLibraryImpl.java
@@ -16,9 +16,7 @@
package com.android.jack.library.v0001;
-import com.android.jack.backend.dex.DexProperties;
-import com.android.jack.backend.jayce.JayceFileImporter;
-import com.android.jack.library.BinaryKind;
+import com.android.jack.library.FileType;
import com.android.jack.library.LibraryIOException;
import com.android.jack.library.OutputJackLibrary;
import com.android.jack.library.OutputLibrary;
@@ -81,11 +79,12 @@ public class OutputJackLibraryImpl extends OutputJackLibrary {
@Override
@Nonnull
- public OutputVFile getJayceOutputVFile(@Nonnull VPath typePath) throws CannotCreateFileException {
+ public OutputVFile createFile(@Nonnull FileType fileType, @Nonnull VPath typePath)
+ throws CannotCreateFileException {
+ putProperty(fileType.getPropertyName(), String.valueOf(true));
return outputVDir.createOutputVFile(
- new VPath(typePath.getPathAsString('/') + JayceFileImporter.JAYCE_FILE_EXTENSION, '/'));
+ new VPath(typePath.getPathAsString('/') + fileType.getFileExtension(), '/'));
}
-
@Override
public boolean needsSequentialWriting() {
return outputVDir instanceof SequentialOutputVDir;
@@ -93,17 +92,6 @@ public class OutputJackLibraryImpl extends OutputJackLibrary {
@Override
@Nonnull
- public OutputVFile getBinaryOutputVFile(@Nonnull VPath typePath, @Nonnull BinaryKind binaryKind)
- throws CannotCreateFileException {
- if (binaryKind == BinaryKind.DEX) {
- putProperty(DexProperties.KEY_DEX, String.valueOf(true));
- }
- return outputVDir.createOutputVFile(
- new VPath(typePath.getPathAsString('/') + binaryKind.getFileExtension(), '/'));
- }
-
- @Override
- @Nonnull
public OutputLibraryLocation getLocation() {
return location;
}
diff --git a/jack/src/com/android/jack/scheduling/adapter/ExcludeTypeFromLibWithBinaryAdapter.java b/jack/src/com/android/jack/scheduling/adapter/ExcludeTypeFromLibWithBinaryAdapter.java
index 1dbc375..51f004c 100644
--- a/jack/src/com/android/jack/scheduling/adapter/ExcludeTypeFromLibWithBinaryAdapter.java
+++ b/jack/src/com/android/jack/scheduling/adapter/ExcludeTypeFromLibWithBinaryAdapter.java
@@ -60,7 +60,7 @@ public class ExcludeTypeFromLibWithBinaryAdapter
if (location instanceof TypeInInputLibraryLocation) {
InputLibrary inputLibrary = ((TypeInInputLibraryLocation) location)
.getInputLibraryLocation().getInputLibrary();
- if (inputLibrary.getBinaryKinds().containsAll(session.getGeneratedBinaryKinds())) {
+ if (inputLibrary.getFileTypes().containsAll(session.getGeneratedFileTypes())) {
return false;
}
}