From fdb0c029f567af6d5be2400129dfa0833424e2ef Mon Sep 17 00:00:00 2001 From: kerenr-jfrog Date: Sun, 23 Mar 2025 10:03:38 +0200 Subject: [PATCH 1/5] upgraded tycho to 3.0.0 and plugins common to 2.3.6 --- bundle/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bundle/pom.xml b/bundle/pom.xml index 35de751..c7be41a 100644 --- a/bundle/pom.xml +++ b/bundle/pom.xml @@ -27,7 +27,7 @@ - 1.6.1 + 2.3.6 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 From 261f0fa1de82a5751a0f35cf1b2184f4e3b7e60b Mon Sep 17 00:00:00 2001 From: kerenr-jfrog Date: Sun, 23 Mar 2025 12:54:57 +0200 Subject: [PATCH 2/5] adjust code to use plugins-common v2.3.6 --- bundle/.classpath | 14 +- bundle/.settings/org.eclipse.jdt.core.prefs | 10 +- bundle/META-INF/MANIFEST.MF | 2 +- .../configuration/TestConnectionButton.java | 2 +- .../XrayGlobalConfiguration.java | 4 +- .../configuration/XrayServerConfigImpl.java | 31 +++ .../eclipse/log/ProgressIndicatorImpl.java | 12 ++ .../ide/eclipse/scan/GradleScanManager.java | 195 ------------------ .../ide/eclipse/scan/MavenScanManager.java | 130 ------------ .../ide/eclipse/scan/NpmScanManager.java | 35 ---- .../jfrog/ide/eclipse/scan/ScanManager.java | 101 +++++---- .../ide/eclipse/scan/ScanManagersFactory.java | 150 -------------- .../scheduling/XrayJobEventListener.java | 5 +- .../com/jfrog/ide/eclipse/ui/PartControl.java | 4 +- .../jfrog/ide/eclipse/ui/actions/Refresh.java | 4 +- .../ui/issues/ComponentIssueDetails.java | 2 +- .../ui/issues/ComponentIssueTable.java | 20 +- 17 files changed, 120 insertions(+), 601 deletions(-) delete mode 100644 bundle/src/main/java/com/jfrog/ide/eclipse/scan/GradleScanManager.java delete mode 100644 bundle/src/main/java/com/jfrog/ide/eclipse/scan/MavenScanManager.java delete mode 100644 bundle/src/main/java/com/jfrog/ide/eclipse/scan/NpmScanManager.java delete mode 100644 bundle/src/main/java/com/jfrog/ide/eclipse/scan/ScanManagersFactory.java diff --git a/bundle/.classpath b/bundle/.classpath index 0d72691..9ef090b 100644 --- a/bundle/.classpath +++ b/bundle/.classpath @@ -1,16 +1,8 @@ - - - - - - - - - - + + - \ 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..d4540a5 100644 --- a/bundle/.settings/org.eclipse.jdt.core.prefs +++ b/bundle/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,10 @@ 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.enablePreviewFeatures=disabled 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.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/bundle/META-INF/MANIFEST.MF b/bundle/META-INF/MANIFEST.MF index 886a1a3..0afd2f6 100644 --- a/bundle/META-INF/MANIFEST.MF +++ b/bundle/META-INF/MANIFEST.MF @@ -6,7 +6,7 @@ Bundle-Version: 1.2.0 nEnvironment: JavaSE-1.8 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/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..6809ad8 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; @@ -57,7 +56,8 @@ public boolean performOk() { } } if (doQuickScan) { - ScanManagersFactory.getInstance().startScan(getShell().getParent(), true); + // ScanManager.getInstance().startScan(getShell().getParent(), true); + // TODO: run a scan } 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..c16eee8 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: change implementation to configure the 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..2d9fa6d 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 @@ -17,7 +17,6 @@ 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,18 +26,19 @@ 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 = Logger.getInstance(); + 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); } @@ -53,15 +53,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 +95,51 @@ 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 JfrogCliDrvier +// ScanManager.this.monitor = monitor; +// if (isDisposed()) { +// return; +// } +// log.info("Performing scan for " + getProjectName()); +// try { +// 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; +// } } 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 +// 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); +// } +// }); } 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..6d6e2a3 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,15 @@ 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(); +// ScanManagersFactory scanManagersFactory = ScanManagersFactory.getInstance(); TODO: check if this listener is relevant 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..706a7b1 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,7 @@ 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("Top Issue Type:", StringUtils.capitalize(topIssue.toString())); // TODO: remove if redundant 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..79288fb 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,13 +86,13 @@ 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("Issue Type", 0, new ColumnLabelProvider() { +// @Override +// public String getText(Object element) { +// Issue issue = (Issue) element; +// return issue.getIssueType(); +// } +// }); TODO: remove createTableViewerColumn("Component", 4, new ColumnLabelProvider() { @Override @@ -101,13 +101,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), "[]"); } }); } From db3281aebd0161a44a27190dd5dd89cde79efcb5 Mon Sep 17 00:00:00 2001 From: kerenr-jfrog Date: Sun, 23 Mar 2025 20:09:49 +0200 Subject: [PATCH 3/5] final adjustments --- bundle/.classpath | 12 ++++++++++-- bundle/.settings/org.eclipse.jdt.core.prefs | 6 ++---- bundle/META-INF/MANIFEST.MF | 2 +- .../configuration/XrayGlobalConfiguration.java | 1 + .../eclipse/configuration/XrayServerConfigImpl.java | 2 +- .../ide/eclipse/scheduling/XrayJobEventListener.java | 3 ++- .../ide/eclipse/ui/issues/ComponentIssueDetails.java | 1 - .../ide/eclipse/ui/issues/ComponentIssueTable.java | 8 -------- 8 files changed, 17 insertions(+), 18 deletions(-) diff --git a/bundle/.classpath b/bundle/.classpath index 9ef090b..72d7c54 100644 --- a/bundle/.classpath +++ b/bundle/.classpath @@ -1,7 +1,15 @@ - - + + + + + + + + + + diff --git a/bundle/.settings/org.eclipse.jdt.core.prefs b/bundle/.settings/org.eclipse.jdt.core.prefs index d4540a5..a849b0e 100644 --- a/bundle/.settings/org.eclipse.jdt.core.prefs +++ b/bundle/.settings/org.eclipse.jdt.core.prefs @@ -3,8 +3,6 @@ org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 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.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=17 +org.eclipse.jdt.core.compiler.release=disabled +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 0afd2f6..413aef4 100644 --- a/bundle/META-INF/MANIFEST.MF +++ b/bundle/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ 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-17 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 6809ad8..cb6b040 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 @@ -43,6 +43,7 @@ public void createFieldEditors() { @Override public boolean performOk() { + // TODO: implement server configuration using CliDriver here super.performOk(); if (!XrayServerConfigImpl.getInstance().areCredentialsSet()) { 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 c16eee8..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,7 +22,7 @@ */ @SuppressWarnings("restriction") public class XrayServerConfigImpl implements ServerConfig { - // TODO: change implementation to configure the server using JfrogCliDriver + // TODO: adjust implementation for configuring server using JfrogCliDriver private static XrayServerConfigImpl instance; private IPreferencesService service = Platform.getPreferencesService(); 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 6d6e2a3..9e42814 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 @@ -10,7 +10,8 @@ public class XrayJobEventListener extends JobChangeAdapter { @Override public void done(IJobChangeEvent event) { Job[] jobs = Job.getJobManager().find(ScanJob.FAMILY); -// ScanManagersFactory scanManagersFactory = ScanManagersFactory.getInstance(); TODO: check if this listener is relevant + // TODO: implement a listener for the audit scan +// ScanManagersFactory scanManagersFactory = ScanManagersFactory.getInstance(); if (ArrayUtils.isEmpty(jobs)) { // scanManagersFactory.scanFinished(); } 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 706a7b1..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.toString())); // TODO: remove if redundant 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 79288fb..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(); -// } -// }); TODO: remove - createTableViewerColumn("Component", 4, new ColumnLabelProvider() { @Override public String getText(Object element) { From e2e10826b224070f10a46815379ad2f71c813971 Mon Sep 17 00:00:00 2001 From: kerenr-jfrog Date: Mon, 24 Mar 2025 13:56:52 +0200 Subject: [PATCH 4/5] upgrade plugins common to 2.4.0 --- bundle/pom.xml | 2 +- .../XrayGlobalConfiguration.java | 5 +- .../jfrog/ide/eclipse/scan/ScanManager.java | 47 ++----------------- .../scheduling/XrayJobEventListener.java | 2 +- 4 files changed, 9 insertions(+), 47 deletions(-) diff --git a/bundle/pom.xml b/bundle/pom.xml index c7be41a..6b8b9b2 100644 --- a/bundle/pom.xml +++ b/bundle/pom.xml @@ -27,7 +27,7 @@ - 2.3.6 + 2.4.0 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 cb6b040..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 @@ -43,7 +43,7 @@ public void createFieldEditors() { @Override public boolean performOk() { - // TODO: implement server configuration using CliDriver here + // 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,8 +57,7 @@ public boolean performOk() { } } if (doQuickScan) { - // ScanManager.getInstance().startScan(getShell().getParent(), true); - // TODO: run a scan + // TODO: run a scan using the ScanManager } return true; } 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 2d9fa6d..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,6 +14,7 @@ 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; @@ -36,11 +37,13 @@ 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 = Logger.getInstance(); + Log log; + JfrogCliDriver cliDriver; ScanManager(IProject project, ComponentPrefix prefix) throws IOException { this.project = project; Files.createDirectories(HOME_PATH); + log = Logger.getInstance(); } /** @@ -95,51 +98,11 @@ private ScanRunnable(Composite parent, IssuesTree issuesTree, LicensesTree licen @Override public void run(IProgressMonitor monitor) throws CoreException { - // TODO: implement scan manager using JfrogCliDrvier -// ScanManager.this.monitor = monitor; -// if (isDisposed()) { -// return; -// } -// log.info("Performing scan for " + getProjectName()); -// try { -// 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() { // TODO: re implement using SarifParser -// 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); -// } -// }); } private boolean isDisposed() { 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 9e42814..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 @@ -13,7 +13,7 @@ public void done(IJobChangeEvent event) { // TODO: implement a listener for the audit scan // ScanManagersFactory scanManagersFactory = ScanManagersFactory.getInstance(); if (ArrayUtils.isEmpty(jobs)) { -// scanManagersFactory.scanFinished(); +// scanManagersFactory.scanFinished(); } } } From 2d4adcf84a578170d63cc6614012bca34fdc72fe Mon Sep 17 00:00:00 2001 From: kerenr-jfrog Date: Mon, 24 Mar 2025 14:03:35 +0200 Subject: [PATCH 5/5] minor fix --- bundle/.classpath | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundle/.classpath b/bundle/.classpath index 72d7c54..6187908 100644 --- a/bundle/.classpath +++ b/bundle/.classpath @@ -6,7 +6,7 @@ - +