in src/main/java/org/apache/openwhisk/intellij/explorer/toolwindow/tree/WhiskTree.java [54:121]
public void setTree(List<WhiskEndpoint> endpoints) {
this.root = new DefaultMutableTreeNode("root");
// endpoints
for (WhiskEndpoint e : endpoints) {
DefaultMutableTreeNode endPointNode = new DefaultMutableTreeNode(e);
// namespaces
for (WhiskNamespace ns : e.getNamespaces()) {
DefaultMutableTreeNode namespaceNode = new DefaultMutableTreeNode(ns);
endPointNode.add(namespaceNode);
//triggers
DefaultMutableTreeNode triggerRootNode = new DefaultMutableTreeNode(new WhiskTriggerRoot());
namespaceNode.add(triggerRootNode);
List<WhiskTriggerMetaData> triggers = ns.getTriggers();
for (WhiskTriggerMetaData t : triggers) {
DefaultMutableTreeNode triggerNode = new DefaultMutableTreeNode(t);
triggerRootNode.add(triggerNode);
}
// packages
List<WhiskPackage> packages = ns.getPackages();
for (WhiskPackage p : packages) {
DefaultMutableTreeNode pkgNode = new DefaultMutableTreeNode(p);
namespaceNode.add(pkgNode);
// Add origin action of binding package to tree
p.getBinding().ifPresent(binding -> {
try {
whiskPackageService.getWhiskPackage(new WhiskAuth(ns.getAuth(), e.getApihost()), binding.getNamespace(), binding.getName())
.ifPresent(packageWithActions ->
packageWithActions.getActions()
.forEach(action -> {
DefaultMutableTreeNode actionNode = new DefaultMutableTreeNode(action);
pkgNode.add(actionNode);
}));
} catch (IOException ex) {
final String msg = binding.getNamespace() + "/" + binding.getName() + " package information cannot be retrieved.";
LOG.error(msg, ex);
NOTIFIER.notify(msg, NotificationType.ERROR);
ex.printStackTrace();
}
});
}
// actions
List<WhiskActionMetaData> actions = ns.getActions();
for (WhiskActionMetaData a : actions) {
DefaultMutableTreeNode actionNode = new DefaultMutableTreeNode(a);
if (a.getWhiskPackage().isPresent()) {
String pkgPath = a.getWhiskPackage().get();
Optional<DefaultMutableTreeNode> pkgNode = findPackageNode(namespaceNode, pkgPath);
if (pkgNode.isPresent()) {
pkgNode.get().add(actionNode);
} else {
namespaceNode.add(actionNode);
}
} else {
namespaceNode.add(actionNode);
}
}
}
this.root.add(endPointNode);
}
this.innerModel = new DefaultTreeModel(root);
}