/* */ package com.airhacks.ping.boundary; import com.airhacks.ping.control.JsonCollectors; import java.util.Map; import java.util.Properties; import java.util.Set; import javax.json.Json; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; import javax.naming.InitialContext; import javax.naming.NameClassPair; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; /** * * @author adam-bien.com */ @Path("pings") @Produces(MediaType.APPLICATION_JSON) public class PingsResource { @GET @Path("/echo/{echo}") public String echo(@PathParam("echo") String param) { return param; } @GET @Path("/system-properties") public JsonObject systemProperties() { Properties properties = System.getProperties(); Set<Map.Entry<Object, Object>> entries = properties.entrySet(); return entries.stream().collect(JsonCollectors.toJsonBuilder()).build(); } @GET @Path("/environment-variables") public JsonObject environmentVariables() { Map<String, String> environment = System.getenv(); return environment.entrySet().stream().collect(JsonCollectors.toJsonBuilder()).build(); } @GET @Path("/jndi/{namespace}") public JsonObject jndi(@PathParam("namespace") String namespace) throws NamingException { JsonObjectBuilder builder = Json.createObjectBuilder(); InitialContext c = new InitialContext(); NamingEnumeration<NameClassPair> list = c.list(namespace); while (list.hasMoreElements()) { NameClassPair nameClassPair = list.nextElement(); String name = nameClassPair.getName(); String type = nameClassPair.getClassName(); builder.add(name, type); } return builder.build(); } }