Example usage for com.google.gson.typeadapters RuntimeTypeAdapterFactory registerSubtype

List of usage examples for com.google.gson.typeadapters RuntimeTypeAdapterFactory registerSubtype

Introduction

In this page you can find the example usage for com.google.gson.typeadapters RuntimeTypeAdapterFactory registerSubtype.

Prototype

public RuntimeTypeAdapterFactory<T> registerSubtype(Class<? extends T> type) 

Source Link

Document

Registers type identified by its Class#getSimpleName simple name .

Usage

From source file:com.quadbits.gdxhelper.scenemodel.LWPSceneModelManager.java

License:Apache License

protected Gson getGson() {
    if (gson != null) {
        return gson;
    }//from w w w.j ava2 s.  c om

    // AssetsScale types
    RuntimeTypeAdapterFactory<AssetsScaleBaseModel> assetsScaleTypeFactory = RuntimeTypeAdapterFactory
            .of(AssetsScaleBaseModel.class, "type");
    for (Class<? extends AssetsScaleBaseModel> modelSubtype : gsonAssetsScaleBaseModelSubtypes) {
        assetsScaleTypeFactory.registerSubtype(modelSubtype);
    }

    // Actor types
    RuntimeTypeAdapterFactory<ActorModel> actorTypeFactory = RuntimeTypeAdapterFactory.of(ActorModel.class,
            "type");
    for (Class<? extends ActorModel> modelSubtype : gsonActorModelSubtypes) {
        actorTypeFactory.registerSubtype(modelSubtype);
    }

    // Controller types
    RuntimeTypeAdapterFactory<ControllerModel> controllerTypeFactory = RuntimeTypeAdapterFactory
            .of(ControllerModel.class, "type");
    for (Class<? extends ControllerModel> modelSubtype : gsonControllerModelSubtypes) {
        controllerTypeFactory.registerSubtype(modelSubtype);
    }

    // Create gson
    gson = new GsonBuilder().registerTypeAdapterFactory(assetsScaleTypeFactory)
            .registerTypeAdapterFactory(actorTypeFactory).registerTypeAdapterFactory(controllerTypeFactory)
            .setPrettyPrinting().create();

    return gson;
}