org.ossmeter.platform.client.api.AbstractApiResource.java Source code

Java tutorial

Introduction

Here is the source code for org.ossmeter.platform.client.api.AbstractApiResource.java

Source

/*******************************************************************************
 * Copyright (c) 2014 OSSMETER Partners.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    James Williams - Implementation.
 *******************************************************************************/
package org.ossmeter.platform.client.api;

import java.net.UnknownHostException;

import org.ossmeter.platform.Configuration;
import org.ossmeter.platform.Platform;
import org.restlet.data.Status;
import org.restlet.engine.header.Header;
import org.restlet.representation.Representation;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
import org.restlet.util.Series;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.mongodb.Mongo;

public abstract class AbstractApiResource extends ServerResource {

    protected Platform platform;
    protected ObjectMapper mapper;

    abstract public Representation doRepresent();

    @Get("json")
    public final Representation represent() {
        Series<Header> responseHeaders = (Series<Header>) getResponse().getAttributes()
                .get("org.restlet.http.headers");
        if (responseHeaders == null) {
            responseHeaders = new Series(Header.class);
            getResponse().getAttributes().put("org.restlet.http.headers", responseHeaders);
        }
        responseHeaders.add(new Header("Access-Control-Allow-Origin", "*"));
        responseHeaders.add(new Header("Access-Control-Allow-Methods", "GET"));

        mapper = new ObjectMapper();

        Mongo mongo;
        try {
            mongo = Configuration.getInstance().getMongoConnection();
        } catch (UnknownHostException e1) {
            e1.printStackTrace();
            getResponse().setStatus(Status.SERVER_ERROR_INTERNAL);
            return Util.generateErrorMessageRepresentation(generateRequestJson(mapper, null),
                    "The API was unable to connect to the database.");
        }
        platform = new Platform(mongo);

        // Delegate to resource
        Representation rep = doRepresent();

        mongo.close();
        return rep;
    }

    protected JsonNode generateRequestJson(ObjectMapper mapper, String projectName) {
        ObjectNode n = mapper.createObjectNode();
        n.put("project", projectName);
        return n;
    }
}