oglimmer/lunchy

View on GitHub
src/main/java/de/oglimmer/lunchy/rest/resources/RuntimeDataResource.java

Summary

Maintainability
A
0 mins
Test Coverage
package de.oglimmer.lunchy.rest.resources;

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;

import com.google.gson.JsonObject;

import de.oglimmer.lunchy.database.connection.DBConn;
import de.oglimmer.lunchy.database.dao.UserDao;
import de.oglimmer.lunchy.email.EmailUpdatesNotifier;
import de.oglimmer.lunchy.security.SecurityProvider;
import de.oglimmer.lunchy.services.LunchyProperties;
import de.oglimmer.lunchy.services.MBeanService;

@Path("runtime")
public class RuntimeDataResource {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("dbpool")
    public String queryDB(@Context HttpServletRequest request) {
        checkRuntimePassword(request);
        return DBConn.INSTANCE.getDriverStats().toString();
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("notifications")
    public String queryNotifications(@Context HttpServletRequest request) {
        checkRuntimePassword(request);
        return EmailUpdatesNotifier.INSTANCE.toString();
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("rest")
    public String queryRest(@Context HttpServletRequest request) {
        checkRuntimePassword(request);
        JsonObject data = new JsonObject();
        MBeanService.copyAllNodes("org.glassfish.jersey:*,subType=Uris,executionTimes=*", data, "detail=");
        return data.toString();
    }

    @POST
    @Produces(MediaType.APPLICATION_JSON)
    @Path("cache")
    public void resetCaches(@Context HttpServletRequest request) {
        checkRuntimePassword(request);
        SecurityProvider.INSTANCE.reset();
        UserDao.INSTANCE.resetCache();
    }

    private void checkRuntimePassword(HttpServletRequest request) {
        String password = request.getHeader("pass");
        if (!LunchyProperties.INSTANCE.getRuntimePassword().equals(password)) {
            throw new RuntimeException("Wrong password");
        }
    }

}