// Path: jetty-console-core/src/main/java/org/simplericity/jettyconsole/plugins/ConnectorConfigurationPlugin.java
// public class ConnectorConfigurationPlugin extends JettyConsolePluginBase {
// 
//     public static final int DEFAULT_PORT = 8080;
//     private int port = DEFAULT_PORT;
//     private String bindAddress = null;
//     private boolean forwarded = false;
// 
//     private int requestHeaderSize = -1;
// 
//     private StartOption portOption = new DefaultStartOption("port") {
//         @Override
//         public String validate(String value) {
//             final String msg = "--port option requires a numerical value between 1 and 65535";
//             try {
//                 int port = Integer.parseInt(value);
//                 if(port < 1 || port > 65535) {
//                     return msg;
//                 }
//                 ConnectorConfigurationPlugin.this.port = port;
// 
//             } catch (NumberFormatException e) {
//                 return msg;
//             }
//             return null;
//         }
//     };
// 
//     private StartOption bindAddressOption = new DefaultStartOption("bindAddress") {
//         @Override
//         public String validate(String value) {
//             bindAddress = value;
//             return null;
//         }
//     };
// 
//     private StartOption forwardedOption = new DefaultStartOption("forwarded") {
//         @Override
//         public String validate() {
//             forwarded = true;
//             return null;
//         }
//     };
// 
// 
//     private StartOption requestHeaderSizeOption = new RequestHeaderStartOption();
// 
//     public ConnectorConfigurationPlugin() {
//         super(ConnectorConfigurationPlugin.class);
//         addStartOptions(portOption, bindAddressOption, forwardedOption, requestHeaderSizeOption);
//     }
// 
//     @Override
//     public void customizeConnector(ServerConnector connector) {
//         connector.setPort(port);
//         if(bindAddress != null) {
//             connector.setHost(bindAddress);
//         }
//         HttpConfiguration config = connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration();
//         if(forwarded) {
//             config.addCustomizer(new ForwardedRequestCustomizer());
//         }
// 
//         if(requestHeaderSize != -1){
//             config.setRequestHeaderSize(requestHeaderSize);
//         }
//     }
// 
// 
//     private class RequestHeaderStartOption extends DefaultStartOption {
//         private RequestHeaderStartOption() {
//             super("requestHeaderSize");
//         }
// 
//         public String validate(String value) {
//             final String illegalRequestHeaderSize = "--requestHeaderSize option requires a numerical value larger than 1";
// 
//             try {
//                 requestHeaderSize = Integer.parseInt(value);
//             } catch (NumberFormatException e){
//                 return illegalRequestHeaderSize;
//             }
//             if(requestHeaderSize < 1){
//                 return illegalRequestHeaderSize;
//             }
//             return null;
//         }
// 
//     }
// }


import org.simplericity.jettyconsole.plugins.ConnectorConfigurationPlugin;
import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLDecoder;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
        return optionsByName;
    }

    private File createTempDirectory(String name, int port) {
        File javaTemp = new File(System.getProperty("java.io.tmpdir"));

        File temp = new File(javaTemp, name +"_" + port);

        temp.deleteOnExit();

        temp.mkdirs();

        return temp;
    }

    private int getPort(String[] arguments) {
        for (int i = 0; i < arguments.length; i++) {
            String argument = arguments[i];
            if("--port".equals(argument)) {
                if(i +1 == arguments.length ){
                    err("--port option requires a value");
                }
                try {
                    return Integer.parseInt(arguments[i + 1]);
                } catch (NumberFormatException e) {
                    err("--port value must be an integer");
                }
                i+=2;
            }
        }
// Path: jetty-console-core/src/main/java/org/simplericity/jettyconsole/plugins/ConnectorConfigurationPlugin.java
// public class ConnectorConfigurationPlugin extends JettyConsolePluginBase {
// 
//     public static final int DEFAULT_PORT = 8080;
//     private int port = DEFAULT_PORT;
//     private String bindAddress = null;
//     private boolean forwarded = false;
// 
//     private int requestHeaderSize = -1;
// 
//     private StartOption portOption = new DefaultStartOption("port") {
//         @Override
//         public String validate(String value) {
//             final String msg = "--port option requires a numerical value between 1 and 65535";
//             try {
//                 int port = Integer.parseInt(value);
//                 if(port < 1 || port > 65535) {
//                     return msg;
//                 }
//                 ConnectorConfigurationPlugin.this.port = port;
// 
//             } catch (NumberFormatException e) {
//                 return msg;
//             }
//             return null;
//         }
//     };
// 
//     private StartOption bindAddressOption = new DefaultStartOption("bindAddress") {
//         @Override
//         public String validate(String value) {
//             bindAddress = value;
//             return null;
//         }
//     };
// 
//     private StartOption forwardedOption = new DefaultStartOption("forwarded") {
//         @Override
//         public String validate() {
//             forwarded = true;
//             return null;
//         }
//     };
// 
// 
//     private StartOption requestHeaderSizeOption = new RequestHeaderStartOption();
// 
//     public ConnectorConfigurationPlugin() {
//         super(ConnectorConfigurationPlugin.class);
//         addStartOptions(portOption, bindAddressOption, forwardedOption, requestHeaderSizeOption);
//     }
// 
//     @Override
//     public void customizeConnector(ServerConnector connector) {
//         connector.setPort(port);
//         if(bindAddress != null) {
//             connector.setHost(bindAddress);
//         }
//         HttpConfiguration config = connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration();
//         if(forwarded) {
//             config.addCustomizer(new ForwardedRequestCustomizer());
//         }
// 
//         if(requestHeaderSize != -1){
//             config.setRequestHeaderSize(requestHeaderSize);
//         }
//     }
// 
// 
//     private class RequestHeaderStartOption extends DefaultStartOption {
//         private RequestHeaderStartOption() {
//             super("requestHeaderSize");
//         }
// 
//         public String validate(String value) {
//             final String illegalRequestHeaderSize = "--requestHeaderSize option requires a numerical value larger than 1";
// 
//             try {
//                 requestHeaderSize = Integer.parseInt(value);
//             } catch (NumberFormatException e){
//                 return illegalRequestHeaderSize;
//             }
//             if(requestHeaderSize < 1){
//                 return illegalRequestHeaderSize;
//             }
//             return null;
//         }
// 
//     }
// }


// Path: jetty-console-core/src/main/java/org/simplericity/jettyconsole/JettyConsoleBootstrapMainClass.java
import org.simplericity.jettyconsole.plugins.ConnectorConfigurationPlugin;
import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLDecoder;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;

        return optionsByName;
    }

    private File createTempDirectory(String name, int port) {
        File javaTemp = new File(System.getProperty("java.io.tmpdir"));

        File temp = new File(javaTemp, name +"_" + port);

        temp.deleteOnExit();

        temp.mkdirs();

        return temp;
    }

    private int getPort(String[] arguments) {
        for (int i = 0; i < arguments.length; i++) {
            String argument = arguments[i];
            if("--port".equals(argument)) {
                if(i +1 == arguments.length ){
                    err("--port option requires a value");
                }
                try {
                    return Integer.parseInt(arguments[i + 1]);
                } catch (NumberFormatException e) {
                    err("--port value must be an integer");
                }
                i+=2;
            }
        }
        return ConnectorConfigurationPlugin.DEFAULT_PORT;