package io.github.ibuildthecloud.gdapi.response;
import io.github.ibuildthecloud.gdapi.model.Collection;
import io.github.ibuildthecloud.gdapi.model.Resource;
import io.github.ibuildthecloud.gdapi.request.ApiRequest;
import io.github.ibuildthecloud.gdapi.request.handler.AbstractApiRequestHandler;
import io.github.ibuildthecloud.gdapi.request.resource.ResourceManager;
import io.github.ibuildthecloud.gdapi.request.resource.ResourceManagerLocator;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.inject.Inject;
public class ResponseObjectConverter extends AbstractApiRequestHandler {
ResourceManagerLocator resourceManagerLocator;
@Override
public void handle(ApiRequest request) throws IOException {
Object response = request.getResponseObject();
if (response == null)
return;
if (response instanceof Resource || response instanceof Collection || response instanceof InputStream) {
return;
}
ResourceManager resourceManager = resourceManagerLocator.getResourceManager(request);
if (resourceManager == null)
return;
if (response instanceof List) {
response = resourceManager.convertResponse((List<?>)response, request);
} else {
response = resourceManager.convertResponse(response, request);
}
request.setResponseObject(response);
}
public ResourceManagerLocator getResourceManagerLocator() {
return resourceManagerLocator;
}
@Inject
public void setResourceManagerLocator(ResourceManagerLocator resourceManagerLocator) {
this.resourceManagerLocator = resourceManagerLocator;
}
}