private boolean startProxy()

in src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java [611:693]


    private boolean startProxy() {
        ValueReplacer replacer = GuiPackage.getInstance().getReplacer();
        modifyTestElement(model);
        TreeNodeWrapper treeNodeWrapper = (TreeNodeWrapper)targetNodesModel.getSelectedItem();
        if (JMeterUtils.getResString("use_recording_controller").equals(treeNodeWrapper.getLabel())) {
            JMeterTreeNode targetNode = model.findTargetControllerNode();
            if(targetNode == null || !(targetNode.getTestElement() instanceof RecordingController)) {
                JOptionPane.showMessageDialog(this,
                        JMeterUtils.getResString("proxy_cl_wrong_target_cl"), // $NON-NLS-1$
                        JMeterUtils.getResString("error_title"), // $NON-NLS-1$
                        JOptionPane.ERROR_MESSAGE);
                return false;
            }
        }
        // Proxy can take some while to start up; show a waiting cursor
        Cursor cursor = getCursor();
        setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        try {
            replacer.replaceValues(model);
            model.startProxy();
            start.setEnabled(false);
            stop.setEnabled(true);
            restart.setEnabled(false);
            if (ProxyControl.isDynamicMode()) {
                String[] details = model.getCertificateDetails();
                StringBuilder sb = new StringBuilder();
                sb.append("<html>");
                sb.append(JMeterUtils.getResString("proxy_daemon_msg_rootca_cert"))  // $NON-NLS-1$
                        .append("&nbsp;<b>").append(KeyToolUtils.ROOT_CACERT_CRT_PFX)
                        .append("</b>&nbsp;").append(JMeterUtils.getResString("proxy_daemon_msg_created_in_bin"));
                sb.append("<br>").append(JMeterUtils.getResString("proxy_daemon_msg_install_as_in_doc")); // $NON-NLS-1$
                sb.append("<br><b>").append(MessageFormat.format(
                                JMeterUtils.getResString("proxy_daemon_msg_check_expiration"),
                                ProxyControl.CERT_VALIDITY)) // $NON-NLS-1$
                        .append("</b><br>");
                sb.append("<br>").append(JMeterUtils.getResString("proxy_daemon_msg_check_details"))
                        .append("<ul>"); // $NON-NLS-1$
                for(String detail : details) {
                    sb.append("<li>").append(detail).append("</li>");
                }
                sb.append("</ul>").append("</html>");

                // Make dialog disappear after 7 seconds
                JLabel messageLabel = new JLabel(sb.toString());
                Timer timer = new Timer(7000, evt -> {
                    Window window = SwingUtilities.getWindowAncestor(messageLabel);
                    // Window may be closed by user
                    if(window != null) {
                        window.dispose();
                    }
                });
                timer.setRepeats(false);
                timer.start();
                JOptionPane.showMessageDialog(this,
                        messageLabel,
                        JMeterUtils.getResString("proxy_daemon_msg_rootca_cert") + SPACE // $NON-NLS-1$
                                + KeyToolUtils.ROOT_CACERT_CRT_PFX + SPACE
                                + JMeterUtils.getResString("proxy_daemon_msg_created_in_bin"), // $NON-NLS-1$
                        JOptionPane.INFORMATION_MESSAGE);
            }
            return true;
        } catch (InvalidVariableException e) {
            JOptionPane.showMessageDialog(this,
                    JMeterUtils.getResString("invalid_variables")+": "+e.getMessage(), // $NON-NLS-1$ $NON-NLS-2$
                    JMeterUtils.getResString("error_title"), // $NON-NLS-1$
                    JOptionPane.ERROR_MESSAGE);
            return false;
        } catch (BindException e) {
            JOptionPane.showMessageDialog(this,
                    JMeterUtils.getResString("proxy_daemon_bind_error")+": "+e.getMessage(), // $NON-NLS-1$ $NON-NLS-2$
                    JMeterUtils.getResString("error_title"), // $NON-NLS-1$
                    JOptionPane.ERROR_MESSAGE);
            return false;
        } catch (IOException e) {
            JOptionPane.showMessageDialog(this,
                    JMeterUtils.getResString("proxy_daemon_error")+": "+e.getMessage(), // $NON-NLS-1$ $NON-NLS-2$
                    JMeterUtils.getResString("error_title"), // $NON-NLS-1$
                    JOptionPane.ERROR_MESSAGE);
            return false;
        } finally {
            setCursor(cursor);
        }
    }