diff --git a/bundle/pom.xml b/bundle/pom.xml
index 6b8b9b2..e222ea5 100644
--- a/bundle/pom.xml
+++ b/bundle/pom.xml
@@ -27,7 +27,7 @@
- 2.4.0
+ 2.4.1
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/CliDriverWrapper.java b/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/CliDriverWrapper.java
new file mode 100644
index 0000000..5af09da
--- /dev/null
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/CliDriverWrapper.java
@@ -0,0 +1,68 @@
+package com.jfrog.ide.eclipse.configuration;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+
+import com.jfrog.ide.common.configuration.JfrogCliDriver;
+import com.jfrog.ide.eclipse.log.Logger;
+
+public class CliDriverWrapper {
+
+ private static CliDriverWrapper instance;
+
+ public static final String CLIENT_ID_SERVER = "eclipse";
+ public static final String CLI_VERSION = "2.74.1";
+ public static final Path HOME_PATH = Paths.get(System.getProperty("user.home"), ".jfrog-eclipse-plugin");
+
+ private JfrogCliDriver cliDriver;
+
+ private CliDriverWrapper() {
+ try {
+ Files.createDirectories(HOME_PATH);
+ } catch (Exception e) {
+ showCliError("An error occurred while creating the JFrog Eclipse plugin directory:",e);
+ }
+ // Initialize the cliDriver and download CLI if needed
+ this.cliDriver = new JfrogCliDriver(null, Logger.getInstance());
+ try {
+ this.cliDriver.downloadCliIfNeeded(HOME_PATH.toString(), CLI_VERSION);
+ } catch (IOException e) {
+ showCliError("An error occurred while downloading the JFrog CLI:",e);
+ }
+ }
+
+ public static CliDriverWrapper getInstance() {
+ if (instance == null) {
+ synchronized (CliDriverWrapper.class) {
+ if (instance == null) {
+ instance = new CliDriverWrapper();
+ }
+ }
+ }
+ return instance;
+ }
+
+ public JfrogCliDriver getCliDriver() {
+ return cliDriver;
+ }
+
+ public void showCliError(String errorTitle,Exception e) {
+ Logger.getInstance().error(e.getMessage(), e);
+ IStatus status = new Status(IStatus.ERROR, "jfrog-eclipse-plugin",e.getMessage(), e);
+
+ // Run UI-related code on the main UI thread
+ Display.getDefault().asyncExec(() -> {
+ Shell shell = Display.getDefault().getActiveShell();
+ if (shell != null) {
+ ErrorDialog.openError(shell, "Error", errorTitle, status);
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/XrayGlobalConfiguration.java b/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/XrayGlobalConfiguration.java
index 8514cbc..2b5ed72 100644
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/XrayGlobalConfiguration.java
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/XrayGlobalConfiguration.java
@@ -1,5 +1,6 @@
package com.jfrog.ide.eclipse.configuration;
+import org.eclipse.core.runtime.ICoreRunnable;
import org.eclipse.core.runtime.preferences.ConfigurationScope;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.PreferenceDialog;
@@ -10,6 +11,7 @@
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
+import com.jfrog.ide.eclipse.scheduling.CliJob;
import com.jfrog.ide.eclipse.ui.ComponentDetails;
import com.jfrog.ide.eclipse.ui.issues.ComponentIssueDetails;
@@ -42,11 +44,32 @@ public void createFieldEditors() {
@Override
public boolean performOk() {
- // TODO: This code runs when clicking the 'Apply' button in the settings panel. Implement server configuration using CliDriver here
super.performOk();
if (!XrayServerConfigImpl.getInstance().areCredentialsSet()) {
return true;
}
+
+ // Define the runnable to execute the CLI config command
+ ICoreRunnable runnable = monitor -> {
+ try {
+ CliDriverWrapper.getInstance().getCliDriver().addCliServerConfig(
+ XrayServerConfigImpl.getInstance().getXrayUrl(),
+ XrayServerConfigImpl.getInstance().getArtifactoryUrl(),
+ CliDriverWrapper.CLIENT_ID_SERVER,
+ XrayServerConfigImpl.getInstance().getUsername(),
+ XrayServerConfigImpl.getInstance().getPassword(),
+ XrayServerConfigImpl.getInstance().getAccessToken(),
+ CliDriverWrapper.HOME_PATH.toFile(),
+ System.getenv()
+ );
+ } catch (Exception e) {
+ CliDriverWrapper.getInstance().showCliError("An error occurred while setting up the server connection:", e);
+ }
+ };
+
+ // Schedule the CliJob to execute the runnable
+ CliJob.doSchedule("Setup Server Configuration", runnable);
+
boolean doQuickScan = false;
ComponentDetails[] componentsDetails = { ComponentIssueDetails.getInstance()};
for (ComponentDetails componentsDetail : componentsDetails) {
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/ScanManager.java b/bundle/src/main/java/com/jfrog/ide/eclipse/scan/ScanManager.java
index 73723ab..6ce0ff4 100644
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/ScanManager.java
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/scan/ScanManager.java
@@ -21,7 +21,7 @@
import com.jfrog.ide.eclipse.configuration.XrayServerConfigImpl;
import com.jfrog.ide.eclipse.log.Logger;
import com.jfrog.ide.eclipse.log.ProgressIndicatorImpl;
-import com.jfrog.ide.eclipse.scheduling.ScanJob;
+import com.jfrog.ide.eclipse.scheduling.CliJob;
import com.jfrog.ide.eclipse.ui.FilterManagerSingleton;
import com.jfrog.ide.eclipse.ui.issues.IssuesTree;
import com.jfrog.ide.eclipse.utils.ProjectsMap;
@@ -76,7 +76,7 @@ public IProgressMonitor getMonitor(){
* disposed.
*/
public void scanAndUpdateResults(boolean quickScan, IssuesTree issuesTree, Composite parent) {
- ScanJob.doSchedule(project.getName(), new ScanRunnable(parent, issuesTree, quickScan));
+ CliJob.doSchedule(project.getName(), new ScanRunnable(parent, issuesTree, quickScan));
}
/**
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/ScanJob.java b/bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/CliJob.java
similarity index 86%
rename from bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/ScanJob.java
rename to bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/CliJob.java
index 8813156..623ecfd 100644
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/ScanJob.java
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/CliJob.java
@@ -13,16 +13,16 @@
*
* @author yahavi
*/
-public class ScanJob extends Job {
+public class CliJob extends Job {
private ICoreRunnable runnable;
public static String FAMILY = "JFrogEclipsePluginJob";
- public ScanJob(String name, ICoreRunnable runnable) {
+ public CliJob(String name, ICoreRunnable runnable) {
super(name);
setUser(true);
setRule(ResourcesPlugin.getWorkspace().getRoot());
- addJobChangeListener(new XrayJobEventListener());
+ addJobChangeListener(new CliJobEventListener());
this.runnable = runnable;
}
@@ -33,7 +33,7 @@ public ScanJob(String name, ICoreRunnable runnable) {
* @param runnable - Job's callback.
*/
public static void doSchedule(String name, ICoreRunnable runnable) {
- new ScanJob(name, runnable).schedule();
+ new CliJob(name, runnable).schedule();
}
@Override
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/XrayJobEventListener.java b/bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/CliJobEventListener.java
similarity index 81%
rename from bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/XrayJobEventListener.java
rename to bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/CliJobEventListener.java
index 04bcdec..0726f34 100644
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/XrayJobEventListener.java
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/CliJobEventListener.java
@@ -5,11 +5,11 @@
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-public class XrayJobEventListener extends JobChangeAdapter {
+public class CliJobEventListener extends JobChangeAdapter {
@Override
public void done(IJobChangeEvent event) {
- Job[] jobs = Job.getJobManager().find(ScanJob.FAMILY);
+ Job[] jobs = Job.getJobManager().find(CliJob.FAMILY);
// TODO: implement a listener for the audit scan
// ScanManagersFactory scanManagersFactory = ScanManagersFactory.getInstance();
if (ArrayUtils.isEmpty(jobs)) {