All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.dangernoodle.github.utils.GithubGsonTransformer Maven / Gradle / Ivy

package io.dangernoodle.github.utils;

import com.google.gson.FieldNamingPolicy;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializer;

import io.dangernoodle.github.repo.setup.settings.GithubRepositorySettingsStore;
import io.dangernoodle.github.repo.setup.settings.GithubRepositorySettings;
import io.dangernoodle.scm.setup.RepositorySettings;
import io.dangernoodle.utils.GsonTransformer;


public class GithubGsonTransformer extends GsonTransformer
{
    @Override
    protected GsonBuilder createGsonBuilder()
    {
        return new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.IDENTITY)
                                .registerTypeAdapter(RepositorySettings.class, deserializeSettings())
                                .registerTypeAdapter(GithubRepositorySettings.Color.class, deserializeColor());

    }

    private JsonDeserializer deserializeColor()
    {
        return (json, typeOfT, context) -> GithubRepositorySettings.Color.from(json.getAsString());
    }

    private JsonDeserializer deserializeSettings()
    {
        return (json, typeOfT, context) -> {
            return context.deserialize(json.getAsJsonObject(), GithubRepositorySettingsStore.class);
        };
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy