package io.github.ibuildthecloud.gdapi.request.handler; import io.github.ibuildthecloud.gdapi.context.ApiContext; import io.github.ibuildthecloud.gdapi.factory.SchemaFactory; import io.github.ibuildthecloud.gdapi.model.Schema; import io.github.ibuildthecloud.gdapi.model.Schema.Method; import io.github.ibuildthecloud.gdapi.model.impl.VersionImpl; import io.github.ibuildthecloud.gdapi.request.ApiRequest; import io.github.ibuildthecloud.gdapi.url.UrlBuilder; import java.io.IOException; import java.net.URL; import java.util.Map; import java.util.TreeMap; public class VersionHandler extends AbstractResponseGenerator { @Override protected void generate(ApiRequest request) throws IOException { if (request.getType() == null && request.getVersion() != null) { UrlBuilder urlBuilder = ApiContext.getUrlBuilder(); SchemaFactory schemaFactory = ApiContext.getSchemaFactory(); VersionImpl version = new VersionImpl(request.getVersion()); Map<String, URL> links = new TreeMap<String, URL>(); version.setLinks(links); links.put(UrlBuilder.SELF, urlBuilder.current()); for (Schema schema : schemaFactory.listSchemas()) { if (!schema.getCollectionMethods().contains(Method.GET.toString())) { continue; } URL link = urlBuilder.resourceCollection(schema.getId()); if (link != null) { links.put(schema.getPluralName(), link); } } request.setResponseObject(version); } } }