private void checkSdkStatusAfterFailedUpdate() { try { if (managedCloudSdk.isInstalled()) { updateStatus(SdkStatus.READY); } else { updateStatus(SdkStatus.NOT_AVAILABLE); } } catch (Exception ex) { updateStatus(SdkStatus.NOT_AVAILABLE); } }
/** * Runs managed SDK install/update code on background job and handles success/errors. * * @param jobType Install/update * @param managedSdkTask Task to execute. * @return {@code true} if task started, {@code false} if Managed SDK is not supported at all. */ private boolean executeManagedSdkJob( ManagedSdkJobType jobType, Callable<ManagedSdkJobResult> managedSdkTask) { if (!isInstallSupported()) { return false; } if (managedSdkBackgroundJob == null || managedSdkBackgroundJob.isDone()) { updateStatus(SdkStatus.INSTALLING); managedSdkBackgroundJob = ThreadUtil.getInstance().executeInBackground(managedSdkTask); Futures.addCallback( managedSdkBackgroundJob, new ManagedSdkJobListener(jobType), MoreExecutors.directExecutor()); } return true; }
/** Creates managed SDK, installs if necessary, and checks for fatal errors. */ @VisibleForTesting void initManagedSdk() { try { managedCloudSdk = createManagedSdk(); // do not install SDK on activation if user cancelled installation once. if (!CloudSdkServiceUserSettings.getInstance().isUserCancelledInstallation()) { install(); } } catch (UnsupportedOsException ex) { logger.warn("Unsupported OS for Managed Cloud SDK", ex); updateStatus(SdkStatus.NOT_AVAILABLE); ManagedCloudSdkServiceUiPresenter.getInstance() .notifyManagedSdkJobFailure( ManagedSdkJobType.INSTALL, CloudSdkMessageBundle.message("managedsdk.unsupported.os")); } }