You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@provisionr.apache.org by as...@apache.org on 2013/07/03 16:56:50 UTC

[1/2] PROVISIONR-41. Fix Sonar violations (part 1)

Updated Branches:
  refs/heads/master 416958b5e -> e896d1ca2


http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/CancelSpotRequests.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/CancelSpotRequests.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/CancelSpotRequests.java
index 6fdae06..e50d1d6 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/CancelSpotRequests.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/CancelSpotRequests.java
@@ -18,20 +18,17 @@
 
 package org.apache.provisionr.amazon.activities;
 
+import com.amazonaws.services.ec2.AmazonEC2;
+import com.amazonaws.services.ec2.model.CancelSpotInstanceRequestsRequest;
 import static com.google.common.base.Preconditions.checkNotNull;
-
 import java.util.List;
-
 import org.activiti.engine.delegate.DelegateExecution;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.amazonaws.services.ec2.AmazonEC2;
-import com.amazonaws.services.ec2.model.CancelSpotInstanceRequestsRequest;
 import org.apache.provisionr.amazon.AmazonProvisionr;
 import org.apache.provisionr.amazon.ProcessVariables;
 import org.apache.provisionr.amazon.core.ProviderClientCache;
 import org.apache.provisionr.api.pool.Pool;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class CancelSpotRequests extends AmazonActivity {
 
@@ -42,13 +39,13 @@ public class CancelSpotRequests extends AmazonActivity {
     }
 
     @Override
-    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) throws Exception {
+    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) {
         @SuppressWarnings("unchecked")
         List<String> requests = (List<String>) execution.getVariable(ProcessVariables.SPOT_INSTANCE_REQUEST_IDS);
         checkNotNull(requests, "process variable '{}' not found", ProcessVariables.SPOT_INSTANCE_REQUEST_IDS);
         if (requests.size() > 0) {
             client.cancelSpotInstanceRequests(new CancelSpotInstanceRequestsRequest()
-                    .withSpotInstanceRequestIds(requests));
+                .withSpotInstanceRequestIds(requests));
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/CheckAllRequestsAreActive.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/CheckAllRequestsAreActive.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/CheckAllRequestsAreActive.java
index 5f9a9b4..c326cca 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/CheckAllRequestsAreActive.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/CheckAllRequestsAreActive.java
@@ -46,7 +46,7 @@ public class CheckAllRequestsAreActive extends AllSpotRequestsMatchPredicate {
     }
 
     @Override
-    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) throws Exception {
+    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) {
         super.execute(client, pool, execution);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/DumpConsoleOutput.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/DumpConsoleOutput.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/DumpConsoleOutput.java
index 4f709c5..204c52a 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/DumpConsoleOutput.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/DumpConsoleOutput.java
@@ -21,13 +21,14 @@ package org.apache.provisionr.amazon.activities;
 import com.amazonaws.services.ec2.AmazonEC2;
 import com.amazonaws.services.ec2.model.GetConsoleOutputRequest;
 import com.amazonaws.services.ec2.model.GetConsoleOutputResult;
-import org.apache.provisionr.amazon.core.ProviderClientCache;
-import org.apache.provisionr.api.pool.Machine;
-import org.apache.provisionr.api.pool.Pool;
 import com.google.common.base.Charsets;
 import static com.google.common.base.Preconditions.checkNotNull;
+import java.io.IOException;
 import net.schmizz.sshj.common.Base64;
 import org.activiti.engine.delegate.DelegateExecution;
+import org.apache.provisionr.amazon.core.ProviderClientCache;
+import org.apache.provisionr.api.pool.Machine;
+import org.apache.provisionr.api.pool.Pool;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,7 +41,7 @@ public class DumpConsoleOutput extends AmazonActivity {
     }
 
     @Override
-    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) throws Exception {
+    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) throws IOException {
         Machine machine = (Machine) execution.getVariable("machine");
         checkNotNull(machine, "expecting 'machine' as a process variable");
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/GetInstanceIdsFromSpotRequests.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/GetInstanceIdsFromSpotRequests.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/GetInstanceIdsFromSpotRequests.java
index 4639b77..d8cc83c 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/GetInstanceIdsFromSpotRequests.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/GetInstanceIdsFromSpotRequests.java
@@ -40,7 +40,7 @@ public class GetInstanceIdsFromSpotRequests extends AmazonActivity {
     }
 
     @Override
-    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) throws Exception {
+    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) {
         LOG.info(">> retrieving instance Ids from spot request Ids");
 
         @SuppressWarnings("unchecked")
@@ -48,12 +48,14 @@ public class GetInstanceIdsFromSpotRequests extends AmazonActivity {
             (List<String>) execution.getVariable(ProcessVariables.SPOT_INSTANCE_REQUEST_IDS);
         DescribeSpotInstanceRequestsResult result = client.describeSpotInstanceRequests(
             new DescribeSpotInstanceRequestsRequest().withSpotInstanceRequestIds(requestIds));
+
         List<String> instanceIds = new ArrayList<String>();
         for (SpotInstanceRequest spotRequest : result.getSpotInstanceRequests()) {
             if (spotRequest.getInstanceId() != null) {
                 instanceIds.add(spotRequest.getInstanceId());
             }
         }
+
         execution.setVariable(ProcessVariables.INSTANCE_IDS, instanceIds);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/PublishListOfMachines.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/PublishListOfMachines.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/PublishListOfMachines.java
index f1723be..13841c2 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/PublishListOfMachines.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/PublishListOfMachines.java
@@ -50,7 +50,7 @@ public class PublishListOfMachines extends AmazonActivity {
     }
 
     @Override
-    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) throws Exception {
+    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) {
         @SuppressWarnings("unchecked")
         List<String> instanceIds = (List<String>) execution.getVariable(ProcessVariables.INSTANCE_IDS);
         checkNotNull(instanceIds, "%s not found as a process variable", ProcessVariables.INSTANCE_IDS);

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/RunSpotInstances.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/RunSpotInstances.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/RunSpotInstances.java
index a798c73..8ddf3c9 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/RunSpotInstances.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/RunSpotInstances.java
@@ -30,6 +30,7 @@ import com.google.common.base.Optional;
 import com.google.common.base.Stopwatch;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.Uninterruptibles;
+import java.io.IOException;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 import org.activiti.engine.delegate.DelegateExecution;
@@ -43,34 +44,35 @@ import org.slf4j.LoggerFactory;
 public class RunSpotInstances extends RunInstances {
 
     private static final Logger LOG = LoggerFactory.getLogger(RunSpotInstances.class);
-    
+
     public RunSpotInstances(ProviderClientCache cache) {
         super(cache);
     }
 
     @Override
-    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) throws Exception {
+    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) throws IOException {
         /* before sending a new request, we check to see if we already registered
            a launch group with the process ID, if yes, we don't re-send the request */
         final String businessKey = execution.getProcessBusinessKey();
 
         /* we timeout if requests have already been sent - the activity is being retried. */
         Optional<Object> alreadySent = Optional.fromNullable(
-                execution.getVariable(ProcessVariables.SPOT_INSTANCE_REQUEST_IDS));
+            execution.getVariable(ProcessVariables.SPOT_INSTANCE_REQUEST_IDS));
 
         if (alreadySent.isPresent()) {
             DescribeSpotInstanceRequestsRequest describeRequest = new DescribeSpotInstanceRequestsRequest()
-                    .withFilters(new Filter()
-                        .withName("launch-group").withValues(businessKey)
-                        .withName("state").withValues("open", "active"));
+                .withFilters(new Filter()
+                    .withName("launch-group").withValues(businessKey)
+                    .withName("state").withValues("open", "active"));
+
             Stopwatch stopwatch = new Stopwatch().start();
             while (stopwatch.elapsedTime(TimeUnit.MINUTES) < 2) {
                 DescribeSpotInstanceRequestsResult result = client.describeSpotInstanceRequests(describeRequest);
                 List<SpotInstanceRequest> pending = result.getSpotInstanceRequests();
                 if (pending.size() > 0) {
                     LOG.info("Not resending spot instance requests {} for businessKey: {}.", pending, businessKey);
-                    execution.setVariable(ProcessVariables.SPOT_INSTANCE_REQUEST_IDS, 
-                            collectSpotInstanceRequestIds(pending));
+                    execution.setVariable(ProcessVariables.SPOT_INSTANCE_REQUEST_IDS,
+                        collectSpotInstanceRequestIds(pending));
                     return;
                 }
                 LOG.info("The describe call has not returned anything yet, waiting 20s and retrying.");
@@ -85,7 +87,7 @@ public class RunSpotInstances extends RunInstances {
 
         execution.setVariable(ProcessVariables.SPOT_INSTANCE_REQUEST_IDS, spotInstanceRequestIds);
     }
-    
+
     private List<String> collectSpotInstanceRequestIds(List<SpotInstanceRequest> requestResponses) {
         /* Make a copy as an ArrayList to force lazy collection evaluation */
         return Lists.newArrayList(Lists.transform(requestResponses,

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/SetupAdminAccess.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/SetupAdminAccess.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/SetupAdminAccess.java
index 26db218..bae3dd5 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/SetupAdminAccess.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/SetupAdminAccess.java
@@ -19,6 +19,7 @@
 package org.apache.provisionr.amazon.activities;
 
 import com.google.common.base.Charsets;
+import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.io.Resources;
 import java.io.IOException;
@@ -47,12 +48,17 @@ public class SetupAdminAccess extends PuppetActivity {
     }
 
     @Override
-    public String createPuppetScript(Pool pool, Machine machine) throws Exception {
-        return Mustache.toString(getClass(), ADMIN_ACCESS_TEMPLATE,
-            ImmutableMap.of(
-                "user", pool.getAdminAccess().getUsername(),
-                "publicKey", getRawSshKey(pool))
-        );
+    public String createPuppetScript(Pool pool, Machine machine) {
+        try {
+            return Mustache.toString(getClass(), ADMIN_ACCESS_TEMPLATE,
+                ImmutableMap.of(
+                    "user", pool.getAdminAccess().getUsername(),
+                    "publicKey", getRawSshKey(pool))
+            );
+
+        } catch (IOException e) {
+            throw Throwables.propagate(e);
+        }
     }
 
     private String getRawSshKey(Pool pool) {
@@ -60,14 +66,19 @@ public class SetupAdminAccess extends PuppetActivity {
     }
 
     @Override
-    public Map<String, String> createAdditionalFiles(Pool pool, Machine machine) throws IOException {
-        return ImmutableMap.of(
-            "/tmp/sshd_config",
-            Mustache.toString(getClass(), SSHD_CONFIG_TEMPLATE,
-                ImmutableMap.of("user", pool.getAdminAccess().getUsername())),
-            "/tmp/sudoers",
-            Resources.toString(Resources.getResource(getClass(), SUDOERS_TEMPLATE), Charsets.UTF_8)
-        );
+    public Map<String, String> createAdditionalFiles(Pool pool, Machine machine) {
+        try {
+            return ImmutableMap.of(
+                "/tmp/sshd_config",
+                Mustache.toString(getClass(), SSHD_CONFIG_TEMPLATE,
+                    ImmutableMap.of("user", pool.getAdminAccess().getUsername())),
+                "/tmp/sudoers",
+                Resources.toString(Resources.getResource(getClass(), SUDOERS_TEMPLATE), Charsets.UTF_8)
+            );
+
+        } catch (IOException e) {
+            throw Throwables.propagate(e);
+        }
 
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/TerminateInstances.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/TerminateInstances.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/TerminateInstances.java
index ca90347..89a6b71 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/TerminateInstances.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/TerminateInstances.java
@@ -18,18 +18,14 @@
 
 package org.apache.provisionr.amazon.activities;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
 import com.amazonaws.services.ec2.AmazonEC2;
 import com.amazonaws.services.ec2.model.TerminateInstancesRequest;
-import org.apache.provisionr.amazon.ProcessVariables;
-import org.apache.provisionr.amazon.core.ProviderClientCache;
-import org.apache.provisionr.api.pool.Pool;
 import com.google.common.base.Optional;
-
 import java.util.List;
-
 import org.activiti.engine.delegate.DelegateExecution;
+import org.apache.provisionr.amazon.ProcessVariables;
+import org.apache.provisionr.amazon.core.ProviderClientCache;
+import org.apache.provisionr.api.pool.Pool;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -47,8 +43,8 @@ public class TerminateInstances extends AmazonActivity {
     @Override
     public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) {
         @SuppressWarnings("unchecked")
-        Optional<List<String>> instanceIds = 
-                Optional.fromNullable((List<String>) execution.getVariable(ProcessVariables.INSTANCE_IDS));
+        Optional<List<String>> instanceIds =
+            Optional.fromNullable((List<String>) execution.getVariable(ProcessVariables.INSTANCE_IDS));
 
         LOG.info(">> Terminating instances: {}", instanceIds);
         if (instanceIds.isPresent() && instanceIds.get().size() > 0) {

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ErrorCodes.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ErrorCodes.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ErrorCodes.java
index 75f2734..edd8fe1 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ErrorCodes.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ErrorCodes.java
@@ -18,7 +18,7 @@
 
 package org.apache.provisionr.amazon.core;
 
-public class ErrorCodes {
+public final class ErrorCodes {
 
     private ErrorCodes() {
         /* singleton */

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ImageTable.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ImageTable.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ImageTable.java
index afcf101..c3f6b25 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ImageTable.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ImageTable.java
@@ -81,6 +81,7 @@ public class ImageTable {
             new Function<Map.Entry<String, String>, Table.Cell<String, String, String>>() {
                 @Override
                 public Table.Cell<String, String, String> apply(Map.Entry<String, String> entry) {
+                    checkNotNull(entry, "entry is null");
                     return Tables.immutableCell(rowKey, entry.getKey(), entry.getValue());
                 }
             });

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/KeyPairs.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/KeyPairs.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/KeyPairs.java
index 50fc7ea..b391cd5 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/KeyPairs.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/KeyPairs.java
@@ -18,7 +18,7 @@
 
 package org.apache.provisionr.amazon.core;
 
-public class KeyPairs {
+public final class KeyPairs {
 
     private KeyPairs() {
         /* singleton */

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ProviderClientCacheSupplier.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ProviderClientCacheSupplier.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ProviderClientCacheSupplier.java
index 101be25..08c0440 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ProviderClientCacheSupplier.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/ProviderClientCacheSupplier.java
@@ -53,7 +53,7 @@ public class ProviderClientCacheSupplier implements Supplier<ProviderClientCache
     private static class ProviderClientCacheLoader extends CacheLoader<Provider, AmazonEC2> {
 
         @Override
-        public AmazonEC2 load(Provider provider) throws Exception {
+        public AmazonEC2 load(Provider provider) {
             String region = Optional.fromNullable(provider.getOptions().get(ProviderOptions.REGION))
                 .or(ProviderOptions.DEFAULT_REGION);
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/SecurityGroups.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/SecurityGroups.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/SecurityGroups.java
index 01d0e0e..9cb2cd7 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/SecurityGroups.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/core/SecurityGroups.java
@@ -18,7 +18,7 @@
 
 package org.apache.provisionr.amazon.core;
 
-public class SecurityGroups {
+public final class SecurityGroups {
 
     private SecurityGroups() {
         /* singleton */

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/functions/ConvertIpPermissionToRule.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/functions/ConvertIpPermissionToRule.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/functions/ConvertIpPermissionToRule.java
index 973808f..9558dba 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/functions/ConvertIpPermissionToRule.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/functions/ConvertIpPermissionToRule.java
@@ -19,17 +19,20 @@
 package org.apache.provisionr.amazon.functions;
 
 import com.amazonaws.services.ec2.model.IpPermission;
+import com.google.common.base.Function;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.collect.Iterables.getOnlyElement;
 import org.apache.provisionr.api.network.Protocol;
 import org.apache.provisionr.api.network.Rule;
 import org.apache.provisionr.api.network.RuleBuilder;
-import com.google.common.base.Function;
-import static com.google.common.collect.Iterables.getOnlyElement;
 
 public enum ConvertIpPermissionToRule implements Function<IpPermission, Rule> {
     FUNCTION;
 
     @Override
     public Rule apply(IpPermission ipPermission) {
+        checkNotNull(ipPermission, "ipPermission is null");
+
         final RuleBuilder builder = Rule.builder().cidr(getOnlyElement(ipPermission.getIpRanges()))
             .protocol(Protocol.valueOf(ipPermission.getIpProtocol().toUpperCase()));
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/functions/ConvertRuleToIpPermission.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/functions/ConvertRuleToIpPermission.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/functions/ConvertRuleToIpPermission.java
index ea372c8..b4d9c52 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/functions/ConvertRuleToIpPermission.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/functions/ConvertRuleToIpPermission.java
@@ -19,14 +19,17 @@
 package org.apache.provisionr.amazon.functions;
 
 import com.amazonaws.services.ec2.model.IpPermission;
-import org.apache.provisionr.api.network.Rule;
 import com.google.common.base.Function;
+import static com.google.common.base.Preconditions.checkNotNull;
+import org.apache.provisionr.api.network.Rule;
 
 public enum ConvertRuleToIpPermission implements Function<Rule, IpPermission> {
     FUNCTION;
 
     @Override
     public IpPermission apply(Rule rule) {
+        checkNotNull(rule, "rule is null");
+
         IpPermission permission = new IpPermission()
             .withIpProtocol(rule.getProtocol().toString().toLowerCase())
             .withIpRanges(rule.getCidr());

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/options/ProviderOptions.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/options/ProviderOptions.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/options/ProviderOptions.java
index 3a1868e..71d2089 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/options/ProviderOptions.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/options/ProviderOptions.java
@@ -18,7 +18,7 @@
 
 package org.apache.provisionr.amazon.options;
 
-public class ProviderOptions {
+public final class ProviderOptions {
 
     private ProviderOptions() {
         /* singleton */

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/options/SoftwareOptions.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/options/SoftwareOptions.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/options/SoftwareOptions.java
index 2e29ebb..2c8a062 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/options/SoftwareOptions.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/options/SoftwareOptions.java
@@ -18,7 +18,7 @@
 
 package org.apache.provisionr.amazon.options;
 
-public class SoftwareOptions {
+public final class SoftwareOptions {
 
     private SoftwareOptions() {
         /* singleton */

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/NetworkOptions.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/NetworkOptions.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/NetworkOptions.java
index edfc9d5..a480fa3 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/NetworkOptions.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/NetworkOptions.java
@@ -22,10 +22,9 @@ package org.apache.provisionr.cloudstack;
  * {@link org.apache.provisionr.api.network.Network Network} configuration is passed via the
  * {@link org.apache.provisionr.api.pool.Pool Pool} object. This class stores names for those options.
  */
-public class NetworkOptions {
+public final class NetworkOptions {
 
     private NetworkOptions() {
-        throw new RuntimeException("Do not instantiate");
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/ProviderOptions.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/ProviderOptions.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/ProviderOptions.java
index 5002c56..9979c1a 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/ProviderOptions.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/ProviderOptions.java
@@ -21,19 +21,20 @@ package org.apache.provisionr.cloudstack;
 
 /**
  * Building a pool of VM's on CloudStack requires more knowledge of the cloud's architecture,
- * You need to know things like in what zone to build the pool, the ID's of service offerings, network offerings,
- * and more.
+ * <p/>
+ * You need to know things like in what zone to build the pool, the ID's of service
+ * offerings, network offerings, and more.
  * <p/>
  * All the information is passed via Provider Options. This class stores some of the option names.
  */
-public class ProviderOptions {
+public final class ProviderOptions {
 
     private ProviderOptions() {
-        throw new RuntimeException(ProviderOptions.class.getName() + " should not be instantiated");
     }
 
     public static final String ZONE_ID = "zoneId";
     public static final String TEMPLATE_ID = "templateId";
+
     public static final String SERVICE_OFFERING_ID = "serviceOfferingId";
     public static final String NETWORK_OFFERING_ID = "networkOfferingId";
 }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/CloudStackActivity.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/CloudStackActivity.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/CloudStackActivity.java
index 82c3d38..322d5b4 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/CloudStackActivity.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/CloudStackActivity.java
@@ -36,16 +36,12 @@ import org.jclouds.cloudstack.CloudStackAsyncClient;
 import org.jclouds.cloudstack.CloudStackClient;
 import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
 import org.jclouds.rest.RestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Base class for all activities that require access to a CloudStack based cloud.
  */
 public abstract class CloudStackActivity implements JavaDelegate {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CloudStackActivity.class);
-
     /**
      * Implement activity logic in this method. It will be called with a reference to the {@link CloudStackClient}
      */
@@ -72,8 +68,10 @@ public abstract class CloudStackActivity implements JavaDelegate {
      */
     RestContext<CloudStackClient, CloudStackAsyncClient> newCloudStackClient(Provider provider) {
         checkArgument(provider.getEndpoint().isPresent(), "please specify an endpoint for this provider");
+
         Properties overrides = new Properties();
         overrides.setProperty(Constants.PROPERTY_TRUST_ALL_CERTS, "true");
+
         return ContextBuilder.newBuilder(new CloudStackApiMetadata())
             .endpoint(provider.getEndpoint().get())
             .modules(ImmutableSet.<Module>of(new SLF4JLoggingModule()))

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/DeleteSecurityGroup.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/DeleteSecurityGroup.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/DeleteSecurityGroup.java
index a99c79c..68458dc 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/DeleteSecurityGroup.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/DeleteSecurityGroup.java
@@ -18,17 +18,13 @@
 
 package org.apache.provisionr.cloudstack.activities;
 
+import org.activiti.engine.delegate.DelegateExecution;
 import org.apache.provisionr.api.pool.Pool;
 import org.apache.provisionr.cloudstack.core.SecurityGroups;
-import org.activiti.engine.delegate.DelegateExecution;
 import org.jclouds.cloudstack.CloudStackClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class DeleteSecurityGroup extends CloudStackActivity {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DeleteSecurityGroup.class);
-
     @Override
     public void execute(CloudStackClient cloudStackClient, Pool pool, DelegateExecution execution) {
         String securityGroupName = SecurityGroups.formatNameFromBusinessKey(execution.getProcessBusinessKey());

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/RunInstances.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/RunInstances.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/RunInstances.java
index f82a907..91fff92 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/RunInstances.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/activities/RunInstances.java
@@ -18,14 +18,13 @@
 
 package org.apache.provisionr.cloudstack.activities;
 
+import org.activiti.engine.delegate.DelegateExecution;
 import org.apache.provisionr.api.pool.Pool;
 import org.apache.provisionr.cloudstack.ProviderOptions;
 import org.apache.provisionr.cloudstack.core.KeyPairs;
 import org.apache.provisionr.cloudstack.core.Networks;
 import org.apache.provisionr.cloudstack.core.VirtualMachines;
-import org.activiti.engine.delegate.DelegateExecution;
 import org.jclouds.cloudstack.CloudStackClient;
-import org.jclouds.cloudstack.domain.AsyncCreateResponse;
 import org.jclouds.cloudstack.options.DeployVirtualMachineOptions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,14 +45,14 @@ public class RunInstances extends CloudStackActivity {
 
         LOG.info("Starting instances!");
 
-        AsyncCreateResponse asyncCreateResponse = cloudStackClient.getVirtualMachineClient()
-            .deployVirtualMachineInZone(zoneId, serviceOffering, templateId,
-                DeployVirtualMachineOptions.Builder
-                    .displayName(businessKey)
-                    .group(businessKey)
-                    .networkId(Networks.formatNameFromBusinessKey(businessKey))
-                    .keyPair(keyPairName)
-                    .name(businessKey));
+        cloudStackClient.getVirtualMachineClient().deployVirtualMachineInZone(
+            zoneId, serviceOffering, templateId,
+            DeployVirtualMachineOptions.Builder
+                .displayName(businessKey)
+                .group(businessKey)
+                .networkId(Networks.formatNameFromBusinessKey(businessKey))
+                .keyPair(keyPairName)
+                .name(businessKey));
 
         VirtualMachines.waitForVMtoStart(cloudStackClient, businessKey);
     }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/CommandSupport.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/CommandSupport.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/CommandSupport.java
index 204618b..644aa9f 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/CommandSupport.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/CommandSupport.java
@@ -18,13 +18,13 @@
 
 package org.apache.provisionr.cloudstack.commands;
 
-import org.apache.provisionr.api.provider.Provider;
-import org.apache.provisionr.cloudstack.DefaultProviderConfig;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.io.Closeables;
 import java.io.PrintStream;
 import java.util.Properties;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.provisionr.api.provider.Provider;
+import org.apache.provisionr.cloudstack.DefaultProviderConfig;
 import org.jclouds.Constants;
 import org.jclouds.ContextBuilder;
 import org.jclouds.cloudstack.CloudStackApiMetadata;
@@ -40,7 +40,6 @@ import org.jclouds.rest.RestContext;
  */
 public abstract class CommandSupport extends OsgiCommandSupport {
 
-    private RestContext<CloudStackClient, CloudStackAsyncClient> context = null;
     public static final String CLOUDSTACK_SCOPE = "cloudstack";
 
     private final Provider provider;
@@ -53,9 +52,11 @@ public abstract class CommandSupport extends OsgiCommandSupport {
 
     @Override
     protected Object doExecute() throws Exception {
+        RestContext<CloudStackClient, CloudStackAsyncClient> context = null;
         try {
             context = newCloudStackContext(provider);
             return doExecuteWithContext(context.getApi(), System.out);
+
         } finally {
             Closeables.closeQuietly(context);
         }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/OfferingsCommand.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/OfferingsCommand.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/OfferingsCommand.java
index 0445002..87200a8 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/OfferingsCommand.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/OfferingsCommand.java
@@ -18,10 +18,10 @@
 
 package org.apache.provisionr.cloudstack.commands;
 
-import org.apache.provisionr.cloudstack.DefaultProviderConfig;
 import java.io.PrintStream;
 import org.apache.felix.gogo.commands.Command;
 import org.apache.felix.gogo.commands.Option;
+import org.apache.provisionr.cloudstack.DefaultProviderConfig;
 import org.jclouds.cloudstack.CloudStackClient;
 import org.jclouds.cloudstack.domain.DiskOffering;
 import org.jclouds.cloudstack.domain.NetworkOffering;
@@ -47,9 +47,10 @@ public class OfferingsCommand extends CommandSupport {
     }
 
     @Override
-    public Object doExecuteWithContext(CloudStackClient client, PrintStream out) throws Exception {
+    public Object doExecuteWithContext(CloudStackClient client, PrintStream out) {
         if (isDiskOfferingListed() || isServiceOfferingListed() || isNetworkOfferingListed()) {
             out.printf("CloudStack Offerings for provider %s\n", getProvider().getId());
+
             listServiceOfferingsIfSpecified(client, out);
             listNetworkOfferingsIfSpecified(client, out);
             listDiskOfferingsIfSpecified(client, out);

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/TemplatesCommand.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/TemplatesCommand.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/TemplatesCommand.java
index 9568700..e33d47b 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/TemplatesCommand.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/TemplatesCommand.java
@@ -18,9 +18,9 @@
 
 package org.apache.provisionr.cloudstack.commands;
 
-import org.apache.provisionr.cloudstack.DefaultProviderConfig;
 import java.io.PrintStream;
 import org.apache.felix.gogo.commands.Command;
+import org.apache.provisionr.cloudstack.DefaultProviderConfig;
 import org.jclouds.cloudstack.CloudStackClient;
 import org.jclouds.cloudstack.domain.Template;
 
@@ -35,11 +35,11 @@ public class TemplatesCommand extends CommandSupport {
     }
 
     @Override
-    public Object doExecuteWithContext(CloudStackClient client, PrintStream out) throws Exception {
+    public Object doExecuteWithContext(CloudStackClient client, PrintStream out) {
         out.printf("CloudStack templates for provider %s\n", getProvider().getId());
 
         for (Template template : client.getTemplateClient().listTemplates()) {
-            out.printf("---\n%s\n", template.toString());
+            out.printf("---%n%s%n", template.toString());
         }
         out.println();
         return null;

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/ZonesCommand.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/ZonesCommand.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/ZonesCommand.java
index b078216..8c31481 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/ZonesCommand.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/commands/ZonesCommand.java
@@ -18,9 +18,9 @@
 
 package org.apache.provisionr.cloudstack.commands;
 
-import org.apache.provisionr.cloudstack.DefaultProviderConfig;
 import java.io.PrintStream;
 import org.apache.felix.gogo.commands.Command;
+import org.apache.provisionr.cloudstack.DefaultProviderConfig;
 import org.jclouds.cloudstack.CloudStackClient;
 import org.jclouds.cloudstack.domain.Zone;
 
@@ -35,10 +35,10 @@ public class ZonesCommand extends CommandSupport {
     }
 
     @Override
-    public Object doExecuteWithContext(CloudStackClient client, PrintStream out) throws Exception {
-        out.printf("CloudStack zones for provider %s\n", getProvider().getId());
+    public Object doExecuteWithContext(CloudStackClient client, PrintStream out) {
+        out.printf("CloudStack zones for provider %s%n", getProvider().getId());
         for (Zone zone : client.getZoneClient().listZones()) {
-            out.printf("---\n%s\n", zone.toString());
+            out.printf("---%n%s%n", zone.toString());
         }
         out.println();
         return null;

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/ConvertIngressRuleToRule.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/ConvertIngressRuleToRule.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/ConvertIngressRuleToRule.java
index b7fad3f..cb8ab1d 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/ConvertIngressRuleToRule.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/ConvertIngressRuleToRule.java
@@ -18,29 +18,32 @@
 
 package org.apache.provisionr.cloudstack.core;
 
+import com.google.common.base.Function;
+import static com.google.common.base.Preconditions.checkNotNull;
 import org.apache.provisionr.api.network.Protocol;
 import org.apache.provisionr.api.network.Rule;
-import com.google.common.base.Function;
 import org.jclouds.cloudstack.domain.IngressRule;
 
 public enum ConvertIngressRuleToRule implements Function<IngressRule, Rule> {
     FUNCTION;
 
     @Override
-    public Rule apply(IngressRule input) {
+    public Rule apply(IngressRule ingressRule) {
+        checkNotNull(ingressRule, "ingressRule is null");
+
         Rule rule;
-        if (input.getProtocol().equalsIgnoreCase("icmp")) {
+        if (ingressRule.getProtocol().equalsIgnoreCase("icmp")) {
             rule = Rule.builder()
                 .anySource()
-                .protocol(Protocol.valueOf(input.getProtocol().toUpperCase()))
-                .cidr(input.getCIDR())
+                .protocol(Protocol.valueOf(ingressRule.getProtocol().toUpperCase()))
+                .cidr(ingressRule.getCIDR())
                 .createRule();
         } else {
             rule = Rule.builder()
                 .anySource()
-                .protocol(Protocol.valueOf(input.getProtocol().toUpperCase()))
-                .ports(input.getStartPort(), input.getEndPort())
-                .cidr(input.getCIDR())
+                .protocol(Protocol.valueOf(ingressRule.getProtocol().toUpperCase()))
+                .ports(ingressRule.getStartPort(), ingressRule.getEndPort())
+                .cidr(ingressRule.getCIDR())
                 .createRule();
         }
         return rule;

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/KeyPairs.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/KeyPairs.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/KeyPairs.java
index f3745db..403adbf 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/KeyPairs.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/KeyPairs.java
@@ -18,7 +18,7 @@
 
 package org.apache.provisionr.cloudstack.core;
 
-public class KeyPairs {
+public final class KeyPairs {
 
     private KeyPairs() {
         // singleton

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/Networks.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/Networks.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/Networks.java
index 8d31b8f..ea4587a 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/Networks.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/Networks.java
@@ -26,7 +26,7 @@ import java.util.Set;
 import org.jclouds.cloudstack.CloudStackClient;
 import org.jclouds.cloudstack.domain.Network;
 
-public class Networks {
+public final class Networks {
 
     private Networks() {
     }
@@ -42,12 +42,14 @@ public class Networks {
      * @throws IllegalArgumentException if more networks with the same name are found
      */
     public static Network getByName(CloudStackClient client, final String networkName) {
-        Set<Network> networks = Sets.filter(client.getNetworkClient().listNetworks(), new Predicate<Network>() {
-            @Override
-            public boolean apply(Network input) {
-                return input.getName().equals(networkName);
-            }
-        });
+        Set<Network> networks = Sets.filter(client.getNetworkClient().listNetworks(),
+            new Predicate<Network>() {
+                @Override
+                public boolean apply(Network network) {
+                    return network != null && network.getName().equals(networkName);
+                }
+            });
+
         return Iterables.getOnlyElement(networks);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/SecurityGroups.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/SecurityGroups.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/SecurityGroups.java
index 6acaa3c..cd41591 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/SecurityGroups.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/SecurityGroups.java
@@ -18,14 +18,14 @@
 
 package org.apache.provisionr.cloudstack.core;
 
-import org.apache.provisionr.api.network.Network;
-import org.apache.provisionr.api.network.Protocol;
-import org.apache.provisionr.api.network.Rule;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import java.util.NoSuchElementException;
 import java.util.Set;
+import org.apache.provisionr.api.network.Network;
+import org.apache.provisionr.api.network.Protocol;
+import org.apache.provisionr.api.network.Rule;
 import org.jclouds.cloudstack.CloudStackClient;
 import org.jclouds.cloudstack.domain.IngressRule;
 import org.jclouds.cloudstack.domain.SecurityGroup;
@@ -34,7 +34,7 @@ import static org.jclouds.cloudstack.options.ListSecurityGroupsOptions.Builder.n
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class SecurityGroups {
+public final class SecurityGroups {
 
     private static final Logger LOG = LoggerFactory.getLogger(SecurityGroup.class);
     public static final int DEFAULT_ICMP_CODE = 0;

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/VirtualMachines.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/VirtualMachines.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/VirtualMachines.java
index 4211d4e..e31ca68 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/VirtualMachines.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/VirtualMachines.java
@@ -51,7 +51,7 @@ public class VirtualMachines {
             .listVirtualMachines(ListVirtualMachinesOptions.Builder.name(vmName)), new Predicate<VirtualMachine>() {
             @Override
             public boolean apply(VirtualMachine input) {
-                return vmName.equals(input.getDisplayName());
+                return input != null && vmName.equals(input.getDisplayName());
             }
         });
 
@@ -101,7 +101,7 @@ public class VirtualMachines {
             .listVirtualMachines(ListVirtualMachinesOptions.Builder.name(vmName)), new Predicate<VirtualMachine>() {
             @Override
             public boolean apply(VirtualMachine input) {
-                return vmName.equals(input.getDisplayName());
+                return input != null && vmName.equals(input.getDisplayName());
             }
         });
         return Iterables.getOnlyElement(machines);

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/Zones.java
----------------------------------------------------------------------
diff --git a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/Zones.java b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/Zones.java
index 069b9d8..bc93071 100644
--- a/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/Zones.java
+++ b/providers/cloudstack/src/main/java/org/apache/provisionr/cloudstack/core/Zones.java
@@ -25,7 +25,7 @@ import java.util.Set;
 import org.jclouds.cloudstack.CloudStackClient;
 import org.jclouds.cloudstack.domain.Zone;
 
-public class Zones {
+public final class Zones {
 
     private Zones() {
     }
@@ -34,7 +34,7 @@ public class Zones {
         Set<Zone> ourZone = Sets.filter(cloudStackClient.getZoneClient().listZones(), new Predicate<Zone>() {
             @Override
             public boolean apply(Zone input) {
-                return input.getName().equals(zoneName);
+                return input != null && input.getName().equals(zoneName);
             }
         });
         return Iterables.getOnlyElement(ourZone).isSecurityGroupsEnabled();

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/test-support/src/main/java/org/apache/provisionr/test/Generics.java
----------------------------------------------------------------------
diff --git a/test-support/src/main/java/org/apache/provisionr/test/Generics.java b/test-support/src/main/java/org/apache/provisionr/test/Generics.java
index 7a29eda..430232e 100644
--- a/test-support/src/main/java/org/apache/provisionr/test/Generics.java
+++ b/test-support/src/main/java/org/apache/provisionr/test/Generics.java
@@ -18,18 +18,17 @@
 
 package org.apache.provisionr.test;
 
+import static com.google.common.base.Preconditions.checkNotNull;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
 /**
  * Helper methods for class type parameters.
  *
  * @see <a href="https://github.com/codahale/dropwizard/blob/master/dropwizard-core/src/main/java/com/yammer/dropwizard/util/Generics.java">Generics in Codahale Dropwizard</a>
  * @see <a href="http://gafter.blogspot.com/2006/12/super-type-tokens.html">Super Type Tokens</a>
  */
-public class Generics {
+public final class Generics {
     private Generics() { /* singleton */ }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/test-support/src/main/java/org/apache/provisionr/test/KarafTests.java
----------------------------------------------------------------------
diff --git a/test-support/src/main/java/org/apache/provisionr/test/KarafTests.java b/test-support/src/main/java/org/apache/provisionr/test/KarafTests.java
index fce4faf..d1a0ccc 100644
--- a/test-support/src/main/java/org/apache/provisionr/test/KarafTests.java
+++ b/test-support/src/main/java/org/apache/provisionr/test/KarafTests.java
@@ -36,7 +36,7 @@ import org.ops4j.pax.exam.options.extra.FeaturesScannerProvisionOption;
 /**
  * Helper methods for Karaf integration tests
  */
-public class KarafTests {
+public final class KarafTests {
 
     public static final String KARAF_GROUP_ID = "org.apache.karaf";
     public static final String KARAF_ARTIFACT_ID = "apache-karaf";

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/test-support/src/main/java/org/apache/provisionr/test/ProcessVariablesCollector.java
----------------------------------------------------------------------
diff --git a/test-support/src/main/java/org/apache/provisionr/test/ProcessVariablesCollector.java b/test-support/src/main/java/org/apache/provisionr/test/ProcessVariablesCollector.java
index 607a055..52bb886 100644
--- a/test-support/src/main/java/org/apache/provisionr/test/ProcessVariablesCollector.java
+++ b/test-support/src/main/java/org/apache/provisionr/test/ProcessVariablesCollector.java
@@ -44,7 +44,7 @@ public class ProcessVariablesCollector implements Answer<Void> {
     }
 
     @Override
-    public Void answer(InvocationOnMock invocation) throws Throwable {
+    public Void answer(InvocationOnMock invocation) {
         Object[] arguments = invocation.getArguments();
         LOG.info("Got method call {} with arguments {}",
             invocation.getMethod().getName(), Arrays.toString(arguments));

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/test-support/src/main/java/org/apache/provisionr/test/TestConstants.java
----------------------------------------------------------------------
diff --git a/test-support/src/main/java/org/apache/provisionr/test/TestConstants.java b/test-support/src/main/java/org/apache/provisionr/test/TestConstants.java
index cd20d8a..245a374 100644
--- a/test-support/src/main/java/org/apache/provisionr/test/TestConstants.java
+++ b/test-support/src/main/java/org/apache/provisionr/test/TestConstants.java
@@ -23,7 +23,10 @@ import com.google.common.base.Throwables;
 import com.google.common.io.Resources;
 import java.io.IOException;
 
-public class TestConstants {
+public final class TestConstants {
+
+    private TestConstants() {
+    }
 
     static final String PUBLIC_KEY_FILE_NAME = "id_rsa_test.pub";
     static final String PRIVATE_KEY_FILE_NAME = "id_rsa_test";


[2/2] git commit: PROVISIONR-41. Fix Sonar violations (part 1)

Posted by as...@apache.org.
PROVISIONR-41. Fix Sonar violations (part 1)


Project: http://git-wip-us.apache.org/repos/asf/incubator-provisionr/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-provisionr/commit/e896d1ca
Tree: http://git-wip-us.apache.org/repos/asf/incubator-provisionr/tree/e896d1ca
Diff: http://git-wip-us.apache.org/repos/asf/incubator-provisionr/diff/e896d1ca

Branch: refs/heads/master
Commit: e896d1ca2432657911842524e38660596e1faaa4
Parents: 416958b
Author: Andrei Savu <as...@apache.org>
Authored: Wed Jul 3 17:54:48 2013 +0300
Committer: Andrei Savu <as...@apache.org>
Committed: Wed Jul 3 17:54:48 2013 +0300

----------------------------------------------------------------------
 .../karaf/commands/AddGroupCommand.java         |  2 +-
 .../activiti/karaf/commands/AddUserCommand.java |  2 +-
 .../commands/CleanHistoryActivitiCommand.java   | 14 +++----
 .../karaf/commands/DeleteGroupCommand.java      |  2 +-
 .../karaf/commands/DeleteUserCommand.java       |  2 +-
 .../karaf/commands/InfoActivitiCommand.java     | 18 +++++----
 .../karaf/commands/KillActivitiCommand.java     |  6 +--
 .../karaf/commands/ListGroupsCommand.java       |  2 +-
 .../karaf/commands/ListUsersCommand.java        |  2 +-
 .../karaf/commands/SignalActivitiCommand.java   |  8 ++--
 .../karaf/commands/StartActivitiCommand.java    |  2 +-
 .../handlers/AbstractActivitiPrintHandler.java  |  1 -
 .../handlers/DefaultActivitiPrintHandler.java   |  8 ++--
 .../activiti/karaf/commands/util/Commands.java  |  5 +--
 .../provisionr/api/network/RuleBuilder.java     |  4 +-
 .../org/apache/provisionr/api/pool/Machine.java |  6 ++-
 .../org/apache/provisionr/api/pool/Pool.java    | 11 ++++--
 .../apache/provisionr/core/CoreConstants.java   |  2 +-
 .../provisionr/core/CoreProcessVariables.java   |  3 +-
 .../org/apache/provisionr/core/CoreSignals.java |  2 +-
 .../org/apache/provisionr/core/Mustache.java    | 14 +++++--
 .../org/apache/provisionr/core/PoolStatus.java  | 10 ++---
 .../java/org/apache/provisionr/core/Ssh.java    | 10 ++---
 .../core/activities/CheckProcessesEnded.java    | 19 +++++-----
 .../core/activities/DownloadFiles.java          | 21 +++++++----
 .../core/activities/InstallPackages.java        | 20 ++++++----
 .../core/activities/InstallRepositories.java    | 25 ++++++++-----
 .../core/activities/IsMachinePortOpen.java      |  4 +-
 .../activities/KillMachineSetUpProcesses.java   | 32 ++++++++--------
 .../core/activities/PuppetActivity.java         | 14 +++----
 .../activities/SpawnProcessForEachMachine.java  | 10 ++---
 .../provisionr/core/logging/StreamLogger.java   | 14 ++++++-
 .../core/templates/PoolTemplateInstaller.java   |  8 ++--
 .../core/templates/xml/FileEntry.java           |  4 ++
 .../core/templates/xml/XmlTemplate.java         | 20 ++++++++--
 .../apache/provisionr/rundeck/Attribute.java    |  4 ++
 .../org/apache/provisionr/rundeck/Project.java  |  3 ++
 .../provisionr/rundeck/RundeckServlet.java      |  7 +---
 .../provisionr/commands/CreateImageCommand.java |  5 ++-
 .../provisionr/commands/CreatePoolCommand.java  |  3 +-
 .../provisionr/commands/DestroyPoolCommand.java |  2 +-
 .../provisionr/commands/ListPoolsCommand.java   |  2 +-
 .../commands/ListServicesCommand.java           |  4 +-
 .../commands/ListTemplatesCommand.java          |  6 +--
 .../predicates/ProvisionrPredicates.java        |  6 +--
 .../provisionr/amazon/ProcessVariables.java     | 22 +++++------
 .../activities/AllInstancesMatchPredicate.java  | 15 +++-----
 .../AllSpotRequestsMatchPredicate.java          | 25 ++++++-------
 .../amazon/activities/CancelSpotRequests.java   | 15 +++-----
 .../activities/CheckAllRequestsAreActive.java   |  2 +-
 .../amazon/activities/DumpConsoleOutput.java    |  9 +++--
 .../GetInstanceIdsFromSpotRequests.java         |  4 +-
 .../activities/PublishListOfMachines.java       |  2 +-
 .../amazon/activities/RunSpotInstances.java     | 20 +++++-----
 .../amazon/activities/SetupAdminAccess.java     | 39 +++++++++++++-------
 .../amazon/activities/TerminateInstances.java   | 14 +++----
 .../provisionr/amazon/core/ErrorCodes.java      |  2 +-
 .../provisionr/amazon/core/ImageTable.java      |  1 +
 .../apache/provisionr/amazon/core/KeyPairs.java |  2 +-
 .../core/ProviderClientCacheSupplier.java       |  2 +-
 .../provisionr/amazon/core/SecurityGroups.java  |  2 +-
 .../functions/ConvertIpPermissionToRule.java    |  7 +++-
 .../functions/ConvertRuleToIpPermission.java    |  5 ++-
 .../amazon/options/ProviderOptions.java         |  2 +-
 .../amazon/options/SoftwareOptions.java         |  2 +-
 .../provisionr/cloudstack/NetworkOptions.java   |  3 +-
 .../provisionr/cloudstack/ProviderOptions.java  |  9 +++--
 .../activities/CloudStackActivity.java          |  6 +--
 .../activities/DeleteSecurityGroup.java         |  6 +--
 .../cloudstack/activities/RunInstances.java     | 19 +++++-----
 .../cloudstack/commands/CommandSupport.java     |  7 ++--
 .../cloudstack/commands/OfferingsCommand.java   |  5 ++-
 .../cloudstack/commands/TemplatesCommand.java   |  6 +--
 .../cloudstack/commands/ZonesCommand.java       |  8 ++--
 .../core/ConvertIngressRuleToRule.java          | 19 ++++++----
 .../provisionr/cloudstack/core/KeyPairs.java    |  2 +-
 .../provisionr/cloudstack/core/Networks.java    | 16 ++++----
 .../cloudstack/core/SecurityGroups.java         |  8 ++--
 .../cloudstack/core/VirtualMachines.java        |  4 +-
 .../provisionr/cloudstack/core/Zones.java       |  4 +-
 .../org/apache/provisionr/test/Generics.java    |  5 +--
 .../org/apache/provisionr/test/KarafTests.java  |  2 +-
 .../test/ProcessVariablesCollector.java         |  2 +-
 .../apache/provisionr/test/TestConstants.java   |  5 ++-
 84 files changed, 388 insertions(+), 309 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/AddGroupCommand.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/AddGroupCommand.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/AddGroupCommand.java
index dc535d1..5d0696e 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/AddGroupCommand.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/AddGroupCommand.java
@@ -38,7 +38,7 @@ public class AddGroupCommand extends ActivitiCommand {
     private String type = "security-role";
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         IdentityService identityService = getProcessEngine().getIdentityService();
 
         Group group = identityService.newGroup(id);

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/AddUserCommand.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/AddUserCommand.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/AddUserCommand.java
index 3236e2e..98b1069 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/AddUserCommand.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/AddUserCommand.java
@@ -39,7 +39,7 @@ public class AddUserCommand extends ActivitiCommand {
     private String email = "";
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         if (getProcessEngine() == null) {
             throw new NullPointerException("Please configure a processEngine instance for this command");
         }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/CleanHistoryActivitiCommand.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/CleanHistoryActivitiCommand.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/CleanHistoryActivitiCommand.java
index 59bcfc6..fbb2a73 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/CleanHistoryActivitiCommand.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/CleanHistoryActivitiCommand.java
@@ -41,7 +41,7 @@ public class CleanHistoryActivitiCommand extends ActivitiCommand {
     private String[] definitionIDs;
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         ProcessEngine engine = this.getProcessEngine();
         if (engine == null) {
             out().println("Process Engine NOT Found!");
@@ -49,7 +49,7 @@ public class CleanHistoryActivitiCommand extends ActivitiCommand {
         }
         HistoryService historyService = engine.getHistoryService();
 
-        // order of priority if instnaceIDs or definitionIDs and all on the list
+        // order of priority if instanceIDs or definitionIDs and all on the list
         // process instnaceID and exist or process definitionIDs and exit or process all 
         // TODO figure out how to add mutually exclusive options - instanceIDs | definitions | all
 
@@ -86,7 +86,7 @@ public class CleanHistoryActivitiCommand extends ActivitiCommand {
         for (HistoricProcessInstance hpi : hpiList) {
             String processId = hpi.getId();
             hs.deleteHistoricProcessInstance(hpi.getId());
-            out().printf("History removed for process instance %s \n", processId);
+            out().printf("History removed for process instance %s %n", processId);
         }
     }
 
@@ -97,9 +97,9 @@ public class CleanHistoryActivitiCommand extends ActivitiCommand {
                 .processInstanceId(instanceId).singleResult();
             if (hpi != null) {
                 hs.deleteHistoricProcessInstance(hpi.getId());
-                out().printf("History removed for process instance %s \n", hpi.getId());
+                out().printf("History removed for process instance %s %n", hpi.getId());
             } else {
-                out().printf("No History found for process instance %s \n", instanceId);
+                out().printf("No History found for process instance %s %n", instanceId);
             }
         }
     }
@@ -111,13 +111,13 @@ public class CleanHistoryActivitiCommand extends ActivitiCommand {
                 .processDefinitionId(definitionId)
                 .orderByProcessDefinitionId().asc().list();
             if (hpiList == null || hpiList.size() == 0) {
-                out().printf("No History found for process definition %s \n", definitionId);
+                out().printf("No History found for process definition %s %n", definitionId);
                 break;
             }
             for (HistoricProcessInstance hpi : hpiList) {
                 String processId = hpi.getId();
                 hs.deleteHistoricProcessInstance(hpi.getId());
-                out().printf("History removed for process instance %s with definition %s\n", processId,
+                out().printf("History removed for process instance %s with definition %s%n", processId,
                     definitionId);
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/DeleteGroupCommand.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/DeleteGroupCommand.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/DeleteGroupCommand.java
index 48b65b0..d08f70e 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/DeleteGroupCommand.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/DeleteGroupCommand.java
@@ -28,7 +28,7 @@ public class DeleteGroupCommand extends ActivitiCommand {
     private String id;
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         getProcessEngine().getIdentityService().deleteGroup(id);
         return null;
     }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/DeleteUserCommand.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/DeleteUserCommand.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/DeleteUserCommand.java
index e9609b0..bc47fbb 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/DeleteUserCommand.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/DeleteUserCommand.java
@@ -29,7 +29,7 @@ public class DeleteUserCommand extends ActivitiCommand {
     private String id;
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         if (getProcessEngine() == null) {
             throw new NullPointerException("Please configure a processEngine instance for this command");
         }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/InfoActivitiCommand.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/InfoActivitiCommand.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/InfoActivitiCommand.java
index 3a0b357..9e05dd9 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/InfoActivitiCommand.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/InfoActivitiCommand.java
@@ -234,15 +234,17 @@ public class InfoActivitiCommand extends ActivitiCommand {
         out().println("======== Process Instance Details");
         printProcessInstanceInfo(hpi);
 
-        List<HistoricActivityInstance> actInstList = hs.createHistoricActivityInstanceQuery()
-            .processInstanceId(hpi.getId()).orderByHistoricActivityInstanceStartTime().asc().list();
-        if (actInstList != null && actInstList.size() > 0) {
-            out().println("======== Activity Execution Details");
-            for (HistoricActivityInstance actInst : actInstList) {
-                printActivityInstanceInfo(actInst);
+        if (hpi != null) {
+            List<HistoricActivityInstance> actInstList = hs.createHistoricActivityInstanceQuery()
+                .processInstanceId(hpi.getId()).orderByHistoricActivityInstanceStartTime().asc().list();
+            if (actInstList != null && actInstList.size() > 0) {
+                out().println("======== Activity Execution Details");
+                for (HistoricActivityInstance actInst : actInstList) {
+                    printActivityInstanceInfo(actInst);
+                }
+            } else {
+                LOG.info("No Activity execution details");
             }
-        } else {
-            LOG.info("No Activity execution details");
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/KillActivitiCommand.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/KillActivitiCommand.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/KillActivitiCommand.java
index 9ad47c1..60403f9 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/KillActivitiCommand.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/KillActivitiCommand.java
@@ -37,7 +37,7 @@ public class KillActivitiCommand extends ActivitiCommand {
     private boolean killAll;
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         ProcessEngine processEngine = this.getProcessEngine();
         if (processEngine == null) {
             out().println("Process Engine NOT Found!");
@@ -49,7 +49,7 @@ public class KillActivitiCommand extends ActivitiCommand {
         if (this.instanceIDs != null && this.instanceIDs.length > 0) {
             for (String instanceID : instanceIDs) {
                 runtimeService.deleteProcessInstance(instanceID, "Forcefully terminating the instance");
-                out().printf("Process instance %s terminated\n", instanceID);
+                out().printf("Process instance %s terminated%n", instanceID);
             }
             return null;
         }
@@ -63,7 +63,7 @@ public class KillActivitiCommand extends ActivitiCommand {
             for (ProcessInstance pi : piList) {
                 String instanceID = pi.getProcessInstanceId();
                 runtimeService.deleteProcessInstance(instanceID, "Forcefully terminating the instance");
-                out().printf("Process instance %s terminated\n", instanceID);
+                out().printf("Process instance %s terminated%n", instanceID);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/ListGroupsCommand.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/ListGroupsCommand.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/ListGroupsCommand.java
index fe2a730..cca4c4b 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/ListGroupsCommand.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/ListGroupsCommand.java
@@ -26,7 +26,7 @@ import org.apache.felix.gogo.commands.Command;
 public class ListGroupsCommand extends ActivitiCommand {
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         List<Group> groups = getProcessEngine().getIdentityService()
             .createGroupQuery().orderByGroupId().asc().list();
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/ListUsersCommand.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/ListUsersCommand.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/ListUsersCommand.java
index 62afaff..a44ba25 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/ListUsersCommand.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/ListUsersCommand.java
@@ -26,7 +26,7 @@ import org.apache.felix.gogo.commands.Command;
 public class ListUsersCommand extends ActivitiCommand {
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         List<User> users = getProcessEngine().getIdentityService()
             .createUserQuery().orderByUserId().asc().list();
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/SignalActivitiCommand.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/SignalActivitiCommand.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/SignalActivitiCommand.java
index 4993c74..0d15044 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/SignalActivitiCommand.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/SignalActivitiCommand.java
@@ -43,7 +43,7 @@ public class SignalActivitiCommand extends ActivitiCommand {
     private String[] activities;
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         ProcessEngine engine = this.getProcessEngine();
         if (engine == null) {
             out().println("Process Engine NOT Found!");
@@ -77,10 +77,10 @@ public class SignalActivitiCommand extends ActivitiCommand {
             if (!exec.isEnded()) {
                 rt.signal(exec.getId());
             } else {
-                out().printf("Execution %s already ended \n" + exec.getId());
+                out().printf("Execution %s already ended %n" + exec.getId());
             }
         } catch (Exception ex) {
-            out().printf("Exception:%s in signaling the execution %s \n", ex.getMessage(), exec.getId());
+            out().printf("Exception:%s in signaling the execution %s %n", ex.getMessage(), exec.getId());
         }
     }
 
@@ -96,7 +96,7 @@ public class SignalActivitiCommand extends ActivitiCommand {
             }
         } else {
             for (String activity : activities) {
-                out().printf("Signaling activity %s in process instance %s \n", activity, pi);
+                out().printf("Signaling activity %s in process instance %s %n", activity, pi);
                 List<Execution> executions = rt.createExecutionQuery()
                     .processInstanceId(pi)
                     .activityId(activity)

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/StartActivitiCommand.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/StartActivitiCommand.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/StartActivitiCommand.java
index 90d4114..ac47f31 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/StartActivitiCommand.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/StartActivitiCommand.java
@@ -33,7 +33,7 @@ public class StartActivitiCommand extends ActivitiCommand {
     private String definitionID;
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         ProcessEngine pe = this.getProcessEngine();
         if (pe == null) {
             out().println("Process Engine NOT Found!");

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/handlers/AbstractActivitiPrintHandler.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/handlers/AbstractActivitiPrintHandler.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/handlers/AbstractActivitiPrintHandler.java
index be0cb85..e22146a 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/handlers/AbstractActivitiPrintHandler.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/handlers/AbstractActivitiPrintHandler.java
@@ -81,7 +81,6 @@ public abstract class AbstractActivitiPrintHandler implements ActivitiPrintHandl
     protected void printVariable(PrintWriter out, HistoricVariableUpdate var) {
 
         LinkedHashMap<String, String> nvMap = new LinkedHashMap<String, String>();
-        // nvMap.put("Variable Type", var.getVariableTypeName());
         if (this.isVerbose()) {
             nvMap.put("Variable ID", var.getId());
             nvMap.put("Revision", "" + var.getRevision());

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/handlers/DefaultActivitiPrintHandler.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/handlers/DefaultActivitiPrintHandler.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/handlers/DefaultActivitiPrintHandler.java
index 67a1f5d..7caa83c 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/handlers/DefaultActivitiPrintHandler.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/handlers/DefaultActivitiPrintHandler.java
@@ -16,14 +16,13 @@
 
 package org.apache.provisionr.activiti.karaf.commands.handlers;
 
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
 import java.io.PrintWriter;
 import java.io.StringReader;
 import java.lang.reflect.Modifier;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
 import org.apache.provisionr.activiti.karaf.commands.util.Commands;
 
 /**
@@ -47,7 +46,8 @@ public class DefaultActivitiPrintHandler extends AbstractActivitiPrintHandler {
         try {
             jsonText = gson.toJson(varValue);
         } catch (Exception ex) {
-            jsonText = "{\n  " + varValue + "\n}"; // use default toString object            
+            // use default toString object
+            jsonText = String.format("{%n%s%n}", varValue);
             LOG.log(Level.SEVERE, "Serializing Activiti Variable. " + ex.getMessage(), ex);
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/util/Commands.java
----------------------------------------------------------------------
diff --git a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/util/Commands.java b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/util/Commands.java
index f3edd30..c1f018d 100644
--- a/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/util/Commands.java
+++ b/activiti/commands/src/main/java/org/apache/provisionr/activiti/karaf/commands/util/Commands.java
@@ -37,9 +37,8 @@ public class Commands {
 
     public void printNameValues(PrintWriter out, Map<String, String> nvMap) {
         String fmt = "  %-16.16s %-20.60s\n";
-        for (String key : nvMap.keySet()) {
-            String value = nvMap.get(key);
-            out.printf(fmt, key + ":", value);
+        for (Map.Entry<String, String> entry : nvMap.entrySet()) {
+            out.printf(fmt, entry.getKey() + ":", entry.getValue());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/api/src/main/java/org/apache/provisionr/api/network/RuleBuilder.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/provisionr/api/network/RuleBuilder.java b/api/src/main/java/org/apache/provisionr/api/network/RuleBuilder.java
index 06de459..c610f09 100644
--- a/api/src/main/java/org/apache/provisionr/api/network/RuleBuilder.java
+++ b/api/src/main/java/org/apache/provisionr/api/network/RuleBuilder.java
@@ -22,6 +22,7 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import com.google.common.collect.Range;
 import com.google.common.collect.Ranges;
+import org.apache.provisionr.api.pool.Machine;
 
 public class RuleBuilder {
 
@@ -44,7 +45,8 @@ public class RuleBuilder {
         checkArgument(ports.hasLowerBound(), "ports should have a closed lower bound ");
 
         checkArgument(ports.lowerEndpoint() > 0, "ports should be a positive range");
-        checkArgument(ports.upperEndpoint() < 65535, "ports upper bound should less than 65535");
+        checkArgument(ports.upperEndpoint() < Machine.MAX_PORT_NUMBER,
+            "ports upper bound should less than 65535");
 
         this.ports = checkNotNull(ports, "ports is null");
         return this;

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/api/src/main/java/org/apache/provisionr/api/pool/Machine.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/provisionr/api/pool/Machine.java b/api/src/main/java/org/apache/provisionr/api/pool/Machine.java
index a8febf8..7d30d31 100644
--- a/api/src/main/java/org/apache/provisionr/api/pool/Machine.java
+++ b/api/src/main/java/org/apache/provisionr/api/pool/Machine.java
@@ -18,11 +18,11 @@
 
 package org.apache.provisionr.api.pool;
 
-import org.apache.provisionr.api.util.WithOptions;
 import com.google.common.base.Objects;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import java.util.Map;
+import org.apache.provisionr.api.util.WithOptions;
 
 /**
  * Details about a running machine from a pool
@@ -31,6 +31,8 @@ import java.util.Map;
  */
 public class Machine extends WithOptions {
 
+    public static final int MAX_PORT_NUMBER = 65535;
+
     public static MachineBuilder builder() {
         return new MachineBuilder();
     }
@@ -76,7 +78,7 @@ public class Machine extends WithOptions {
         this.privateDnsName = checkNotNull(privateDnsName, "privateDnsName is null");
         this.privateIp = checkNotNull(privateIp, "privateIp is null");
 
-        checkArgument(sshPort > 0 && sshPort < 65535, "invalid port number for ssh");
+        checkArgument(sshPort > 0 && sshPort <= MAX_PORT_NUMBER, "invalid port number for ssh");
         this.sshPort = sshPort;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/api/src/main/java/org/apache/provisionr/api/pool/Pool.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/provisionr/api/pool/Pool.java b/api/src/main/java/org/apache/provisionr/api/pool/Pool.java
index 37f23f4..777a177 100644
--- a/api/src/main/java/org/apache/provisionr/api/pool/Pool.java
+++ b/api/src/main/java/org/apache/provisionr/api/pool/Pool.java
@@ -18,16 +18,17 @@
 
 package org.apache.provisionr.api.pool;
 
+import com.google.common.base.Objects;
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Map;
+import javax.annotation.Generated;
 import org.apache.provisionr.api.access.AdminAccess;
 import org.apache.provisionr.api.hardware.Hardware;
 import org.apache.provisionr.api.network.Network;
 import org.apache.provisionr.api.provider.Provider;
 import org.apache.provisionr.api.software.Software;
 import org.apache.provisionr.api.util.WithOptions;
-import com.google.common.base.Objects;
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.Map;
 
 public class Pool extends WithOptions {
 
@@ -115,6 +116,7 @@ public class Pool extends WithOptions {
     }
 
     @Override
+    @Generated("intellij")
     public boolean equals(Object obj) {
         if (obj == null) {
             return false;
@@ -132,6 +134,7 @@ public class Pool extends WithOptions {
     }
 
     @Override
+    @Generated("intellij")
     public String toString() {
         return "Pool{" +
             "provider=" + provider +

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/CoreConstants.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/CoreConstants.java b/core/src/main/java/org/apache/provisionr/core/CoreConstants.java
index 175bcc2..8491680 100644
--- a/core/src/main/java/org/apache/provisionr/core/CoreConstants.java
+++ b/core/src/main/java/org/apache/provisionr/core/CoreConstants.java
@@ -18,7 +18,7 @@
 
 package org.apache.provisionr.core;
 
-public class CoreConstants {
+public final class CoreConstants {
 
     private CoreConstants() {
     }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/CoreProcessVariables.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/CoreProcessVariables.java b/core/src/main/java/org/apache/provisionr/core/CoreProcessVariables.java
index e27e334..6768457 100644
--- a/core/src/main/java/org/apache/provisionr/core/CoreProcessVariables.java
+++ b/core/src/main/java/org/apache/provisionr/core/CoreProcessVariables.java
@@ -18,10 +18,9 @@
 
 package org.apache.provisionr.core;
 
-public class CoreProcessVariables {
+public final class CoreProcessVariables {
 
     private CoreProcessVariables() {
-        throw new RuntimeException("Should not instantiate");
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/CoreSignals.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/CoreSignals.java b/core/src/main/java/org/apache/provisionr/core/CoreSignals.java
index dd75ed0..3280ece 100644
--- a/core/src/main/java/org/apache/provisionr/core/CoreSignals.java
+++ b/core/src/main/java/org/apache/provisionr/core/CoreSignals.java
@@ -18,7 +18,7 @@
 
 package org.apache.provisionr.core;
 
-public class CoreSignals {
+public final class CoreSignals {
 
     private CoreSignals() {
     }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/Mustache.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/Mustache.java b/core/src/main/java/org/apache/provisionr/core/Mustache.java
index fef5c47..8cbade3 100644
--- a/core/src/main/java/org/apache/provisionr/core/Mustache.java
+++ b/core/src/main/java/org/apache/provisionr/core/Mustache.java
@@ -33,7 +33,7 @@ import java.util.Map;
 /**
  * Utility functions for rendering mustache templates as strings
  */
-public class Mustache {
+public final class Mustache {
 
     private Mustache() {
     }
@@ -43,9 +43,17 @@ public class Mustache {
         return toString(Resources.getResource(contextClass, resource), scopes);
     }
 
+    /**
+     * Render a Mustache template as a String
+     *
+     * @param resource url to resource
+     * @param scopes
+     * @return
+     * @throws IOException
+     */
     public static String toString(URL resource, Map<String, ?> scopes) throws IOException {
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        Writer writer = new OutputStreamWriter(outputStream);
+        Writer writer = new OutputStreamWriter(outputStream, Charsets.UTF_8);
 
         String content = Resources.toString(resource, Charsets.UTF_8);
 
@@ -54,7 +62,7 @@ public class Mustache {
             .execute(writer, scopes);
 
         writer.close();
-        return outputStream.toString();
+        return outputStream.toString("UTF-8");
     }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/PoolStatus.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/PoolStatus.java b/core/src/main/java/org/apache/provisionr/core/PoolStatus.java
index bd1a755..00984e2 100644
--- a/core/src/main/java/org/apache/provisionr/core/PoolStatus.java
+++ b/core/src/main/java/org/apache/provisionr/core/PoolStatus.java
@@ -21,16 +21,16 @@ package org.apache.provisionr.core;
 /**
  * A standard set of pool statuses
  */
-public class PoolStatus {
+public final class PoolStatus {
 
     private PoolStatus() {
     }
 
-    public static String UNDEFINED = "undefined";
+    public static final String UNDEFINED = "undefined";
 
-    public static String SETUP = "setup";
+    public static final String SETUP = "setup";
 
-    public static String READY = "ready";
+    public static final String READY = "ready";
 
-    public static String TERMINATED = "terminated";
+    public static final String TERMINATED = "terminated";
 }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/Ssh.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/Ssh.java b/core/src/main/java/org/apache/provisionr/core/Ssh.java
index 8cf9ee7..357c6de 100644
--- a/core/src/main/java/org/apache/provisionr/core/Ssh.java
+++ b/core/src/main/java/org/apache/provisionr/core/Ssh.java
@@ -18,10 +18,6 @@
 
 package org.apache.provisionr.core;
 
-import org.apache.provisionr.api.access.AdminAccess;
-import org.apache.provisionr.api.pool.Machine;
-import org.apache.provisionr.core.logging.ErrorStreamLogger;
-import org.apache.provisionr.core.logging.InfoStreamLogger;
 import com.google.common.base.Charsets;
 import static com.google.common.base.Preconditions.checkArgument;
 import java.io.ByteArrayInputStream;
@@ -34,12 +30,16 @@ import net.schmizz.sshj.connection.channel.direct.Session;
 import net.schmizz.sshj.transport.verification.HostKeyVerifier;
 import net.schmizz.sshj.userauth.keyprovider.OpenSSHKeyFile;
 import net.schmizz.sshj.xfer.InMemorySourceFile;
+import org.apache.provisionr.api.access.AdminAccess;
+import org.apache.provisionr.api.pool.Machine;
+import org.apache.provisionr.core.logging.ErrorStreamLogger;
+import org.apache.provisionr.core.logging.InfoStreamLogger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.Marker;
 import org.slf4j.MarkerFactory;
 
-public class Ssh {
+public final class Ssh {
 
     private static final Logger LOG = LoggerFactory.getLogger(Ssh.class);
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/activities/CheckProcessesEnded.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/activities/CheckProcessesEnded.java b/core/src/main/java/org/apache/provisionr/core/activities/CheckProcessesEnded.java
index 5a446d4..a88df9f 100644
--- a/core/src/main/java/org/apache/provisionr/core/activities/CheckProcessesEnded.java
+++ b/core/src/main/java/org/apache/provisionr/core/activities/CheckProcessesEnded.java
@@ -49,19 +49,20 @@ public class CheckProcessesEnded implements JavaDelegate {
     }
 
     @Override
-    public void execute(DelegateExecution execution) throws Exception {
+    public void execute(DelegateExecution execution) {
         @SuppressWarnings("unchecked")
         List<String> processIds = (List<String>) execution.getVariable(variableWithProcessIds);
 
-        List<String> ended = Lists.newArrayList(Iterables.filter(processIds, new Predicate<String>() {
-            @Override
-            public boolean apply(String processInstanceId) {
-                ProcessInstance instance = runtimeService.createProcessInstanceQuery()
-                    .processInstanceId(processInstanceId).singleResult();
+        List<String> ended = Lists.newArrayList(Iterables.filter(processIds,
+            new Predicate<String>() {
+                @Override
+                public boolean apply(String processInstanceId) {
+                    ProcessInstance instance = runtimeService.createProcessInstanceQuery()
+                        .processInstanceId(processInstanceId).singleResult();
 
-                return instance == null || instance.isEnded();
-            }
-        }));
+                    return instance == null || instance.isEnded();
+                }
+            }));
 
         boolean done = (processIds.size() == ended.size());
         execution.setVariable(resultVariable, done);

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/activities/DownloadFiles.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/activities/DownloadFiles.java b/core/src/main/java/org/apache/provisionr/core/activities/DownloadFiles.java
index da721b3..7b45476 100644
--- a/core/src/main/java/org/apache/provisionr/core/activities/DownloadFiles.java
+++ b/core/src/main/java/org/apache/provisionr/core/activities/DownloadFiles.java
@@ -18,16 +18,18 @@
 
 package org.apache.provisionr.core.activities;
 
-import org.apache.provisionr.api.pool.Machine;
-import org.apache.provisionr.api.pool.Pool;
-import org.apache.provisionr.api.software.Software;
-import org.apache.provisionr.core.Mustache;
 import com.google.common.base.Function;
+import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
+import org.apache.provisionr.api.pool.Machine;
+import org.apache.provisionr.api.pool.Pool;
+import org.apache.provisionr.api.software.Software;
+import org.apache.provisionr.core.Mustache;
 
 public class DownloadFiles extends PuppetActivity {
 
@@ -38,9 +40,14 @@ public class DownloadFiles extends PuppetActivity {
     }
 
     @Override
-    public String createPuppetScript(Pool pool, Machine machine) throws Exception {
-        return Mustache.toString(InstallPackages.class, FILES_TEMPLATE,
-            ImmutableMap.of("files", filesAsListOfMaps(pool.getSoftware())));
+    public String createPuppetScript(Pool pool, Machine machine) {
+        try {
+            return Mustache.toString(InstallPackages.class, FILES_TEMPLATE,
+                ImmutableMap.of("files", filesAsListOfMaps(pool.getSoftware())));
+
+        } catch (IOException e) {
+            throw Throwables.propagate(e);
+        }
     }
 
     private List<Map<String, String>> filesAsListOfMaps(Software software) {

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/activities/InstallPackages.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/activities/InstallPackages.java b/core/src/main/java/org/apache/provisionr/core/activities/InstallPackages.java
index c9a8667..8cf557d 100644
--- a/core/src/main/java/org/apache/provisionr/core/activities/InstallPackages.java
+++ b/core/src/main/java/org/apache/provisionr/core/activities/InstallPackages.java
@@ -18,15 +18,16 @@
 
 package org.apache.provisionr.core.activities;
 
-import org.apache.provisionr.api.pool.Machine;
-import org.apache.provisionr.api.pool.Pool;
-import org.apache.provisionr.api.software.Software;
-import org.apache.provisionr.core.Mustache;
+import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
+import org.apache.provisionr.api.pool.Machine;
+import org.apache.provisionr.api.pool.Pool;
+import org.apache.provisionr.api.software.Software;
+import org.apache.provisionr.core.Mustache;
 
 public class InstallPackages extends PuppetActivity {
 
@@ -37,9 +38,14 @@ public class InstallPackages extends PuppetActivity {
     }
 
     @Override
-    public String createPuppetScript(Pool pool, Machine machine) throws IOException {
-        return Mustache.toString(InstallPackages.class, PACKAGES_TEMPLATE,
-            ImmutableMap.of("packages", packagesAsListOfMaps(pool.getSoftware())));
+    public String createPuppetScript(Pool pool, Machine machine) {
+        try {
+            return Mustache.toString(InstallPackages.class, PACKAGES_TEMPLATE,
+                ImmutableMap.of("packages", packagesAsListOfMaps(pool.getSoftware())));
+
+        } catch (IOException e) {
+            throw Throwables.propagate(e);
+        }
     }
 
     private List<Map<String, String>> packagesAsListOfMaps(Software software) {

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/activities/InstallRepositories.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/activities/InstallRepositories.java b/core/src/main/java/org/apache/provisionr/core/activities/InstallRepositories.java
index 072138d..473f4dd 100644
--- a/core/src/main/java/org/apache/provisionr/core/activities/InstallRepositories.java
+++ b/core/src/main/java/org/apache/provisionr/core/activities/InstallRepositories.java
@@ -18,17 +18,19 @@
 
 package org.apache.provisionr.core.activities;
 
-import org.apache.provisionr.api.pool.Machine;
-import org.apache.provisionr.api.pool.Pool;
-import org.apache.provisionr.api.software.Repository;
-import org.apache.provisionr.api.software.Software;
-import org.apache.provisionr.core.Mustache;
 import com.google.common.base.Function;
 import com.google.common.base.Joiner;
+import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
+import org.apache.provisionr.api.pool.Machine;
+import org.apache.provisionr.api.pool.Pool;
+import org.apache.provisionr.api.software.Repository;
+import org.apache.provisionr.api.software.Software;
+import org.apache.provisionr.core.Mustache;
 
 public class InstallRepositories extends PuppetActivity {
 
@@ -40,10 +42,15 @@ public class InstallRepositories extends PuppetActivity {
     }
 
     @Override
-    public String createPuppetScript(Pool pool, Machine machine) throws Exception {
-        return Mustache.toString(getClass(), REPOSITORIES_TEMPLATE,
-            ImmutableMap.<String, List<Map<String, String>>>of(
-                "repositories", repositoriesAsListOfMaps(pool.getSoftware())));
+    public String createPuppetScript(Pool pool, Machine machine) {
+        try {
+            return Mustache.toString(getClass(), REPOSITORIES_TEMPLATE,
+                ImmutableMap.<String, List<Map<String, String>>>of(
+                    "repositories", repositoriesAsListOfMaps(pool.getSoftware())));
+
+        } catch (IOException e) {
+            throw Throwables.propagate(e);
+        }
     }
 
     private List<Map<String, String>> repositoriesAsListOfMaps(Software software) {

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/activities/IsMachinePortOpen.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/activities/IsMachinePortOpen.java b/core/src/main/java/org/apache/provisionr/core/activities/IsMachinePortOpen.java
index 59a13d7..1d3865f 100644
--- a/core/src/main/java/org/apache/provisionr/core/activities/IsMachinePortOpen.java
+++ b/core/src/main/java/org/apache/provisionr/core/activities/IsMachinePortOpen.java
@@ -18,7 +18,6 @@
 
 package org.apache.provisionr.core.activities;
 
-import org.apache.provisionr.api.pool.Machine;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import java.io.IOException;
@@ -26,6 +25,7 @@ import java.net.InetSocketAddress;
 import java.net.Socket;
 import org.activiti.engine.delegate.DelegateExecution;
 import org.activiti.engine.delegate.JavaDelegate;
+import org.apache.provisionr.api.pool.Machine;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -51,7 +51,7 @@ public class IsMachinePortOpen implements JavaDelegate {
     }
 
     @Override
-    public void execute(DelegateExecution execution) throws Exception {
+    public void execute(DelegateExecution execution) {
         Machine machine = (Machine) execution.getVariable(MACHINE);
         checkNotNull(machine, "expecting a process variable named machine (multi-instance?)");
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/activities/KillMachineSetUpProcesses.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/activities/KillMachineSetUpProcesses.java b/core/src/main/java/org/apache/provisionr/core/activities/KillMachineSetUpProcesses.java
index 2763c9d..abed671 100644
--- a/core/src/main/java/org/apache/provisionr/core/activities/KillMachineSetUpProcesses.java
+++ b/core/src/main/java/org/apache/provisionr/core/activities/KillMachineSetUpProcesses.java
@@ -19,13 +19,10 @@
 package org.apache.provisionr.core.activities;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
-
 import java.util.List;
-
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.delegate.DelegateExecution;
 import org.activiti.engine.delegate.JavaDelegate;
@@ -46,22 +43,25 @@ public class KillMachineSetUpProcesses implements JavaDelegate {
     }
 
     @Override
-    public void execute(DelegateExecution execution) throws Exception {
+    public void execute(DelegateExecution execution) {
         @SuppressWarnings("unchecked")
         List<String> processIds = (List<String>) execution.getVariable(variableWithProcessIds);
 
-        List<String> forceEnded = Lists.newArrayList(Iterables.filter(processIds, new Predicate<String>() {
-            @Override
-            public boolean apply(String processInstanceId) {
-                ProcessInstance instance = runtimeService.createProcessInstanceQuery()
-                    .processInstanceId(processInstanceId).singleResult();
-                if (instance != null && !instance.isEnded()) {
-                    runtimeService.deleteProcessInstance(processInstanceId, "Pending process needs to be killed");
-                    return true;
+        List<String> forceEnded = Lists.newArrayList(Iterables.filter(processIds,
+            new Predicate<String>() {
+                @Override
+                public boolean apply(String processInstanceId) {
+                    ProcessInstance instance = runtimeService.createProcessInstanceQuery()
+                        .processInstanceId(processInstanceId).singleResult();
+                    if (instance != null && !instance.isEnded()) {
+                        runtimeService.deleteProcessInstance(processInstanceId,
+                            "Pending process needs to be killed");
+                        return true;
+                    }
+                    return false;
                 }
-                return false;
-            }
-        }));
-        LOG.info("Killed pending machine setup processes: {}", forceEnded);
+            }));
+
+        LOG.warn("Killed pending machine setup processes: {}", forceEnded);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/activities/PuppetActivity.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/activities/PuppetActivity.java b/core/src/main/java/org/apache/provisionr/core/activities/PuppetActivity.java
index f072a9a..c6a8bad 100644
--- a/core/src/main/java/org/apache/provisionr/core/activities/PuppetActivity.java
+++ b/core/src/main/java/org/apache/provisionr/core/activities/PuppetActivity.java
@@ -18,11 +18,6 @@
 
 package org.apache.provisionr.core.activities;
 
-import org.apache.provisionr.api.access.AdminAccess;
-import org.apache.provisionr.api.pool.Machine;
-import org.apache.provisionr.api.pool.Pool;
-import org.apache.provisionr.core.CoreProcessVariables;
-import org.apache.provisionr.core.Ssh;
 import static com.google.common.base.Preconditions.checkNotNull;
 import com.google.common.collect.ImmutableMap;
 import java.util.Map;
@@ -30,6 +25,11 @@ import net.schmizz.sshj.SSHClient;
 import net.schmizz.sshj.connection.channel.direct.Session;
 import org.activiti.engine.delegate.DelegateExecution;
 import org.activiti.engine.delegate.JavaDelegate;
+import org.apache.provisionr.api.access.AdminAccess;
+import org.apache.provisionr.api.pool.Machine;
+import org.apache.provisionr.api.pool.Pool;
+import org.apache.provisionr.core.CoreProcessVariables;
+import org.apache.provisionr.core.Ssh;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -62,7 +62,7 @@ public abstract class PuppetActivity implements JavaDelegate {
     /**
      * This method creates a Puppet script for remote execution
      */
-    public abstract String createPuppetScript(Pool pool, Machine machine) throws Exception;
+    public abstract String createPuppetScript(Pool pool, Machine machine);
 
     /**
      * Override this method to change the credentials used for SSH access
@@ -74,7 +74,7 @@ public abstract class PuppetActivity implements JavaDelegate {
     /**
      * Map of additional files to create on the remote machine. Contains pairs of (remotePath, content)
      */
-    public Map<String, String> createAdditionalFiles(Pool pool, Machine machine) throws Exception {
+    public Map<String, String> createAdditionalFiles(Pool pool, Machine machine) {
         return ImmutableMap.of();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/activities/SpawnProcessForEachMachine.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/activities/SpawnProcessForEachMachine.java b/core/src/main/java/org/apache/provisionr/core/activities/SpawnProcessForEachMachine.java
index 84dcd30..1705f59 100644
--- a/core/src/main/java/org/apache/provisionr/core/activities/SpawnProcessForEachMachine.java
+++ b/core/src/main/java/org/apache/provisionr/core/activities/SpawnProcessForEachMachine.java
@@ -18,10 +18,6 @@
 
 package org.apache.provisionr.core.activities;
 
-import org.apache.provisionr.api.pool.Machine;
-import org.apache.provisionr.api.pool.Pool;
-import org.apache.provisionr.core.CoreConstants;
-import org.apache.provisionr.core.CoreProcessVariables;
 import static com.google.common.base.Preconditions.checkNotNull;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
@@ -30,6 +26,10 @@ import org.activiti.engine.ProcessEngine;
 import org.activiti.engine.delegate.DelegateExecution;
 import org.activiti.engine.delegate.JavaDelegate;
 import org.activiti.engine.runtime.ProcessInstance;
+import org.apache.provisionr.api.pool.Machine;
+import org.apache.provisionr.api.pool.Pool;
+import org.apache.provisionr.core.CoreConstants;
+import org.apache.provisionr.core.CoreProcessVariables;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -61,7 +61,7 @@ public class SpawnProcessForEachMachine implements JavaDelegate {
     }
 
     @Override
-    public void execute(DelegateExecution execution) throws Exception {
+    public void execute(DelegateExecution execution) {
         final Pool pool = (Pool) execution.getVariable(CoreProcessVariables.POOL);
         checkNotNull(pool, "Expecting to find a pool description as process variable");
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/logging/StreamLogger.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/logging/StreamLogger.java b/core/src/main/java/org/apache/provisionr/core/logging/StreamLogger.java
index d68066d..989ab94 100644
--- a/core/src/main/java/org/apache/provisionr/core/logging/StreamLogger.java
+++ b/core/src/main/java/org/apache/provisionr/core/logging/StreamLogger.java
@@ -18,8 +18,10 @@
 
 package org.apache.provisionr.core.logging;
 
+import com.google.common.base.Charsets;
 import static com.google.common.base.Preconditions.checkNotNull;
 import com.google.common.base.Throwables;
+import com.google.common.io.Closeables;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -54,16 +56,24 @@ public abstract class StreamLogger extends Thread {
 
     @Override
     public void run() {
-        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
+        BufferedReader bufferedReader = null;
+        InputStreamReader inputStreamReader = null;
         try {
+            inputStreamReader = new InputStreamReader(inputStream, Charsets.UTF_8);
+            bufferedReader = new BufferedReader(inputStreamReader);
+
             String line;
-            while ((line = reader.readLine()) != null) {
+            while ((line = bufferedReader.readLine()) != null) {
                 if (!line.isEmpty()) {
                     log(logger, marker, line);
                 }
             }
         } catch (IOException e) {
             throw Throwables.propagate(e);
+
+        } finally {
+            Closeables.closeQuietly(bufferedReader);
+            Closeables.closeQuietly(inputStreamReader);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/templates/PoolTemplateInstaller.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/templates/PoolTemplateInstaller.java b/core/src/main/java/org/apache/provisionr/core/templates/PoolTemplateInstaller.java
index a421b46..d94989f 100644
--- a/core/src/main/java/org/apache/provisionr/core/templates/PoolTemplateInstaller.java
+++ b/core/src/main/java/org/apache/provisionr/core/templates/PoolTemplateInstaller.java
@@ -18,12 +18,12 @@
 
 package org.apache.provisionr.core.templates;
 
-import org.apache.provisionr.core.templates.xml.XmlTemplate;
 import static com.google.common.base.Preconditions.checkNotNull;
 import com.google.common.collect.Maps;
 import java.io.File;
 import java.util.concurrent.ConcurrentMap;
 import org.apache.felix.fileinstall.ArtifactInstaller;
+import org.apache.provisionr.core.templates.xml.XmlTemplate;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceRegistration;
 import org.slf4j.Logger;
@@ -69,7 +69,7 @@ public class PoolTemplateInstaller implements ArtifactInstaller {
      * The absolute file path is the unique identifier
      */
     @Override
-    public void install(File file) throws Exception {
+    public void install(File file) {
         final String absolutePath = file.getAbsolutePath();
         LOG.info("Installing Pool template from  " + absolutePath);
 
@@ -87,7 +87,7 @@ public class PoolTemplateInstaller implements ArtifactInstaller {
      * Uninstall a pool description identified by the absolute file path
      */
     @Override
-    public void uninstall(File file) throws Exception {
+    public void uninstall(File file) {
         final String absolutePath = file.getAbsolutePath();
         LOG.info("Uninstalling Pool template for path " + absolutePath);
 
@@ -102,7 +102,7 @@ public class PoolTemplateInstaller implements ArtifactInstaller {
      * This method performs no actions if there is no pool registered for this file
      */
     @Override
-    public void update(File file) throws Exception {
+    public void update(File file) {
         if (templates.containsKey(file.getAbsolutePath())) {
             uninstall(file);
             install(file);

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/templates/xml/FileEntry.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/templates/xml/FileEntry.java b/core/src/main/java/org/apache/provisionr/core/templates/xml/FileEntry.java
index 27f6788..999a889 100644
--- a/core/src/main/java/org/apache/provisionr/core/templates/xml/FileEntry.java
+++ b/core/src/main/java/org/apache/provisionr/core/templates/xml/FileEntry.java
@@ -20,6 +20,7 @@ package org.apache.provisionr.core.templates.xml;
 
 import com.google.common.annotations.VisibleForTesting;
 import static com.google.common.base.Preconditions.checkNotNull;
+import javax.annotation.Generated;
 import javax.xml.bind.annotation.XmlAttribute;
 
 /**
@@ -63,6 +64,7 @@ public class FileEntry {
     }
 
     @Override
+    @Generated("intellij")
     public boolean equals(Object o) {
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
@@ -77,6 +79,7 @@ public class FileEntry {
     }
 
     @Override
+    @Generated("intellij")
     public int hashCode() {
         int result = source != null ? source.hashCode() : 0;
         result = 31 * result + (destination != null ? destination.hashCode() : 0);
@@ -84,6 +87,7 @@ public class FileEntry {
     }
 
     @Override
+    @Generated("intellij")
     public String toString() {
         return "FileEntry{" +
             "source='" + source + '\'' +

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/core/src/main/java/org/apache/provisionr/core/templates/xml/XmlTemplate.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/templates/xml/XmlTemplate.java b/core/src/main/java/org/apache/provisionr/core/templates/xml/XmlTemplate.java
index da2bba3..4854e98 100644
--- a/core/src/main/java/org/apache/provisionr/core/templates/xml/XmlTemplate.java
+++ b/core/src/main/java/org/apache/provisionr/core/templates/xml/XmlTemplate.java
@@ -19,6 +19,7 @@
 package org.apache.provisionr.core.templates.xml;
 
 import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Charsets;
 import static com.google.common.base.Preconditions.checkNotNull;
 import com.google.common.base.Throwables;
 import static com.google.common.collect.Lists.newArrayList;
@@ -26,9 +27,12 @@ import com.google.common.io.CharStreams;
 import com.google.common.io.Closeables;
 import java.io.ByteArrayInputStream;
 import java.io.File;
-import java.io.FileReader;
+import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
 import java.util.List;
+import javax.annotation.Generated;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.annotation.XmlAttribute;
@@ -62,7 +66,7 @@ public class XmlTemplate implements PoolTemplate {
         try {
             JAXBContext context = JAXBContext.newInstance(XmlTemplate.class);
             return (XmlTemplate) context.createUnmarshaller()
-                .unmarshal(new ByteArrayInputStream(content.getBytes()));
+                .unmarshal(new ByteArrayInputStream(content.getBytes(Charsets.UTF_8)));
 
         } catch (JAXBException e) {
             throw Throwables.propagate(e);
@@ -73,14 +77,19 @@ public class XmlTemplate implements PoolTemplate {
      * @return an XmlTemplate instance resulted from parsing a file
      */
     public static XmlTemplate newXmlTemplate(File file) {
-        FileReader reader = null;
+        Reader reader = null;
+        FileInputStream inputStream = null;
         try {
-            reader = new FileReader(file);
+            inputStream = new FileInputStream(file);
+            reader = new InputStreamReader(inputStream, Charsets.UTF_8);
+
             return newXmlTemplate(CharStreams.toString(reader));
 
         } catch (IOException e) {
             throw Throwables.propagate(e);
+
         } finally {
+            Closeables.closeQuietly(inputStream);
             Closeables.closeQuietly(reader);
         }
     }
@@ -215,6 +224,7 @@ public class XmlTemplate implements PoolTemplate {
     }
 
     @Override
+    @Generated("intellij")
     public boolean equals(Object o) {
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
@@ -233,6 +243,7 @@ public class XmlTemplate implements PoolTemplate {
     }
 
     @Override
+    @Generated("intellij")
     public int hashCode() {
         int result = id != null ? id.hashCode() : 0;
         result = 31 * result + (description != null ? description.hashCode() : 0);
@@ -245,6 +256,7 @@ public class XmlTemplate implements PoolTemplate {
     }
 
     @Override
+    @Generated("intellij")
     public String toString() {
         return "XmlTemplate{" +
             "id='" + id + '\'' +

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/Attribute.java
----------------------------------------------------------------------
diff --git a/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/Attribute.java b/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/Attribute.java
index 91c790f..fc56ed8 100644
--- a/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/Attribute.java
+++ b/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/Attribute.java
@@ -19,6 +19,7 @@
 package org.apache.provisionr.rundeck;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import javax.annotation.Generated;
 import javax.xml.bind.annotation.XmlAttribute;
 
 /**
@@ -59,6 +60,7 @@ public class Attribute {
     }
 
     @Override
+    @Generated("intellij")
     public boolean equals(Object o) {
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
@@ -72,6 +74,7 @@ public class Attribute {
     }
 
     @Override
+    @Generated("intellij")
     public int hashCode() {
         int result = name != null ? name.hashCode() : 0;
         result = 31 * result + (value != null ? value.hashCode() : 0);
@@ -79,6 +82,7 @@ public class Attribute {
     }
 
     @Override
+    @Generated("intellij")
     public String toString() {
         return "Attribute{" +
             "name='" + name + '\'' +

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/Project.java
----------------------------------------------------------------------
diff --git a/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/Project.java b/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/Project.java
index 21379e0..0b2009a 100644
--- a/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/Project.java
+++ b/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/Project.java
@@ -22,6 +22,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import com.google.common.collect.Lists;
 import java.util.Collections;
 import java.util.List;
+import javax.annotation.Generated;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 
@@ -56,6 +57,7 @@ public class Project {
     }
 
     @Override
+    @Generated("intellij")
     public boolean equals(Object o) {
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
@@ -67,6 +69,7 @@ public class Project {
     }
 
     @Override
+    @Generated("intellij")
     public int hashCode() {
         return nodes != null ? nodes.hashCode() : 0;
     }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/RundeckServlet.java
----------------------------------------------------------------------
diff --git a/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/RundeckServlet.java b/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/RundeckServlet.java
index fe65fab..3ab74e4 100644
--- a/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/RundeckServlet.java
+++ b/integration/rundeck/src/main/java/org/apache/provisionr/rundeck/RundeckServlet.java
@@ -39,13 +39,9 @@ import org.activiti.engine.runtime.ProcessInstance;
 import org.apache.provisionr.api.pool.Machine;
 import org.apache.provisionr.api.pool.Pool;
 import org.apache.provisionr.core.CoreProcessVariables;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class RundeckServlet extends HttpServlet {
 
-    private static final Logger LOG = LoggerFactory.getLogger(RundeckServlet.class);
-
     private final ProcessEngine processEngine;
     private final Marshaller marshaller;
 
@@ -57,7 +53,8 @@ public class RundeckServlet extends HttpServlet {
     }
 
     @Override
-    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+    protected void doGet(HttpServletRequest request, HttpServletResponse response)
+        throws ServletException, IOException {
         response.setContentType("application/xml;charset=UTF-8");
         writeRundeckResourceModelXmlTo(response.getWriter());
     }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/karaf/commands/src/main/java/org/apache/provisionr/commands/CreateImageCommand.java
----------------------------------------------------------------------
diff --git a/karaf/commands/src/main/java/org/apache/provisionr/commands/CreateImageCommand.java b/karaf/commands/src/main/java/org/apache/provisionr/commands/CreateImageCommand.java
index 0d865d6..74c6e81 100644
--- a/karaf/commands/src/main/java/org/apache/provisionr/commands/CreateImageCommand.java
+++ b/karaf/commands/src/main/java/org/apache/provisionr/commands/CreateImageCommand.java
@@ -41,9 +41,10 @@ public class CreateImageCommand extends CreateCommand {
 
     @Override
     protected Object doExecute() throws Exception {
-        Provisionr service = getService();
-        final Pool pool = createPoolOfOne(service);
+        // Provisionr service = getService();
+        // final Pool pool = createPoolOfOne(service);
         // TODO: create service.startCachingProcess(uuid, pool) in the Provisionr class
+
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/karaf/commands/src/main/java/org/apache/provisionr/commands/CreatePoolCommand.java
----------------------------------------------------------------------
diff --git a/karaf/commands/src/main/java/org/apache/provisionr/commands/CreatePoolCommand.java b/karaf/commands/src/main/java/org/apache/provisionr/commands/CreatePoolCommand.java
index aaf5d2b..4091066 100644
--- a/karaf/commands/src/main/java/org/apache/provisionr/commands/CreatePoolCommand.java
+++ b/karaf/commands/src/main/java/org/apache/provisionr/commands/CreatePoolCommand.java
@@ -82,7 +82,7 @@ public class CreatePoolCommand extends CreateCommand {
     }
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         checkArgument(size > 0, "size should be a positive integer");
 
         Provisionr service = getService();
@@ -107,6 +107,7 @@ public class CreatePoolCommand extends CreateCommand {
             .imageId(imageId)
             .cachedImage(cachedImage)
             .createSoftware();
+
         final Hardware hardware = Hardware.builder()
             .type(hardwareType)
             .blockDevices(parseBlockDeviceOptions(blockDeviceOptions))

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/karaf/commands/src/main/java/org/apache/provisionr/commands/DestroyPoolCommand.java
----------------------------------------------------------------------
diff --git a/karaf/commands/src/main/java/org/apache/provisionr/commands/DestroyPoolCommand.java b/karaf/commands/src/main/java/org/apache/provisionr/commands/DestroyPoolCommand.java
index d068754..214adcf 100644
--- a/karaf/commands/src/main/java/org/apache/provisionr/commands/DestroyPoolCommand.java
+++ b/karaf/commands/src/main/java/org/apache/provisionr/commands/DestroyPoolCommand.java
@@ -48,7 +48,7 @@ public class DestroyPoolCommand extends OsgiCommandSupport {
     }
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         checkNotNull(businessKey, "pool business key is mandatory");
 
         ProcessInstance instance = processEngine.getRuntimeService().createProcessInstanceQuery()

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/karaf/commands/src/main/java/org/apache/provisionr/commands/ListPoolsCommand.java
----------------------------------------------------------------------
diff --git a/karaf/commands/src/main/java/org/apache/provisionr/commands/ListPoolsCommand.java b/karaf/commands/src/main/java/org/apache/provisionr/commands/ListPoolsCommand.java
index 3410495..ac2ebae 100644
--- a/karaf/commands/src/main/java/org/apache/provisionr/commands/ListPoolsCommand.java
+++ b/karaf/commands/src/main/java/org/apache/provisionr/commands/ListPoolsCommand.java
@@ -51,7 +51,7 @@ public class ListPoolsCommand extends OsgiCommandSupport {
     }
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         List<ProcessInstance> processes;
         if (key.isEmpty()) {
             processes = processEngine.getRuntimeService().createProcessInstanceQuery().list();

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/karaf/commands/src/main/java/org/apache/provisionr/commands/ListServicesCommand.java
----------------------------------------------------------------------
diff --git a/karaf/commands/src/main/java/org/apache/provisionr/commands/ListServicesCommand.java b/karaf/commands/src/main/java/org/apache/provisionr/commands/ListServicesCommand.java
index cbd82ef..44f9424 100644
--- a/karaf/commands/src/main/java/org/apache/provisionr/commands/ListServicesCommand.java
+++ b/karaf/commands/src/main/java/org/apache/provisionr/commands/ListServicesCommand.java
@@ -18,7 +18,6 @@
 
 package org.apache.provisionr.commands;
 
-import org.apache.provisionr.api.Provisionr;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Joiner;
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -27,6 +26,7 @@ import java.io.PrintStream;
 import java.util.List;
 import org.apache.felix.gogo.commands.Command;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.provisionr.api.Provisionr;
 
 @Command(scope = "provisionr", name = "services", description = "List provisioning services")
 public class ListServicesCommand extends OsgiCommandSupport {
@@ -40,7 +40,7 @@ public class ListServicesCommand extends OsgiCommandSupport {
     }
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         List<String> ids = Lists.newArrayList();
         for (Provisionr service : services) {
             ids.add(service.getId());

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/karaf/commands/src/main/java/org/apache/provisionr/commands/ListTemplatesCommand.java
----------------------------------------------------------------------
diff --git a/karaf/commands/src/main/java/org/apache/provisionr/commands/ListTemplatesCommand.java b/karaf/commands/src/main/java/org/apache/provisionr/commands/ListTemplatesCommand.java
index 8cc81d1..c97150c 100644
--- a/karaf/commands/src/main/java/org/apache/provisionr/commands/ListTemplatesCommand.java
+++ b/karaf/commands/src/main/java/org/apache/provisionr/commands/ListTemplatesCommand.java
@@ -18,13 +18,13 @@
 
 package org.apache.provisionr.commands;
 
-import org.apache.provisionr.core.templates.PoolTemplate;
 import com.google.common.annotations.VisibleForTesting;
 import static com.google.common.base.Preconditions.checkNotNull;
 import java.io.PrintStream;
 import java.util.List;
 import org.apache.felix.gogo.commands.Command;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.provisionr.core.templates.PoolTemplate;
 
 /**
  * List pre-configured templates that can be used to create clusters on different providers
@@ -41,9 +41,9 @@ public class ListTemplatesCommand extends OsgiCommandSupport {
     }
 
     @Override
-    protected Object doExecute() throws Exception {
+    protected Object doExecute() {
         for (PoolTemplate template : templates) {
-            out.printf("- %s\n\t%s\n", template.getId(), template.getDescription());
+            out.printf("- %s%n\t%s%n", template.getId(), template.getDescription());
         }
 
         return null;

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/karaf/commands/src/main/java/org/apache/provisionr/commands/predicates/ProvisionrPredicates.java
----------------------------------------------------------------------
diff --git a/karaf/commands/src/main/java/org/apache/provisionr/commands/predicates/ProvisionrPredicates.java b/karaf/commands/src/main/java/org/apache/provisionr/commands/predicates/ProvisionrPredicates.java
index 72a0b47..d705706 100644
--- a/karaf/commands/src/main/java/org/apache/provisionr/commands/predicates/ProvisionrPredicates.java
+++ b/karaf/commands/src/main/java/org/apache/provisionr/commands/predicates/ProvisionrPredicates.java
@@ -18,10 +18,10 @@
 
 package org.apache.provisionr.commands.predicates;
 
-import org.apache.provisionr.api.Provisionr;
 import com.google.common.base.Predicate;
+import org.apache.provisionr.api.Provisionr;
 
-public class ProvisionrPredicates {
+public final class ProvisionrPredicates {
 
     private ProvisionrPredicates() {
     }
@@ -31,7 +31,7 @@ public class ProvisionrPredicates {
 
             @Override
             public boolean apply(Provisionr candidate) {
-                return candidate.getId().equals(id);
+                return candidate != null && candidate.getId().equals(id);
             }
 
             @Override

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/ProcessVariables.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/ProcessVariables.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/ProcessVariables.java
index dd7fa76..1817218 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/ProcessVariables.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/ProcessVariables.java
@@ -18,7 +18,7 @@
 
 package org.apache.provisionr.amazon;
 
-public class ProcessVariables {
+public final class ProcessVariables {
 
     private ProcessVariables() {
         /* singleton */
@@ -40,7 +40,7 @@ public class ProcessVariables {
      * The amount the user is willing to pay for spot instances in the
      * Amazon pool he's trying to start. If set, the request is for spot
      * instances, if null the request is for on demand instances.
-     * 
+     *
      * @see org.apache.provisionr.amazon.activities.RunSpotInstances
      */
     public static final String SPOT_BID = "spotBid";
@@ -50,30 +50,30 @@ public class ProcessVariables {
      * for the first time. Because the describe call is not consistent
      * until a reasonable delay passes, this will be used to timeout the
      * Activiti retries so that the requests are not resent if they were
-     * successful. 
-     * 
+     * successful.
+     *
      * @see org.apache.provisionr.amazon.activities.RunSpotInstances
      */
     public static final String SPOT_REQUESTS_SENT = "spotRequestsSent";
 
     /**
-     * List of request IDs as returned by Amazon for spot instances. These need to 
+     * List of request IDs as returned by Amazon for spot instances. These need to
      * be followed up to get the actual instance IDs.
-     * 
+     *
      * @see org.apache.provisionr.amazon.activities.RunSpotInstances
      */
     public static final String SPOT_INSTANCE_REQUEST_IDS = "spotInstanceRequestIds";
 
     /**
      * Have all spot instance requests been handled by Amazon? (none are pending)
-     * 
-     *  @see org.apache.provisionr.amazon.activities.CheckNoRequestsAreOpen
+     *
+     * @see org.apache.provisionr.amazon.activities.CheckNoRequestsAreOpen
      */
     public static final String NO_SPOT_INSTANCE_REQUESTS_OPEN = "noSpotInstanceRequestsOpen";
 
     /**
      * Are all spot instance requests in an active state? (none cancelled, none terminated)
-     * 
+     *
      * @see org.apache.provisionr.amazon.activities.CheckAllRequestsAreActive
      */
     public static final String ALL_SPOT_INSTANCE_REQUESTS_ACTIVE = "allSpotInstanceRequestsActive";
@@ -87,10 +87,10 @@ public class ProcessVariables {
 
     /**
      * List of requested EBS volume IDs
-     * 
+     *
      * @see org.apache.provisionr.amazon.activities.CreateEBSVolumes
      */
-    public static final String VOLUME_IDS = "volumeIds"; 
+    public static final String VOLUME_IDS = "volumeIds";
 
     /**
      * Are all started instances running?

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/AllInstancesMatchPredicate.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/AllInstancesMatchPredicate.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/AllInstancesMatchPredicate.java
index 30f20fc..95d2fe4 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/AllInstancesMatchPredicate.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/AllInstancesMatchPredicate.java
@@ -18,24 +18,21 @@
 
 package org.apache.provisionr.amazon.activities;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
 import com.amazonaws.AmazonServiceException;
 import com.amazonaws.services.ec2.AmazonEC2;
 import com.amazonaws.services.ec2.model.DescribeInstancesRequest;
 import com.amazonaws.services.ec2.model.DescribeInstancesResult;
 import com.amazonaws.services.ec2.model.Instance;
-import org.apache.provisionr.amazon.ProcessVariables;
-import org.apache.provisionr.amazon.core.ProviderClientCache;
-import org.apache.provisionr.api.pool.Pool;
 import com.google.common.base.Optional;
+import static com.google.common.base.Preconditions.checkNotNull;
 import com.google.common.base.Predicate;
 import com.google.common.base.Throwables;
 import com.google.common.collect.Iterables;
-
 import java.util.List;
-
 import org.activiti.engine.delegate.DelegateExecution;
+import org.apache.provisionr.amazon.ProcessVariables;
+import org.apache.provisionr.amazon.core.ProviderClientCache;
+import org.apache.provisionr.api.pool.Pool;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -54,9 +51,9 @@ public abstract class AllInstancesMatchPredicate extends AmazonActivity {
     }
 
     @Override
-    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) throws Exception {
+    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) {
         @SuppressWarnings("unchecked")
-        Optional<List<String>> instanceIds = 
+        Optional<List<String>> instanceIds =
             Optional.fromNullable((List<String>) execution.getVariable(ProcessVariables.INSTANCE_IDS));
 
         if (!instanceIds.isPresent()) {

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/e896d1ca/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/AllSpotRequestsMatchPredicate.java
----------------------------------------------------------------------
diff --git a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/AllSpotRequestsMatchPredicate.java b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/AllSpotRequestsMatchPredicate.java
index 20397d6..361ade2 100644
--- a/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/AllSpotRequestsMatchPredicate.java
+++ b/providers/amazon/src/main/java/org/apache/provisionr/amazon/activities/AllSpotRequestsMatchPredicate.java
@@ -18,40 +18,37 @@
 
 package org.apache.provisionr.amazon.activities;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.List;
-
-import org.activiti.engine.delegate.DelegateExecution;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import com.amazonaws.services.ec2.AmazonEC2;
 import com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsRequest;
 import com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult;
 import com.amazonaws.services.ec2.model.SpotInstanceRequest;
+import static com.google.common.base.Preconditions.checkNotNull;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import java.util.List;
+import org.activiti.engine.delegate.DelegateExecution;
 import org.apache.provisionr.amazon.ProcessVariables;
 import org.apache.provisionr.amazon.core.ProviderClientCache;
 import org.apache.provisionr.api.pool.Pool;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class AllSpotRequestsMatchPredicate extends AmazonActivity {
 
     private static final Logger LOG = LoggerFactory.getLogger(AllSpotRequestsMatchPredicate.class);
 
-    protected final String resultVariable;
+    private final String resultVariable;
     private final Predicate<SpotInstanceRequest> predicate;
 
-    protected AllSpotRequestsMatchPredicate(ProviderClientCache cache, String resultVariable, 
-            Predicate<SpotInstanceRequest> predicate) {
+    protected AllSpotRequestsMatchPredicate(ProviderClientCache cache, String resultVariable,
+                                            Predicate<SpotInstanceRequest> predicate) {
         super(cache);
         this.resultVariable = checkNotNull(resultVariable, "resultVariable is null");
         this.predicate = checkNotNull(predicate, "predicate is null");
     }
 
     @Override
-    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) throws Exception {
+    public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) {
 
         LOG.info(">> Checking if all spot requests match predicate {}", predicate);