diff --git a/bundle/.classpath b/bundle/.classpath index 1e1847c..0d72691 100644 --- a/bundle/.classpath +++ b/bundle/.classpath @@ -13,4 +13,4 @@ - + \ No newline at end of file diff --git a/bundle/icons/critical.png b/bundle/icons/critical.png new file mode 100644 index 0000000..9e61d5c Binary files /dev/null and b/bundle/icons/critical.png differ diff --git a/bundle/icons/default.png b/bundle/icons/default.png index b02ac09..9e61d5c 100755 Binary files a/bundle/icons/default.png and b/bundle/icons/default.png differ diff --git a/bundle/icons/high.png b/bundle/icons/high.png index ef73c61..14dfcb9 100755 Binary files a/bundle/icons/high.png and b/bundle/icons/high.png differ diff --git a/bundle/icons/low.png b/bundle/icons/low.png index c0245ba..d35134d 100755 Binary files a/bundle/icons/low.png and b/bundle/icons/low.png differ diff --git a/bundle/icons/medium.png b/bundle/icons/medium.png index 2aae8b9..05c75df 100755 Binary files a/bundle/icons/medium.png and b/bundle/icons/medium.png differ diff --git a/bundle/icons/normal.png b/bundle/icons/normal.png index 4402ffe..73d5a4e 100755 Binary files a/bundle/icons/normal.png and b/bundle/icons/normal.png differ diff --git a/bundle/icons/unknown.png b/bundle/icons/unknown.png index 2ed42f4..ea57326 100755 Binary files a/bundle/icons/unknown.png and b/bundle/icons/unknown.png differ diff --git a/bundle/pom.xml b/bundle/pom.xml index ffdde27..6e45a7d 100644 --- a/bundle/pom.xml +++ b/bundle/pom.xml @@ -20,10 +20,14 @@ releases https://releases.jfrog.io/artifactory/oss-releases + + gradle + https://repo.gradle.org/gradle/libs-releases + - 1.1.1 + 1.6.1 diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/PreferenceConstants.java b/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/PreferenceConstants.java index 6e01160..4672d5a 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/PreferenceConstants.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/configuration/PreferenceConstants.java @@ -12,9 +12,12 @@ public class PreferenceConstants { public static final String XRAY_URL = "URL"; public static final String XRAY_USERNAME = "Username"; public static final String XRAY_PASSWORD = "Password"; + + // Connection constants + public static final int CONNECTION_TIMEOUT_MILLISECONDS = 300 * 1000; + public static final int CONNECTION_RETRIES = 5; // Eclipse Buildship plugins public static final String GRADLE_PLUGIN_QUALIFIER = "org.eclipse.buildship.core"; public static final String GRADLE_DISTRIBUTION = "gradle.distribution"; - } 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 2a4c122..0411671 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 @@ -12,13 +12,13 @@ import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; -import org.jfrog.client.http.model.ProxyConfig; import org.osgi.framework.FrameworkUtil; import com.jfrog.ide.common.utils.XrayConnectionUtils; import com.jfrog.xray.client.Xray; -import com.jfrog.xray.client.impl.XrayClient; +import com.jfrog.xray.client.impl.XrayClientBuilder; import com.jfrog.xray.client.services.system.Version; +import com.jfrog.ide.eclipse.log.Logger; /** * Button in the configuration panel for testing connection with Xray. @@ -79,16 +79,28 @@ protected void doStore() { public int getNumberOfControls() { return 1; } + + private Xray createXrayClient() { + String url = urlEditor.getStringValue(); + String xrayUrl = url.endsWith("/") ? url + "xray" : url + "/xray"; + XrayServerConfigImpl serverConfig = XrayServerConfigImpl.getInstance(); + + return (Xray) new XrayClientBuilder() + .setUrl(xrayUrl) + .setUserName(usernameEditor.getStringValue()) + .setPassword(passwordEditor.getStringValue()) + .setUserAgent(USER_AGENT) + .setProxyConfiguration(serverConfig.getProxyConfForTargetUrl(xrayUrl)) + .setLog(Logger.getInstance()) + .build(); + } private class ButtonSelection extends SelectionAdapter { @Override public void widgetSelected(SelectionEvent e) { try { connectionResults.setText("Connecting to Xray..."); - String url = urlEditor.getStringValue(); - ProxyConfig proxyConfig = XrayServerConfigImpl.getInstance().getProxyConfForTargetUrl(url); - Xray xrayClient = XrayClient.create(url, usernameEditor.getStringValue(), - passwordEditor.getStringValue(), USER_AGENT, false, proxyConfig); + Xray xrayClient = createXrayClient(); Version xrayVersion = xrayClient.system().version(); if (!XrayConnectionUtils.isXrayVersionSupported(xrayVersion)) { 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 7a6400f..ef442a4 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 @@ -4,6 +4,8 @@ import java.net.URI; +import javax.net.ssl.SSLContext; + import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.eclipse.core.internal.net.ProxyManager; @@ -11,15 +13,15 @@ import org.eclipse.core.net.proxy.IProxyService; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.preferences.IPreferencesService; -import org.jfrog.client.http.model.ProxyConfig; +import org.jfrog.build.client.ProxyConfiguration; -import com.jfrog.ide.common.configuration.XrayServerConfig; +import com.jfrog.ide.common.configuration.ServerConfig; /** * @author yahavi */ @SuppressWarnings("restriction") -public class XrayServerConfigImpl implements XrayServerConfig { +public class XrayServerConfigImpl implements ServerConfig { private static XrayServerConfigImpl instance; private IPreferencesService service = Platform.getPreferencesService(); @@ -51,7 +53,7 @@ private String getValue(String key) { } @Override - public ProxyConfig getProxyConfForTargetUrl(String xrayUrl) { + public ProxyConfiguration getProxyConfForTargetUrl(String xrayUrl) { xrayUrl = StringUtils.defaultIfBlank(xrayUrl, getUrl()); IProxyService service = ProxyManager.getProxyManager(); IProxyData[] proxyData = service.select(URI.create(xrayUrl)); @@ -59,13 +61,50 @@ public ProxyConfig getProxyConfForTargetUrl(String xrayUrl) { return null; } - ProxyConfig proxyConfig = new ProxyConfig(); - proxyConfig.setHost(trim(proxyData[0].getHost())); - proxyConfig.setPort(proxyData[0].getPort()); + ProxyConfiguration proxyConfig = new ProxyConfiguration(); + proxyConfig.host = trim(proxyData[0].getHost()); + proxyConfig.port = proxyData[0].getPort(); if (proxyData[0].isRequiresAuthentication()) { - proxyConfig.setUsername(trim(proxyData[0].getUserId())); - proxyConfig.setPassword(proxyData[0].getPassword()); + proxyConfig.username = trim(proxyData[0].getUserId()); + proxyConfig.password = proxyData[0].getPassword(); } return proxyConfig; } + + @Override + public String getXrayUrl() { + String url = getUrl(); + String xrayUrl = url.endsWith("/") ? url + "xray" : url + "/xray"; + return xrayUrl; + } + + @Override + public String getArtifactoryUrl() { + String url = getUrl(); + String artifactoryUrl = url.endsWith("/") ? url + "artifactory" : url + "/artifactory"; + return artifactoryUrl; + } + + @Override + public int getConnectionRetries() { + return PreferenceConstants.CONNECTION_RETRIES; + } + + @Override + public int getConnectionTimeout() { + return PreferenceConstants.CONNECTION_TIMEOUT_MILLISECONDS; + } + + @Override + public SSLContext getSslContext() { + // This method is not used by the plug-in. + return null; + } + + @Override + public boolean isInsecureTls() { + // This method is not used by the plug-in. + return false; + } + } 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 index 01171e8..6e9ea64 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/GradleScanManager.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/scan/GradleScanManager.java @@ -11,7 +11,6 @@ import java.util.Set; import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.lang3.StringUtils; import org.eclipse.buildship.core.GradleDistribution; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; @@ -23,13 +22,15 @@ import org.gradle.tooling.ProgressEvent; import org.gradle.tooling.ProgressListener; import org.gradle.tooling.ProjectConnection; -import org.jfrog.build.extractor.scan.DependenciesTree; +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 { @@ -37,6 +38,7 @@ 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; @@ -45,6 +47,7 @@ public class GradleScanManager extends ScanManager { 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) { @@ -56,40 +59,14 @@ public static boolean isApplicable(IProject project) { } @Override - void refreshDependencies(IProgressMonitor monitor) throws IOException { - this.monitor = monitor; - String rootProjectDir = project.getLocation().toPortableString(); - if (project.getLocation().toFile().isDirectory()) { - rootProjectDir = project.getLocation().addTrailingSeparator().toPortableString(); + void buildTree() throws IOException { + try { + setScanResults(gradleTreeBuilder.buildTree(getLog())); + } + catch (IOException ex) { + Logger.getInstance().warn("Could not scan project: " + getProjectName() + ". Reason is: " + ex.getMessage()); } - String gradleFileNameFullPath = "/gradle/" + GRADLE_INIT_SCRIPT; - ClassLoader classLoader = GradleScanManager.class.getClassLoader(); - // classLoader.getResourceAsStream(gradleFileNameFullPath) will work on all the - // OSes - try (InputStream res = classLoader.getResourceAsStream(gradleFileNameFullPath)) { - String gradleFile = createGradleFile(res); - if (StringUtils.isBlank(gradleFile)) { - getLog().warn("Gradle init script wasn't created."); - return; - } - generateDependenciesGraphAsJsonTask(rootProjectDir, gradleFile); - parseJsonResult(); - } - } - - @Override - void buildTree() { - DependenciesTree rootNode = new DependenciesTree(getProjectName()); - GeneralInfo generalInfo = new GeneralInfo(); - generalInfo.groupId(gradleArtifact.getGroupId()).artifactId(gradleArtifact.getArtifactId()) - .version(gradleArtifact.getVersion()); - rootNode.setGeneralInfo(generalInfo); - GradleArtifact[] dependencies = gradleArtifact.getDependencies(); - if (ArrayUtils.isNotEmpty(dependencies)) { - populateDependenciesTree(rootNode, dependencies); - } - setScanResults(rootNode); } public GradleArtifact getGradleArtifact() { @@ -108,14 +85,15 @@ private String getComponentId(GradleArtifact gradleArtifact) { } /** - * Populate root modules DependenciesTree with issues, licenses and general info + * Populate root modules DependencyTree with issues, licenses and general info * from the scan cache. */ - private void populateDependenciesTree(DependenciesTree scanTreeNode, GradleArtifact[] gradleArtifacts) { + @SuppressWarnings("unused") + private void populateDependenciesTree(DependencyTree scanTreeNode, GradleArtifact[] gradleArtifacts) { for (GradleArtifact artifact : gradleArtifacts) { String componentId = getComponentId(artifact); - DependenciesTree child = new DependenciesTree(componentId); - child.setGeneralInfo(new GeneralInfo(componentId, "", "", "Maven")); + DependencyTree child = new DependencyTree(componentId); + child.setGeneralInfo(new GeneralInfo(componentId, artifact.getArtifactId(), "", "Gradle")); scanTreeNode.add(child); populateDependenciesTree(child, artifact.getDependencies()); } 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 index af2f77c..9d7a6ba 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/MavenScanManager.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/scan/MavenScanManager.java @@ -16,9 +16,11 @@ 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.DependenciesTree; +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; @@ -48,7 +50,6 @@ public static boolean isApplicable(IProject project) { } } - @Override void refreshDependencies(IProgressMonitor monitor) throws CoreException { IMavenProjectFacade facade = MavenPlugin.getMavenProjectRegistry().getProject(project); if (facade == null) { @@ -64,26 +65,32 @@ void refreshDependencies(IProgressMonitor monitor) throws CoreException { @Override void buildTree() throws CoreException { + refreshDependencies(getMonitor()); if (mavenProject == null) { return; } - DependenciesTree rootNode = new DependenciesTree(mavenProject.getName()); + 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); - populateScanTreeNode(rootNode, mavenDependenciesRoot); - setScanResults(rootNode); + setScanResults(rootNode); } /** - * Populate root modules DependenciesTree with issues, licenses and general info + * Populate root modules DependencyTree with issues, licenses and general info * from the scan cache. */ - private void populateScanTreeNode(DependenciesTree scanTreeNode, DependencyNode dependencyNode) { + private void populateScanTreeNode(DependencyTree scanTreeNode, DependencyNode dependencyNode) { dependencyNode.getChildren().forEach(dependencyChild -> { String componentId = getComponentId(dependencyChild); - DependenciesTree child = new DependenciesTree(componentId); - child.setGeneralInfo(new GeneralInfo(componentId, "", "", "Maven")); + 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); }); 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 index 9ea6d9d..1dacb42 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/NpmScanManager.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/scan/NpmScanManager.java @@ -4,11 +4,11 @@ import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; 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 @@ -20,15 +20,16 @@ public class NpmScanManager extends ScanManager { NpmScanManager(IProject project) throws IOException { super(project, ComponentPrefix.NPM); getLog().info("Found npm project: " + getProjectName()); - npmTreeBuilder = new NpmTreeBuilder(project.getFullPath().toFile().toPath()); - } - - @Override - void refreshDependencies(IProgressMonitor monitor) throws IOException { + npmTreeBuilder = new NpmTreeBuilder(project.getFullPath().toFile().toPath(), System.getenv()); } @Override void buildTree() throws CoreException, JsonProcessingException, IOException { - setScanResults(npmTreeBuilder.buildTree(getLog())); - } + 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 bf3d5e6..c23b3f9 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 @@ -11,7 +11,7 @@ import org.eclipse.core.runtime.ICoreRunnable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.swt.widgets.Composite; -import org.jfrog.build.extractor.scan.DependenciesTree; +import org.jfrog.build.extractor.scan.DependencyTree; import com.fasterxml.jackson.core.JsonProcessingException; import com.jfrog.ide.common.filter.FilterManager; @@ -38,20 +38,11 @@ public abstract class ScanManager extends ScanManagerBase { IProject project; ScanManager(IProject project, ComponentPrefix prefix) throws IOException { - super(HOME_PATH.resolve("cache"), project.getName(), Logger.getInstance(), XrayServerConfigImpl.getInstance(), - prefix); + super(HOME_PATH.resolve("cache"), project.getName(), Logger.getInstance(), XrayServerConfigImpl.getInstance(), prefix); this.project = project; Files.createDirectories(HOME_PATH); } - /** - * Refresh project dependencies. - * - * @throws IOException - * @throws CoreException - */ - abstract void refreshDependencies(IProgressMonitor monitor) throws IOException, CoreException; - /** * Collect and return {@link Components} to be scanned by JFrog Xray. * Implementation should be project type specific. @@ -78,6 +69,10 @@ public IProject getIProject() { public void setMonitor(IProgressMonitor monitor) { this.monitor = monitor; } + + public IProgressMonitor getMonitor(){ + return monitor; + } /** * Schedule a dependency scan. @@ -114,7 +109,6 @@ public void run(IProgressMonitor monitor) throws CoreException { } getLog().info("Performing scan for " + getProjectName()); try { - refreshDependencies(monitor); buildTree(); if (isDisposed() || getScanResults() == null) { return; @@ -131,10 +125,11 @@ public void run(IProgressMonitor monitor) throws CoreException { private void setScanResults() { FilterManager filterManager = FilterManagerSingleton.getInstance(); - if (!getScanResults().isLeaf()) { - addFilterManagerLicenses(filterManager); + DependencyTree scanResults = getScanResults(); + + if (!scanResults.isLeaf()) { + filterManager.collectsFiltersInformation(scanResults); } - DependenciesTree scanResults = getScanResults(); issuesTree.addScanResults(getProjectName(), scanResults); licensesTree.addScanResults(getProjectName(), scanResults); if (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 index 8a9b08a..8b0b8f2 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/scan/ScanManagersFactory.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/scan/ScanManagersFactory.java @@ -16,7 +16,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import com.jfrog.ide.common.utils.Utils; +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; @@ -100,6 +100,8 @@ public void refreshScanManagers(Composite parent) { 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()); @@ -113,7 +115,10 @@ public void refreshScanManagers(Composite parent) { } paths.add(project.getLocation().toFile().toPath()); } - Set packageJsonDirs = Utils.findPackageJsonDirs(paths); + + // 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)); diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/ComponentDetails.java b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/ComponentDetails.java index b4e6efe..16e879a 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/ComponentDetails.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/ComponentDetails.java @@ -22,7 +22,7 @@ import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.widgets.Hyperlink; -import org.jfrog.build.extractor.scan.DependenciesTree; +import org.jfrog.build.extractor.scan.DependencyTree; import org.jfrog.build.extractor.scan.GeneralInfo; import org.jfrog.build.extractor.scan.License; @@ -50,7 +50,7 @@ public ComponentDetails(Composite parent, String title) { recreateComponentDetails(); } - public abstract void createDetailsView(DependenciesTree node); + public abstract void createDetailsView(DependencyTree node); public void recreateComponentDetails() { if (isDisposed()) { @@ -110,7 +110,7 @@ protected void createComponentsPanel() { * * @param node - Extract the component information from this node. */ - protected void createCommonInfo(DependenciesTree node) { + protected void createCommonInfo(DependencyTree node) { for (Control control : componentDetailsPanel.getChildren()) { control.dispose(); } diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/ScanTreeContentProvider.java b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/ScanTreeContentProvider.java index 7c19041..4f4861d 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/ScanTreeContentProvider.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/ScanTreeContentProvider.java @@ -1,7 +1,7 @@ package com.jfrog.ide.eclipse.ui; import org.eclipse.jface.viewers.ITreeContentProvider; -import org.jfrog.build.extractor.scan.DependenciesTree; +import org.jfrog.build.extractor.scan.DependencyTree; /** * Content provider for DependenciesTree. @@ -9,7 +9,7 @@ * @author yahavi */ public class ScanTreeContentProvider implements ITreeContentProvider { - private static final DependenciesTree[] EMPTY_NODE = new DependenciesTree[0]; + private static final DependencyTree[] EMPTY_NODE = new DependencyTree[0]; @Override public Object[] getElements(Object element) { @@ -18,16 +18,16 @@ public Object[] getElements(Object element) { @Override public Object[] getChildren(Object element) { - return (((DependenciesTree) element).getChildren()).toArray(EMPTY_NODE); + return (((DependencyTree) element).getChildren()).toArray(EMPTY_NODE); } @Override public Object getParent(Object element) { - return ((DependenciesTree) element).getParent(); + return ((DependencyTree) element).getParent(); } @Override public boolean hasChildren(Object element) { - return !((DependenciesTree) element).isLeaf(); + return !((DependencyTree) element).isLeaf(); } } diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/SearchableTree.java b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/SearchableTree.java index f6fbf9a..ab1904b 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/SearchableTree.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/SearchableTree.java @@ -16,7 +16,7 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.ui.dialogs.FilteredTree; import org.eclipse.ui.dialogs.PatternFilter; -import org.jfrog.build.extractor.scan.DependenciesTree; +import org.jfrog.build.extractor.scan.DependencyTree; import com.google.common.collect.Lists; import com.jfrog.ide.eclipse.utils.ProjectsMap; @@ -68,7 +68,7 @@ public void selectionChanged(SelectionChangedEvent event) { if (event.getSelection().isEmpty()) { return; } - DependenciesTree selection = (DependenciesTree) treeViewer.getStructuredSelection().getFirstElement(); + DependencyTree selection = (DependencyTree) treeViewer.getStructuredSelection().getFirstElement(); onClick(selection); } }); @@ -78,7 +78,7 @@ public void setComponentDetails(ComponentDetails componentDetails) { this.componentDetails = componentDetails; } - protected abstract void onClick(DependenciesTree selection); + protected abstract void onClick(DependencyTree selection); private static PatternFilter createFilter() { PatternFilter patternFilter = new PatternFilter(); @@ -86,12 +86,12 @@ private static PatternFilter createFilter() { return patternFilter; } - public List getSelectedNodes() { - List selectedNodes = Lists.newArrayList(); + public List getSelectedNodes() { + List selectedNodes = Lists.newArrayList(); TreePath[] selectionPaths = treeViewer.getStructuredSelection().getPaths(); if (selectionPaths != null) { selectedNodes = Arrays.stream(selectionPaths) - .map(selectedPath -> (DependenciesTree) selectedPath.getLastSegment()).collect(Collectors.toList()); + .map(selectedPath -> (DependencyTree) selectedPath.getLastSegment()).collect(Collectors.toList()); } return selectedNodes; @@ -109,8 +109,8 @@ public void reset() { projects.clear(); } - public void addScanResults(String projectName, DependenciesTree dependenciesTree) { - projects.put(projectName, dependenciesTree); + public void addScanResults(String projectName, DependencyTree dependencyTree) { + projects.put(projectName, dependencyTree); } public abstract void applyFilters(ProjectsMap.ProjectKey projectName); 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 1b42804..9be99ef 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 @@ -2,7 +2,7 @@ import org.apache.commons.lang3.StringUtils; import org.eclipse.swt.widgets.Composite; -import org.jfrog.build.extractor.scan.DependenciesTree; +import org.jfrog.build.extractor.scan.DependencyTree; import org.jfrog.build.extractor.scan.Issue; import com.jfrog.ide.eclipse.ui.ComponentDetails; @@ -27,7 +27,7 @@ private ComponentIssueDetails(Composite parent) { } @Override - public void createDetailsView(DependenciesTree node) { + public void createDetailsView(DependencyTree node) { createCommonInfo(node); Issue topIssue = node.getTopIssue(); addSection("Top Issue Severity:", StringUtils.capitalize(topIssue.getSeverity().toString())); 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 7149eb4..31acb9a 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 @@ -21,12 +21,11 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; -import org.jfrog.build.extractor.scan.DependenciesTree; +import org.jfrog.build.extractor.scan.DependencyTree; import org.jfrog.build.extractor.scan.Issue; import org.jfrog.build.extractor.scan.Severity; import com.jfrog.ide.common.filter.FilterManager; -import com.jfrog.ide.eclipse.scan.ScanManagersFactory; import com.jfrog.ide.eclipse.ui.FilterManagerSingleton; import com.jfrog.ide.eclipse.ui.IconManager; import com.jfrog.ide.eclipse.ui.Panel; @@ -123,13 +122,10 @@ private TableViewerColumn createTableViewerColumn(String title, int weight, Colu return viewerColumn; } - public void updateIssuesTable(List selectedNodes) { + public void updateIssuesTable(List selectedNodes) { Set issuesSet = Sets.newHashSet(); FilterManager filterManager = FilterManagerSingleton.getInstance(); - ScanManagersFactory.getInstance().getScanManagers().forEach(scanManager -> { - issuesSet.addAll(scanManager.getFilteredScanIssues(filterManager, selectedNodes)); - }); - + issuesSet.addAll(filterManager.getFilteredScanIssues(selectedNodes)); tableViewer.setInput( issuesSet.stream().sorted(Comparator.comparing(issue -> ((Issue) issue).getSeverity()).reversed()) .collect(Collectors.toList())); diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/IssueCountColumnLabelProvider.java b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/IssueCountColumnLabelProvider.java index a060243..93138d3 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/IssueCountColumnLabelProvider.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/IssueCountColumnLabelProvider.java @@ -5,7 +5,7 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Composite; -import org.jfrog.build.extractor.scan.DependenciesTree; +import org.jfrog.build.extractor.scan.DependencyTree; /** * The issues count component in the issues tree. @@ -22,7 +22,7 @@ public IssueCountColumnLabelProvider(Composite parent) { @Override public String getText(Object element) { - int issueCount = ((DependenciesTree) element).getIssueCount(); + int issueCount = ((DependencyTree) element).getIssueCount(); return issueCount == 0 ? "" : "(" + issueCount + ")"; } diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/IssuesTree.java b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/IssuesTree.java index 057e315..589654d 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/IssuesTree.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/IssuesTree.java @@ -5,7 +5,7 @@ import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; -import org.jfrog.build.extractor.scan.DependenciesTree; +import org.jfrog.build.extractor.scan.DependencyTree; import com.google.common.collect.Lists; import com.jfrog.ide.common.filter.FilterManager; @@ -20,7 +20,7 @@ public class IssuesTree extends SearchableTree { private static IssuesTree instance; - private DependenciesTree root = new DependenciesTree(); + private DependencyTree root = new DependencyTree(); private ComponentIssueTable componentIssueTable; private TreeViewerColumn issuesCountColumn; @@ -39,7 +39,7 @@ private IssuesTree(Composite parent) { } @Override - protected void onClick(DependenciesTree selection) { + protected void onClick(DependencyTree selection) { componentDetails.createDetailsView(selection); componentIssueTable.updateIssuesTable(getSelectedNodes()); } @@ -50,12 +50,10 @@ public void setComponentIssueTable(ComponentIssueTable componentIssueTable) { @Override public void applyFilters(ProjectKey projectKey) { - DependenciesTree project = projects.get(projectKey); + DependencyTree project = projects.get(projectKey); if (project != null) { - DependenciesTree filteredRoot = (DependenciesTree) project.clone(); - filteredRoot.getIssues().clear(); FilterManager filterManager = FilterManagerSingleton.getInstance(); - filterManager.applyFilters(project, filteredRoot, new DependenciesTree()); + DependencyTree filteredRoot = filterManager.applyFilters(project); filteredRoot.setIssues(filteredRoot.processTreeIssues()); root.add(filteredRoot); if (root.getChildCount() == 1) { @@ -64,15 +62,15 @@ public void applyFilters(ProjectKey projectKey) { } else { treeViewer.setInput(root); } - long totalIssues = root.getChildren().stream().mapToInt(DependenciesTree::getIssueCount).sum(); + long totalIssues = root.getChildren().stream().mapToInt(DependencyTree::getIssueCount).sum(); issuesCountColumn.getColumn().setText("Issues (" + totalIssues + ")"); } } @Override public void applyFiltersForAllProjects() { - root = new DependenciesTree(); - for (Entry entry : projects.entrySet()) { + root = new DependencyTree(); + for (Entry entry : projects.entrySet()) { applyFilters(entry.getKey()); } } @@ -82,7 +80,7 @@ public void reset() { super.reset(); componentIssueTable.updateIssuesTable(Lists.newArrayList()); issuesCountColumn.getColumn().setText("Issues (0)"); - root = new DependenciesTree(); + root = new DependencyTree(); treeViewer.setInput(root); } diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/IssuesTreeColumnLabelProvider.java b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/IssuesTreeColumnLabelProvider.java index 77bf016..fa725a7 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/IssuesTreeColumnLabelProvider.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/issues/IssuesTreeColumnLabelProvider.java @@ -2,7 +2,7 @@ import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.swt.graphics.Image; -import org.jfrog.build.extractor.scan.DependenciesTree; +import org.jfrog.build.extractor.scan.DependencyTree; import org.jfrog.build.extractor.scan.Severity; import com.jfrog.ide.eclipse.ui.IconManager; @@ -15,7 +15,7 @@ public class IssuesTreeColumnLabelProvider extends ColumnLabelProvider { @Override public Image getImage(Object element) { - DependenciesTree scanTreeNode = (DependenciesTree) element; + DependencyTree scanTreeNode = (DependencyTree) element; Severity severity = scanTreeNode.getTopIssue().getSeverity(); return IconManager.load(severity.name().toLowerCase()); } diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/licenses/ComponentLicenseDetails.java b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/licenses/ComponentLicenseDetails.java index 583803e..f4dd8f4 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/licenses/ComponentLicenseDetails.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/licenses/ComponentLicenseDetails.java @@ -1,7 +1,7 @@ package com.jfrog.ide.eclipse.ui.licenses; import org.eclipse.swt.widgets.Composite; -import org.jfrog.build.extractor.scan.DependenciesTree; +import org.jfrog.build.extractor.scan.DependencyTree; import com.jfrog.ide.eclipse.ui.ComponentDetails; /** @@ -25,7 +25,7 @@ private ComponentLicenseDetails(Composite parent) { } @Override - public void createDetailsView(DependenciesTree node) { + public void createDetailsView(DependencyTree node) { createCommonInfo(node); refreshPanel(); } diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/licenses/LicensesTree.java b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/licenses/LicensesTree.java index f6be645..6cbc72c 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/ui/licenses/LicensesTree.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/ui/licenses/LicensesTree.java @@ -4,7 +4,7 @@ import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.swt.widgets.Composite; -import org.jfrog.build.extractor.scan.DependenciesTree; +import org.jfrog.build.extractor.scan.DependencyTree; import com.jfrog.ide.common.filter.FilterManager; import com.jfrog.ide.eclipse.ui.FilterManagerSingleton; @@ -17,7 +17,7 @@ public class LicensesTree extends SearchableTree { private static LicensesTree instance; - private DependenciesTree root = new DependenciesTree();; + private DependencyTree root = new DependencyTree();; public static void createLicensesTree(Composite parent) { instance = new LicensesTree(parent); @@ -33,17 +33,16 @@ private LicensesTree(Composite parent) { } @Override - protected void onClick(DependenciesTree selection) { + protected void onClick(DependencyTree selection) { componentDetails.createDetailsView(selection); } @Override public void applyFilters(ProjectsMap.ProjectKey projectName) { - DependenciesTree project = projects.get(projectName); + DependencyTree project = projects.get(projectName); if (project != null) { - DependenciesTree filteredRoot = (DependenciesTree) project.clone(); FilterManager filterManager = FilterManagerSingleton.getInstance(); - filterManager.applyFilters(project, new DependenciesTree(), filteredRoot); + DependencyTree filteredRoot = filterManager.applyFilters(project); root.add(filteredRoot); if (root.getChildCount() == 1) { // If there is only one project - Show only its dependencies in the tree viewer. @@ -57,7 +56,7 @@ public void applyFilters(ProjectsMap.ProjectKey projectName) { @Override public void applyFiltersForAllProjects() { root.removeAllChildren(); - for (Entry entry : projects.entrySet()) { + for (Entry entry : projects.entrySet()) { applyFilters(entry.getKey()); } } diff --git a/bundle/src/main/java/com/jfrog/ide/eclipse/utils/ProjectsMap.java b/bundle/src/main/java/com/jfrog/ide/eclipse/utils/ProjectsMap.java index deb5099..49117f8 100644 --- a/bundle/src/main/java/com/jfrog/ide/eclipse/utils/ProjectsMap.java +++ b/bundle/src/main/java/com/jfrog/ide/eclipse/utils/ProjectsMap.java @@ -4,7 +4,7 @@ import java.util.TreeMap; import org.apache.commons.lang3.StringUtils; -import org.jfrog.build.extractor.scan.DependenciesTree; +import org.jfrog.build.extractor.scan.DependencyTree; import org.jfrog.build.extractor.scan.GeneralInfo; /** @@ -13,18 +13,18 @@ * * @author yahavi */ -public class ProjectsMap extends TreeMap { +public class ProjectsMap extends TreeMap { private static final long serialVersionUID = 1L; /** * Put a project in the map. * * @param projectName - The project name. - * @param dependenciesTree - The dependencies tree. - * @return dependenciesTree. + * @param dependencyTree - The dependencies tree. + * @return dependencyTree. */ - public DependenciesTree put(String projectName, DependenciesTree dependenciesTree) { - return super.put(createKey(projectName, dependenciesTree.getGeneralInfo()), dependenciesTree); + public DependencyTree put(String projectName, DependencyTree dependencyTree) { + return super.put(createKey(projectName, dependencyTree.getGeneralInfo()), dependencyTree); } public static ProjectKey createKey(String projectName, GeneralInfo generalInfo) {