You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ud...@apache.org on 2016/09/06 17:23:26 UTC

[02/18] incubator-geode git commit: GEODE-1809: Improve error handling

GEODE-1809: Improve error handling


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

Branch: refs/heads/feature/GEODE-420
Commit: 07798ca802e752f66fc05811fc42e872675df525
Parents: bb44eb6
Author: Anthony Baker <ab...@apache.org>
Authored: Tue Aug 30 21:38:24 2016 -0700
Committer: Anthony Baker <ab...@apache.org>
Committed: Wed Aug 31 16:39:01 2016 -0700

----------------------------------------------------------------------
 .../gemfire/internal/GemFireVersion.java        | 65 ++++++++++----------
 .../internal/GemFireVersionJUnitTest.java       | 22 +++++--
 2 files changed, 52 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/07798ca8/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
index 9bd3d4f..0d0bd58 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
@@ -23,6 +23,7 @@ import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.net.URL;
 import java.util.Map.Entry;
+import java.util.Optional;
 import java.util.Properties;
 import java.util.StringTokenizer;
 
@@ -183,12 +184,12 @@ public class GemFireVersion {
     private final Properties description;
 
     /** Error message to display instead of the version information */
-    private final String error;
+    private final Optional<String> error;
 
     public VersionDescription(String name) {
       InputStream is = ClassPathLoader.getLatest().getResourceAsStream(getClass(), name);
       if (is == null) {
-        error = LocalizedStrings.GemFireVersion_COULD_NOT_FIND_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_0.toLocalizedString(RESOURCE_NAME);
+        error = Optional.of(LocalizedStrings.GemFireVersion_COULD_NOT_FIND_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_0.toLocalizedString(name));
         description = null;
         return;
       }
@@ -197,26 +198,28 @@ public class GemFireVersion {
       try {
         description.load(is);
       } catch (Exception ex) {
-        error = LocalizedStrings.GemFireVersion_COULD_NOT_READ_PROPERTIES_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_0_BECAUSE_1.toLocalizedString(new Object[] {RESOURCE_NAME, ex});
+        error = Optional.of(LocalizedStrings.GemFireVersion_COULD_NOT_READ_PROPERTIES_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_0_BECAUSE_1.toLocalizedString(new Object[] {name, ex}));
         return;
       }
-      error = validate();
+
+      error = validate(description);
     }
 
     public String getProperty(String key) {
-      if (error != null) {
-        return error;
-      }
-      return description.getProperty(key);
+      return error.orElse(description.getProperty(key));
     }
     
     public String getNativeCodeVersion() {
       return SmHelper.getNativeVersion();
     }
     
-    private void print(PrintWriter pw) {
-      for (Entry<?,?> props : description.entrySet()) {
-        pw.println(props.getKey() + ": " + props.getValue());
+    void print(PrintWriter pw) {
+      if (error.isPresent()) {
+        pw.println(error.get());
+      } else {
+        for (Entry<?,?> props : description.entrySet()) {
+          pw.println(props.getKey() + ": " + props.getValue());
+        }
       }
 
       // not stored in the description map
@@ -249,43 +252,43 @@ public class GemFireVersion {
       }
     }
 
-    private String validate() {
-      if (getProperty(PRODUCT_NAME) == null) {
-        return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {PRODUCT_NAME, RESOURCE_NAME});
+    private Optional<String> validate(Properties props) {
+      if (props.get(PRODUCT_NAME) == null) {
+        return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {PRODUCT_NAME, RESOURCE_NAME}));
       }
 
-      if (getProperty(GEMFIRE_VERSION) == null) {
-        return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {GEMFIRE_VERSION, RESOURCE_NAME});
+      if (props.get(GEMFIRE_VERSION) == null) {
+        return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {GEMFIRE_VERSION, RESOURCE_NAME}));
       }
 
-      if (getProperty(SOURCE_DATE) == null) {
-        return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {SOURCE_DATE, RESOURCE_NAME});
+      if (props.get(SOURCE_DATE) == null) {
+        return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {SOURCE_DATE, RESOURCE_NAME}));
       }
 
-      if (getProperty(SOURCE_REVISION) == null) {
-        return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {SOURCE_REVISION, RESOURCE_NAME});
+      if (props.get(SOURCE_REVISION) == null) {
+        return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {SOURCE_REVISION, RESOURCE_NAME}));
       }
 
-      if (getProperty(SOURCE_REPOSITORY) == null) {
-        return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {SOURCE_REPOSITORY, RESOURCE_NAME});
+      if (props.get(SOURCE_REPOSITORY) == null) {
+        return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {SOURCE_REPOSITORY, RESOURCE_NAME}));
       }
 
-      if (getProperty(BUILD_DATE) == null) {
-        return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_DATE, RESOURCE_NAME});
+      if (props.get(BUILD_DATE) == null) {
+        return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_DATE, RESOURCE_NAME}));
       }
 
-      if (getProperty(BUILD_ID) == null) {
-        return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_ID, RESOURCE_NAME});
+      if (props.get(BUILD_ID) == null) {
+        return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_ID, RESOURCE_NAME}));
       }
 
-      if (getProperty(BUILD_PLATFORM) == null) {
-        return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_PLATFORM, RESOURCE_NAME});
+      if (props.get(BUILD_PLATFORM) == null) {
+        return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_PLATFORM, RESOURCE_NAME}));
       }
 
-      if (getProperty(BUILD_JAVA_VERSION) == null) {
-        return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_JAVA_VERSION, RESOURCE_NAME});
+      if (props.get(BUILD_JAVA_VERSION) == null) {
+        return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_JAVA_VERSION, RESOURCE_NAME}));
       }
-      return null;
+      return Optional.empty();
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/07798ca8/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireVersionJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireVersionJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireVersionJUnitTest.java
index 8369d1f..850172a 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireVersionJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireVersionJUnitTest.java
@@ -18,9 +18,14 @@ package com.gemstone.gemfire.internal;
 
 import static org.junit.Assert.assertTrue;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import com.gemstone.gemfire.internal.GemFireVersion.VersionDescription;
+import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.test.junit.categories.UnitTest;
 
 /**
@@ -31,10 +36,6 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
 @Category(UnitTest.class)
 public class GemFireVersionJUnitTest {
 
-  /**
-   * Prints both the GemFire version info and the system properties.
-   * We have to print both 
-   */
   @Test
   public void testPrintInfo() {
     final String versionOutput = GemFireVersion.asString();
@@ -50,4 +51,17 @@ public class GemFireVersionJUnitTest {
     assertTrue(versionOutput.contains(GemFireVersion.VersionDescription.BUILD_PLATFORM));
     assertTrue(versionOutput.contains(GemFireVersion.VersionDescription.BUILD_JAVA_VERSION));
   }
+  
+  @Test
+  public void testNoFile() {
+    String noFile = "not a property file";
+    VersionDescription noVersion = new VersionDescription(noFile);
+
+    StringWriter sw = new StringWriter();
+    PrintWriter pw = new PrintWriter(sw);
+    noVersion.print(pw);
+
+    String noFileOutput = sw.toString();
+    assertTrue(noFileOutput.contains(LocalizedStrings.GemFireVersion_COULD_NOT_FIND_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_0.toLocalizedString(noFile)));
+  }
 }