com.synopsys.integration.blackduck.http.transform.subclass.BlackDuckResponseResolver Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of blackduck-common Show documentation
Show all versions of blackduck-common Show documentation
A library for using various capabilities of Black Duck, notably the REST API and signature scanning.
/*
* 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 extends BlackDuckResponse>> 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 extends BlackDuckResponse> 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