Move parameters and extras from Request.toString() to toStringVerbose()
The parameter and extra map are both too long to be printed out. Move
them to a new dedicated method, `toStringVerbose`, to allow developers
to utilize it if they need more verbose logging of their `Request`s.
Bug: 340353641
Test: CameraPipe test app and logcat
Change-Id: Ic3331cefe20257bcdede198df5c00eeb2e639f2d
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Requests.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Requests.kt
index 89467a3..215086b 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Requests.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Requests.kt
@@ -270,19 +270,27 @@
@Suppress("UNCHECKED_CAST")
private fun <T> getUnchecked(key: CaptureRequest.Key<T>): T? = this.parameters[key] as T?
- override fun toString(): String {
+ override fun toString(): String = toStringInternal(verbose = false)
+
+ public fun toStringVerbose(): String = toStringInternal(verbose = true)
+
+ private fun toStringInternal(verbose: Boolean): String {
+ val templateString = if (template == null) "" else ", template=$template"
+ // Ignore listener count, always include stream list (required).
val parametersString =
- if (parameters.isEmpty()) {
- ""
- } else {
+ if (verbose && parameters.isNotEmpty()) {
", parameters=${Debug.formatParameterMap(parameters, limit = 5)}"
+ } else {
+ ""
}
val extrasString =
- if (extras.isEmpty()) "" else ", extras=${Debug.formatParameterMap(extras, limit = 5)}"
- val templateString = if (template == null) "" else ", template=$template"
- // Ignore listener count, always include stream list (required), and use super.toString to
- // reference the class name.
- return "Request(streams=$streams$templateString$parametersString$extrasString)"
+ if (verbose && extras.isNotEmpty()) {
+ ", extras=${Debug.formatParameterMap(extras, limit = 5)}"
+ } else {
+ ""
+ }
+ return "Request(streams=$streams$templateString$parametersString$extrasString)" +
+ "@${Integer.toHexString(hashCode())}"
}
}
diff --git a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/RequestTest.kt b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/RequestTest.kt
index 2fd75c1..3184042 100644
--- a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/RequestTest.kt
+++ b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/RequestTest.kt
@@ -63,9 +63,21 @@
assertThat("$request1").contains("1")
assertThat("$request1").contains("Request")
- assertThat("$request").contains("42")
- assertThat("$request").contains("parameters")
- assertThat("$request").contains("extras")
+ val requestString = request.toStringVerbose()
+ assertThat(requestString).contains("42")
+ assertThat(requestString).contains("parameters")
+ assertThat(requestString).contains("extras")
+ }
+
+ @Test
+ fun requestHasNiceLoggingString_notEqual() {
+ val request1 = Request(listOf(StreamId(1)))
+ val request2 = Request(listOf(StreamId(1)))
+
+ assertThat(request1).isNotEqualTo(request2)
+
+ // The Request string should be different if the Requests themselves are different.
+ assertThat("$request1").isNotEqualTo("$request2")
}
@Test