Merge "Make Jetifier less strict for new types." into pi-preview1-androidx-dev
am: 48bc743a3f
Change-Id: Idbdb568b77bdc782b0a41a8bc93ff06daf6121b8
diff --git a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/TransformationContext.kt b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/TransformationContext.kt
index 08a22a4..2b0d291 100644
--- a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/TransformationContext.kt
+++ b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/TransformationContext.kt
@@ -35,6 +35,16 @@
private val packagePrefixPattern = Pattern.compile(
"^(" + config.restrictToPackagePrefixes.map { "($it)" }.joinToString("|") + ").*$")
+ /**
+ * Whether to use identity if type in our scope is missing instead of throwing an exception.
+ */
+ val useIdentityIfTypeIsMissing = rewritingSupportLib || isInReversedMode
+
+ /**
+ * Whether to skip verification of dependency version match in pom files.
+ */
+ val ignorePomVersionCheck = rewritingSupportLib || isInReversedMode
+
/** Counter for [reportNoMappingFoundFailure] calls. */
var mappingNotFoundFailuresCount = 0
private set
diff --git a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/bytecode/CoreRemapperImpl.kt b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/bytecode/CoreRemapperImpl.kt
index 4603ae0..3a2ed7e 100644
--- a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/bytecode/CoreRemapperImpl.kt
+++ b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/bytecode/CoreRemapperImpl.kt
@@ -56,8 +56,12 @@
return result
}
- context.reportNoMappingFoundFailure()
- Log.e(TAG, "No mapping for: " + type)
+ if (context.useIdentityIfTypeIsMissing) {
+ Log.i(TAG, "No mapping for %s - using identity", type)
+ } else {
+ context.reportNoMappingFoundFailure()
+ Log.e(TAG, "No mapping for: " + type)
+ }
return type
}
@@ -95,8 +99,13 @@
return path.fileSystem.getPath(result.fullName + ".class")
}
+ if (context.useIdentityIfTypeIsMissing) {
+ Log.i(TAG, "No mapping for: %s", type)
+ return path
+ }
+
context.reportNoMappingFoundFailure()
- Log.e(TAG, "No mapping for: " + type)
+ Log.e(TAG, "No mapping for: %s", type)
return path
}
}
\ No newline at end of file
diff --git a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/pom/PomScanner.kt b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/pom/PomScanner.kt
index 99b08d5..45b695c 100644
--- a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/pom/PomScanner.kt
+++ b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/pom/PomScanner.kt
@@ -51,8 +51,7 @@
session.pomFiles.forEach {
it.logDocumentDetails()
- // FYI: In reverse mode we don't validate versions
- if (!context.isInReversedMode && !it.validate(context.config.pomRewriteRules)) {
+ if (!context.ignorePomVersionCheck && !it.validate(context.config.pomRewriteRules)) {
Log.e(TAG, "Version mismatch!")
validationFailuresCount++
}
diff --git a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/proguard/ProGuardTypesMapper.kt b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/proguard/ProGuardTypesMapper.kt
index 28195a3..66a9d6e 100644
--- a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/proguard/ProGuardTypesMapper.kt
+++ b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/proguard/ProGuardTypesMapper.kt
@@ -48,14 +48,19 @@
}
val result = config.typesMap.types[javaType]
- if (result == null) {
- context.reportNoProGuardMappingFoundFailure()
- Log.e(TAG, "No mapping for: " + type)
+ if (result != null) {
+ Log.i(TAG, " map: %s -> %s", type, result)
+ return result.toDotNotation()
+ }
+
+ if (context.useIdentityIfTypeIsMissing) {
+ Log.i(TAG, "No mapping for: %s - using identity")
return typeToReplace
}
- Log.i(TAG, " map: %s -> %s", type, result)
- return result.toDotNotation()
+ context.reportNoProGuardMappingFoundFailure()
+ Log.e(TAG, "No mapping for: %s", type)
+ return typeToReplace
}
// Type contains wildcards - try custom rules map
diff --git a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/resource/XmlResourcesTransformer.kt b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/resource/XmlResourcesTransformer.kt
index 18c8994..74667d3 100644
--- a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/resource/XmlResourcesTransformer.kt
+++ b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/resource/XmlResourcesTransformer.kt
@@ -167,8 +167,13 @@
return result.toDotNotation()
}
+ if (context.useIdentityIfTypeIsMissing) {
+ Log.i(TAG, "No mapping for: %s - using identity", type)
+ return typeName
+ }
+
context.reportNoMappingFoundFailure()
- Log.e(TAG, "No mapping for: " + type)
+ Log.e(TAG, "No mapping for: %s", type)
return typeName
}