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

com.synopsys.integration.blackduck.http.transform.subclass.BlackDuckResponseResolver Maven / Gradle / Ivy

Go to download

A library for using various capabilities of Black Duck, notably the REST API and signature scanning.

There is a newer version: 66.2.19
Show newest version
/*
 * blackduck-common
 *
 * Copyright (c) 2023 Synopsys, Inc.
 *
 * Use subject to the terms and conditions of the Synopsys End User Software License and Maintenance Agreement. All rights reserved worldwide.
 */
package com.synopsys.integration.blackduck.http.transform.subclass;

import java.util.HashMap;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.synopsys.integration.blackduck.api.core.BlackDuckResponse;
import com.synopsys.integration.blackduck.api.manual.view.NotificationUserView;
import com.synopsys.integration.blackduck.api.manual.view.NotificationView;

public class BlackDuckResponseResolver {
    private final Gson gson;
    private final Map, BlackDuckResponseSubclassResolver> subclassResolvers = new HashMap<>();

    public BlackDuckResponseResolver(Gson gson) {
        this.gson = gson;

        addSubclassResolver(NotificationView.class, new NotificationViewSubclassResolver(gson));
        addSubclassResolver(NotificationUserView.class, new NotificationUserViewSubclassResolver(gson));
    }

    public  T resolve(String json, Class clazz) {
        return resolve(gson.fromJson(json, JsonElement.class), clazz);
    }

    public  T resolve(JsonElement jsonElement, Class clazz) {
        if (subclassResolvers.containsKey(clazz)) {
            BlackDuckResponseSubclassResolver subclassResolver = subclassResolvers.get(clazz);
            Class subclass = subclassResolver.resolveSubclass(jsonElement);
            return (T) gson.fromJson(jsonElement, subclass);
        }

        return gson.fromJson(jsonElement, clazz);
    }

    private  void addSubclassResolver(Class clazz, BlackDuckResponseSubclassResolver resolver) {
        subclassResolvers.put(clazz, resolver);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy