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)));
+ }
}