/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 Ġ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 . Ċ Ġ*/ Ċ package Ġcom . android . tools . idea . gradle . project . sync . errors Ċ Ċ import Ġcom . android . tools . idea . gradle . project . sync . idea . issues . Build Issue Composer Ċ import Ġcom . android . tools . idea . gradle . project . sync . idea . issues . update Usage Tracker Ċ import Ġcom . google . wire less . android . sdk . stats . Android Studio Event . Gradle Sync Failure Ċ import Ġcom . intellij . build . File Position Ċ import Ġcom . intellij . build . events . Build Event Ċ import Ġcom . intellij . build . issue . Build Issue Ċ import Ġcom . intellij . build . issue . Build Issue Quick Fix Ċ import Ġcom . intellij . ide . actions . Re veal File Action Ċ import Ġcom . intellij . ide . actions . Send Feedback Action Ċ import Ġcom . intellij . openapi . action System . DataContext Ċ import Ġcom . intellij . openapi . application . Path Manager Ċ import Ġcom . intellij . openapi . application . invoke Later Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġorg . jetbrains . plugins . gradle . issue . Gradle Issue Checker Ċ import Ġorg . jetbrains . plugins . gradle . issue . Gradle Issue Data Ċ import Ġorg . jetbrains . plugins . gradle . service . execution . Gradle Execution ErrorHandler Ċ import Ġjava . io . File Ċ import Ġjava . util . concurrent . Comp letableFuture Ċ import Ġjava . util . function . Consumer Ċ Ċ class ĠUnexpected Issue Checker : ĠGradle Issue Checker Ġ{ ĊĠ Ġprivate Ġval ĠUN EXPECTED _ ERROR _ FILE _ BUG Ġ= Ġ" This Ġis Ġan Ġunexpected Ġerror . ĠPlease Ġfile Ġa Ġbug Ġcontaining Ġthe Ġidea . log Ġfile ." ĊĊĠ Ġoverride Ġfun Ġcheck ( issue Data : ĠGradle Issue Data ): ĠBuild Issue ? Ġ{ ĊĠĠĠ Ġval Ġmessage = ĠGradle Execution ErrorHandler . getRoot Cause And Location ( issue Data . error ). first . message Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġif Ġ( message . isBlank () Ġ|| Ġ! message . contains ( UN EXPECTED _ ERROR _ FILE _ BUG )) Ġreturn Ġnull ĊĊĠĠĠ Ġ// ĠLog Ġmetrics . ĊĠĠĠ Ġinvoke Later Ġ{ ĊĠĠĠĠĠ Ġupdate Usage Tracker ( issue Data . project Path , ĠGradle Sync Failure . UN EXPECTED _ ERROR ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġbuild Issue Composer Ġ= ĠBuild Issue Composer ( message ). apply Ġ{ ĊĠĠĠĠĠ Ġadd Quick Fix (" File Ġa Ġbug ", ĠFile Bug Quick Fix ()) ĊĠĠĠĠĠ Ġadd Quick Fix (" Show Ġlog Ġfile ", ĠShow Log Quick Fix ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġbuild Issue Composer . compose Build Issue () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġconsume Build Output Failure Message ( message : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Cause : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack trace : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation : ĠFile Position ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent EventId : ĠAny , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Consumer : ĠConsumer < in ĠBuild Event >): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġfailure Cause . contains ( UN EXPECTED _ ERROR _ FILE _ BUG ) ĊĠ Ġ} Ċ } Ċ Ċ class ĠFile Bug Quick Fix : ĠBuild Issue Quick Fix Ġ{ ĊĠ Ġoverride Ġval Ġid Ġ= Ġ" file . bug " ĊĊĠ Ġoverride Ġfun Ġrun Quick Fix ( project : ĠProject , Ġdata Context : ĠData Context ): ĠCompletableFuture < *> Ġ{ ĊĠĠĠ Ġval Ġfuture Ġ= ĠCompletableFuture < Any >() ĊĠĠĠ Ġinvoke Later Ġ{ ĊĠĠĠĠĠ ĠSend Feedback Action . submit ( project ) ĊĠĠĠĠĠ Ġfuture . complete ( null ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfuture ĊĠ Ġ} Ċ } Ċ Ċ class ĠShow Log Quick Fix : ĠBuild Issue Quick Fix Ġ{ ĊĠ Ġoverride Ġval Ġid Ġ= Ġ" show . log . file " ĊĠ Ġprivate Ġval ĠIDEA _ LOG _ FILE _ NAME Ġ= Ġ" idea . log " ĊĊĠ Ġoverride Ġfun Ġrun Quick Fix ( project : ĠProject , Ġdata Context : ĠData Context ): ĠCompletableFuture < *> Ġ{ ĊĠĠĠ Ġval Ġfuture Ġ= ĠCompletableFuture < Any >() ĊĠĠĠ Ġinvoke Later Ġ{ ĊĠĠĠĠĠ Ġval Ġlog File Ġ= ĠFile ( Path Manager . getLog Path (), ĠIDEA _ LOG _ FILE _ NAME ) ĊĠĠĠĠĠ ĠRe veal File Action . open File ( log File ) ĊĠĠĠĠĠ Ġfuture . complete ( null ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfuture ĊĠ Ġ} Ċ }