Skip to content
Snippets Groups Projects
  • Eike Cochu's avatar
    0c74b57f
    added versioning · 0c74b57f
    Eike Cochu authored
    added maven buildnumber versioning
    added version properties file and reader
    updated info resource to return app information
    0c74b57f
    History
    added versioning
    Eike Cochu authored
    added maven buildnumber versioning
    added version properties file and reader
    updated info resource to return app information
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
InfoResource.java 1.71 KiB
package de.vipra.rest.resource;

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;

import de.vipra.rest.model.Wrapper;
import de.vipra.util.BuildInfo;
import de.vipra.util.NestedMap;
import de.vipra.util.StringUtils;

@Path("info")
public class InfoResource {

	@Context
	UriInfo uri;

	private static final NestedMap info = new NestedMap();

	static {
		try {
			RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean();
			Runtime rt = Runtime.getRuntime();
			BuildInfo buildInfo = new BuildInfo();

			// vm info
			info.put("vm.starttime", rb.getStartTime());
			info.put("vm.uptime", rb.getUptime());
			info.put("vm.args", StringUtils.join(rb.getInputArguments()));
			info.put("vm.java.vendor", System.getProperty("java.vendor"));
			info.put("vm.java.version", System.getProperty("java.version"));

			// host info
			info.put("host.cores", rt.availableProcessors());
			info.put("host.memory", rt.maxMemory());
			info.put("host.os.name", System.getProperty("os.name"));
			info.put("host.os.arch", System.getProperty("os.arch"));
			info.put("host.os.version", System.getProperty("os.version"));

			// app info
			info.put("app.gitsha1", buildInfo.getGitSHA1());
			info.put("app.version", buildInfo.getVersion());
			info.put("app.builddate", buildInfo.getBuildDate());
		} catch (Exception e) {
			info.put("error", e.getMessage());
		}
	}

	@GET
	@Produces(MediaType.APPLICATION_JSON)
	public Response getInfo() {
		Wrapper<NestedMap> res = new Wrapper<>();
		return res.ok(info);
	}
}