Mercurial > hg > release > thermostat-0.5
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("/");