Example usage for com.google.gson GsonBuilder registerTypeAdapter

List of usage examples for com.google.gson GsonBuilder registerTypeAdapter

Introduction

In this page you can find the example usage for com.google.gson GsonBuilder registerTypeAdapter.

Prototype

@SuppressWarnings({ "unchecked", "rawtypes" })
public GsonBuilder registerTypeAdapter(Type type, Object typeAdapter) 

Source Link

Document

Configures Gson for custom serialization or deserialization.

Usage

From source file:com.belaytech.device.DO.DeviceJsonObject.java

License:Open Source License

public static <T extends DeviceJsonObject> T fromJson(final String json, Class<T> type) {
    GsonBuilder gb = new GsonBuilder();
    gb.registerTypeAdapter(Status.class, new Status.Deserializer());
    gb.registerTypeAdapter(Result.class, new Result.Deserializer());
    Gson gson = gb.create();//from  ww w  .  j a  v  a2s. c  om

    return gson.fromJson(json, type);
}

From source file:com.berniesanders.fieldthebern.dagger.MainModule.java

License:Apache License

public MainModule(Context context) {
    this.context = context.getApplicationContext();

    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.disableHtmlEscaping();/* w w  w  .  j a va2 s  .  c o  m*/
    gsonBuilder.registerTypeAdapter(ApiItem.class, new CollectionDeserializer());
    gsonBuilder.registerTypeAdapter(Content.class, new PageContentDeserializer());
    gsonBuilder.registerTypeAdapter(CanvassData.class, new CanvassDataSerializer());
    gson = gsonBuilder.create();

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
    rxPrefs = RxSharedPreferences.create(preferences);

    config = new ConfigImpl(context);
}

From source file:com.bing.maps.rest.services.impl.BaseBingMapsApiQuery.java

License:Apache License

/**
 * Gets the gson builder.//  w w  w. j a  v  a 2 s.c om
 * 
 * @return the gson builder
 */
protected GsonBuilder getGsonBuilder() {
    GsonBuilder builder = new GsonBuilder();
    builder.setDateFormat(ApplicationConstants.RFC822DATEFORMAT);
    builder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
    builder.registerTypeAdapter(LocationType.class, new JsonDeserializer<LocationType>() {
        @Override
        public LocationType deserialize(JsonElement arg0, Type arg1, JsonDeserializationContext arg2)
                throws JsonParseException {
            return LocationType.fromValue(arg0.getAsString());
        }
    });
    builder.registerTypeAdapter(AddressComponentType.class, new JsonDeserializer<AddressComponentType>() {
        @Override
        public AddressComponentType deserialize(JsonElement arg0, Type arg1, JsonDeserializationContext arg2)
                throws JsonParseException {
            return AddressComponentType.fromValue(arg0.getAsString());
        }
    });
    builder.registerTypeAdapter(TravelMode.class, new JsonDeserializer<TravelMode>() {
        @Override
        public TravelMode deserialize(JsonElement arg0, Type arg1, JsonDeserializationContext arg2)
                throws JsonParseException {
            return TravelMode.fromValue(arg0.getAsString());
        }
    });

    return builder;
}

From source file:com.birbit.jsonapi.JsonApiDeserializer.java

License:Apache License

public static GsonBuilder register(GsonBuilder builder, JsonApiResourceDeserializer... deserializers) {
    return builder.registerTypeAdapter(JsonApiResponse.class, new JsonApiDeserializer(deserializers))
            .registerTypeAdapter(JsonApiLinks.class, JsonApiLinksDeserializer.INSTANCE);
}

From source file:com.blackypaw.mc.i18n.I18NSpigotAdapter.java

License:Open Source License

private void installInterceptors() {
    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.registerTypeAdapter(ChatComponent.class, new ChatComponentDeserializer());
    Gson gson = gsonBuilder.create();/*from  w w  w . ja  va 2 s.  com*/

    ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager();
    String basePackage = "com.blackypaw.mc.i18n.interceptor.";
    MinecraftVersion version = protocolManager.getMinecraftVersion();

    if (version.getMajor() == 1) {
        // Full Version:
        if (version.getMinor() == 11) {
            basePackage += "v1_11";
        } else if (version.getMinor() == 10) {
            basePackage += "v1_10";
        } else if (version.getMinor() == 9) {
            if (version.getBuild() > 2) {
                basePackage += "v1_10";
            } else {
                basePackage += "v1_9_2";
            }
        } else if (version.getMinor() == 8) {
            basePackage += "v1_9_2";
        } else {
            basePackage = null;
        }
    } else {
        basePackage = null;
    }

    if (basePackage == null) {
        this.getLogger().log(Level.SEVERE,
                "Failed to instantiate interceptors: this build supports Minecraft versions 1.11 - 1.11; please consider upgrading to the latest version");
        return;
    }

    try {
        protocolManager.addPacketListener(this.instantiatePacketListener(protocolManager, basePackage,
                "InterceptorChat", this, gson, this.i18n));
        protocolManager.addPacketListener(this.instantiatePacketListener(protocolManager, basePackage,
                "InterceptorScoreboard", this, gson, this.i18n));
        protocolManager.addPacketListener(this.instantiatePacketListener(protocolManager, basePackage,
                "InterceptorSettings", this, gson, this.i18n));
        protocolManager.addPacketListener(this.instantiatePacketListener(protocolManager, basePackage,
                "InterceptorSign", this, gson, this.i18n));
        protocolManager.addPacketListener(this.instantiatePacketListener(protocolManager, basePackage,
                "InterceptorSlot", this, gson, this.i18n));
        protocolManager.addPacketListener(this.instantiatePacketListener(protocolManager, basePackage,
                "InterceptorTitle", this, gson, this.i18n));
    } catch (Exception e) {
        this.getLogger().log(Level.SEVERE, "Failed to instantiate interceptors", e);
    }
}

From source file:com.bosch.osmi.sw360.cvesearch.datasource.json.CveSearchJsonParser.java

License:Open Source License

public CveSearchJsonParser(Type type) {
    this.type = type;
    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.registerTypeAdapter(CveSearchData.DateTimeObject.class, new DateTimeObjectDeserializer());
    gsonBuilder.registerTypeAdapter(CveSearchData.VulnerableConfigurationEntry.class,
            new VulnerableConfigurationEntryDeserializer());
    gson = gsonBuilder.create();/*  ww w.  j a  v  a 2  s  . co  m*/
}

From source file:com.bynder.sdk.util.Utils.java

License:Open Source License

/**
 * Creates an implementation of the API endpoints defined by the service interface.
 *
 * @param <T> Class type of the API interface.
 * @param apiInterface API interface class.
 * @param baseUrl Domain URL where we want to point the API calls.
 * @param credentials Token credentials to call the API.
 * @param httpConnectionSettings Settings for the http connection to Bynder
 * @return Instance of the API interface class implementation.
 *//*from w  w  w . j  ava  2  s.co  m*/
public static <T> T createApiService(final Class<T> apiInterface, final URL baseUrl,
        final Credentials credentials, final HttpConnectionSettings httpConnectionSettings) {
    OkHttpOAuthConsumer oauthConsumer = createHttpOAuthConsumer(credentials.getConsumerKey(),
            credentials.getConsumerSecret(), credentials.getToken(), credentials.getTokenSecret());
    OkHttpClient httpClient = createHttpClient(oauthConsumer, httpConnectionSettings);

    Builder builder = new Builder();
    builder.baseUrl(baseUrl.toString());
    builder.addConverterFactory(new StringConverterFactory());
    builder.addCallAdapterFactory(RxJava2CallAdapterFactory.create());
    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.registerTypeAdapter(Boolean.class, new BooleanTypeAdapter());
    builder.addConverterFactory(GsonConverterFactory.create(gsonBuilder.create()));
    builder.client(httpClient);

    Retrofit retrofit = builder.build();

    return retrofit.create(apiInterface);
}

From source file:com.bzcentre.dapiPush.DapiReceiver.java

License:Open Source License

@Override
public Object[] invoke(Map<String, Object> request) {
    NginxClojureRT.log.info(TAG + " is invoked...");
    String chk_token;/*  w  w w . j av  a 2s. co m*/
    String user_id;
    String invitations;
    String return_code = "";
    String dummy_header = "http://www.dummy.com/dummy?"; // full url for URLEncodedUtils
    String payload;
    String provider;
    MsgCounter msgCounter = new MsgCounter();
    @SuppressWarnings("unused")
    Integer isModerator;
    String query;
    String dapiToken = newBzToken(service_seed);
    int push_status = NGX_HTTP_FORBIDDEN;

    GsonBuilder gBuilder = new GsonBuilder();
    gBuilder.registerTypeAdapter(new TypeToken<Receipient>() {
    }.getType(), new ReceipientTypeAdapter());
    Gson g = gBuilder.disableHtmlEscaping().serializeNulls().create();
    List<String[]> undeliverables = new ArrayList<>();
    Set<String> deliverables = new HashSet<>();

    String msg = "";
    errMsg = null;

    String requestMethod;

    // Supported request map constants can be find in the MiniConstants file
    requestMethod = request.get(REQUEST_METHOD).toString();
    if (requestMethod.equals(GET) && request.containsKey(QUERY_STRING)) {
        try {
            msg = dummy_header + request.get(QUERY_STRING).toString();
        } catch (NullPointerException e) {
            errMsg = "NullPointerException" + e.getMessage();
        }
    } else if (requestMethod.equals(POST)) {
        if (request.containsKey(BODY)) {
            InputStream body = (InputStream) request.get(BODY);
            BufferedReader bReader = new BufferedReader(new InputStreamReader(body));
            StringBuilder sbfFileContents = new StringBuilder();
            //read file line by line
            try {
                while ((msg = bReader.readLine()) != null) {
                    sbfFileContents.append(msg);
                }
                msg = dummy_header + sbfFileContents.toString();
            } catch (IOException e) {
                errMsg = "IOException" + e.getMessage();
            } catch (NullPointerException e) {
                errMsg = "Null Content, Error :" + e.getMessage();
            }
        } else {
            errMsg = "NO BODY";
        }
    }

    if (errMsg != null) {
        NginxClojureRT.log.info(TAG + "http parse error:" + errMsg);
        return new Object[] { NGX_HTTP_BAD_REQUEST, ArrayMap.create(CONTENT_TYPE, "text/plain"), //headers map
                "{\"method\":\"" + requestMethod + " \", \"message\":\"" + errMsg + "\"}" //response body can be string, File or Array/Collection of string or File
        };
    }
    // invitations is a base64+URLencoded string
    try {
        NginxClojureRT.log.debug(TAG + "msg get from body:\n" + msg);

        final Map<String, Object> queryMap = convertQueryStringToMap(msg);
        PushNotificationResponse<SimpleApnsPushNotification> apnsProxyResponse;
        chk_token = queryMap.get("dapiToken").toString();
        user_id = queryMap.get("user_id").toString();

        invitations = queryMap.get("invitations").toString();
        invitations = StringUtils.newStringUtf8(Base64.decodeBase64(invitations));
        NginxClojureRT.log.debug(TAG + "after base64 decode:\n" + invitations);

        if (chk_token.equals(dapiToken)) { // Hoicoi Token validation
            List<Receipient> invitees;
            NginxClojureRT.log.info(TAG + "Parsing invitees from json..." + invitations);
            invitees = g.fromJson(invitations, new TypeToken<ArrayList<Receipient>>() {
            }.getType());

            NginxClojureRT.log.info(TAG + "user " + user_id + " is sending " + invitees.size()
                    + " push token(s) to user(s) " + g.toJson(invitees.get(0).getPayload().getAcme7()));
            // receipient={"fcm_token","apns_token","payload"}
            // payload class is as APNS message payload defined, FCM needs to map to it.
            msgCounter.countdown = invitees.size();
            NginxClojureRT.log.info(TAG + "msgCounter[countdown,apns,fcm]:" + msgCounter.list());
            for (Receipient receipient : invitees) {
                return_code = "";
                payload = g.toJson(receipient.getPayload());
                //                  isModerator= receipient.getIsMdr();

                // default state sent_request, ApnsProxy will validate the result and make state update
                if (receipient.getApns_Token() != null && !receipient.getApns_Token().isEmpty()
                        && payload != null) {
                    query = "INSERT INTO `notification_push_blacklist` (`provider`,`user_id`,`to_token`) VALUES ('apns',"
                            + receipient.getPayload().getAcme8() + ",'" + receipient.getApns_Token() + "')";
                    try {
                        stmt.executeUpdate(query);
                    } catch (SQLException e) {
                        if (e.getErrorCode() != 1062) { // code 1062=duplicate entry
                            NginxClojureRT.log.info(TAG + "apns query exception near line 186: "
                                    + e.getMessage() + " when\n" + query);
                        }
                    }

                    provider = "apns";
                    switch (inBlackList(receipient.getPayload().getAcme8(), receipient.getApns_Token())) {
                    case "sent_request":
                    case "false":

                        apnsProxyResponse = apnsProxy.apnsPush(receipient.getApns_Token(), payload);

                        if (apnsProxyResponse.isAccepted()) {
                            NginxClojureRT.log.info(TAG + "Pushing notification to user "
                                    + receipient.getPayload().getAcme8() + " through APNS.");

                            MessageProcessor.pushBlackList(receipient.getApns_Token(), "whiteList", null);
                            deliverables.add(receipient.getPayload().getAcme8());
                            push_status = (push_status == NGX_HTTP_FORBIDDEN ? NGX_HTTP_NO_CONTENT
                                    : push_status); //status 204
                            return_code = "apns_pushOK";
                            msgCounter.countdown--;
                            msgCounter.apns++;
                        } else {
                            String reason = apnsProxyResponse.getRejectionReason();
                            Date timestamp = apnsProxyResponse.getTokenInvalidationTimestamp();
                            push_status = NGX_HTTP_NOT_FOUND;

                            if (reason.equals("BadDeviceToken") || reason.equals("Unregistered")) {
                                MessageProcessor.pushBlackList(receipient.getApns_Token(), reason, timestamp);
                            } else {
                                MessageProcessor.pushBlackList(receipient.getApns_Token(), "whiteList", null);
                            }

                            String[] undeliverable = { provider, receipient.getApns_Token(),
                                    receipient.getPayload().getAcme8() };
                            undeliverables.add(undeliverable);
                            msgCounter.countdown--;
                        }
                        break;
                    case "inactive":
                        push_status = NGX_HTTP_NOT_FOUND;// status 404, to indicate that the user removes the app.
                        return_code = "Unregistered";
                        String[] undeliverable = { provider, receipient.getApns_Token(),
                                receipient.getPayload().getAcme8() };
                        undeliverables.add(undeliverable);
                        msgCounter.countdown--;
                        NginxClojureRT.log.info(TAG + "Already in blacklist:" + receipient.getApns_Token());
                        break;
                    default:
                        msgCounter.countdown--;
                        return_code = "apns_blacklist_null_exception";
                        NginxClojureRT.log.info(TAG + "APNS BlackList check return null!");
                        break;
                    }
                }

                if (receipient.getFcm_Token() != null && receipient.getFcm_Token().isEmpty()
                        && payload != null) {
                    //                     Timestamp timestamp = new Timestamp(System.currentTimeMillis());
                    query = "INSERT INTO `notification_push_blacklist` (`provider`,`user_id`,`to_token`) VALUES ('fcm',"
                            + receipient.getPayload().getAcme8() + ",'" + receipient.getFcm_Token() + "')";
                    try {
                        stmt.executeUpdate(query);
                    } catch (SQLException e) {
                        if (e.getClass().getName().equals("com.mysql.jdbc.CommunicationsException")) {
                            rebuildDBConnection("stmt", query);
                        }

                        if (e.getErrorCode() != 1062) { // code 1062=duplicate entry
                            NginxClojureRT.log.info(TAG + "odbc query exception near line 223 => Code:"
                                    + e.getErrorCode() + " : " + e.getMessage() + "\n" + query);
                        }
                    }

                    provider = "fcm";
                    String responseType = inBlackList(receipient.getPayload().getAcme8(),
                            receipient.getFcm_Token());
                    switch (responseType) {
                    case "sent_request":
                    case "false":
                        msgCounter.countdown--;
                        if (fcmProxy.fcmPush(receipient.getFcm_Token(), payload)) {
                            deliverables.add(receipient.getPayload().getAcme8());
                            push_status = (push_status == NGX_HTTP_FORBIDDEN ? NGX_HTTP_NO_CONTENT
                                    : push_status); //status 204
                            return_code = "fcm_pushOK";
                            msgCounter.fcm++;
                            break;
                        } else {
                            String response = inBlackList(receipient.getPayload().getAcme8(),
                                    receipient.getFcm_Token());
                            if (!response.equals("inactive")) {
                                NginxClojureRT.log.info("TAG"
                                        + "Some thing wrong with the fcmPush. Expecting inactive but ... ->"
                                        + response);
                                break;
                            } else {
                                msgCounter.countdown++; // if is inactive, continue inactive block, so add the counter back.
                            }
                        }
                    case "inactive":
                        push_status = NGX_HTTP_NOT_FOUND;// status 404, to indicate that the user removes the app.
                        return_code = "Unregistered";
                        String[] undeliverable = { provider, receipient.getFcm_Token(),
                                receipient.getPayload().getAcme8() };
                        undeliverables.add(undeliverable);
                        msgCounter.countdown--;
                        if (responseType.equals("inactive"))
                            NginxClojureRT.log.info(TAG + "Already in blacklist:" + receipient.getFcm_Token());
                        break;
                    default:
                        msgCounter.countdown--;
                        return_code = "fcm_blacklist_null_exception";
                        NginxClojureRT.log.info(TAG + "FCM BlackList nullException!");
                        break;
                    }
                }
                NginxClojureRT.log.info(TAG + "msgCounter[countdown,apns,fcm]:" + msgCounter.list());
                if (msgCounter.countdown == 0) {
                    NginxClojureRT.log.info(TAG + "There are " + (msgCounter.apns + msgCounter.fcm)
                            + " notification(s) ha(s)(ve) been successfully pushed to user(s) "
                            + g.toJson(deliverables) + " for => "
                            + invitees.get(0).getPayload().getAps().getAlert().getBody());
                    return wrapupPushResult(receipient.getPayload().getAcme8(), push_status, return_code,
                            deliverables, msgCounter, undeliverables);
                }
            }
        } else {
            return_code = "InvalidToken";
            errMsg = "HoiCoi Token is not valid<br>" + chk_token + "<br>" + dapiToken;
        }
    } catch (IllegalArgumentException | JsonParseException | IllegalStateException | NullPointerException
            | ClassCastException | URISyntaxException e) {
        return_code = e.getClass().getName();
        errMsg = e.getMessage();
        e.printStackTrace();
    }

    return new Object[] { NGX_HTTP_FORBIDDEN, ArrayMap.create(CONTENT_TYPE, "text/plain"), //headers map
            "{\"code\":\"" + (return_code.isEmpty() ? "future_not_response" : return_code)
                    + "\", \"message\":\"Should return from the Future response.\"}" //response body can be string, File or Array/Collection of string or File
    };
}

From source file:com.caris.oscarexchange4j.util.OXUtil.java

License:Apache License

/**
 * Returns a com.google.gson.Gson object for writing JSON
 * //w w  w  .j av  a  2  s.  c  o m
 */
public static Gson createGsonBuilder(boolean prettyPrinting) {
    GsonBuilder g = new GsonBuilder();
    g.registerTypeAdapter(Theme.class, new ThemeSerializer());
    if (prettyPrinting) {
        g.setPrettyPrinting();
    }
    return g.create();
}

From source file:com.ccc.crest.core.cache.crest.alliance.AllianceCollection.java

License:Open Source License

public static Future<EveData> getFuture(int page) throws Exception {
    GsonBuilder gson = new GsonBuilder();
    gson.registerTypeAdapter(AllianceCollection.class, new AllianceCollection());
    //@formatter:off
    CrestRequestData rdata = new CrestRequestData(null, getUrl(page), gson.create(), null,
            AllianceCollection.class, PagingCallback, ReadScope, getVersion(VersionType.Get), continueRefresh,
            false);//ww w . j a  v a 2s .  co  m
    //@formatter:on
    return CrestController.getCrestController().crestClient.getCrest(rdata);
}