| /* |
| * Copyright (C) 2022 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. |
| */ |
| |
| import androidx.build.LibraryType |
| import org.jetbrains.kotlin.gradle.tasks.KotlinCompile |
| |
| import java.security.MessageDigest |
| import java.util.stream.Collectors |
| |
| plugins { |
| id("AndroidXPlugin") |
| id("AndroidXComposePlugin") |
| id("com.android.library") |
| id("org.jetbrains.kotlin.android") |
| } |
| |
| dependencies { |
| api(libs.kotlinStdlib) |
| |
| def composeVersion = '1.3.0-rc01' |
| |
| implementation(libs.kotlinStdlibCommon) |
| implementation("androidx.profileinstaller:profileinstaller:1.2.0") |
| api(project(":compose:ui:ui")) |
| |
| api("androidx.annotation:annotation:1.5.0") |
| api("androidx.compose.animation:animation:$composeVersion") |
| api("androidx.compose.runtime:runtime:$composeVersion") |
| |
| api("androidx.compose.foundation:foundation:$composeVersion") |
| api("androidx.compose.foundation:foundation-layout:$composeVersion") |
| api("androidx.compose.ui:ui-graphics:$composeVersion") |
| api("androidx.compose.ui:ui-text:$composeVersion") |
| api("androidx.compose.ui:ui-util:$composeVersion") |
| |
| androidTestImplementation(libs.truth) |
| androidTestImplementation(project(":compose:ui:ui-test")) |
| androidTestImplementation(project(":compose:ui:ui-test-junit4")) |
| androidTestImplementation(project(":compose:test-utils")) |
| androidTestImplementation(libs.testRunner) |
| } |
| |
| android { |
| namespace "androidx.tv.foundation" |
| defaultConfig { |
| minSdkVersion 21 |
| } |
| lintOptions { |
| disable 'IllegalExperimentalApiUsage' // TODO (b/233188423): Address before moving to beta |
| } |
| } |
| |
| androidx { |
| name = "androidx.tv:tv-foundation" |
| type = LibraryType.PUBLISHED_LIBRARY |
| inceptionYear = "2022" |
| description = "This library makes it easier for developers" + |
| "to write Jetpack Compose applications for TV devices by providing " + |
| "functionality to support TV specific devices sizes, shapes and d-pad navigation " + |
| "supported components. It builds upon the Jetpack Compose libraries." |
| targetsJavaConsumers = false |
| } |
| |
| // Functions and tasks to monitor changes in copied files. |
| |
| task generateMd5 { |
| ext.genMd5 = { fileNameToHash -> |
| MessageDigest digest = MessageDigest.getInstance("MD5") |
| file(fileNameToHash).withInputStream(){is-> |
| byte[] buffer = new byte[8192] |
| int read = 0 |
| while( (read = is.read(buffer)) > 0) { |
| digest.update(buffer, 0, read); |
| } |
| } |
| byte[] md5sum = digest.digest() |
| BigInteger bigInt = new BigInteger(1, md5sum) |
| bigInt.toString(16).padLeft(32, '0') |
| } |
| |
| doLast { |
| String hashValue = genMd5(file) |
| print "value=" |
| println hashValue |
| } |
| } |
| |
| List<CopiedClass> copiedClasses = new ArrayList<>(); |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Scrollable.kt", |
| "src/main/java/androidx/tv/foundation/ScrollableWithPivot.kt", |
| "86acc593cd77d52784532163b5ab8156" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/DataIndex.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/DataIndex.kt", |
| "2aa3c6d2dd05057478e723b2247517e1" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyItemScopeImpl.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/TvLazyListItemScopeImpl.kt", |
| "37cb0caf8a170a4161da346806c7a236" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListHeaders.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazyListHeaders.kt", |
| "4d71c69f9cb38f741da9cfc4109567dd" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemPlacementAnimator.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazyListItemPlacementAnimator.kt", |
| "a74bfa05e68e2b6c2e108f022dfbfa26" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemProvider.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazyListItemProvider.kt", |
| "4c69e8a60a068e1e8191ed3840868881" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazyList.kt", |
| "22078ee2f09dce3f39cdc23dc1188a82" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasure.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazyListMeasure.kt", |
| "c58eaf4619972afbee7da7714dc072fc" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasureResult.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazyListMeasureResult.kt", |
| "d4407572c6550d184133f8b3fd37869f" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListScopeImpl.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/TvLazyListScopeImpl.kt", |
| "fab951ddba90c5c5426e4d0104bc9929" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListScrollPosition.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazyListScrollPosition.kt", |
| "08d08515f25eb3032f6efbf9f86be102" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListState.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazyListState.kt", |
| "1d16fbb5025b282ffeb8fe3a63a9de3d" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyMeasuredItem.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazyMeasuredItem.kt", |
| "c1b403d4fcd43c423b3f1b0433e8bb43" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyMeasuredItemProvider.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazyMeasuredItemProvider.kt", |
| "0dcde73635efe26203f70351437cb6fa" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazySemantics.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazySemantics.kt", |
| "3a1e86a55ea2282c12745717b5a60cfd" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/ItemIndex.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/ItemIndex.kt", |
| "1031b8b91a81c684b3c4584bc93d3fb0" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridDsl.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyGridDsl.kt", |
| "6a0b2db56ef38fb1ac004e4fc9847db8" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemInfo.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/TvLazyGridItemInfo.kt", |
| "1f3b13ee45de79bc67ace4133e634600" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemPlacementAnimator.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyGridItemPlacementAnimator.kt", |
| "6f93637153ebd05d9cba7ebaf12311c9" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemScopeImpl.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/TvLazyGridItemScopeImpl.kt", |
| "b3ff4600791c73028b8661c0e2b49110" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemScope.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/TvLazyGridItemScope.kt", |
| "1a40313cc5e67b5808586c012bbfb058" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemProvider.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyGridItemProvider.kt", |
| "ba8ee64efc5bcd18f28fe9bb9d987166" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGrid.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyGrid.kt", |
| "3f91a6975c10c6a49ddc21f7828d7298" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridLayoutInfo.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/TvLazyGridLayoutInfo.kt", |
| "b421c5e74856a78982efe0d8a79d10cb" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasure.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyGridMeasure.kt", |
| "c600148ddfab1dde9f3ebe8349e77001" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasureResult.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/TvLazyGridMeasureResult.kt", |
| "1277598d36d8507d7bf0305cc629a11c" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridScopeImpl.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/TvLazyGridScopeImpl.kt", |
| "e92ebc01a8b205d304e0b0d3c40636f8" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridScopeMarker.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/TvLazyGridScopeMarker.kt", |
| "0b7ff258a80e2413f89d56ab0ef41b46" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridScrollPosition.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyGridScrollPosition.kt", |
| "70bac76aeb2617b8f5c706f1867800fd" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridSpan.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyGridSpan.kt", |
| "cc63cb4f05cc556e8fcf7504ac0ea57c" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridSpanLayoutProvider.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyGridSpanLayoutProvider.kt", |
| "062f95aa00d36fb1e048aa1ddb8154bc" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridState.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/TvLazyGridState.kt", |
| "c6b402b685824ff216650da77063a131" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyMeasuredItem.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredItem.kt", |
| "b9e6230825d8688bf1164abef07b4e14" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyMeasuredItemProvider.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredItemProvider.kt", |
| "ab9a58f65e85b4fe4d621e9ed5b2db68" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyMeasuredLine.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredLine.kt", |
| "3b99751e25cebc9945df800ce1aa04f8" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyMeasuredLineProvider.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredLineProvider.kt", |
| "e2bdba6cdbc870ea9607658ec60eb1eb" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazySemantics.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazySemantics.kt", |
| "bb397307f2cc3fd87bcc7585bf403039" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyDsl.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazyDsl.kt", |
| "9d86fad30c0f3de2231fbef3f63db53e" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListPinningModifier.kt", |
| "src/main/java/androidx/tv/foundation/lazy/LazyListPinningModifier.kt", |
| "e37450505d13ab0fd1833f136ec8aa3c" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyScopeMarker.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/TvLazyListScopeMarker.kt", |
| "f7b72b3c6bad88868153300b9fbdd922" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyItemScope.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/TvLazyListItemScope.kt", |
| "6254294540cfadf2d6da1bbbce1611e8" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemInfo.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/TvLazyListItemInfo.kt", |
| "7571daa18ca079fd6de31d37c3022574" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListLayoutInfo.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/TvLazyListLayoutInfo.kt", |
| "fa1dffc993bdc486e0819c5d8018cda3" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutSemantics.kt", |
| "src/main/java/androidx/tv/foundation/lazy/layout/LazyLayoutSemantics.kt", |
| "8b9e4a03c5097b4ef7377f98da95bbcd" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyAnimateScroll.kt", |
| "src/main/java/androidx/tv/foundation/lazy/layout/LazyAnimateScroll.kt", |
| "72859815545394de5b9f7269f1366d21" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridAnimateScrollScope.kt", |
| "src/main/java/androidx/tv/foundation/lazy/grid/LazyGridAnimateScrollScope.kt", |
| "315f220a2674a50f82633a725dc39c1b" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListAnimateScrollScope.kt", |
| "src/main/java/androidx/tv/foundation/lazy/list/LazyListAnimateScrollScope.kt", |
| "d0d48557af324db3af7f4c46a6810026" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ContentInViewModifier.kt", |
| "src/main/java/androidx/tv/foundation/ContentInViewModifier.kt", |
| "c08e23de9ddfed42c9dbb7569eef6198" |
| ) |
| ) |
| |
| String generateMd5(String fileNameToHash) { |
| try { |
| MessageDigest digest = MessageDigest.getInstance("MD5") |
| file(fileNameToHash).withInputStream() { is -> |
| byte[] buffer = new byte[8192] |
| int read |
| while ((read = is.read(buffer)) > 0) { |
| digest.update(buffer, 0, read); |
| } |
| } |
| byte[] md5sum = digest.digest() |
| BigInteger bigInt = new BigInteger(1, md5sum) |
| bigInt.toString(16).padLeft(32, '0') |
| } catch (Exception e) { |
| throw new GradleException("Failed for file=$fileNameToHash", e) |
| } |
| } |
| |
| task doCopiesNeedUpdate { |
| doLast { |
| List<String> failureFiles = new ArrayList<>() |
| boolean failures = false |
| copiedClasses.forEach(copiedClass -> { |
| assert file(copiedClass.originalFilePath).exists() |
| assert file(copiedClass.copyFilePath).exists() |
| try { |
| String actualMd5 = generateMd5(copiedClass.originalFilePath) |
| if (copiedClass.lastKnownGoodHash != actualMd5) { |
| failureFiles.add(copiedClass.toString()+ "\nactual= " + actualMd5 + "\n") |
| } |
| } catch (Exception e) { |
| logger.error("Failed for file=${copiedClass.originalFilePath}", e) |
| failures = true |
| } |
| }) |
| |
| if (!failureFiles.isEmpty()) { |
| throw new GradleException( |
| "Files that were copied have been updated at the source. " + |
| "Please update the copy and then" + |
| " update the hash in the compose-foundation build.gradle file." + |
| failureFiles.stream().collect(Collectors.joining("\n", "\n", "")) + "\ncount=${failureFiles.size()}") |
| } |
| |
| if (failures) { |
| throw new GradleException("There were errors. Check the logs.") |
| } |
| } |
| } |
| |
| class CopiedClass { |
| String originalFilePath |
| String copyFilePath |
| String lastKnownGoodHash |
| |
| CopiedClass(String originalFilePath, String copyFilePath, String lastKnownGoodHash) { |
| this.originalFilePath = originalFilePath |
| this.copyFilePath = copyFilePath |
| this.lastKnownGoodHash = lastKnownGoodHash |
| } |
| |
| @Override |
| String toString() { |
| return "originalFilePath='" + originalFilePath + '\'\n' + |
| "copyFilePath='" + copyFilePath + '\'\n' + |
| "lastKnownGoodHash='" + lastKnownGoodHash + '\'\n' + |
| "diffCmd='" + "kdiff3 " + originalFilePath + " " + copyFilePath + "\'" |
| } |
| } |