Created
September 29, 2018 03:54
-
-
Save kpradeep12/cf61fe3889c51d404e8d576d4a9069ee to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import j2html.tags.DomContent; | |
import org.eclipse.jetty.server.Server; | |
import org.eclipse.jetty.servlet.ServletContextHandler; | |
import org.eclipse.jetty.servlet.ServletHolder; | |
import javax.servlet.ServletException; | |
import javax.servlet.http.HttpServlet; | |
import javax.servlet.http.HttpServletRequest; | |
import javax.servlet.http.HttpServletResponse; | |
import java.io.IOException; | |
import java.lang.reflect.Member; | |
import java.util.stream.Stream; | |
import static j2html.TagCreator.*; | |
public class JavaAPI extends HttpServlet { | |
public static void main(String[] args) throws Exception { | |
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); | |
context.setContextPath("/"); | |
context.addServlet(new ServletHolder(new JavaAPI()), "/api"); | |
Server server = new Server(4000); | |
server.setHandler(context); | |
server.start(); | |
server.join(); | |
} | |
@Override | |
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { | |
String clazz = request.getParameter("class"); | |
response.setContentType("text/html"); | |
response.setStatus(HttpServletResponse.SC_OK); | |
try { | |
response.getWriter().println(content(Class.forName(clazz))); | |
} catch (ClassNotFoundException e) { | |
response.getWriter().println("Class not found: " + e.getMessage()); | |
} | |
} | |
private static String content(Class<?> clazz) { | |
return html( | |
head( | |
title(clazz.getCanonicalName()), | |
link().withRel("stylesheet").withHref("https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css") | |
), | |
body(attrs(".container"), | |
h2(attrs(".text-center"), clazz.getCanonicalName()), | |
membersList("Fields", clazz.getDeclaredFields()), | |
membersList("Constructors", clazz.getDeclaredConstructors()), | |
membersList("Methods", clazz.getDeclaredMethods()) | |
) | |
).render(); | |
} | |
private static DomContent membersList(String header, Member[] members) { | |
return div( | |
h5(header), | |
ul( | |
Stream.of(members) | |
.map(member -> li(member.toString())) | |
.toArray(DomContent[]::new) | |
) | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment