Merge pull request #3 from crain/develop

Add null checks for tenant identifier
diff --git a/src/main/java/io/mifos/core/async/core/DelegatingTenantContextCallable.java b/src/main/java/io/mifos/core/async/core/DelegatingTenantContextCallable.java
index d473b24..139c1ff 100644
--- a/src/main/java/io/mifos/core/async/core/DelegatingTenantContextCallable.java
+++ b/src/main/java/io/mifos/core/async/core/DelegatingTenantContextCallable.java
@@ -9,6 +9,11 @@
   private final Callable<V> delegate;
   private final String tenantIdentifier;
 
+  DelegatingTenantContextCallable(Callable<V> delegate) {
+    this.delegate = delegate;
+    this.tenantIdentifier = null;
+  }
+
   DelegatingTenantContextCallable(final Callable<V> delegate, final String tenantIdentifier) {
     super();
     this.delegate = delegate;
@@ -19,7 +24,9 @@
   public V call() throws Exception {
     try {
       TenantContextHolder.clear();
-      TenantContextHolder.setIdentifier(this.tenantIdentifier);
+      if(this.tenantIdentifier != null) {
+        TenantContextHolder.setIdentifier(this.tenantIdentifier);
+      }
       return this.delegate.call();
     } finally {
       TenantContextHolder.clear();
diff --git a/src/main/java/io/mifos/core/async/core/DelegatingTenantContextExecutor.java b/src/main/java/io/mifos/core/async/core/DelegatingTenantContextExecutor.java
index 67e6322..1061822 100644
--- a/src/main/java/io/mifos/core/async/core/DelegatingTenantContextExecutor.java
+++ b/src/main/java/io/mifos/core/async/core/DelegatingTenantContextExecutor.java
@@ -41,10 +41,16 @@
   }
 
   private Runnable wrap(final Runnable task) {
-    return new DelegatingTenantContextRunnable(task, TenantContextHolder.checkedGetIdentifier());
+    if(TenantContextHolder.identifier().isPresent()) {
+      return new DelegatingTenantContextRunnable(task, TenantContextHolder.checkedGetIdentifier());
+    }
+    return new DelegatingTenantContextRunnable(task);
   }
 
   private <T> Callable<T> wrap(final Callable<T> task) {
-    return new DelegatingTenantContextCallable<>(task, TenantContextHolder.checkedGetIdentifier());
+    if(TenantContextHolder.identifier().isPresent()) {
+      return new DelegatingTenantContextCallable<>(task, TenantContextHolder.checkedGetIdentifier());
+    }
+    return new DelegatingTenantContextCallable<>(task);
   }
 }
diff --git a/src/main/java/io/mifos/core/async/core/DelegatingTenantContextRunnable.java b/src/main/java/io/mifos/core/async/core/DelegatingTenantContextRunnable.java
index e0471d1..37d8ba6 100644
--- a/src/main/java/io/mifos/core/async/core/DelegatingTenantContextRunnable.java
+++ b/src/main/java/io/mifos/core/async/core/DelegatingTenantContextRunnable.java
@@ -7,6 +7,11 @@
   private final Runnable delegate;
   private final String tenantIdentifier;
 
+  DelegatingTenantContextRunnable(final Runnable delegate) {
+    this.delegate = delegate;
+    this.tenantIdentifier = null;
+  }
+
   DelegatingTenantContextRunnable(final Runnable delegate, final String tenantIdentifier) {
     super();
     this.delegate = delegate;
@@ -17,7 +22,9 @@
   public void run() {
     try {
       TenantContextHolder.clear();
-      TenantContextHolder.setIdentifier(this.tenantIdentifier);
+      if(this.tenantIdentifier != null) {
+        TenantContextHolder.setIdentifier(this.tenantIdentifier);
+      }
       this.delegate.run();
     } finally {
       TenantContextHolder.clear();