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

com.yandex.money.api.model.DigitalGoods Maven / Gradle / Ivy

Go to download

This Java library contains classes that allows you to do payments using Yandex.Money public API.

The newest version!
package com.yandex.money.api.model;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

/**
 * Digital Goods that can be obtained after payment if available.
 *
 * @see com.yandex.money.api.model.Good
 */
public class DigitalGoods {

    private final List article;
    private final List bonus;

    /**
     * Constructor.
     *
     * @param article main articles
     * @param bonus bonuses
     */
    public DigitalGoods(List article, List bonus) {
        if (article == null) {
            throw new NullPointerException("article is null");
        }
        this.article = article;
        if (bonus == null) {
            throw new NullPointerException("bonus is null");
        }
        this.bonus = bonus;
    }

    /**
     * Creates {@link com.yandex.money.api.model.DigitalGoods} from JSON.
     */
    public static DigitalGoods createFromJson(JsonElement element) {
        return buildGson().fromJson(element, DigitalGoods.class);
    }

    @Override
    public String toString() {
        return "DigitalGoods{" +
                "article=" + article +
                ", bonus=" + bonus +
                '}';
    }

    /**
     * @return not null list of articles
     */
    public List getArticle() {
        return article;
    }

    /**
     * @return not null list of bonuses
     */
    public List getBonus() {
        return bonus;
    }

    private static Gson buildGson() {
        return new GsonBuilder()
                .registerTypeAdapter(DigitalGoods.class, new Deserializer())
                .create();
    }

    private static final class Deserializer implements JsonDeserializer {
        @Override
        public DigitalGoods deserialize(JsonElement json, Type typeOfT,
                                        JsonDeserializationContext context)
                throws JsonParseException {

            JsonObject object = json.getAsJsonObject();
            return new DigitalGoods(deserializeGoods(object.getAsJsonArray("article")),
                    deserializeGoods(object.getAsJsonArray("bonus")));
        }

        private List deserializeGoods(JsonArray array) {
            List goods = new ArrayList<>();
            if (array != null) {
                for (JsonElement element : array) {
                    goods.add(Good.createFromJson(element));
                }
            }
            return goods;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy