]> git.basschouten.com Git - openhab-addons.git/blob
bb2ab97fd28bc48911a114f0973dfaf721ec69d9
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 /*
14  * Imported from https://github.com/google-gson/typeadapters/tree/master/jsr310/src
15  * and repackaged to avoid the default package.
16  */
17 package org.openhab.binding.lametrictime.internal.api.common.impl.typeadapters.imported;
18
19 import java.time.Duration;
20 import java.time.Instant;
21 import java.time.LocalDate;
22 import java.time.LocalDateTime;
23 import java.time.LocalTime;
24 import java.time.MonthDay;
25 import java.time.OffsetDateTime;
26 import java.time.OffsetTime;
27 import java.time.Period;
28 import java.time.Year;
29 import java.time.YearMonth;
30 import java.time.ZonedDateTime;
31
32 import org.eclipse.jdt.annotation.NonNullByDefault;
33
34 import com.google.gson.GsonBuilder;
35
36 /**
37  * Helper methods to register JSR310 type adapters.
38  *
39  * @author Christophe Bornet - Initial contribution
40  */
41 @NonNullByDefault
42 public class JSR310TypeAdapters {
43
44     private JSR310TypeAdapters() {
45     }
46
47     public static GsonBuilder registerDurationTypeAdapter(GsonBuilder gsonBuilder) {
48         return gsonBuilder.registerTypeAdapter(Duration.class, new DurationTypeAdapter());
49     }
50
51     public static GsonBuilder registerInstantTypeAdapter(GsonBuilder gsonBuilder) {
52         return gsonBuilder.registerTypeAdapter(Instant.class, new InstantTypeAdapter());
53     }
54
55     public static GsonBuilder registerLocalDateTimeTypeAdapter(GsonBuilder gsonBuilder) {
56         return gsonBuilder.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeTypeAdapter());
57     }
58
59     public static GsonBuilder registerLocalDateTypeAdapter(GsonBuilder gsonBuilder) {
60         return gsonBuilder.registerTypeAdapter(LocalDate.class, new LocalDateTypeAdapter());
61     }
62
63     public static GsonBuilder registerLocalTimeTypeAdapter(GsonBuilder gsonBuilder) {
64         return gsonBuilder.registerTypeAdapter(LocalTime.class, new LocalTimeTypeAdapter());
65     }
66
67     public static GsonBuilder registerMonthDayTypeAdapter(GsonBuilder gsonBuilder) {
68         return gsonBuilder.registerTypeAdapter(MonthDay.class, new MonthDayTypeAdapter());
69     }
70
71     public static GsonBuilder registerOffsetDateTimeTypeAdapter(GsonBuilder gsonBuilder) {
72         return gsonBuilder.registerTypeAdapter(OffsetDateTime.class, new OffsetDateTimeTypeAdapter());
73     }
74
75     public static GsonBuilder registerOffsetTimeTypeAdapter(GsonBuilder gsonBuilder) {
76         return gsonBuilder.registerTypeAdapter(OffsetTime.class, new OffsetTimeTypeAdapter());
77     }
78
79     public static GsonBuilder registerPeriodTypeAdapter(GsonBuilder gsonBuilder) {
80         return gsonBuilder.registerTypeAdapter(Period.class, new PeriodTypeAdapter());
81     }
82
83     public static GsonBuilder registerYearMonthTypeAdapter(GsonBuilder gsonBuilder) {
84         return gsonBuilder.registerTypeAdapter(YearMonth.class, new YearMonthTypeAdapter());
85     }
86
87     public static GsonBuilder registerYearTypeAdapter(GsonBuilder gsonBuilder) {
88         return gsonBuilder.registerTypeAdapter(Year.class, new YearTypeAdapter());
89     }
90
91     public static GsonBuilder registerZonedDateTimeTypeAdapter(GsonBuilder gsonBuilder) {
92         return gsonBuilder.registerTypeAdapter(ZonedDateTime.class, new ZonedDateTimeTypeAdapter());
93     }
94
95     /**
96      * Helper method to register all the available JSR310 adapters at once.
97      *
98      * @param gsonBuilder the gsonBuilder on which all the JSR310 adapters must be registered.
99      * @return the gsonBuilder with the JSR310 adapters registered.
100      */
101     public static GsonBuilder registerJSR310TypeAdapters(GsonBuilder gsonBuilder) {
102         registerDurationTypeAdapter(gsonBuilder);
103         registerInstantTypeAdapter(gsonBuilder);
104         registerLocalDateTimeTypeAdapter(gsonBuilder);
105         registerLocalDateTypeAdapter(gsonBuilder);
106         registerLocalTimeTypeAdapter(gsonBuilder);
107         registerMonthDayTypeAdapter(gsonBuilder);
108         registerOffsetDateTimeTypeAdapter(gsonBuilder);
109         registerOffsetTimeTypeAdapter(gsonBuilder);
110         registerPeriodTypeAdapter(gsonBuilder);
111         registerYearMonthTypeAdapter(gsonBuilder);
112         registerYearTypeAdapter(gsonBuilder);
113         registerZonedDateTimeTypeAdapter(gsonBuilder);
114
115         return gsonBuilder;
116     }
117 }