Skip to content

Commit d9d988f

Browse files
Merge pull request #421 from ptahchiev/master
Migrate to java.time
2 parents 96308f6 + 780ec8f commit d9d988f

15 files changed

Lines changed: 75 additions & 72 deletions

build.gradle

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ apply plugin: 'jacoco'
2222
apply plugin: 'com.github.kt3k.coveralls'
2323

2424
group = 'com.google.maps'
25-
sourceCompatibility = 1.7
25+
sourceCompatibility = 1.8
2626

2727
repositories {
2828
mavenCentral()
@@ -45,18 +45,17 @@ artifacts {
4545
}
4646

4747
dependencies {
48-
compileOnly 'com.google.appengine:appengine-api-1.0-sdk:1.9.64'
49-
api 'com.squareup.okhttp3:okhttp:3.11.0'
50-
api 'joda-time:joda-time:2.10'
51-
implementation 'com.google.code.gson:gson:2.8.5'
52-
implementation 'org.slf4j:slf4j-api:1.7.25'
53-
testImplementation 'junit:junit:4.12'
54-
testImplementation 'org.mockito:mockito-core:2.21.0'
55-
testImplementation 'com.squareup.okhttp3:mockwebserver:3.11.0'
56-
testImplementation 'org.apache.httpcomponents:httpclient:4.5.6'
57-
testImplementation 'org.slf4j:slf4j-simple:1.7.25'
58-
testImplementation 'commons-lang:commons-lang:2.6'
59-
testImplementation 'org.json:json:20180813'
48+
compile 'com.google.code.gson:gson:2.8.1'
49+
compile 'com.squareup.okhttp3:okhttp:3.8.1'
50+
compileOnly 'com.google.appengine:appengine-api-1.0-sdk:1.9.54'
51+
compile 'org.slf4j:slf4j-api:1.7.25'
52+
testCompile 'junit:junit:4.12'
53+
testCompile 'org.mockito:mockito-core:1.10.19'
54+
testCompile 'com.squareup.okhttp3:mockwebserver:3.8.1'
55+
testCompile 'org.apache.httpcomponents:httpclient:4.5.3'
56+
testCompile 'org.slf4j:slf4j-simple:1.7.25'
57+
testCompile 'commons-lang:commons-lang:2.6'
58+
testCompile 'org.json:json:20170516'
6059
}
6160

6261
task updateVersion(type: Copy) {

src/main/java/com/google/maps/DirectionsApiRequest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525
import com.google.maps.model.TransitRoutingPreference;
2626
import com.google.maps.model.TravelMode;
2727
import com.google.maps.model.Unit;
28-
import org.joda.time.ReadableInstant;
28+
29+
import java.time.Instant;
2930

3031
/** Request for the Directions API. */
3132
public class DirectionsApiRequest
@@ -149,8 +150,8 @@ public DirectionsApiRequest region(String region) {
149150
* @param time The arrival time to calculate directions for.
150151
* @return Returns this {@code DirectionsApiRequest} for call chaining.
151152
*/
152-
public DirectionsApiRequest arrivalTime(ReadableInstant time) {
153-
return param("arrival_time", Long.toString(time.getMillis() / 1000L));
153+
public DirectionsApiRequest arrivalTime(Instant time) {
154+
return param("arrival_time", Long.toString(time.toEpochMilli() / 1000L));
154155
}
155156

156157
/**
@@ -161,8 +162,8 @@ public DirectionsApiRequest arrivalTime(ReadableInstant time) {
161162
* @param time The departure time to calculate directions for.
162163
* @return Returns this {@code DirectionsApiRequest} for call chaining.
163164
*/
164-
public DirectionsApiRequest departureTime(ReadableInstant time) {
165-
return param("departure_time", Long.toString(time.getMillis() / 1000L));
165+
public DirectionsApiRequest departureTime(Instant time) {
166+
return param("departure_time", Long.toString(time.toEpochMilli() / 1000L));
166167
}
167168

168169
/**

src/main/java/com/google/maps/DistanceMatrixApiRequest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import com.google.maps.model.TransitRoutingPreference;
2727
import com.google.maps.model.TravelMode;
2828
import com.google.maps.model.Unit;
29-
import org.joda.time.ReadableInstant;
29+
import java.time.Instant;
3030

3131
/** A request to the Distance Matrix API. */
3232
public class DistanceMatrixApiRequest
@@ -156,8 +156,8 @@ public DistanceMatrixApiRequest units(Unit unit) {
156156
* @param departureTime The time of departure.
157157
* @return Returns this {@code DistanceMatrixApiRequest} for call chaining.
158158
*/
159-
public DistanceMatrixApiRequest departureTime(ReadableInstant departureTime) {
160-
return param("departure_time", Long.toString(departureTime.getMillis() / 1000L));
159+
public DistanceMatrixApiRequest departureTime(Instant departureTime) {
160+
return param("departure_time", Long.toString(departureTime.toEpochMilli() / 1000L));
161161
}
162162

163163
/**
@@ -178,8 +178,8 @@ public DistanceMatrixApiRequest trafficModel(TrafficModel trafficModel) {
178178
* @param arrivalTime The preferred arrival time.
179179
* @return Returns this {@code DistanceMatrixApiRequest} for call chaining.
180180
*/
181-
public DistanceMatrixApiRequest arrivalTime(ReadableInstant arrivalTime) {
182-
return param("arrival_time", Long.toString(arrivalTime.getMillis() / 1000L));
181+
public DistanceMatrixApiRequest arrivalTime(Instant arrivalTime) {
182+
return param("arrival_time", Long.toString(arrivalTime.toEpochMilli() / 1000L));
183183
}
184184

185185
/**

src/main/java/com/google/maps/internal/DateTimeAdapter.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,21 @@
2020
import com.google.gson.stream.JsonToken;
2121
import com.google.gson.stream.JsonWriter;
2222
import java.io.IOException;
23-
import org.joda.time.DateTime;
24-
import org.joda.time.DateTimeZone;
23+
import java.time.Instant;
24+
import java.time.LocalDateTime;
25+
import java.time.ZoneId;
2526

2627
/**
27-
* This class handles conversion from JSON to {@link DateTime}s.
28+
* This class handles conversion from JSON to {@link LocalDateTime}s.
2829
*
2930
* <p>Please see <a
3031
* href="https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/TypeAdapter.html">TypeAdapter</a>
3132
* for more detail.
3233
*/
33-
public class DateTimeAdapter extends TypeAdapter<DateTime> {
34+
public class DateTimeAdapter extends TypeAdapter<LocalDateTime> {
3435

3536
/**
36-
* Read a Time object from a Directions API result and convert it to a {@link DateTime}.
37+
* Read a Time object from a Directions API result and convert it to a {@link LocalDateTime}.
3738
*
3839
* <p>We are expecting to receive something akin to the following:
3940
*
@@ -46,7 +47,7 @@ public class DateTimeAdapter extends TypeAdapter<DateTime> {
4647
* </pre>
4748
*/
4849
@Override
49-
public DateTime read(JsonReader reader) throws IOException {
50+
public LocalDateTime read(JsonReader reader) throws IOException {
5051
if (reader.peek() == JsonToken.NULL) {
5152
reader.nextNull();
5253
return null;
@@ -69,12 +70,12 @@ public DateTime read(JsonReader reader) throws IOException {
6970
}
7071
reader.endObject();
7172

72-
return new DateTime(secondsSinceEpoch * 1000, DateTimeZone.forID(timeZoneId));
73+
return LocalDateTime.ofInstant(Instant.ofEpochMilli(secondsSinceEpoch * 1000), ZoneId.of(timeZoneId));
7374
}
7475

7576
/** This method is not implemented. */
7677
@Override
77-
public void write(JsonWriter writer, DateTime value) throws IOException {
78+
public void write(JsonWriter writer, LocalDateTime value) throws IOException {
7879
throw new UnsupportedOperationException("Unimplemented method");
7980
}
8081
}

src/main/java/com/google/maps/internal/GaePendingResult.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@
4242
import com.google.maps.model.TravelMode;
4343
import java.io.IOException;
4444
import java.nio.charset.Charset;
45+
import java.time.Instant;
46+
import java.time.LocalDateTime;
47+
import java.time.LocalTime;
4548
import java.util.Arrays;
4649
import java.util.List;
4750
import java.util.concurrent.ExecutionException;
4851
import java.util.concurrent.Future;
49-
import org.joda.time.DateTime;
50-
import org.joda.time.Instant;
51-
import org.joda.time.LocalTime;
5252
import org.slf4j.Logger;
5353
import org.slf4j.LoggerFactory;
5454

@@ -166,7 +166,7 @@ private T parseResponse(GaePendingResult<T, R> request, HTTPResponse response)
166166

167167
Gson gson =
168168
new GsonBuilder()
169-
.registerTypeAdapter(DateTime.class, new DateTimeAdapter())
169+
.registerTypeAdapter(LocalDateTime.class, new DateTimeAdapter())
170170
.registerTypeAdapter(Distance.class, new DistanceAdapter())
171171
.registerTypeAdapter(Duration.class, new DurationAdapter())
172172
.registerTypeAdapter(Fare.class, new FareAdapter())

src/main/java/com/google/maps/internal/InstantAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import com.google.gson.stream.JsonToken;
2121
import com.google.gson.stream.JsonWriter;
2222
import java.io.IOException;
23-
import org.joda.time.Instant;
23+
import java.time.Instant;
2424

2525
/** This class handles conversion from JSON to {@link Instant}. */
2626
public class InstantAdapter extends TypeAdapter<Instant> {
@@ -35,7 +35,7 @@ public Instant read(JsonReader reader) throws IOException {
3535

3636
if (reader.peek() == JsonToken.NUMBER) {
3737
// Number is the number of seconds since Epoch.
38-
return new Instant(reader.nextLong() * 1000L);
38+
return Instant.ofEpochMilli(reader.nextLong() * 1000L);
3939
}
4040

4141
throw new UnsupportedOperationException("Unsupported format");

src/main/java/com/google/maps/internal/LocalTimeAdapter.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@
2020
import com.google.gson.stream.JsonToken;
2121
import com.google.gson.stream.JsonWriter;
2222
import java.io.IOException;
23-
import org.joda.time.LocalTime;
24-
import org.joda.time.format.DateTimeFormat;
25-
import org.joda.time.format.DateTimeFormatter;
23+
import java.time.LocalTime;
24+
import java.time.format.DateTimeFormatter;
2625

2726
/** This class handles conversion from JSON to {@link LocalTime}. */
2827
public class LocalTimeAdapter extends TypeAdapter<LocalTime> {
@@ -35,7 +34,7 @@ public LocalTime read(JsonReader reader) throws IOException {
3534
}
3635

3736
if (reader.peek() == JsonToken.STRING) {
38-
DateTimeFormatter dtf = DateTimeFormat.forPattern("HHmm");
37+
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HHmm");
3938
return LocalTime.parse(reader.nextString(), dtf);
4039
}
4140

src/main/java/com/google/maps/internal/OkHttpPendingResult.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@
3535
import com.google.maps.model.PriceLevel;
3636
import com.google.maps.model.TravelMode;
3737
import java.io.IOException;
38+
import java.time.Instant;
39+
import java.time.LocalDateTime;
40+
import java.time.LocalTime;
3841
import java.util.Arrays;
3942
import java.util.List;
4043
import java.util.concurrent.ArrayBlockingQueue;
@@ -45,9 +48,6 @@
4548
import okhttp3.Request;
4649
import okhttp3.Response;
4750
import okhttp3.ResponseBody;
48-
import org.joda.time.DateTime;
49-
import org.joda.time.Instant;
50-
import org.joda.time.LocalTime;
5151
import org.slf4j.Logger;
5252
import org.slf4j.LoggerFactory;
5353

@@ -240,7 +240,7 @@ private T parseResponse(OkHttpPendingResult<T, R> request, Response response)
240240

241241
Gson gson =
242242
new GsonBuilder()
243-
.registerTypeAdapter(DateTime.class, new DateTimeAdapter())
243+
.registerTypeAdapter(LocalDateTime.class, new DateTimeAdapter())
244244
.registerTypeAdapter(Distance.class, new DistanceAdapter())
245245
.registerTypeAdapter(Duration.class, new DurationAdapter())
246246
.registerTypeAdapter(Fare.class, new FareAdapter())

src/main/java/com/google/maps/model/DirectionsLeg.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package com.google.maps.model;
1717

1818
import java.io.Serializable;
19-
import org.joda.time.DateTime;
19+
import java.time.LocalDateTime;
2020

2121
/**
2222
* A component of a Directions API result.
@@ -58,13 +58,13 @@ public class DirectionsLeg implements Serializable {
5858
* The estimated time of arrival for this leg. This property is only returned for transit
5959
* directions.
6060
*/
61-
public DateTime arrivalTime;
61+
public LocalDateTime arrivalTime;
6262

6363
/**
6464
* The estimated time of departure for this leg. The departureTime is only available for transit
6565
* directions.
6666
*/
67-
public DateTime departureTime;
67+
public LocalDateTime departureTime;
6868

6969
/**
7070
* The latitude/longitude coordinates of the origin of this leg. Because the Directions API

src/main/java/com/google/maps/model/OpeningHours.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
package com.google.maps.model;
1717

1818
import java.io.Serializable;
19+
import java.time.LocalTime;
1920
import java.util.Arrays;
20-
import org.joda.time.LocalTime;
2121

2222
/**
2323
* Opening hours for a Place Details result. Please see <a

0 commit comments

Comments
 (0)