2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.lametrictime.internal.api.common.impl;
15 import org.eclipse.jdt.annotation.NonNullByDefault;
16 import org.openhab.binding.lametrictime.internal.api.common.impl.typeadapters.ActionTypeAdapterFactory;
17 import org.openhab.binding.lametrictime.internal.api.common.impl.typeadapters.ApplicationTypeAdapterFactory;
18 import org.openhab.binding.lametrictime.internal.api.common.impl.typeadapters.UpdateActionTypeAdapterFactory;
19 import org.openhab.binding.lametrictime.internal.api.common.impl.typeadapters.imported.JSR310TypeAdapters;
20 import org.openhab.binding.lametrictime.internal.api.common.impl.typeadapters.imported.RuntimeTypeAdapterFactory;
21 import org.openhab.binding.lametrictime.internal.api.local.dto.BooleanParameter;
22 import org.openhab.binding.lametrictime.internal.api.local.dto.IntegerParameter;
23 import org.openhab.binding.lametrictime.internal.api.local.dto.Parameter;
24 import org.openhab.binding.lametrictime.internal.api.local.dto.StringParameter;
26 import com.google.gson.FieldNamingPolicy;
27 import com.google.gson.Gson;
28 import com.google.gson.GsonBuilder;
31 * Class for json generation support.
33 * @author Gregory Moyer - Initial contribution
36 public class GsonGenerator {
37 public static Gson create() {
41 public static Gson create(boolean prettyPrint) {
42 GsonBuilder builder = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
43 .registerTypeAdapterFactory(new ApplicationTypeAdapterFactory())
44 .registerTypeAdapterFactory(new ActionTypeAdapterFactory())
45 .registerTypeAdapterFactory(new UpdateActionTypeAdapterFactory())
46 .registerTypeAdapterFactory(RuntimeTypeAdapterFactory.of(Parameter.class, "data_type")
47 .registerSubtype(BooleanParameter.class, "bool")
48 .registerSubtype(StringParameter.class, "string")
49 .registerSubtype(IntegerParameter.class, "int"));
51 // add Java 8 Time API support
52 JSR310TypeAdapters.registerJSR310TypeAdapters(builder);
55 builder.setPrettyPrinting();
58 return builder.create();
62 private GsonGenerator() {}