Skip to content
This repository was archived by the owner on Apr 23, 2025. It is now read-only.

Commit 8a53223

Browse files
committed
simplified usage/async download of odo (#536)
Signed-off-by: Andre Dietisheim <[email protected]>
1 parent c6b7a9f commit 8a53223

34 files changed

+282
-187
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ dependencies {
113113
'org.apache.commons:commons-compress:1.21',
114114
'org.apache.commons:commons-exec:1.3',
115115
'org.apache.commons:commons-lang3:3.9',
116-
'com.redhat.devtools.intellij:intellij-common:1.9.1',
116+
'com.redhat.devtools.intellij:intellij-common:1.9.3-SNAPSHOT',
117117
'io.jsonwebtoken:jjwt-impl:0.11.2',
118118
'io.jsonwebtoken:jjwt-jackson:0.11.2',
119119
'org.keycloak:keycloak-installed-adapter:20.0.5',

src/main/java/org/jboss/tools/intellij/openshift/actions/OdoAction.java

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,19 @@
2020
import org.jboss.tools.intellij.openshift.tree.application.ApplicationsRootNode;
2121
import org.jboss.tools.intellij.openshift.tree.application.ApplicationsTreeStructure;
2222
import org.jboss.tools.intellij.openshift.utils.odo.Odo;
23+
import org.jetbrains.annotations.NotNull;
24+
import org.slf4j.Logger;
25+
import org.slf4j.LoggerFactory;
2326

2427
import javax.swing.tree.TreePath;
2528

2629
import static org.jboss.tools.intellij.openshift.telemetry.TelemetryService.PREFIX_ACTION;
2730

2831
public abstract class OdoAction extends StructureTreeAction implements TelemetryHandler {
2932

30-
protected TelemetrySender telemetrySender;
33+
private static final Logger LOGGER = LoggerFactory.getLogger(OdoAction.class);
34+
35+
protected TelemetrySender telemetrySender;
3136

3237
protected OdoAction(Class... filters) {
3338
super(filters);
@@ -36,15 +41,35 @@ protected OdoAction(Class... filters) {
3641
@Override
3742
public void actionPerformed(AnActionEvent anActionEvent, TreePath path, Object selected) {
3843
telemetrySender = new TelemetrySender(PREFIX_ACTION + getTelemetryActionName());
39-
this.actionPerformed(anActionEvent, (Object) getElement(selected), getOdo(anActionEvent));
44+
Odo odo = getOdo(anActionEvent);
45+
if (odo == null) {
46+
return;
47+
}
48+
this.actionPerformed(anActionEvent, (Object) getElement(selected), odo);
4049
}
4150

4251
private Odo getOdo(AnActionEvent anActionEvent) {
43-
Tree tree = getTree(anActionEvent);
44-
return ((ApplicationsRootNode) ((ApplicationsTreeStructure) tree.getClientProperty(Constants.STRUCTURE_PROPERTY)).getApplicationsRoot()).getOdo();
52+
try {
53+
Tree tree = getTree(anActionEvent);
54+
if (tree == null) {
55+
return null;
56+
}
57+
ApplicationsTreeStructure structure = (ApplicationsTreeStructure) tree.getClientProperty(Constants.STRUCTURE_PROPERTY);
58+
if (structure == null) {
59+
return null;
60+
}
61+
ApplicationsRootNode root = (ApplicationsRootNode) structure.getApplicationsRoot();
62+
if (root == null) {
63+
return null;
64+
}
65+
return root.getOdo().getNow(null);
66+
} catch(Exception e) {
67+
LOGGER.warn("Could not get odo: " + e.getMessage(), e);
68+
return null;
69+
}
4570
}
4671

47-
public abstract void actionPerformed(AnActionEvent anActionEvent, Object selected, Odo odo);
72+
public abstract void actionPerformed(AnActionEvent anActionEvent, Object selected, @NotNull Odo odo);
4873

4974
protected abstract String getTelemetryActionName();
5075

src/main/java/org/jboss/tools/intellij/openshift/actions/OpenGettingStartedAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.intellij.openapi.wm.ToolWindowManager;
1717
import org.jboss.tools.intellij.openshift.tree.application.ApplicationsRootNode;
1818
import org.jboss.tools.intellij.openshift.utils.odo.Odo;
19+
import org.jetbrains.annotations.NotNull;
1920

2021
public class OpenGettingStartedAction extends OdoAction {
2122
private static final String GETTING_STARTED_WINDOW_ID = "OpenShiftGettingStarted";
@@ -30,7 +31,7 @@ protected String getTelemetryActionName() {
3031
}
3132

3233
@Override
33-
public void actionPerformed(AnActionEvent anActionEvent, Object selected, Odo odo) {
34+
public void actionPerformed(AnActionEvent anActionEvent, Object selected, @NotNull Odo odo) {
3435
Project project = anActionEvent.getProject();
3536
if (project == null) {
3637
return;

src/main/java/org/jboss/tools/intellij/openshift/actions/binding/DeleteBindingAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.jboss.tools.intellij.openshift.telemetry.TelemetryService;
1717
import org.jboss.tools.intellij.openshift.tree.application.BindingNode;
1818
import org.jboss.tools.intellij.openshift.utils.odo.Odo;
19+
import org.jetbrains.annotations.NotNull;
1920

2021
import java.io.IOException;
2122

@@ -25,7 +26,7 @@ public DeleteBindingAction() {
2526
}
2627

2728
@Override
28-
public void actionPerformed(AnActionEvent anActionEvent, Object selected, Odo odo) {
29+
public void actionPerformed(AnActionEvent anActionEvent, Object selected, @NotNull Odo odo) {
2930
try {
3031
BindingNode node = (BindingNode) selected;
3132
if (Messages.NO == Messages.showYesNoDialog("Delete binding '" + node.getName() + "'.\nAre you sure?",

src/main/java/org/jboss/tools/intellij/openshift/actions/binding/ShowBindingDetailsAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@
1616
import org.jboss.tools.intellij.openshift.tree.application.BindingNode;
1717
import org.jboss.tools.intellij.openshift.ui.binding.BindingDetailDialog;
1818
import org.jboss.tools.intellij.openshift.utils.odo.Odo;
19+
import org.jetbrains.annotations.NotNull;
1920

2021
public class ShowBindingDetailsAction extends OdoAction {
2122
public ShowBindingDetailsAction() {
2223
super(BindingNode.class);
2324
}
2425

2526
@Override
26-
public void actionPerformed(AnActionEvent anActionEvent, Object selected, Odo odo) {
27+
public void actionPerformed(AnActionEvent anActionEvent, Object selected, @NotNull Odo odo) {
2728
BindingNode node = (BindingNode) selected;
2829
BindingDetailDialog dialog = new BindingDetailDialog(anActionEvent.getProject(), null, node.getBinding());
2930
dialog.show();

src/main/java/org/jboss/tools/intellij/openshift/actions/cluster/AboutAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.jboss.tools.intellij.openshift.actions.OdoAction;
1717
import org.jboss.tools.intellij.openshift.tree.application.ApplicationsRootNode;
1818
import org.jboss.tools.intellij.openshift.utils.odo.Odo;
19+
import org.jetbrains.annotations.NotNull;
1920

2021
import java.io.IOException;
2122
import java.util.concurrent.CompletableFuture;
@@ -31,7 +32,7 @@ public AboutAction() {
3132
protected String getTelemetryActionName() { return "about"; }
3233

3334
@Override
34-
public void actionPerformed(AnActionEvent anActionEvent, Object selected, Odo odo) {
35+
public void actionPerformed(AnActionEvent anActionEvent, Object selected, @NotNull Odo odo) {
3536
CompletableFuture.runAsync(() -> {
3637
try {
3738
odo.about();

src/main/java/org/jboss/tools/intellij/openshift/actions/cluster/ListComponentsAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.intellij.openapi.ui.Messages;
1515
import com.redhat.devtools.intellij.common.utils.UIHelper;
1616
import org.jboss.tools.intellij.openshift.utils.odo.Odo;
17+
import org.jetbrains.annotations.NotNull;
1718

1819
import java.io.IOException;
1920
import java.util.concurrent.CompletableFuture;
@@ -26,7 +27,7 @@ public class ListComponentsAction extends LoggedInClusterAction {
2627
protected String getTelemetryActionName() { return "list components"; }
2728

2829
@Override
29-
public void actionPerformed(AnActionEvent anActionEvent, Object selected, Odo odo) {
30+
public void actionPerformed(AnActionEvent anActionEvent, Object selected, @NotNull Odo odo) {
3031
CompletableFuture.runAsync(() -> {
3132
try {
3233
odo.listComponents();

src/main/java/org/jboss/tools/intellij/openshift/actions/cluster/ListServicesAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.intellij.openapi.ui.Messages;
1515
import com.redhat.devtools.intellij.common.utils.UIHelper;
1616
import org.jboss.tools.intellij.openshift.utils.odo.Odo;
17+
import org.jetbrains.annotations.NotNull;
1718

1819
import java.io.IOException;
1920
import java.util.concurrent.CompletableFuture;
@@ -26,7 +27,7 @@ public class ListServicesAction extends LoggedInClusterAction {
2627
protected String getTelemetryActionName() { return "list services"; }
2728

2829
@Override
29-
public void actionPerformed(AnActionEvent anActionEvent, Object selected, Odo odo) {
30+
public void actionPerformed(AnActionEvent anActionEvent, Object selected, @NotNull Odo odo) {
3031
CompletableFuture.runAsync(() -> {
3132
try {
3233
odo.listServices();

src/main/java/org/jboss/tools/intellij/openshift/actions/cluster/LoginAction.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.jboss.tools.intellij.openshift.tree.application.ApplicationsRootNode;
1818
import org.jboss.tools.intellij.openshift.ui.cluster.LoginDialog;
1919
import org.jboss.tools.intellij.openshift.utils.odo.Odo;
20+
import org.jetbrains.annotations.NotNull;
2021

2122
import java.io.IOException;
2223
import java.util.concurrent.CompletableFuture;
@@ -33,25 +34,24 @@ public LoginAction() {
3334
protected String getTelemetryActionName() { return "login to cluster"; }
3435

3536
@Override
36-
public void actionPerformed(AnActionEvent anActionEvent, Object selected, Odo odo) {
37-
ApplicationsRootNode clusterNode = (ApplicationsRootNode) selected;
37+
public void actionPerformed(AnActionEvent anActionEvent, Object selected, @NotNull Odo odo) {
3838
CompletableFuture.runAsync(() -> {
39-
try {
40-
LoginDialog loginDialog = UIHelper.executeInUI(() -> {
41-
LoginDialog dialog = new LoginDialog(anActionEvent.getProject(), null, clusterNode.getOdo().getMasterUrl().toString());
42-
dialog.show();
43-
return dialog;
44-
});
45-
if (loginDialog.isOK()) {
46-
odo.login(loginDialog.getClusterURL(), loginDialog.getUserName(), loginDialog.getPassword(), loginDialog.getToken());
47-
sendTelemetryResults(TelemetryResult.SUCCESS);
48-
} else {
49-
sendTelemetryResults(TelemetryResult.ABORTED);
50-
}
51-
} catch (IOException e) {
52-
sendTelemetryError(e);
53-
UIHelper.executeInUI(() -> Messages.showErrorDialog("Error: " + e.getLocalizedMessage(), "Login"));
39+
try {
40+
LoginDialog loginDialog = UIHelper.executeInUI(() -> {
41+
LoginDialog dialog = new LoginDialog(anActionEvent.getProject(), null, odo.getMasterUrl().toString());
42+
dialog.show();
43+
return dialog;
44+
});
45+
if (loginDialog.isOK()) {
46+
odo.login(loginDialog.getClusterURL(), loginDialog.getUserName(), loginDialog.getPassword(), loginDialog.getToken());
47+
sendTelemetryResults(TelemetryResult.SUCCESS);
48+
} else {
49+
sendTelemetryResults(TelemetryResult.ABORTED);
5450
}
55-
});
51+
} catch (IOException e) {
52+
sendTelemetryError(e);
53+
UIHelper.executeInUI(() -> Messages.showErrorDialog("Error: " + e.getLocalizedMessage(), "Login"));
54+
}
55+
});
5656
}
5757
}

src/main/java/org/jboss/tools/intellij/openshift/actions/cluster/OpenConsoleAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.intellij.openapi.actionSystem.AnActionEvent;
1515
import com.intellij.openapi.ui.Messages;
1616
import org.jboss.tools.intellij.openshift.utils.odo.Odo;
17+
import org.jetbrains.annotations.NotNull;
1718

1819
import java.io.IOException;
1920

@@ -25,7 +26,7 @@ public class OpenConsoleAction extends LoggedInClusterAction {
2526
protected String getTelemetryActionName() { return "open console"; }
2627

2728
@Override
28-
public void actionPerformed(AnActionEvent anActionEvent, Object selected, Odo odo) {
29+
public void actionPerformed(AnActionEvent anActionEvent, Object selected, @NotNull Odo odo) {
2930
try {
3031
String url = odo.consoleURL();
3132
BrowserUtil.open(url);

0 commit comments

Comments
 (0)