changeset 862:05b6f3969868

Consolidate command options agent vs. webservice Reviewed-by: jerboaa Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2012-December/004824.html
author Roman Kennke <rkennke@redhat.com>
date Mon, 17 Dec 2012 16:36:50 +0100
parents f39c5b772cd0
children 39987bc895d4
files distribution/config/commands/agent.properties distribution/config/commands/webservice.properties web/cmd/src/main/java/com/redhat/thermostat/web/cmd/WebServiceCommand.java web/cmd/src/main/java/com/redhat/thermostat/web/cmd/WebServiceLauncher.java web/cmd/src/test/java/com/redhat/thermostat/web/cmd/WebServiceCommandTest.java web/common/src/main/java/com/redhat/thermostat/web/common/StorageWrapper.java web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java
diffstat 7 files changed, 53 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/distribution/config/commands/agent.properties	Mon Dec 17 10:11:24 2012 +0100
+++ b/distribution/config/commands/agent.properties	Mon Dec 17 16:36:50 2012 +0100
@@ -39,7 +39,7 @@
 dbUrl.long = dbUrl
 dbUrl.hasarg = true
 dbUrl.required = true
-dbUrl.description = connect to the given url
+dbUrl.description = connect to the given URL
 
 username.short = u
 username.long = username
--- a/distribution/config/commands/webservice.properties	Mon Dec 17 10:11:24 2012 +0100
+++ b/distribution/config/commands/webservice.properties	Mon Dec 17 16:36:50 2012 +0100
@@ -31,17 +31,19 @@
 
 options = storageURL, username, password, bindAddrs
 
-storageURL.short = u
+storageURL.short = d
 storageURL.long = storageURL
 storageURL.hasarg = true
 storageURL.required = true
-storageURL.description = the URL to the storage
+storageURL.description = connect to the given URL
 
+username.short = u
 username.long = username
 username.hasarg = true
 username.required = false
 username.description = the username to authenticate against the storage
 
+password.short = p
 password.long = password
 password.hasarg = true
 password.required = false
--- a/web/cmd/src/main/java/com/redhat/thermostat/web/cmd/WebServiceCommand.java	Mon Dec 17 10:11:24 2012 +0100
+++ b/web/cmd/src/main/java/com/redhat/thermostat/web/cmd/WebServiceCommand.java	Mon Dec 17 16:36:50 2012 +0100
@@ -61,8 +61,12 @@
     @Override
     public void run(CommandContext ctx) throws CommandException {
         String storageURL = ctx.getArguments().getArgument("storageURL");
+        String username = ctx.getArguments().getArgument("username");
+        String password = ctx.getArguments().getArgument("password");
         serviceLauncher.setIpAddresses(parseIPsPorts(ctx.getArguments().getArgument("bindAddrs")));
         serviceLauncher.setStorageURL(storageURL);
+        serviceLauncher.setStorageUsername(username);
+        serviceLauncher.setStoragePassword(password);
         try {
             // this blocks
             serviceLauncher.start();
--- a/web/cmd/src/main/java/com/redhat/thermostat/web/cmd/WebServiceLauncher.java	Mon Dec 17 10:11:24 2012 +0100
+++ b/web/cmd/src/main/java/com/redhat/thermostat/web/cmd/WebServiceLauncher.java	Mon Dec 17 16:36:50 2012 +0100
@@ -62,6 +62,8 @@
 
     private Server server;
     private String storageURL;
+    private String storageUsername;
+    private String storagePassword;
     // IP/Port pairs, keyed by IP
     private List<IpPortPair> ipsPorts;
     
@@ -92,6 +94,8 @@
 
         ServletHolder servletHolder = new ServletHolder("rest-storage-end-point", new WebStorageEndPoint());
         servletHolder.setInitParameter(WebStorageEndPoint.STORAGE_ENDPOINT, storageURL);
+        servletHolder.setInitParameter(WebStorageEndPoint.STORAGE_USERNAME, storageUsername);
+        servletHolder.setInitParameter(WebStorageEndPoint.STORAGE_PASSWORD, storagePassword);
         servletHolder.setInitParameter(WebStorageEndPoint.STORAGE_CLASS, MongoStorageProvider.class.getName());
         ctx.addServlet(servletHolder, "/");
 
@@ -141,6 +145,14 @@
         this.storageURL = storageURL;
     }
 
+    public void setStorageUsername(String storageUsername) {
+        this.storageUsername = storageUsername;
+    }
+
+    public void setStoragePassword(String storagePassword) {
+        this.storagePassword = storagePassword;
+    }
+
     public void setIpAddresses(List<IpPortPair> ipsPorts) {
         this.ipsPorts = ipsPorts;
     }
--- a/web/cmd/src/test/java/com/redhat/thermostat/web/cmd/WebServiceCommandTest.java	Mon Dec 17 10:11:24 2012 +0100
+++ b/web/cmd/src/test/java/com/redhat/thermostat/web/cmd/WebServiceCommandTest.java	Mon Dec 17 16:36:50 2012 +0100
@@ -91,6 +91,29 @@
             fail("should not throw exception");
         }
         verify(launcher).setStorageURL(storageUrl);
+        verify(launcher).setStorageUsername(null);
+        verify(launcher).setStoragePassword(null);
+        verify(launcher).setIpAddresses(any(List.class));
+        verify(launcher).start();
+    }
+
+    @SuppressWarnings("unchecked")
+    @Test
+    public void verifyLauncherStartWithAuth() throws Exception {
+        SimpleArguments args = new SimpleArguments();
+        String storageUrl = "mongodb://127.0.0.1:27518";
+        args.addArgument("storageURL", storageUrl);
+        args.addArgument("bindAddrs", "127.0.0.1:8888,127.0.0.2:9999");
+        args.addArgument("username", "testuser");
+        args.addArgument("password", "testpasswd");
+        try {
+            cmd.run(cmdCtxFactory.createContext(args));
+        } catch (CommandException e) {
+            fail("should not throw exception");
+        }
+        verify(launcher).setStorageURL(storageUrl);
+        verify(launcher).setStorageUsername("testuser");
+        verify(launcher).setStoragePassword("testpasswd");
         verify(launcher).setIpAddresses(any(List.class));
         verify(launcher).start();
     }
--- a/web/common/src/main/java/com/redhat/thermostat/web/common/StorageWrapper.java	Mon Dec 17 10:11:24 2012 +0100
+++ b/web/common/src/main/java/com/redhat/thermostat/web/common/StorageWrapper.java	Mon Dec 17 16:36:50 2012 +0100
@@ -37,26 +37,21 @@
 
 package com.redhat.thermostat.web.common;
 
-import com.redhat.thermostat.storage.mongodb.MongoStorageProvider;
+import com.redhat.thermostat.storage.config.ConnectionConfiguration;
 import com.redhat.thermostat.storage.config.StartupConfiguration;
 import com.redhat.thermostat.storage.core.Storage;
 import com.redhat.thermostat.storage.core.StorageProvider;
+import com.redhat.thermostat.storage.mongodb.MongoStorageProvider;
 
 public class StorageWrapper {
 
     private static Storage storage;
 
-    public static Storage getStorage(String storageClass, final String storageEndpoint) {
+    public static Storage getStorage(String storageClass, final String storageEndpoint, final String username, final String password) {
         if (storage != null) {
             return storage;
         }
-        StartupConfiguration conf = new StartupConfiguration() {
-            
-            @Override
-            public String getDBConnectionString() {
-                return storageEndpoint;
-            }
-        };
+        StartupConfiguration conf = new ConnectionConfiguration(storageEndpoint, username, password);;
         try {
             StorageProvider provider = (StorageProvider) Class.forName(storageClass).newInstance();
             provider.setConfig(conf);
--- a/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java	Mon Dec 17 10:11:24 2012 +0100
+++ b/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java	Mon Dec 17 16:36:50 2012 +0100
@@ -93,6 +93,8 @@
     private Gson gson;
 
     public static final String STORAGE_ENDPOINT = "storage.endpoint";
+    public static final String STORAGE_USERNAME = "storage.username";
+    public static final String STORAGE_PASSWORD = "storage.password";
     public static final String STORAGE_CLASS = "storage.class";
     
     private int currentCategoryId;
@@ -117,7 +119,9 @@
         if (storage == null) {
             String storageClass = getServletConfig().getInitParameter(STORAGE_CLASS);
             String storageEndpoint = getServletConfig().getInitParameter(STORAGE_ENDPOINT);
-            storage = StorageWrapper.getStorage(storageClass, storageEndpoint);
+            String username = getServletConfig().getInitParameter(STORAGE_USERNAME);
+            String password = getServletConfig().getInitParameter(STORAGE_PASSWORD);
+            storage = StorageWrapper.getStorage(storageClass, storageEndpoint, username, password);
         }
         String uri = req.getRequestURI();
         int lastPartIdx = uri.lastIndexOf("/");