Skip to content

Commit 96ac661

Browse files
committed
add wrapper to JSONObject.get() to handle null value.
1 parent f2fd91f commit 96ac661

31 files changed

+211
-103
lines changed

.github/workflows/gradle.yaml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,15 @@ jobs:
2020
- name: Checkout code
2121
uses: actions/checkout@v3
2222
- name: Set up JDK
23-
uses: actions/setup-java@v3
23+
uses: actions/setup-java@v2
2424
with:
25-
distribution: 'adopt-openj9'
26-
java-version: '11'
25+
distribution: 'adopt'
26+
java-version: '8'
2727
cache: 'gradle'
2828
- name: Unit test
2929
run: |
30-
./gradlew test jacocoTestReport
30+
./gradlew test --tests com.vmware.vipclient.i18n.messages.service.CacheServiceTest.testNotExpired --info
31+
3132
- name: Upload Codecov report
3233
uses: codecov/codecov-action@v3
3334
with:

src/main/java/com/vmware/vipclient/i18n/base/instances/DateFormatting.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
import com.vmware.vipclient.i18n.I18nFactory;
88
import com.vmware.vipclient.i18n.l2.common.PatternCategory;
9+
import com.vmware.vipclient.i18n.util.JSONUtils;
10+
911
import org.json.JSONObject;
1012

1113
import java.util.Locale;
@@ -78,7 +80,8 @@ public String formatDate(Object obj, String pattern, String timeZone, Locale loc
7880
PatternMessage p = (PatternMessage) factory.getMessageInstance(PatternMessage.class);
7981
JSONObject localeFormatData = p.getPatternMessage(locale);
8082
if(localeFormatData != null)
81-
dateFormatData = (JSONObject) localeFormatData.get(PatternCategory.DATES.toString());
83+
dateFormatData = (JSONObject) JSONUtils.getFromJSONObject(localeFormatData, PatternCategory.DATES.toString());
84+
// dateFormatData = (JSONObject) localeFormatData.get(PatternCategory.DATES.toString());
8285
if (dateFormatData == null) {
8386
throw new RuntimeException("Can't format " + obj + " without pattern data!");
8487
}
@@ -106,7 +109,8 @@ public String formatDate(Object obj, String pattern, String timeZone, String lan
106109
PatternMessage p = (PatternMessage) factory.getMessageInstance(PatternMessage.class);
107110
JSONObject localeFormatData = p.getPatternMessage(language, region);
108111
if(localeFormatData != null)
109-
dateFormatData = (JSONObject) localeFormatData.get(PatternCategory.DATES.toString());
112+
dateFormatData = (JSONObject) JSONUtils.getFromJSONObject(localeFormatData, PatternCategory.DATES.toString());
113+
// dateFormatData = (JSONObject) localeFormatData.get(PatternCategory.DATES.toString());
110114
if (dateFormatData == null) {
111115
throw new RuntimeException("Can't format " + obj + " without pattern data!");
112116
}

src/main/java/com/vmware/vipclient/i18n/base/instances/TranslationMessage.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ private String getMessageWithArgs(String resourceBundle, Locale locale, final St
130130
try {
131131
source = resourceBundle != null ? ResourceBundle.getBundle(resourceBundle).getString(key) :
132132
getMessages(Locale.forLanguageTag(ConstantsKeys.SOURCE), component, false).getMessages().get(key);
133+
System.out.println("source: " + source);
133134
}catch(Exception e){
134135
logger.error(e.getMessage());
135136
}
@@ -414,8 +415,10 @@ public boolean postStrings(final Locale locale, final String component,
414415
sourcesList.addAll(sources);
415416
List<JSONObject> removedList = new ArrayList<>();
416417
for (JSONObject jo : sourcesList) {
417-
String key = (String) jo.get(ConstantsKeys.KEY);
418-
String source = (String) jo.get(ConstantsKeys.SOURCE);
418+
String key = (String) JSONUtils.getFromJSONObject(jo, ConstantsKeys.KEY);
419+
String source = (String) JSONUtils.getFromJSONObject(jo, ConstantsKeys.SOURCE);
420+
// String key = (String) jo.get(ConstantsKeys.KEY);
421+
// String source = (String) jo.get(ConstantsKeys.SOURCE);
419422
dto.setKey(key);
420423
dto.setSource(source);
421424
dto.setLocale(ConstantsKeys.LATEST);

src/main/java/com/vmware/vipclient/i18n/formats/DateFormat.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.vmware.vipclient.i18n.exceptions.VIPJavaClientException;
1717
import com.vmware.vipclient.i18n.messages.api.url.URLUtils;
1818
import com.vmware.vipclient.i18n.util.ConstantsKeys;
19+
import com.vmware.vipclient.i18n.util.JSONUtils;
1920

2021
public class DateFormat extends BaseFormat {
2122
private Logger logger = LoggerFactory.getLogger(DateFormat.class);
@@ -54,12 +55,16 @@ private String getFormatFromRemote(String longDate, String pattern) {
5455
try {
5556
retJson = new JSONObject(retJsonStr);
5657
if (retJson != null) {
57-
JSONObject dataJson = (JSONObject) retJson
58-
.get(ConstantsKeys.DATA);
58+
JSONObject dataJson = (JSONObject) JSONUtils.getFromJSONObject(retJson, ConstantsKeys.DATA);
59+
// JSONObject dataJson = (JSONObject) retJson
60+
// .get(ConstantsKeys.DATA);
5961
if (dataJson != null) {
60-
format = dataJson.get(ConstantsKeys.FORMATTED_DATE) == null ? ""
61-
: dataJson.get(ConstantsKeys.FORMATTED_DATE)
62+
format = JSONUtils.getFromJSONObject(dataJson, ConstantsKeys.FORMATTED_DATE) == null ? ""
63+
: JSONUtils.getFromJSONObject(dataJson, ConstantsKeys.FORMATTED_DATE)
6264
.toString();
65+
// format = dataJson.get(ConstantsKeys.FORMATTED_DATE) == null ? ""
66+
// : dataJson.get(ConstantsKeys.FORMATTED_DATE)
67+
// .toString();
6368
}
6469
}
6570
} catch (JSONException e) {

src/main/java/com/vmware/vipclient/i18n/formats/NumberFormat.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.vmware.vipclient.i18n.exceptions.VIPJavaClientException;
1717
import com.vmware.vipclient.i18n.messages.api.url.URLUtils;
1818
import com.vmware.vipclient.i18n.util.ConstantsKeys;
19+
import com.vmware.vipclient.i18n.util.JSONUtils;
1920

2021
public class NumberFormat extends BaseFormat {
2122
Logger logger = LoggerFactory.getLogger(NumberFormat.class);
@@ -54,12 +55,16 @@ private String getFormatFromRemote(String number, String scale) {
5455
try {
5556
retJson = new JSONObject(retJsonStr);
5657
if (retJson != null) {
57-
JSONObject dataJson = (JSONObject) retJson
58-
.get(ConstantsKeys.DATA);
58+
JSONObject dataJson = (JSONObject) JSONUtils.getFromJSONObject(retJson, ConstantsKeys.DATA);
59+
// JSONObject dataJson = (JSONObject) retJson
60+
// .get(ConstantsKeys.DATA);
5961
if (dataJson != null) {
60-
format = dataJson.get(ConstantsKeys.FORMATTED_NUMBER) == null ? ""
61-
: dataJson.get(ConstantsKeys.FORMATTED_NUMBER)
62+
format = JSONUtils.getFromJSONObject(dataJson,ConstantsKeys.FORMATTED_NUMBER) == null ? ""
63+
: JSONUtils.getFromJSONObject(dataJson,ConstantsKeys.FORMATTED_NUMBER)
6264
.toString();
65+
// format = dataJson.get(ConstantsKeys.FORMATTED_NUMBER) == null ? ""
66+
// : dataJson.get(ConstantsKeys.FORMATTED_NUMBER)
67+
// .toString();
6368
}
6469
}
6570
} catch (JSONException e) {

src/main/java/com/vmware/vipclient/i18n/l2/number/parser/IntegerDigitsParser.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.json.JSONObject;
88

99
import com.vmware.vipclient.i18n.l2.common.PatternKeys;
10+
import com.vmware.vipclient.i18n.util.JSONUtils;
1011

1112
public class IntegerDigitsParser {
1213
private JSONObject numberSymbols;
@@ -17,7 +18,8 @@ public IntegerDigitsParser(JSONObject numberSymbols) {
1718

1819
public String groupIntegerDigits(String integerDigits, int groupingSize) {
1920
if (integerDigits.length() > groupingSize) {
20-
String localizedGroupSep = (String) numberSymbols.get(PatternKeys.GROUP);
21+
String localizedGroupSep = (String) JSONUtils.getFromJSONObject(numberSymbols, PatternKeys.GROUP);
22+
// String localizedGroupSep = (String) numberSymbols.get(PatternKeys.GROUP);
2123
String reverseNumStr = new StringBuilder(integerDigits).reverse().toString();
2224
StringBuilder groupedReverseNumStr = new StringBuilder(reverseNumStr);
2325
int index;

src/main/java/com/vmware/vipclient/i18n/l2/plural/parser/PluralRules.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.vmware.vipclient.i18n.l2.common.PatternCategory;
3030
import com.vmware.vipclient.i18n.l2.common.PatternKeys;
3131
import com.vmware.vipclient.i18n.messages.service.PatternService;
32+
import com.vmware.vipclient.i18n.util.JSONUtils;
3233

3334
public class PluralRules implements Serializable {
3435
static Logger logger = LoggerFactory.getLogger(PluralRules.class);
@@ -1247,7 +1248,8 @@ public static PluralRules forLocale(Locale locale, PluralType type) {
12471248
try {
12481249
JSONObject pluralPattern = new PatternService().getPatternsByCategory(locale.toLanguageTag(),
12491250
PatternCategory.PLURALS.toString());
1250-
pluralRules = (JSONObject) pluralPattern.get(PatternKeys.PLURALRULES);
1251+
pluralRules = (JSONObject) JSONUtils.getFromJSONObject(pluralPattern, PatternKeys.PLURALRULES);
1252+
// pluralRules = (JSONObject) pluralPattern.get(PatternKeys.PLURALRULES);
12511253
} catch (NullPointerException e) {
12521254
logger.info("Lack plural pattern!");
12531255
}

src/main/java/com/vmware/vipclient/i18n/l2/service/NumberFormatService.java

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import com.vmware.vipclient.i18n.l2.common.PatternKeys;
1212
import com.vmware.vipclient.i18n.l2.text.NumberFormat;
1313
import com.vmware.vipclient.i18n.util.ConstantsKeys;
14+
import com.vmware.vipclient.i18n.util.JSONUtils;
15+
1416
import org.json.JSONObject;
1517
import org.slf4j.Logger;
1618
import org.slf4j.LoggerFactory;
@@ -57,7 +59,8 @@ public String format(Object value, String currencyCode, Integer fractionSize, St
5759
validateCurrencyCode(currencyCode);
5860
numberFormatData = getCurrencyRelatedData(localeFormatData, currencyCode);
5961
} else {
60-
numberFormatData = (JSONObject) localeFormatData.get(PatternCategory.NUMBERS.toString());
62+
numberFormatData = (JSONObject) JSONUtils.getFromJSONObject(localeFormatData, PatternCategory.NUMBERS.toString());
63+
// numberFormatData = (JSONObject) localeFormatData.get(PatternCategory.NUMBERS.toString());
6164
}
6265
if (numberFormatData == null) {
6366
// return (String) value;
@@ -66,15 +69,19 @@ public String format(Object value, String currencyCode, Integer fractionSize, St
6669
NumberFormat numberFormat = NumberFormat.getInstance(numberFormatData, style);
6770
formatNumber = numberFormat.format(value, fractionSize);
6871
if (style == NumberFormat.PERCENTSTYLE) {
69-
String percentSymbol = (String) ((JSONObject) numberFormatData.get(PatternKeys.NUMBERSYMBOLS))
70-
.get(PatternKeys.PERCENTSIGN);
72+
String percentSymbol = (String) JSONUtils.getFromJSONObject(((JSONObject) JSONUtils.getFromJSONObject(numberFormatData, PatternKeys.NUMBERSYMBOLS))
73+
, PatternKeys.PERCENTSIGN);
74+
//String percentSymbol = (String) ((JSONObject) numberFormatData.get(PatternKeys.NUMBERSYMBOLS))
75+
// .get(PatternKeys.PERCENTSIGN);
7176
formatNumber = formatNumber.replace(String.valueOf(ConstantChars.PERCENTSIGN), percentSymbol);
7277
} else if (style == NumberFormat.CURRENCYSTYLE) {
73-
JSONObject currencyData = (JSONObject) numberFormatData.get(PatternKeys.CURRENCY);
78+
JSONObject currencyData = (JSONObject) JSONUtils.getFromJSONObject(numberFormatData, PatternKeys.CURRENCY);
79+
// JSONObject currencyData = (JSONObject) numberFormatData.get(PatternKeys.CURRENCY);
7480
// String narrowCurrencySymbol = (String) currencyData.get(PatternKeys.NARROWCURRENCYSYMBOL);
7581
// String currencySymbol = narrowCurrencySymbol != null? narrowCurrencySymbol : (String)
7682
// currencyData.get(PatternKeys.CURRENCYSYMBOL);
77-
String currencySymbol = (String) currencyData.get(PatternKeys.CURRENCYSYMBOL);
83+
String currencySymbol = (String) JSONUtils.getFromJSONObject(currencyData, PatternKeys.CURRENCYSYMBOL);
84+
// String currencySymbol = (String) currencyData.get(PatternKeys.CURRENCYSYMBOL);
7885
formatNumber = formatNumber.replace(String.valueOf(ConstantChars.CURRENCY_SIGN),
7986
currencySymbol);
8087
}
@@ -113,7 +120,8 @@ public String format(Object value, String currencyCode, Integer fractionSize, Lo
113120
}
114121
numberFormatData = getCurrencyRelatedData(localeFormatData, actualCurrencyCode);
115122
} else {
116-
numberFormatData = (JSONObject) localeFormatData.get(PatternCategory.NUMBERS.toString());
123+
numberFormatData = (JSONObject) JSONUtils.getFromJSONObject(localeFormatData, PatternCategory.NUMBERS.toString());
124+
// numberFormatData = (JSONObject) localeFormatData.get(PatternCategory.NUMBERS.toString());
117125
}
118126
if (numberFormatData == null) {
119127
// return (String) value;
@@ -122,15 +130,19 @@ public String format(Object value, String currencyCode, Integer fractionSize, Lo
122130
NumberFormat numberFormat = NumberFormat.getInstance(numberFormatData, style);
123131
formatNumber = numberFormat.format(value, fractionSize);
124132
if (style == NumberFormat.PERCENTSTYLE) {
125-
String percentSymbol = (String) ((JSONObject) numberFormatData.get(PatternKeys.NUMBERSYMBOLS))
126-
.get(PatternKeys.PERCENTSIGN);
133+
String percentSymbol = (String) JSONUtils.getFromJSONObject(((JSONObject) JSONUtils.getFromJSONObject(numberFormatData, PatternKeys.NUMBERSYMBOLS))
134+
,PatternKeys.PERCENTSIGN);
135+
// String percentSymbol = (String) ((JSONObject) numberFormatData.get(PatternKeys.NUMBERSYMBOLS))
136+
// .get(PatternKeys.PERCENTSIGN);
127137
formatNumber = formatNumber.replace(String.valueOf(ConstantChars.PERCENTSIGN), percentSymbol);
128138
} else if (style == NumberFormat.CURRENCYSTYLE) {
129-
JSONObject currencyData = (JSONObject) numberFormatData.get(PatternKeys.CURRENCY);
139+
JSONObject currencyData = (JSONObject) JSONUtils.getFromJSONObject(numberFormatData, PatternKeys.CURRENCY);
140+
// JSONObject currencyData = (JSONObject) numberFormatData.get(PatternKeys.CURRENCY);
130141
// String narrowCurrencySymbol = (String) currencyData.get(PatternKeys.NARROWCURRENCYSYMBOL);
131142
// String currencySymbol = narrowCurrencySymbol != null? narrowCurrencySymbol : (String)
132143
// currencyData.get(PatternKeys.CURRENCYSYMBOL);
133-
String currencySymbol = (String) currencyData.get(PatternKeys.CURRENCYSYMBOL);
144+
String currencySymbol = (String) JSONUtils.getFromJSONObject(currencyData, PatternKeys.CURRENCYSYMBOL);
145+
// String currencySymbol = (String) currencyData.get(PatternKeys.CURRENCYSYMBOL);
134146
formatNumber = formatNumber.replace(String.valueOf(ConstantChars.CURRENCY_SIGN),
135147
currencySymbol);
136148
}
@@ -139,17 +151,24 @@ public String format(Object value, String currencyCode, Integer fractionSize, Lo
139151

140152
private JSONObject getCurrencyRelatedData(JSONObject allCategoriesData, String currencyCode) {
141153
JSONObject currencyFormatData = new JSONObject();
142-
JSONObject numberFormatData = (JSONObject) allCategoriesData.get(PatternCategory.NUMBERS.toString());
143-
JSONObject currencyData = (JSONObject) ((JSONObject) allCategoriesData.get(PatternKeys.CURRENCIES))
144-
.get(currencyCode);
154+
JSONObject numberFormatData = (JSONObject) JSONUtils.getFromJSONObject(allCategoriesData, PatternCategory.NUMBERS.toString());
155+
JSONObject currencyData = (JSONObject) JSONUtils.getFromJSONObject(((JSONObject) JSONUtils.getFromJSONObject(allCategoriesData, PatternKeys.CURRENCIES))
156+
, currencyCode);
157+
// JSONObject numberFormatData = (JSONObject) allCategoriesData.get(PatternCategory.NUMBERS.toString());
158+
// JSONObject currencyData = (JSONObject) ((JSONObject) allCategoriesData.get(PatternKeys.CURRENCIES))
159+
// .get(currencyCode);
145160
if (currencyData == null) {
146161
throw new IllegalArgumentException("Unsupported currency code " + currencyCode + ".");
147162
}
148-
JSONObject currencySupplementalData = (JSONObject) ((JSONObject) allCategoriesData
149-
.get(PatternCategory.SUPPLEMENTAL.toString())).get(PatternKeys.CURRENCIES);
163+
JSONObject currencySupplementalData = (JSONObject) JSONUtils.getFromJSONObject(((JSONObject) JSONUtils.getFromJSONObject(allCategoriesData
164+
, PatternCategory.SUPPLEMENTAL.toString())), PatternKeys.CURRENCIES);
165+
//JSONObject currencySupplementalData = (JSONObject) ((JSONObject) allCategoriesData
166+
// .get(PatternCategory.SUPPLEMENTAL.toString())).get(PatternKeys.CURRENCIES);
150167
JSONObject fractionData = null;
151168
try {
152-
fractionData = (JSONObject) ((JSONObject) currencySupplementalData.get(PatternKeys.FRACTIONS)).get(currencyCode);
169+
fractionData = (JSONObject) JSONUtils.getFromJSONObject(((JSONObject) JSONUtils.getFromJSONObject(currencySupplementalData,
170+
PatternKeys.FRACTIONS)), currencyCode);
171+
// fractionData = (JSONObject) ((JSONObject) currencySupplementalData.get(PatternKeys.FRACTIONS)).get(currencyCode);
153172
} catch (org.json.JSONException e) {
154173
logger.info("NumberFormatService - Can't find fractionData, null will be set");
155174
}

src/main/java/com/vmware/vipclient/i18n/l2/text/DateFormat.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.vmware.vipclient.i18n.l2.common.ConstantChars;
1717
import com.vmware.vipclient.i18n.l2.common.PatternKeys;
1818
import com.vmware.vipclient.i18n.util.FormatUtils;
19+
import com.vmware.vipclient.i18n.util.JSONUtils;
1920

2021
public abstract class DateFormat {
2122
public final static int DATETIME = 0;
@@ -99,15 +100,24 @@ public static String getPattern(JSONObject formatData, String format) {
99100
}
100101
}
101102
if (!"".equals(patternStyle)) {
102-
JSONObject patternObj = (JSONObject) formatData.get(patternStyle);
103-
pattern = (String) patternObj.get(patternType);
103+
JSONObject patternObj = (JSONObject) JSONUtils.getFromJSONObject(formatData, patternStyle);
104+
pattern = (String) JSONUtils.getFromJSONObject(patternObj, patternType);
104105
if (PatternKeys.DATETIMEFORMATS.equalsIgnoreCase(patternStyle)) {
105-
String datePattern = (String) ((JSONObject) formatData.get(PatternKeys.DATEFORMATS))
106-
.get(patternType);
107-
String timePattern = (String) ((JSONObject) formatData.get(PatternKeys.TIMEFORMATS))
108-
.get(patternType);
106+
String datePattern = (String) JSONUtils.getFromJSONObject(((JSONObject) JSONUtils.getFromJSONObject(formatData, PatternKeys.DATEFORMATS))
107+
, patternType);
108+
String timePattern = (String) JSONUtils.getFromJSONObject(((JSONObject) JSONUtils.getFromJSONObject(formatData, PatternKeys.TIMEFORMATS))
109+
, patternType);
109110
pattern = FormatUtils.format(pattern, timePattern, datePattern);
110111
}
112+
// JSONObject patternObj = (JSONObject) formatData.get(patternStyle);
113+
// pattern = (String) patternObj.get(patternType);
114+
// if (PatternKeys.DATETIMEFORMATS.equalsIgnoreCase(patternStyle)) {
115+
// String datePattern = (String) ((JSONObject) formatData.get(PatternKeys.DATEFORMATS))
116+
// .get(patternType);
117+
// String timePattern = (String) ((JSONObject) formatData.get(PatternKeys.TIMEFORMATS))
118+
// .get(patternType);
119+
// pattern = FormatUtils.format(pattern, timePattern, datePattern);
120+
// }
111121
} else {
112122
pattern = format;
113123
}

0 commit comments

Comments
 (0)