diff --git a/bundle/.classpath b/bundle/.classpath
index 0d72691..6187908 100644
--- a/bundle/.classpath
+++ b/bundle/.classpath
@@ -1,6 +1,6 @@
-
+
@@ -13,4 +13,4 @@
-
\ No newline at end of file
+
diff --git a/bundle/.settings/org.eclipse.jdt.core.prefs b/bundle/.settings/org.eclipse.jdt.core.prefs
index 9f6ece8..a849b0e 100644
--- a/bundle/.settings/org.eclipse.jdt.core.prefs
+++ b/bundle/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,8 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.compliance=17
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.source=17
\ No newline at end of file
diff --git a/bundle/META-INF/MANIFEST.MF b/bundle/META-INF/MANIFEST.MF
index 886a1a3..413aef4 100644
--- a/bundle/META-INF/MANIFEST.MF
+++ b/bundle/META-INF/MANIFEST.MF
@@ -3,10 +3,10 @@ Bundle-ManifestVersion: 2
Bundle-Name: XRay Plugin
Bundle-SymbolicName: com.jfrog.ide.eclipse;singleton:=true
Bundle-Version: 1.2.0
-nEnvironment: JavaSE-1.8
+nEnvironment: JavaSE-17
Import-Package: javax.annotation
Automatic-Module-Name: org.jfrog.plugin.rcp
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.eclipse.ui;bundle-version="3.114.0",
org.eclipse.core.runtime;bundle-version="3.16.0",
org.eclipse.m2e.maven.runtime;bundle-version="1.13.0",
diff --git a/bundle/pom.xml b/bundle/pom.xml
index 35de751..6b8b9b2 100644
--- a/bundle/pom.xml
+++ b/bundle/pom.xml
@@ -27,7 +27,7 @@
- 1.6.1
+ 2.4.0
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/TestConnectionButton.java b/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/TestConnectionButton.java
index 0411671..1e75072 100644
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/TestConnectionButton.java
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/TestConnectionButton.java
@@ -103,7 +103,7 @@ public void widgetSelected(SelectionEvent e) {
Xray xrayClient = createXrayClient();
Version xrayVersion = xrayClient.system().version();
- if (!XrayConnectionUtils.isXrayVersionSupported(xrayVersion)) {
+ if (!XrayConnectionUtils.isSupportedInXrayVersion(xrayVersion)) {
connectionResults.setText(XrayConnectionUtils.Results.unsupported(xrayVersion));
} else {
Pair testComponentPermissionRes = XrayConnectionUtils
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 cabe770..ebb70cc 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
@@ -10,7 +10,6 @@
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
-import com.jfrog.ide.eclipse.scan.ScanManagersFactory;
import com.jfrog.ide.eclipse.ui.ComponentDetails;
import com.jfrog.ide.eclipse.ui.issues.ComponentIssueDetails;
import com.jfrog.ide.eclipse.ui.licenses.ComponentLicenseDetails;
@@ -44,6 +43,7 @@ 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;
@@ -57,7 +57,7 @@ public boolean performOk() {
}
}
if (doQuickScan) {
- ScanManagersFactory.getInstance().startScan(getShell().getParent(), true);
+ // TODO: run a scan using the ScanManager
}
return true;
}
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/XrayServerConfigImpl.java b/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/XrayServerConfigImpl.java
index ef442a4..d8330b2 100644
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/XrayServerConfigImpl.java
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/XrayServerConfigImpl.java
@@ -22,6 +22,7 @@
*/
@SuppressWarnings("restriction")
public class XrayServerConfigImpl implements ServerConfig {
+ // TODO: adjust implementation for configuring server using JfrogCliDriver
private static XrayServerConfigImpl instance;
private IPreferencesService service = Platform.getPreferencesService();
@@ -107,4 +108,34 @@ public boolean isInsecureTls() {
return false;
}
+ @Override
+ public String getAccessToken() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getExternalResourcesRepo() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public PolicyType getPolicyType() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getProject() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getWatches() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/log/ProgressIndicatorImpl.java b/bundle/src/main/java/com/jfrog/ide/eclipse/log/ProgressIndicatorImpl.java
index c58a55b..9063be2 100644
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/log/ProgressIndicatorImpl.java
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/log/ProgressIndicatorImpl.java
@@ -21,4 +21,16 @@ public ProgressIndicatorImpl(String name, IProgressMonitor progressMonitor) {
public void setFraction(double fraction) {
progressMonitor.worked((int) (fraction * TOTAL_WORK));
}
+
+ @Override
+ public void setIndeterminate(boolean arg0) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setText(String arg0) {
+ // TODO Auto-generated method stub
+
+ }
}
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/GradleScanManager.java b/bundle/src/main/java/com/jfrog/ide/eclipse/scan/GradleScanManager.java
deleted file mode 100644
index 6e9ea64..0000000
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/GradleScanManager.java
+++ /dev/null
@@ -1,195 +0,0 @@
-package com.jfrog.ide.eclipse.scan;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.StandardCopyOption;
-import java.util.Set;
-
-import org.apache.commons.lang3.ArrayUtils;
-import org.eclipse.buildship.core.GradleDistribution;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.preferences.IPreferencesService;
-import org.gradle.tooling.GradleConnector;
-import org.gradle.tooling.ProgressEvent;
-import org.gradle.tooling.ProgressListener;
-import org.gradle.tooling.ProjectConnection;
-import org.jfrog.build.extractor.scan.DependencyTree;
-import org.jfrog.build.extractor.scan.GeneralInfo;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.collect.Sets;
-import com.jfrog.ide.common.scan.ComponentPrefix;
-import com.jfrog.ide.common.gradle.GradleTreeBuilder;
-import com.jfrog.ide.eclipse.configuration.PreferenceConstants;
-import com.jfrog.ide.eclipse.log.Logger;
-import com.jfrog.ide.eclipse.utils.GradleArtifact;
-
-public class GradleScanManager extends ScanManager {
-
- private static final String TASK_NAME = "generateDependenciesGraphAsJson";
- public static final String GRADLE_INIT_SCRIPT = "dependencies.gradle";
- public static final String GRADLESCRIPTDIR = "gradleScript";
- private final GradleTreeBuilder gradleTreeBuilder;
-
- private static ObjectMapper objectMapper = new ObjectMapper();
- private GradleArtifact gradleArtifact;
- private IProgressMonitor monitor;
-
- public GradleScanManager(IProject project) throws IOException {
- super(project, ComponentPrefix.GAV);
- getLog().info("Found Gradle project: " + getProjectName());
- gradleTreeBuilder = new GradleTreeBuilder(project.getLocation().toFile().toPath(), System.getenv());
- }
-
- public static boolean isApplicable(IProject project) {
- try {
- return project.hasNature("org.eclipse.buildship.core.gradleprojectnature");
- } catch (CoreException ce) {
- return false;
- }
- }
-
- @Override
- void buildTree() throws IOException {
- try {
- setScanResults(gradleTreeBuilder.buildTree(getLog()));
- }
- catch (IOException ex) {
- Logger.getInstance().warn("Could not scan project: " + getProjectName() + ". Reason is: " + ex.getMessage());
- }
-
- }
-
- public GradleArtifact getGradleArtifact() {
- return gradleArtifact;
- }
-
- private void removeDuplicateDependencies() {
- if (gradleArtifact != null && ArrayUtils.isNotEmpty(gradleArtifact.getDependencies())) {
- Set dependenciesSet = Sets.newHashSet(gradleArtifact.getDependencies());
- gradleArtifact.setDependencies(dependenciesSet.toArray(new GradleArtifact[] {}));
- }
- }
-
- private String getComponentId(GradleArtifact gradleArtifact) {
- return gradleArtifact.getGroupId() + ":" + gradleArtifact.getArtifactId() + ":" + gradleArtifact.getVersion();
- }
-
- /**
- * Populate root modules DependencyTree with issues, licenses and general info
- * from the scan cache.
- */
- @SuppressWarnings("unused")
- private void populateDependenciesTree(DependencyTree scanTreeNode, GradleArtifact[] gradleArtifacts) {
- for (GradleArtifact artifact : gradleArtifacts) {
- String componentId = getComponentId(artifact);
- DependencyTree child = new DependencyTree(componentId);
- child.setGeneralInfo(new GeneralInfo(componentId, artifact.getArtifactId(), "", "Gradle"));
- scanTreeNode.add(child);
- populateDependenciesTree(child, artifact.getDependencies());
- }
- }
-
- /**
- * Create dependencies.gradle file for the project in the
- * homeDir/.jfrog-eclipse-plugin/gradleScriptDir dir
- *
- * @param in - File descriptor for the Gradle file.
- * @return the Gradle file.
- * @throws IOException in case of any IO failure.
- */
- public String createGradleFile(InputStream in) throws IOException {
- Path gradleScriptDir = Files.createDirectories(HOME_PATH.resolve(GRADLESCRIPTDIR));
- Path gradleFile = gradleScriptDir.resolve(GRADLE_INIT_SCRIPT);
- Files.copy(in, gradleFile, StandardCopyOption.REPLACE_EXISTING);
- return gradleFile.toAbsolutePath().toString();
- }
-
- /**
- * Run 'gradle --init-script' that generates the dependencies graph.
- *
- * @param rootProjectDir - The root project directory.
- * @param gradleFile - Path to the 'dependencies.gradle' file.
- * @throws IOException in case of any IO failures in the eclipse logs.
- */
- public void generateDependenciesGraphAsJsonTask(String rootProjectDir, String gradleFile) throws IOException {
- ProjectConnection connection = createGradleConnector().connect();
- try (OutputStream out = new FileOutputStream(Platform.getLogFileLocation().toOSString())) {
- getLog().info("Running the following command at " + project.getLocation().toString()
- + ": gradle --init-script " + gradleFile + " " + TASK_NAME + " ");
- connection.newBuild().withArguments("--init-script", gradleFile).forTasks(TASK_NAME).setStandardOutput(out)
- .addProgressListener(new GradleProgressListener()).run();
- } finally {
- connection.close();
- }
- }
-
- /**
- * Read the files and convert from JSON.
- *
- * @throws IOException in case of incorrect JSON file.
- */
- public void parseJsonResult() throws IOException {
- byte[] json = readGeneratedJson();
- if (json != null) {
- gradleArtifact = objectMapper.readValue(json, GradleArtifact.class);
- removeDuplicateDependencies();
- }
- }
-
- public byte[] readGeneratedJson() throws IOException {
- Path pathToTaskOutputDir = HOME_PATH.resolve(TASK_NAME).resolve(project.getName());
- if (!Files.exists(pathToTaskOutputDir)) {
- getLog().warn("Path is missing " + pathToTaskOutputDir.toAbsolutePath().toString());
- return null;
- }
- Path jsonOutputFile = pathToTaskOutputDir.resolve(getProjectName() + ".txt");
- return Files.readAllBytes(jsonOutputFile);
- }
-
- /**
- * Create a Gradle connector according to the Gradle distribution chosen in
- * 'Preferences' -> 'Gradle' -> 'Gradle distribution'.
- *
- * @return Gradle connector
- */
- private GradleConnector createGradleConnector() {
- GradleConnector connector = GradleConnector.newConnector();
- connector.forProjectDirectory(new File(project.getLocation().toString()));
- IPreferencesService service = Platform.getPreferencesService();
- String gradleDistributionStr = service.getString(PreferenceConstants.GRADLE_PLUGIN_QUALIFIER,
- PreferenceConstants.GRADLE_DISTRIBUTION, "", null);
- try {
- GradleDistribution gradleDistribution = GradleDistribution.fromString(gradleDistributionStr);
- getLog().info("Gradle distribution type: " + gradleDistribution.getDisplayName());
- gradleDistribution.apply(connector);
- } catch (IllegalArgumentException exception) {
- getLog().info(
- "Couldn't find Gradle distribution type. Falling back to using Gradle wrapper, if it is configured as part of the project. If not, downloading Gradle. You can also configure Gradle distribution type in 'Preferences' -> 'Gradle' -> 'Gradle distribution'.");
- }
-
- return connector;
- }
-
- /**
- * Log Gradle steps in the progress monitor.
- */
- class GradleProgressListener implements ProgressListener {
- @Override
- public void statusChanged(ProgressEvent event) {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- monitor.beginTask(event.getDescription(), IProgressMonitor.UNKNOWN);
- }
- }
-}
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/MavenScanManager.java b/bundle/src/main/java/com/jfrog/ide/eclipse/scan/MavenScanManager.java
deleted file mode 100644
index 9d7a6ba..0000000
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/MavenScanManager.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package com.jfrog.ide.eclipse.scan;
-
-import java.io.IOException;
-import java.util.Arrays;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.project.MavenProject;
-import org.eclipse.aether.graph.DependencyNode;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.m2e.core.MavenPlugin;
-import org.eclipse.m2e.core.project.IMavenProjectChangedListener;
-import org.eclipse.m2e.core.project.IMavenProjectFacade;
-import org.eclipse.m2e.core.project.MavenProjectChangedEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.jfrog.build.extractor.scan.DependencyTree;
-import org.jfrog.build.extractor.scan.GeneralInfo;
-import org.jfrog.build.extractor.scan.Scope;
-
-import com.google.common.collect.Sets;
-import com.jfrog.ide.common.scan.ComponentPrefix;
-import com.jfrog.ide.eclipse.log.Logger;
-import com.jfrog.ide.eclipse.scheduling.ScanJob;
-import com.jfrog.ide.eclipse.ui.issues.IssuesTree;
-import com.jfrog.ide.eclipse.ui.licenses.LicensesTree;
-
-/**
- * @author yahavi
- */
-public class MavenScanManager extends ScanManager {
-
- private DependencyNode mavenDependenciesRoot;
- private MavenProject mavenProject;
- private Composite parent;
-
- public MavenScanManager(IProject project, Composite parent) throws IOException {
- super(project, ComponentPrefix.GAV);
- getLog().info("Found Maven project: " + getProjectName());
- this.parent = parent;
- }
-
- public static boolean isApplicable(IProject project) {
- try {
- return project.hasNature("org.eclipse.m2e.core.maven2Nature");
- } catch (CoreException ce) {
- return false;
- }
- }
-
- void refreshDependencies(IProgressMonitor monitor) throws CoreException {
- IMavenProjectFacade facade = MavenPlugin.getMavenProjectRegistry().getProject(project);
- if (facade == null) {
- // If workspace is not ready yet, the get project will return null.
- // Adding a listener to wait for workspace build completion.
- MavenPlugin.getMavenProjectRegistry().addMavenProjectChangedListener(new MavenProjectListener());
- return;
- }
- mavenProject = facade.getMavenProject(monitor);
- mavenDependenciesRoot = MavenPlugin.getMavenModelManager().readDependencyTree(facade, mavenProject,
- Artifact.SCOPE_COMPILE_PLUS_RUNTIME, monitor);
- }
-
- @Override
- void buildTree() throws CoreException {
- refreshDependencies(getMonitor());
- if (mavenProject == null) {
- return;
- }
- DependencyTree rootNode = new DependencyTree(mavenProject.getName());
- populateScanTreeNode(rootNode, mavenDependenciesRoot);
- GeneralInfo generalInfo = new GeneralInfo().groupId(mavenProject.getGroupId())
- .artifactId(mavenProject.getArtifactId()).version(mavenProject.getVersion());
- rootNode.setGeneralInfo(generalInfo);
- setScanResults(rootNode);
- }
-
- /**
- * Populate root modules DependencyTree with issues, licenses and general info
- * from the scan cache.
- */
- private void populateScanTreeNode(DependencyTree scanTreeNode, DependencyNode dependencyNode) {
- dependencyNode.getChildren().forEach(dependencyChild -> {
- String componentId = getComponentId(dependencyChild);
- DependencyTree child = new DependencyTree(componentId);
- String componentName = dependencyChild.getArtifact().getArtifactId();
- child.setGeneralInfo(new GeneralInfo(componentId, componentName, "", "Maven"));
- // set dependency scope
- String componentScope = dependencyChild.getDependency().getScope();
- child.setScopes(Sets.newHashSet(new Scope(componentScope)));
-
- scanTreeNode.add(child);
- populateScanTreeNode(child, dependencyChild);
- });
- }
-
- private String getComponentId(DependencyNode dependencyNode) {
- org.eclipse.aether.artifact.Artifact artifact = dependencyNode.getArtifact();
- return artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getBaseVersion();
- }
-
- /**
- * Implements listener that waits for Maven jobs completion.
- */
- private class MavenProjectListener implements IMavenProjectChangedListener {
- @Override
- public void mavenProjectChanged(MavenProjectChangedEvent[] events, IProgressMonitor monitor) {
- try {
- Job[] jobs = Job.getJobManager().find(ScanJob.FAMILY);
- if (jobs != null) {
- boolean alreadyRun = Arrays.stream(jobs)
- .anyMatch(job -> StringUtils.equals(job.getName(), getProjectName()));
- if (alreadyRun) {
- Logger.getInstance().info("Found existing job: " + getProjectName());
- return;
- }
- }
- IssuesTree issuesTree = IssuesTree.getInstance();
- LicensesTree licensesTree = LicensesTree.getInstance();
- if (issuesTree != null && licensesTree != null) {
- scanAndUpdateResults(false, issuesTree, licensesTree, parent);
- }
- } finally {
- MavenPlugin.getMavenProjectRegistry().removeMavenProjectChangedListener(this);
- }
- }
- }
-}
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/NpmScanManager.java b/bundle/src/main/java/com/jfrog/ide/eclipse/scan/NpmScanManager.java
deleted file mode 100644
index 1dacb42..0000000
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/NpmScanManager.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.jfrog.ide.eclipse.scan;
-
-import java.io.IOException;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.jfrog.ide.common.npm.NpmTreeBuilder;
-import com.jfrog.ide.common.scan.ComponentPrefix;
-import com.jfrog.ide.eclipse.log.Logger;
-
-/**
- * @author yahavi
- */
-public class NpmScanManager extends ScanManager {
-
- private NpmTreeBuilder npmTreeBuilder;
-
- NpmScanManager(IProject project) throws IOException {
- super(project, ComponentPrefix.NPM);
- getLog().info("Found npm project: " + getProjectName());
- npmTreeBuilder = new NpmTreeBuilder(project.getFullPath().toFile().toPath(), System.getenv());
- }
-
- @Override
- void buildTree() throws CoreException, JsonProcessingException, IOException {
- try {
- setScanResults(npmTreeBuilder.buildTree(getLog(), false));
- }
- catch (IOException ex) {
- Logger.getInstance().error("Could not scan project: " + getProjectName() + ". Reason is: " + ex.getMessage());
- }
- }
-}
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 c23b3f9..9b79335 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
@@ -14,10 +14,10 @@
import org.jfrog.build.extractor.scan.DependencyTree;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.jfrog.ide.common.configuration.JfrogCliDriver;
import com.jfrog.ide.common.filter.FilterManager;
import com.jfrog.ide.common.log.ProgressIndicator;
import com.jfrog.ide.common.scan.ComponentPrefix;
-import com.jfrog.ide.common.scan.ScanManagerBase;
import com.jfrog.ide.eclipse.configuration.XrayServerConfigImpl;
import com.jfrog.ide.eclipse.log.Logger;
import com.jfrog.ide.eclipse.log.ProgressIndicatorImpl;
@@ -27,20 +27,23 @@
import com.jfrog.ide.eclipse.ui.licenses.LicensesTree;
import com.jfrog.ide.eclipse.utils.ProjectsMap;
import com.jfrog.xray.client.services.summary.Components;
+import org.jfrog.build.api.util.Log;
/**
* @author yahavi
*/
-public abstract class ScanManager extends ScanManagerBase {
+public abstract class ScanManager {
static final Path HOME_PATH = Paths.get(System.getProperty("user.home"), ".jfrog-eclipse-plugin");
private IProgressMonitor monitor;
IProject project;
-
+ Log log;
+ JfrogCliDriver cliDriver;
+
ScanManager(IProject project, ComponentPrefix prefix) throws IOException {
- super(HOME_PATH.resolve("cache"), project.getName(), Logger.getInstance(), XrayServerConfigImpl.getInstance(), prefix);
this.project = project;
Files.createDirectories(HOME_PATH);
+ log = Logger.getInstance();
}
/**
@@ -53,15 +56,7 @@ public abstract class ScanManager extends ScanManagerBase {
* @throws IOException
* @throws JsonProcessingException
*/
- abstract void buildTree() throws CoreException, JsonProcessingException, IOException;
-
- @Override
- public void checkCanceled() {
- if (monitor != null && monitor.isCanceled()) {
- throw new CancellationException("Xray scan was canceled");
- }
- }
-
+
public IProject getIProject() {
return project;
}
@@ -103,50 +98,11 @@ private ScanRunnable(Composite parent, IssuesTree issuesTree, LicensesTree licen
@Override
public void run(IProgressMonitor monitor) throws CoreException {
- ScanManager.this.monitor = monitor;
- if (isDisposed()) {
- return;
- }
- getLog().info("Performing scan for " + getProjectName());
- try {
- buildTree();
- if (isDisposed() || getScanResults() == null) {
- return;
- }
- ProgressIndicator indicator = new ProgressIndicatorImpl("Xray Scan - " + getProjectName(), monitor);
- scanAndCacheArtifacts(indicator, quickScan);
- addXrayInfoToTree(getScanResults());
- setScanResults();
- } catch (IOException e) {
- Logger.getInstance().error(e.getMessage(), e);
- return;
- }
+ // TODO: implement scan manager using JfrogCliDriver
}
private void setScanResults() {
- FilterManager filterManager = FilterManagerSingleton.getInstance();
- DependencyTree scanResults = getScanResults();
-
- if (!scanResults.isLeaf()) {
- filterManager.collectsFiltersInformation(scanResults);
- }
- issuesTree.addScanResults(getProjectName(), scanResults);
- licensesTree.addScanResults(getProjectName(), scanResults);
- if (isDisposed()) {
- return;
- }
- parent.getDisplay().syncExec(new Runnable() {
- @Override
- public void run() {
- if (monitor.isCanceled()) {
- return;
- }
- ProjectsMap.ProjectKey projectKey = ProjectsMap.createKey(getProjectName(),
- scanResults.getGeneralInfo());
- licensesTree.applyFilters(projectKey);
- issuesTree.applyFilters(projectKey);
- }
- });
+ // TODO: re implement using SarifParser
}
private boolean isDisposed() {
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/ScanManagersFactory.java b/bundle/src/main/java/com/jfrog/ide/eclipse/scan/ScanManagersFactory.java
deleted file mode 100644
index 8b0b8f2..0000000
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/ScanManagersFactory.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package com.jfrog.ide.eclipse.scan;
-
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.commons.lang3.ArrayUtils;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.swt.widgets.Composite;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-import com.jfrog.ide.common.utils.PackageFileFinder;
-import com.jfrog.ide.eclipse.log.Logger;
-import com.jfrog.ide.eclipse.npm.NpmProject;
-import com.jfrog.ide.eclipse.scheduling.ScanJob;
-import com.jfrog.ide.eclipse.ui.issues.ComponentIssueDetails;
-import com.jfrog.ide.eclipse.ui.issues.IssuesTree;
-import com.jfrog.ide.eclipse.ui.licenses.ComponentLicenseDetails;
-import com.jfrog.ide.eclipse.ui.licenses.LicensesTree;
-
-/**
- * @author yahavi
- */
-public class ScanManagersFactory {
-
- private static ScanManagersFactory instance;
- private List scanManagers = Lists.newArrayList();
-
- // Lock to prevent multiple simultaneous scans
- private AtomicBoolean scanInProgress = new AtomicBoolean(false);
-
- private ScanManagersFactory() {
- }
-
- public static ScanManagersFactory getInstance() {
- if (instance == null) {
- instance = new ScanManagersFactory();
- }
- return instance;
- }
-
- public Collection getScanManagers() {
- return scanManagers;
- }
-
- /**
- * Start an Xray scan.
- *
- * @param parent - The parent composite requested to perform the scan. Will
- * be used later to check if it's disposed.
- * @param quickScan - True to use scan cache in case they are not invalidated.
- */
- public void startScan(Composite parent, boolean quickScan) {
- if (isScanInProgress()) {
- Logger.getInstance().info("Previous scan still running...");
- return;
- }
- refreshScanManagers(parent);
-
- // Cancel other jobs
- Job[] jobs = Job.getJobManager().find(ScanJob.FAMILY);
- if (ArrayUtils.isNotEmpty(jobs)) {
- for (Job job : jobs) {
- Logger.getInstance().info("Cancling previous running scan: " + job.getName());
- job.cancel();
- }
- }
-
- if (!scanManagers.isEmpty()) {
- scanInProgress.compareAndSet(false, true);
- }
- IssuesTree issuesTree = IssuesTree.getInstance();
- LicensesTree licensesTree = LicensesTree.getInstance();
- if (issuesTree == null || licensesTree == null) {
- return;
- }
- resetViews(issuesTree, licensesTree);
- for (ScanManager scanManager : getScanManagers()) {
- scanManager.scanAndUpdateResults(quickScan, issuesTree, licensesTree, parent);
- }
- }
-
- /**
- * Initialize scan managers list.
- *
- * @param parent - The parent composite requested to perform the scan. Will be
- * used later to check if it's disposed.
- */
- public void refreshScanManagers(Composite parent) {
- scanManagers = Lists.newArrayList();
- IWorkspace iworkspace = ResourcesPlugin.getWorkspace();
- IProject[] projects = iworkspace.getRoot().getProjects();
- if (projects.length > 0) {
- try {
- Set paths = Sets.newHashSet();
-
- // refresh Maven and Gradle managers
- for (IProject project : projects) {
- if (!project.isOpen()) {
- Logger.getInstance().info("Project is closed: " + project.getName());
- continue;
- }
- if (MavenScanManager.isApplicable(project)) {
- scanManagers.add(new MavenScanManager(project, parent));
- }
- if (GradleScanManager.isApplicable(project)) {
- scanManagers.add(new GradleScanManager(project));
- }
- paths.add(project.getLocation().toFile().toPath());
- }
-
- // refresh Npm manager
- PackageFileFinder packageFileFinder = new PackageFileFinder(paths, "", Logger.getInstance());
- Set packageJsonDirs = packageFileFinder.getNpmPackagesFilePairs();
- for (String dir : packageJsonDirs) {
- IProject npmProject = new NpmProject(dir, iworkspace);
- scanManagers.add(new NpmScanManager(npmProject));
- }
- } catch (IOException e) {
- Logger.getInstance().error(e.getMessage(), e);
- }
- }
- }
-
- public boolean isScanInProgress() {
- return scanInProgress.get();
- }
-
- public void scanFinished() {
- scanInProgress.set(false);
- }
-
- public AtomicBoolean getScanInProgress() {
- return scanInProgress;
- }
-
- private void resetViews(IssuesTree issuesTree, LicensesTree licensesTree) {
- ComponentIssueDetails.getInstance().recreateComponentDetails();
- ComponentLicenseDetails.getInstance().recreateComponentDetails();
- issuesTree.reset();
- licensesTree.reset();
- }
-}
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/XrayJobEventListener.java b/bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/XrayJobEventListener.java
index 4bb2c24..04bcdec 100644
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/XrayJobEventListener.java
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/scheduling/XrayJobEventListener.java
@@ -4,16 +4,16 @@
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import com.jfrog.ide.eclipse.scan.ScanManagersFactory;
public class XrayJobEventListener extends JobChangeAdapter {
@Override
public void done(IJobChangeEvent event) {
Job[] jobs = Job.getJobManager().find(ScanJob.FAMILY);
- ScanManagersFactory scanManagersFactory = ScanManagersFactory.getInstance();
+ // TODO: implement a listener for the audit scan
+// ScanManagersFactory scanManagersFactory = ScanManagersFactory.getInstance();
if (ArrayUtils.isEmpty(jobs)) {
- scanManagersFactory.scanFinished();
+// scanManagersFactory.scanFinished();
}
}
}
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/PartControl.java b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/PartControl.java
index a6b9891..e880ae0 100644
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/PartControl.java
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/PartControl.java
@@ -11,7 +11,6 @@
import org.eclipse.swt.widgets.Composite;
import com.jfrog.ide.eclipse.configuration.XrayServerConfigImpl;
-import com.jfrog.ide.eclipse.scan.ScanManagersFactory;
import com.jfrog.ide.eclipse.ui.actions.Filter.FilterType;
import com.jfrog.ide.eclipse.ui.issues.ComponentIssueDetails;
import com.jfrog.ide.eclipse.ui.issues.IssuesTab;
@@ -52,7 +51,8 @@ public void widgetSelected(SelectionEvent event) {
private void doQuickScan(Composite parent) {
if (XrayServerConfigImpl.getInstance().areCredentialsSet()) {
- ScanManagersFactory.getInstance().startScan(parent, true);
+// ScanManagersFactory.getInstance().startScan(parent, true);
+ // TODO: run a scan
}
}
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/actions/Refresh.java b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/actions/Refresh.java
index 66f740f..a3b377d 100644
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/actions/Refresh.java
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/actions/Refresh.java
@@ -4,7 +4,6 @@
import org.eclipse.swt.widgets.ToolBar;
import com.jfrog.ide.eclipse.configuration.XrayServerConfigImpl;
import com.jfrog.ide.eclipse.log.Logger;
-import com.jfrog.ide.eclipse.scan.ScanManagersFactory;
/**
* Start a new slow scan.
@@ -23,6 +22,7 @@ public void execute(SelectionEvent event) {
Logger.getInstance().error("Xray server is not configured.");
return;
}
- ScanManagersFactory.getInstance().startScan(getParent(), false);
+// ScanManagersFactory.getInstance().startScan(getParent(), false);
+ // TODO: run a scan
}
}
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/ComponentIssueDetails.java b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/ComponentIssueDetails.java
index 9be99ef..389b5fd 100644
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/ComponentIssueDetails.java
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/ComponentIssueDetails.java
@@ -31,7 +31,6 @@ public void createDetailsView(DependencyTree node) {
createCommonInfo(node);
Issue topIssue = node.getTopIssue();
addSection("Top Issue Severity:", StringUtils.capitalize(topIssue.getSeverity().toString()));
- addSection("Top Issue Type:", StringUtils.capitalize(topIssue.getIssueType()));
addSection("Issues Count:", String.valueOf(node.getIssueCount()));
refreshPanel();
}
diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/ComponentIssueTable.java b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/ComponentIssueTable.java
index 31acb9a..b7b5eef 100644
--- a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/ComponentIssueTable.java
+++ b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/ComponentIssueTable.java
@@ -86,14 +86,6 @@ public String getText(Object element) {
}
});
- createTableViewerColumn("Issue Type", 0, new ColumnLabelProvider() {
- @Override
- public String getText(Object element) {
- Issue issue = (Issue) element;
- return issue.getIssueType();
- }
- });
-
createTableViewerColumn("Component", 4, new ColumnLabelProvider() {
@Override
public String getText(Object element) {
@@ -101,13 +93,13 @@ public String getText(Object element) {
return issue.getComponent();
}
});
-
+
createTableViewerColumn("Fixed Versions", 0, new ColumnLabelProvider() {
@Override
public String getText(Object element) {
Issue issue = (Issue) element;
- List fixedVersions = ListUtils.emptyIfNull(issue.getFixedVersions());
- return StringUtils.defaultIfEmpty(String.join(", ", fixedVersions), "[]");
+ List fixedVersions = ListUtils.emptyIfNull(issue.getFixedVersions());
+ return StringUtils.defaultIfEmpty(String.join(", ", fixedVersions), "[]");
}
});
}
diff --git a/pom.xml b/pom.xml
index df4562b..d6d4d73 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
pom
- 1.3.0
+ 3.0.0
UTF-8