001    package com.khubla.pragmatach.contrib.clientproxygenerator;
002    
003    import java.io.FileInputStream;
004    import java.util.List;
005    
006    import org.apache.commons.cli.CommandLine;
007    import org.apache.commons.cli.CommandLineParser;
008    import org.apache.commons.cli.HelpFormatter;
009    import org.apache.commons.cli.Option;
010    import org.apache.commons.cli.OptionBuilder;
011    import org.apache.commons.cli.Options;
012    import org.apache.commons.cli.PosixParser;
013    
014    /**
015     * @author tome
016     */
017    public class ClientProxyGenerator {
018       /**
019        * controllers file option
020        */
021       private static final String FILE_OPTION = "file";
022       /**
023        * target option
024        */
025       private static final String NAMESPACE_OPTION = "namespace";
026    
027       /**
028        * test the routes
029        */
030       private static void generateProxies(List<RouteUrl> controllerUrls, String namespace) throws Exception {
031          try {
032             final ClientGenerator clientGenerator = new ClientGenerator("target/pragmatach/");
033             for (final RouteUrl routeUrl : controllerUrls) {
034                clientGenerator.generate(routeUrl, namespace);
035             }
036          } catch (final Exception e) {
037             throw new Exception("Exception in testUrls", e);
038          }
039       }
040    
041       /**
042        * the usual
043        */
044       @SuppressWarnings("static-access")
045       public static void main(String[] args) {
046          try {
047             /*
048              * options for commons-cli
049              */
050             final Options options = new Options();
051             final Option fo = OptionBuilder.withArgName(FILE_OPTION).isRequired(true).withType(String.class).hasArg().withDescription("controllers file").create(FILE_OPTION);
052             options.addOption(fo);
053             final Option uo = OptionBuilder.withArgName(NAMESPACE_OPTION).isRequired(true).withType(String.class).hasArg().withDescription("namespace").create(NAMESPACE_OPTION);
054             options.addOption(uo);
055             /*
056              * parse
057              */
058             final CommandLineParser parser = new PosixParser();
059             CommandLine cmd = null;
060             try {
061                cmd = parser.parse(options, args);
062             } catch (final Exception e) {
063                e.printStackTrace();
064                final HelpFormatter formatter = new HelpFormatter();
065                formatter.printHelp("posix", options);
066                System.exit(0);
067             }
068             /*
069              * vars
070              */
071             final String namespace = cmd.getOptionValue(NAMESPACE_OPTION);
072             final String file = cmd.getOptionValue(FILE_OPTION);
073             /*
074              * read
075              */
076             final List<RouteUrl> controllerUrls = RouteUrl.readRoutes(new FileInputStream(file));
077             /*
078              * test
079              */
080             generateProxies(controllerUrls, namespace);
081          } catch (final Exception e) {
082             e.printStackTrace();
083          }
084       }
085    }