Skip to content

Commit c559894

Browse files
author
Johannes Thoenes
committed
Adding optional support for joda-time's DateTime class
- we check, if JavaTime is available in class path - if it is, we handle it exactly like java.util.Date
1 parent b060795 commit c559894

File tree

3 files changed

+65
-8
lines changed

3 files changed

+65
-8
lines changed

typescript-generator-core/pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,13 @@
7373
<artifactId>swagger-annotations</artifactId>
7474
<version>1.5.10</version>
7575
<scope>test</scope>
76-
</dependency>
76+
</dependency>
77+
<dependency>
78+
<groupId>joda-time</groupId>
79+
<artifactId>joda-time</artifactId>
80+
<version>2.9.7</version>
81+
<scope>test</scope>
82+
</dependency>
7783
</dependencies>
7884

7985
<build>

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/DefaultTypeProcessor.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,14 @@ private static Map<Type, TsType> getKnownTypes() {
120120
knownTypes.put(BigInteger.class, TsType.Number);
121121
knownTypes.put(Date.class, TsType.Date);
122122
knownTypes.put(UUID.class, TsType.String);
123+
124+
// joda time (if present)
125+
try {
126+
final Class<?> jodaTimeClass = Class.forName("org.joda.time.DateTime");
127+
knownTypes.put(jodaTimeClass, TsType.Date);
128+
} catch (ClassNotFoundException e) {
129+
// ignore if joda time is not present
130+
}
123131
return knownTypes;
124132
}
125133

typescript-generator-core/src/test/java/cz/habarta/typescript/generator/DateTest.java

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,49 @@
11

22
package cz.habarta.typescript.generator;
33

4-
import java.io.*;
54
import java.util.*;
5+
6+
import org.joda.time.DateTime;
67
import org.junit.*;
78

89

910
public class DateTest {
1011

1112
@Test
12-
public void testDate() {
13-
final String dts = new TypeScriptGenerator(settings(DateMapping.asDate, "AsDate")).generateTypeScript(Input.from(Dates.class));
13+
public void testDate_forJavaUtilDate() {
14+
final String dts = new TypeScriptGenerator(settings(DateMapping.asDate, "AsDate"))
15+
.generateTypeScript(Input.from(Dates.class));
1416
Assert.assertTrue(dts.contains("date: Date;"));
1517
Assert.assertTrue(dts.contains("dateList: Date[];"));
1618
Assert.assertTrue(dts.contains("datesMap: { [index: string]: Date[] };"));
1719
Assert.assertTrue(dts.contains("dates: Date[];"));
1820
}
1921

2022
@Test
21-
public void testDateAsNumber() {
22-
final String dts = new TypeScriptGenerator(settings(DateMapping.asNumber, "AsNumber")).generateTypeScript(Input.from(Dates.class));
23+
public void testDate_forJodaDateTime() {
24+
final String dts = new TypeScriptGenerator(settings(DateMapping.asDate, "AsDate"))
25+
.generateTypeScript(Input.from(JodaDates.class));
26+
Assert.assertTrue(dts.contains("date: Date;"));
27+
Assert.assertTrue(dts.contains("dateList: Date[];"));
28+
Assert.assertTrue(dts.contains("datesMap: { [index: string]: Date[] };"));
29+
Assert.assertTrue(dts.contains("dates: Date[];"));
30+
}
31+
32+
@Test
33+
public void testDateAsNumber_forJavaUtilDate() {
34+
final String dts = new TypeScriptGenerator(settings(DateMapping.asNumber, "AsNumber"))
35+
.generateTypeScript(Input.from(Dates.class));
36+
Assert.assertTrue(dts.contains("date: DateAsNumber;"));
37+
Assert.assertTrue(dts.contains("dateList: DateAsNumber[];"));
38+
Assert.assertTrue(dts.contains("datesMap: { [index: string]: DateAsNumber[] };"));
39+
Assert.assertTrue(dts.contains("dates: DateAsNumber[];"));
40+
Assert.assertTrue(dts.contains("type DateAsNumber = number;"));
41+
}
42+
43+
@Test
44+
public void testDateAsNumber_forJodaDateTime() {
45+
final String dts = new TypeScriptGenerator(settings(DateMapping.asNumber, "AsNumber"))
46+
.generateTypeScript(Input.from(JodaDates.class));
2347
Assert.assertTrue(dts.contains("date: DateAsNumber;"));
2448
Assert.assertTrue(dts.contains("dateList: DateAsNumber[];"));
2549
Assert.assertTrue(dts.contains("datesMap: { [index: string]: DateAsNumber[] };"));
@@ -28,8 +52,20 @@ public void testDateAsNumber() {
2852
}
2953

3054
@Test
31-
public void testDateAsString() {
32-
final String dts = new TypeScriptGenerator(settings(DateMapping.asString, "AsString")).generateTypeScript(Input.from(Dates.class));
55+
public void testDateAsString_forJavaUtilDate() {
56+
final String dts = new TypeScriptGenerator(settings(DateMapping.asString, "AsString"))
57+
.generateTypeScript(Input.from(Dates.class));
58+
Assert.assertTrue(dts.contains("date: DateAsString;"));
59+
Assert.assertTrue(dts.contains("dateList: DateAsString[];"));
60+
Assert.assertTrue(dts.contains("datesMap: { [index: string]: DateAsString[] };"));
61+
Assert.assertTrue(dts.contains("dates: DateAsString[];"));
62+
Assert.assertTrue(dts.contains("type DateAsString = string;"));
63+
}
64+
65+
@Test
66+
public void testDateAsString_forJodaDateTime() {
67+
final String dts = new TypeScriptGenerator(settings(DateMapping.asString, "AsString"))
68+
.generateTypeScript(Input.from(JodaDates.class));
3369
Assert.assertTrue(dts.contains("date: DateAsString;"));
3470
Assert.assertTrue(dts.contains("dateList: DateAsString[];"));
3571
Assert.assertTrue(dts.contains("datesMap: { [index: string]: DateAsString[] };"));
@@ -52,3 +88,10 @@ class Dates {
5288
public Map<String, List<Date>> datesMap;
5389
public Date[] dates;
5490
}
91+
92+
class JodaDates {
93+
public DateTime date;
94+
public List<DateTime> dateList;
95+
public Map<String, List<DateTime>> datesMap;
96+
public DateTime[] dates;
97+
}

0 commit comments

Comments
 (0)