public void setTree()

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);
    }