ICU-20536 Japanese era Reiwa support in ICU4J 53
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/JapaneseCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/JapaneseCalendar.java
index a66ba0d..b2257cf 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/JapaneseCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/JapaneseCalendar.java
@@ -560,6 +560,7 @@
         1912,    7, 30,     // Taisho
         1926,   12, 25,     // Showa
         1989,    1,  8,     // Heisei
+        2019,    5,  1,     // Reiwa
     };
 
     //-------------------------------------------------------------------------
@@ -576,25 +577,25 @@
      * Constant for the era starting on Sept. 8, 1868 AD.
      * @stable  ICU 2.8 
      */
-    static public final int MEIJI = CURRENT_ERA - 3;
+    static public final int MEIJI = CURRENT_ERA - 4;
 
     /** 
      * Constant for the era starting on July 30, 1912 AD. 
      * @stable ICU 2.8 
      */
-    static public final int TAISHO = CURRENT_ERA - 2;
+    static public final int TAISHO = CURRENT_ERA - 3;
     
     /** 
      * Constant for the era starting on Dec. 25, 1926 AD. 
      * @stable ICU 2.8 
      */
-    static public final int SHOWA = CURRENT_ERA - 1;
+    static public final int SHOWA = CURRENT_ERA - 2;
 
     /** 
      * Constant for the era starting on Jan. 7, 1989 AD. 
      * @stable ICU 2.8 
      */
-    static public final int HEISEI = CURRENT_ERA;
+    static public final int HEISEI = CURRENT_ERA - 1;
 
     /**
      * Override GregorianCalendar.  We should really handle YEAR_WOY and
diff --git a/icu4j/main/shared/data/icudata.jar b/icu4j/main/shared/data/icudata.jar
index 66ae802..0aace31 100755
--- a/icu4j/main/shared/data/icudata.jar
+++ b/icu4j/main/shared/data/icudata.jar
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:7e28ec897adf45879e984e846f7434f35156c24851e6e570709dc14d88bdd89a
-size 10158705
+oid sha256:9cb378e2459f851b64b900b49afbc32302813c596ab65f841f3f93d58be58f7e
+size 10158846
diff --git a/icu4j/main/shared/data/testdata.jar b/icu4j/main/shared/data/testdata.jar
index 2139d9a..faf962b 100755
--- a/icu4j/main/shared/data/testdata.jar
+++ b/icu4j/main/shared/data/testdata.jar
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:132762b7f41c03ded7d8d115d461e72a34806bc0bff62cfde3111acbfda8159b
-size 719353
+oid sha256:9eb5e370346e1f4c36d1e20d89e7cb228aa30c2372d4051ad143653e79cade40
+size 719320
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
index cca9cdf..cc512a4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
@@ -148,9 +148,9 @@
         Calendar cal = new JapaneseCalendar(loc);
         DateFormat enjformat = cal.getDateTimeFormat(0,0,new ULocale("en_JP@calendar=japanese"));
         DateFormat format = cal.getDateTimeFormat(0,0,loc);
-        ((SimpleDateFormat)format).applyPattern("y.M.d");  // Note: just 'y' doesn't work here.
+        ((SimpleDateFormat)format).applyPattern("y/M/d");  // Note: just 'y' doesn't work here.
         ParsePosition pos = new ParsePosition(0);
-        Date aDate = format.parse("1.1.9", pos); // after the start of heisei accession.  Jan 1, 1H wouldn't work  because it is actually showa 64
+        Date aDate = format.parse("1/5/9", pos); // after the start of Reiwa accession.  Jan 1, R1 wouldn't work  because it is actually Heisei 31
         String inEn = enjformat.format(aDate);
 
         cal.clear();
@@ -159,7 +159,7 @@
         int gotEra = cal.get(Calendar.ERA);
         
         int expectYear = 1;
-        int expectEra = JapaneseCalendar.CURRENT_ERA;
+        int expectEra = JapaneseCalendar.CURRENT_ERA;   // Reiwa
         
         if((gotYear != expectYear) || (gotEra != expectEra)) {
             errln("Expected year " + expectYear + ", era " + expectEra +", but got year " + gotYear + " and era " + gotEra + ", == " + inEn);
@@ -167,7 +167,7 @@
             logln("Got year " + gotYear + " and era " + gotEra + ", == " + inEn);
         }
 
-        // Test parse with missing era (should default to current era, heisei)
+        // Test parse with missing era (should default to current era)
         // Test parse with incomplete information
         logln("Testing parse w/ just year...");
         Calendar cal2 = new JapaneseCalendar(loc);
@@ -191,7 +191,7 @@
         gotYear = cal2.get(Calendar.YEAR);
         gotEra = cal2.get(Calendar.ERA);
         expectYear = 1;
-        expectEra = JapaneseCalendar.CURRENT_ERA;
+        expectEra = JapaneseCalendar.CURRENT_ERA;   // Reiwa
         if((gotYear != 1) || (gotEra != expectEra)) {
             errln("parse "+ samplestr + " of 'y' as Japanese Calendar, expected year " + expectYear + 
                 " and era " + expectEra + ", but got year " + gotYear + " and era " + gotEra + " (Gregorian:" + str +")");
@@ -370,5 +370,30 @@
         doLimitsTest(jcal, null, cal.getTime());
         doTheoreticalLimitsTest(jcal, true);
     }
+
+    public void TestHeiseiToReiwa() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2019, Calendar.APRIL, 29);
+
+        DateFormat jfmt = DateFormat.getDateInstance(DateFormat.LONG, new ULocale("ja@calendar=japanese"));
+
+        final String[] EXPECTED_FORMAT = {
+                "\u5E73\u621031\u5E744\u670829\u65E5",  // Heisei 31 April 29
+                "\u5E73\u621031\u5E744\u670830\u65E5",  // Heisei 31 April 30
+                "\u4EE4\u548C1\u5E745\u67081\u65E5",    // Reiwa 1 May 1
+                "\u4EE4\u548C1\u5E745\u67082\u65E5",    // Reiwa 1 May 2
+        };
+
+        for (int i = 0; i < EXPECTED_FORMAT.length; i++) {
+            Date d = cal.getTime();
+            String dateStr = jfmt.format(d);
+            if (!EXPECTED_FORMAT[i].equals(dateStr)) {
+                errln("Formatting year:" + cal.get(Calendar.YEAR) + " month:" + (cal.get(Calendar.MONTH) + 1)
+                        + " day:" + cal.get(Calendar.DATE) + " - expected: " + EXPECTED_FORMAT[i]
+                        + " / actual: " + dateStr);
+            }
+            cal.add(Calendar.DATE, 1);
+        }
+    }
 }
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
index 920e1d0..f7ff26e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
@@ -1,4 +1,4 @@
-/** Copyright (C) 2007-2014, International Business Machines Corporation and Others. All Rights Reserved. **/
+/** Copyright (C) 2007-2019, International Business Machines Corporation and Others. All Rights Reserved. **/
 
 /* NOTE: this file is AUTOMATICALLY GENERATED by gentest.
  * See: {ICU4C}/source/data/icu4j-readme.txt for more information.