Skip to content

Commit 8535cff

Browse files
feat: add interfaces and first functionality to retrieve html
1 parent 28a5264 commit 8535cff

14 files changed

Lines changed: 198 additions & 32 deletions

File tree

plugin/META-INF/MANIFEST.MF

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ Require-Bundle: org.eclipse.ui,
2424
org.eclipse.ui.editors,
2525
org.eclipse.ui.genericeditor,
2626
org.eclipse.swt,
27-
org.eclipse.jface
27+
org.eclipse.jface,
28+
com.google.gson;bundle-version="2.11.0"
2829
Automatic-Module-Name: io.snyk.eclipse.plugin.tests
2930
Bundle-ActivationPolicy: lazy
3031
Bundle-ClassPath: .,
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.snyk.eclipse.plugin.views.snyktoolview;
2+
3+
import org.eclipse.jface.resource.ImageDescriptor;
4+
import org.eclipse.jface.viewers.TreeNode;
5+
6+
public interface ISnykToolView {
7+
abstract void setNodeText(TreeNode node, String text);
8+
abstract void setNodeIcon(ImageDescriptor icon);
9+
abstract void addIssueNode(TreeNode parent, TreeNode toBeAdded);
10+
abstract void addFileNode(TreeNode parent, TreeNode toBeAdded);
11+
abstract void addInfoNode(TreeNode parent, TreeNode toBeAdded);
12+
abstract TreeNode getProductNode(String product);
13+
abstract TreeNode getRoot();
14+
}
Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,31 @@
11
package io.snyk.eclipse.plugin.views.snyktoolview;
22

3-
import java.util.ArrayList;
4-
import java.util.List;
5-
63
import org.eclipse.jface.viewers.TreeNode;
74

8-
public class RootObject {
9-
private List<TreeNode> children;
5+
public class RootObject extends TreeNode {
6+
public static final String CONFIGURATION = "Configuration";
7+
public static final String CODE_SECURITY = "Code Security";
8+
public static final String OPEN_SOURCE = "Open Source";
9+
public static final String CODE_QUALITY = "Code Quality";
10+
private TreeNode ossRootNode;
11+
private TreeNode codeSecurityRootNode;
12+
private TreeNode codeQualityRootNode;
13+
private TreeNode iacRootNode;
1014

1115
public RootObject() {
12-
children = new ArrayList<>();
13-
14-
// Initialize with some data
15-
children.add(new TreeNode("Open Source"));
16-
children.add(new TreeNode("Code Security"));
17-
children.add(new TreeNode("Configuration"));
18-
}
19-
20-
public List<TreeNode> getChildren() {
21-
return children;
16+
super("");
17+
18+
ossRootNode = new TreeNode(OPEN_SOURCE);
19+
codeSecurityRootNode = new TreeNode(CODE_SECURITY);
20+
codeQualityRootNode = new TreeNode(CODE_QUALITY);
21+
iacRootNode = new TreeNode(CONFIGURATION);
22+
23+
TreeNode[] children = new TreeNode[] {
24+
ossRootNode,
25+
codeSecurityRootNode,
26+
codeQualityRootNode,
27+
iacRootNode,
28+
};
29+
setChildren(children);
2230
}
2331
}

plugin/src/main/java/io/snyk/eclipse/plugin/views/snyktoolview/SnykToolView.java

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.eclipse.jface.action.Action;
88
import org.eclipse.jface.action.MenuManager;
99
import org.eclipse.jface.preference.PreferenceDialog;
10+
import org.eclipse.jface.resource.ImageDescriptor;
1011
import org.eclipse.jface.viewers.ISelectionChangedListener;
1112
import org.eclipse.jface.viewers.IStructuredSelection;
1213
import org.eclipse.jface.viewers.SelectionChangedEvent;
@@ -37,7 +38,7 @@
3738
* and packages to io.snyk.eclipse.plugin.views, when the original SnykView is
3839
* removed.
3940
*/
40-
public class SnykToolView extends ViewPart {
41+
public class SnykToolView extends ViewPart implements ISnykToolView {
4142

4243
/**
4344
* The ID of the view as specified by the extension.
@@ -50,6 +51,7 @@ public class SnykToolView extends ViewPart {
5051

5152
private TreeViewer treeViewer;
5253
private Browser browser;
54+
private RootObject rootObject = new RootObject();
5355

5456
private final static Shell SHELL = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
5557

@@ -71,7 +73,6 @@ public void createPartControl(Composite parent) {
7173
treeViewer.setLabelProvider(new TreeLabelProvider());
7274

7375
// Create and set the root object
74-
RootObject rootObject = new RootObject();
7576
treeViewer.setInput(rootObject);
7677

7778
registerTreeContextMeny(parent);
@@ -165,4 +166,45 @@ private static Shell getShell() {
165166
public void setFocus() {
166167
treeViewer.getControl().setFocus();
167168
}
169+
170+
@Override
171+
public void setNodeText(TreeNode node, String text) {
172+
// TODO Auto-generated method stub
173+
174+
}
175+
176+
@Override
177+
public void setNodeIcon(ImageDescriptor icon) {
178+
// TODO Auto-generated method stub
179+
180+
}
181+
182+
@Override
183+
public void addIssueNode(TreeNode parent, TreeNode toBeAdded) {
184+
// TODO Auto-generated method stub
185+
186+
}
187+
188+
@Override
189+
public void addFileNode(TreeNode parent, TreeNode toBeAdded) {
190+
// TODO Auto-generated method stub
191+
192+
}
193+
194+
@Override
195+
public void addInfoNode(TreeNode parent, TreeNode toBeAdded) {
196+
// TODO Auto-generated method stub
197+
198+
}
199+
200+
@Override
201+
public TreeNode getProductNode(String product) {
202+
// TODO Auto-generated method stub
203+
return null;
204+
}
205+
206+
@Override
207+
public TreeNode getRoot() {
208+
return this.rootObject;
209+
}
168210
}

plugin/src/main/java/io/snyk/eclipse/plugin/views/snyktoolview/providers/TreeContentProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public Object[] getElements(Object inputElement) {
1212
// Return the root elements of your tree
1313
// This method is called to get the top-level items
1414
if (inputElement instanceof RootObject) {
15-
return ((RootObject) inputElement).getChildren().toArray();
15+
return ((RootObject) inputElement).getChildren();
1616
}
1717
return new Object[0];
1818
}

plugin/src/main/java/io/snyk/languageserver/protocolextension/SnykExtendedLanguageClient.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.eclipse.core.resources.IProject;
2020
import org.eclipse.jdt.internal.core.JavaProject;
2121
import org.eclipse.jface.viewers.IStructuredSelection;
22+
import org.eclipse.jface.viewers.TreeNode;
2223
import org.eclipse.jface.wizard.WizardDialog;
2324
import org.eclipse.lsp4e.LSPEclipseUtils;
2425
import org.eclipse.lsp4e.LanguageClientImpl;
@@ -32,6 +33,7 @@
3233
import org.eclipse.lsp4j.services.LanguageServer;
3334
import org.eclipse.ui.ISelectionService;
3435
import org.eclipse.ui.IWorkbenchWindow;
36+
import org.eclipse.ui.PartInitException;
3537
import org.eclipse.ui.PlatformUI;
3638

3739
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -45,6 +47,8 @@
4547
import io.snyk.eclipse.plugin.properties.preferences.Preferences;
4648
import io.snyk.eclipse.plugin.utils.SnykLogger;
4749
import io.snyk.eclipse.plugin.views.SnykView;
50+
import io.snyk.eclipse.plugin.views.snyktoolview.ISnykToolView;
51+
import io.snyk.eclipse.plugin.views.snyktoolview.SnykToolView;
4852
import io.snyk.eclipse.plugin.wizards.SnykWizard;
4953
import io.snyk.languageserver.LsCommandID;
5054
import io.snyk.languageserver.LsNotificationID;
@@ -64,6 +68,7 @@ public class SnykExtendedLanguageClient extends LanguageClientImpl {
6468
private final ProgressManager progressMgr = new ProgressManager();
6569
private final ObjectMapper om = new ObjectMapper();
6670
private AnalyticsSender analyticsSender;
71+
private ISnykToolView toolView;
6772

6873
private static SnykExtendedLanguageClient instance = null;
6974

@@ -248,7 +253,16 @@ public void snykScan(SnykScanParam param) {
248253
switch(param.getStatus()) {
249254
case "inProgress":
250255
scanState.setScanInProgress(inProgressKey, true);
251-
// Show scanning view state
256+
if (toolView == null) {
257+
try {
258+
toolView = (ISnykToolView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(SnykToolView.ID);
259+
} catch (PartInitException e) {
260+
SnykLogger.logError(e);
261+
return;
262+
}
263+
}
264+
TreeNode productNode = toolView.getProductNode(param.getProduct());
265+
toolView.setNodeText(productNode, "Scanning...");
252266
break;
253267
case "success":
254268
scanState.setScanInProgress(inProgressKey, false);
@@ -447,4 +461,8 @@ public static <T> T convertInstanceOfObject(Object o, Class<T> clazz) {
447461
return null;
448462
}
449463
}
464+
465+
public void setToolWindow(ISnykToolView toolView) {
466+
this.toolView = toolView;
467+
}
450468
}

plugin/src/main/java/io/snyk/languageserver/protocolextension/messageObjects/scanResults/AdditionalData.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package io.snyk.languageserver.protocolextension.messageObjects.scanResults;
22

3+
import io.snyk.languageserver.protocolextension.SnykExtendedLanguageClient;
4+
35
public record AdditionalData(
6+
String key,
47
// Code
58
String message,
69
String[] cwe,
@@ -9,7 +12,6 @@ public record AdditionalData(
912
boolean hasAIFix,
1013
// OSS + Code
1114
String ruleId,
12-
String details,
1315
String license,
1416
String description,
1517
String language,
@@ -21,7 +23,9 @@ public record AdditionalData(
2123
String projectName,
2224
String displayTargetFile,
2325
// IaC
24-
String publicId,
25-
String customUIContent
26+
String publicId
2627
) {
28+
public String customUIContent() {
29+
return SnykExtendedLanguageClient.getInstance().getIssueDescription(key);
30+
}
2731
}

target-platform/target-platform.target

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@
7070
<version>3.4</version>
7171
<type>jar</type>
7272
</dependency>
73+
<dependency>
74+
<groupId>org.instancio</groupId>
75+
<artifactId>instancio-core</artifactId>
76+
<version>5.0.2</version>
77+
</dependency>
7378
</dependencies>
7479
</location>
7580
</locations>

tests/META-INF/MANIFEST.MF

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ Require-Bundle: wrapped.org.mockito.mockito-inline;bundle-version="4.5.1",
1717
org.mockito.mockito-core;bundle-version="4.5.1",
1818
net.bytebuddy.byte-buddy;bundle-version="1.12.7",
1919
net.bytebuddy.byte-buddy-agent;bundle-version="1.12.7",
20-
org.objenesis;bundle-version="3.1.0"
20+
org.objenesis;bundle-version="3.1.0",
21+
com.google.gson;bundle-version="2.11.0",
22+
org.instancio.core;bundle-version="5.0.2"

tests/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@
7272
<type>jar</type>
7373
<scope>test</scope>
7474
</dependency>
75+
<dependency>
76+
<groupId>org.instancio</groupId>
77+
<artifactId>instancio-core</artifactId>
78+
<version>5.0.2</version>
79+
</dependency>
7580
</dependencies>
7681

7782
<build>

0 commit comments

Comments
 (0)