| /* |
| * 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.2.1' |
| |
| api("androidx.annotation:annotation:1.4.0") |
| api("androidx.compose.animation:animation:$composeVersion") |
| api("androidx.compose.runtime:runtime:$composeVersion") |
| api("androidx.compose.ui:ui:$composeVersion") |
| |
| implementation(libs.kotlinStdlibCommon) |
| implementation("androidx.compose.foundation:foundation:$composeVersion") |
| implementation(project(":compose:foundation:foundation")) |
| implementation("androidx.compose.foundation:foundation-layout:$composeVersion") |
| implementation("androidx.compose.ui:ui-graphics:$composeVersion") |
| implementation("androidx.compose.ui:ui-text:$composeVersion") |
| implementation("androidx.compose.ui:ui-util:$composeVersion") |
| implementation("androidx.profileinstaller:profileinstaller:1.2.0") |
| |
| 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 |
| mavenGroup = LibraryGroups.TV |
| 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 |
| } |
| |
| tasks.withType(KotlinCompile).configureEach { |
| kotlinOptions { |
| freeCompilerArgs += [ |
| "-Xjvm-default=all", |
| ] |
| } |
| } |
| |
| // 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/commonMain/kotlin/androidx/tv/foundation/ScrollableWithPivot.kt", |
| "afaf0f2be6b57df076db42d9218f83d9" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/DataIndex.kt", |
| "src/commonMain/kotlin/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/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyItemScopeImpl.kt", |
| "31e6796d0d03cb84483396a39fc5b7e7" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListHeaders.kt", |
| "src/commonMain/kotlin/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/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyListItemPlacementAnimator.kt", |
| "a74bfa05e68e2b6c2e108f022dfbfa26" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemProviderImpl.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyListItemProviderImpl.kt", |
| "57ff505cbdfa854e15b4fbd9d4a574eb" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemProvider.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyListItemsProvider.kt", |
| "42a2c446c81fba89fd7b8480d063b308" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyList.kt", |
| "c605794683c01c516674436c9ebc1f44" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasure.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyListMeasure.kt", |
| "95c14abd0367f0f39218c9bdd175b242" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasureResult.kt", |
| "src/commonMain/kotlin/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/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyListScopeImpl.kt", |
| "1888e8b115c73b5ea7f33d48d9887845" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListScrolling.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyListScrolling.kt", |
| "a32b856a1e8740a6a521df04c9d51ed1" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListScrollPosition.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyListScrollPosition.kt", |
| "82df7d370ba5b20309e5191a0af431a0" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListState.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyListState.kt", |
| "45821a5bf14d3e6e25fee63e61930f57" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyMeasuredItem.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyMeasuredItem.kt", |
| "78b09b4d78ec9d761274b9ca8d24f4f7" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyMeasuredItemProvider.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyMeasuredItemProvider.kt", |
| "bec4211cb3d91bb936e9f0872864244b" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazySemantics.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazySemantics.kt", |
| "739205f656bf107604ba7167e3cee7e7" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/ItemIndex.kt", |
| "src/commonMain/kotlin/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/commonMain/kotlin/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/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridItemInfo.kt", |
| "1f3b13ee45de79bc67ace4133e634600" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemPlacementAnimator.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridItemPlacementAnimator.kt", |
| "0bbc162aab675ca2a34350e3044433e7" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemScopeImpl.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridItemScopeImpl.kt", |
| "b3ff4600791c73028b8661c0e2b49110" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemScope.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridItemScope.kt", |
| "1a40313cc5e67b5808586c012bbfb058" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemProviderImpl.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridItemsProviderImpl.kt", |
| "48fdfb1dfa5d39c88d4aa96732192421" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemProvider.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridItemProvider.kt", |
| "e5e95e6cad43cec2b0c30bf201e3cae9" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGrid.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGrid.kt", |
| "69dbab5e83deab809219d4d7a9ee7fa8" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridLayoutInfo.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridLayoutInfo.kt", |
| "b421c5e74856a78982efe0d8a79d10cb" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasure.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridMeasure.kt", |
| "2b38f5261ad092d9048cfc4f0a841a1a" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasureResult.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridMeasureResult.kt", |
| "1277598d36d8507d7bf0305cc629a11c" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridScopeImpl.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridScopeImpl.kt", |
| "3296c6edcbd56450ba919df105cb36c0" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridScopeMarker.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridScopeMarker.kt", |
| "0b7ff258a80e2413f89d56ab0ef41b46" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridScrolling.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridScrolling.kt", |
| "15f2f9bb89c1603aa4b7e7d1f8a2de5a" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridScrollPosition.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridScrollPosition.kt", |
| "9b3d47322ad526fb17a3d9505a80f673" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridSpan.kt", |
| "src/commonMain/kotlin/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/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridSpanLayoutProvider.kt", |
| "894b9f69a27e247bbe609bdac22bb5ed" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridState.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyGridState.kt", |
| "1e37d8a6f159aabe11f488121de59b70" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyMeasuredItem.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyMeasuredItem.kt", |
| "09d9b21d33325a94cac738aad58e2422" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyMeasuredItemProvider.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyMeasuredItemProvider.kt", |
| "3acdfddfd06eb17aac5dbdd326482e35" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyMeasuredLine.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyMeasuredLine.kt", |
| "1104f01e8b1f6eced2401b207114f4a4" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyMeasuredLineProvider.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazyMeasuredLineProvider.kt", |
| "b7b731e6e8fdc520064aaef989575bda" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazySemantics.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/grid/LazySemantics.kt", |
| "dab277484b4ec57a5275095b505f79d4" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyDsl.kt", |
| "src/commonMain/kotlin/androidx/tv/foundation/lazy/list/LazyDsl.kt", |
| "8462c0a61f14639f39dd6f76c6a2aebc" |
| ) |
| ) |
| |
| copiedClasses.add( |
| new CopiedClass( |
| "../../compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListPinningModifier.kt", |
| "src/commonMain/kotlin/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" |
| ) |
| ) |
| |
| task doCopiesNeedUpdate { |
| ext.genMd5 = { 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) |
| } |
| } |
| |
| |
| doLast { |
| List<String> failureFiles = new ArrayList<>() |
| copiedClasses.forEach(copiedClass -> { |
| try { |
| String actualMd5 = genMd5(copiedClass.originalFilePath) |
| if (copiedClass.lastKnownGoodHash != actualMd5) { |
| failureFiles.add(copiedClass.toString()+ ", actual=" + actualMd5) |
| } |
| } catch (Exception e) { |
| throw new GradleException("Failed for file=${copiedClass.originalFilePath}", e) |
| } |
| }) |
| |
| 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", ""))) |
| } |
| } |
| } |
| |
| 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 + '\'' + |
| ", copyFilePath='" + copyFilePath + '\'' + |
| ", lastKnownGoodHash='" + lastKnownGoodHash + '\'' |
| } |
| } |