Quellcode durchsuchen

Added parameters

Lukas Cerny vor 4 Jahren
Ursprung
Commit
3b681dbf9b

+ 1 - 1
doc/openApiDescription.yaml

@@ -6,7 +6,7 @@ externalDocs:
   description: Find out more about SensLog
   url: http://senslog.org
 servers:
-  - url: http://localhost:8080/DBService/api
+  - url: http://localhost:8080/senslog/api
 tags:
   - name: "Version 1"
     description: "Origin version of public API"

+ 6 - 0
pom.xml

@@ -178,6 +178,12 @@
             <artifactId>commons-lang3</artifactId>
             <version>3.12.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.beust</groupId>
+            <artifactId>jcommander</artifactId>
+            <version>1.81</version>
+        </dependency>
+
 
 
 

+ 3 - 7
src/main/java/io/senslog/app/JettyServer.java

@@ -5,18 +5,14 @@ import org.eclipse.jetty.webapp.WebAppContext;
 
 public class JettyServer {
 
-    private static final int DEFAULT_PORT = 8080;
-    private static final String DEFAULT_PREFIX = "/DBService";
-
     public Server server;
 
-    public void start() throws Exception {
-        server = new Server(DEFAULT_PORT);
+    public void start(int port, String prefix) throws Exception {
+        server = new Server(port);
 
         WebAppContext context = new WebAppContext();
         context.setServer(server);
-        context.setContextPath(DEFAULT_PREFIX);
-//        context.setWar("src/main/webapp");
+        context.setContextPath(prefix);
         context.setResourceBase("src/main/webapp");
         context.setDefaultsDescriptor("src/main/webapp/WEB-INF/web.xml");
         server.setHandler(context);

+ 10 - 1
src/main/java/io/senslog/app/Main.java

@@ -7,12 +7,21 @@ public class Main {
 
     public static void main(String[] args) throws Exception {
 
+        Parameters params = null;
+        try {
+            params = Parameters.parse(args);
+        } catch (RuntimeException e) {
+            System.err.println(e.getMessage());
+            System.exit(1);
+        }
+
         DBConfig dbConfig = new DBConfig(
                 "jdbc:postgresql://localhost:5432/senslog1",
                 "postgres", "root", 6
         );
         DBRepositoryPool.create(dbConfig);
 
-        new JettyServer().start();
+        new JettyServer()
+                .start(params.getPort(), params.getPathPrefix());
     }
 }

+ 55 - 0
src/main/java/io/senslog/app/Parameters.java

@@ -0,0 +1,55 @@
+package io.senslog.app;
+
+import com.beust.jcommander.JCommander;
+import com.beust.jcommander.Parameter;
+import cz.hsrs.servlet.feeder.FeederServlet;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.logging.Logger;
+
+public final class Parameters {
+
+    private static final Logger logger = Logger.getLogger(FeederServlet.class.getSimpleName());
+
+    private JCommander jCommander;
+
+    public static Parameters parse(String... args) throws IOException {
+        logger.info("Parsing input parameters " + Arrays.toString(args));
+
+        Parameters parameters = new Parameters();
+        JCommander jCommander = JCommander.newBuilder()
+                .addObject(parameters).build();
+        parameters.jCommander = jCommander;
+
+        jCommander.parse(args);
+
+        if (parameters.pathPrefix.charAt(0) != '/') {
+            throw new IllegalArgumentException("Path prefix has to start with '/'.");
+        }
+
+        logger.info("Parsing input parameters were parsed successfully.");
+        return parameters;
+    }
+
+    @Parameter(names = {"-h", "-help"}, help = true)
+    private boolean help = false;
+
+    @Parameter(names = {"-p", "--port"}, description = "Server port.", required = true)
+    private int port;
+
+    @Parameter(names = {"-f", "--prefix"}, description = "Path prefix of the server.")
+    private String pathPrefix = "/";
+
+    public int getPort() {
+        return port;
+    }
+
+    public String getPathPrefix() {
+        return pathPrefix;
+    }
+
+    public void printHelp() {
+        jCommander.usage();
+    }
+}