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(" <b>").append(KeyToolUtils.ROOT_CACERT_CRT_PFX)
.append("</b> ").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);
}
}