From abed3e9861c435f16cbfe4a4cfba9aac3f95d800 Mon Sep 17 00:00:00 2001 From: Chris Warrington Date: Fri, 18 Mar 2022 16:37:09 +0000 Subject: Don't merge class log info directories Bug: 218478028 Test: Existing integration tests Change-Id: I44c928468a2c8acf325135da002a06394e2d3320 --- .../databinding/tool/store/LayoutInfoInput.kt | 4 +- .../databinding/tool/store/ResourceBundle.java | 61 ++++++++++++---------- .../databinding/tool/store/LayoutInfoInputTest.kt | 2 +- 3 files changed, 37 insertions(+), 30 deletions(-) diff --git a/compilerCommon/src/main/java/android/databinding/tool/store/LayoutInfoInput.kt b/compilerCommon/src/main/java/android/databinding/tool/store/LayoutInfoInput.kt index 266ef977..1d3dff69 100644 --- a/compilerCommon/src/main/java/android/databinding/tool/store/LayoutInfoInput.kt +++ b/compilerCommon/src/main/java/android/databinding/tool/store/LayoutInfoInput.kt @@ -61,7 +61,7 @@ class LayoutInfoInput(val args: Args) { } val deps by lazy(LazyThreadSafetyMode.NONE) { - val v2 = ResourceBundle.loadClassInfoFromFolder(args.dependencyClassesFolder) + val v2 = ResourceBundle.loadClassInfoFromFolders(args.dependencyClassesFolders) args.v1ArtifactsFolder?.let { val v1 = V1CompatLayoutInfoLoader().load(it) v2.addAll(v1) @@ -157,7 +157,7 @@ class LayoutInfoInput(val args: Args) { data class Args(val outOfDate: List, val removed: List, val infoFolder: File, - val dependencyClassesFolder: File, + val dependencyClassesFolders: List, val artifactFolder: File, val logFolder: File, val packageName : String, diff --git a/compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java b/compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java index 5a725005..8dfe83ec 100644 --- a/compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java +++ b/compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java @@ -189,37 +189,44 @@ public class ResourceBundle implements Serializable { * in previous steps. */ public static GenClassInfoLog loadClassInfoFromFolder(File folder) throws IOException { + return loadClassInfoFromFolders(Collections.singletonList(folder)); + } + + public static GenClassInfoLog loadClassInfoFromFolders(List folders) throws IOException { GenClassInfoLog merged = new GenClassInfoLog(); // blaze might pass a zip instead of a folder - if (folder.isFile()) { //bazel - // unzip it into a tmp folder and use it. - try (ZipFile zipFile = new ZipFile(folder)) { - zipFile.stream().forEach(zipEntry -> { - if (zipEntry.getName().endsWith(DataBindingBuilder.BINDING_CLASS_LIST_SUFFIX)) { - try { - merged.addAll(GenClassInfoLog.fromInputStream(zipFile.getInputStream - (zipEntry))); - } catch (IOException e) { - L.e( - e, - "failed to read gen class info log from entry %s", - zipEntry.getName()); + for (File folder: folders) { + if (folder.isFile()) { //bazel + // unzip it into a tmp folder and use it. + try (ZipFile zipFile = new ZipFile(folder)) { + zipFile.stream().forEach(zipEntry -> { + if (zipEntry.getName() + .endsWith(DataBindingBuilder.BINDING_CLASS_LIST_SUFFIX)) { + try { + merged.addAll(GenClassInfoLog.fromInputStream(zipFile.getInputStream + (zipEntry))); + } catch (IOException e) { + L.e( + e, + "failed to read gen class info log from entry %s", + zipEntry.getName()); + } } - } - }); - } - } else if (folder.isDirectory()){ - SuffixFileFilter fileFilter = new SuffixFileFilter( - DataBindingBuilder.BINDING_CLASS_LIST_SUFFIX, - IOCase.SYSTEM); - List files = FileUtil.listAndSortFiles(folder, fileFilter, - TrueFileFilter.INSTANCE); - for (File file : files) { - merged.addAll(GenClassInfoLog.fromFile(file)); + }); + } + } else if (folder.isDirectory()) { + SuffixFileFilter fileFilter = new SuffixFileFilter( + DataBindingBuilder.BINDING_CLASS_LIST_SUFFIX, + IOCase.SYSTEM); + List files = FileUtil.listAndSortFiles(folder, fileFilter, + TrueFileFilter.INSTANCE); + for (File file : files) { + merged.addAll(GenClassInfoLog.fromFile(file)); + } + } else { + // happens w/ blaze + L.w("no info log is passed. There are no resources?"); } - } else { - // happens w/ blaze - L.w("no info log is passed. There are no resources?"); } return merged; } diff --git a/compilerCommon/src/test/kotlin/android/databinding/tool/store/LayoutInfoInputTest.kt b/compilerCommon/src/test/kotlin/android/databinding/tool/store/LayoutInfoInputTest.kt index b94641db..37e15494 100644 --- a/compilerCommon/src/test/kotlin/android/databinding/tool/store/LayoutInfoInputTest.kt +++ b/compilerCommon/src/test/kotlin/android/databinding/tool/store/LayoutInfoInputTest.kt @@ -379,7 +379,7 @@ class LayoutInfoInputTest { outOfDate = added, removed = removed, infoFolder = infoFolder, - dependencyClassesFolder = dependencyClassFolder, + dependencyClassesFolders = listOf(dependencyClassFolder), incremental = incremental, logFolder = baseBinderLogFolder, artifactFolder = artifactFolder, -- cgit v1.2.3