Author: tveronezi
Date: Mon Jun 11 20:49:45 2012
New Revision: 1349003

URL: http://svn.apache.org/viewvc?rev=1349003&view=rev
Log:
https://issues.apache.org/jira/browse/TOMEE-224
* load class/ejb info
* add "pretty json" option

Modified:
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/ErrorServlet.java
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/JsonExecutor.java
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ConsoleServlet.java
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.java
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/JndiServlet.java
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogServlet.java
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogoutServlet.java
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/SessionDataServlet.java
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/SystemInfoServlet.java

Modified: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/ErrorServlet.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/ErrorServlet.java?rev=1349003&r1=1349002&r2=1349003&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/ErrorServlet.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/ErrorServlet.java
 Mon Jun 11 20:49:45 2012
@@ -18,6 +18,7 @@
 package org.apache.tomee.webapp;
 
 import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
@@ -62,6 +63,13 @@ public class ErrorServlet extends HttpSe
 
         resp.setContentType("text/plain");
         resp.setCharacterEncoding("UTF-8");
-        resp.getWriter().write(new Gson().toJson(result));
+
+        final Gson gson;
+        if(Boolean.valueOf(req.getParameter("pretty"))) {
+            gson = new GsonBuilder().setPrettyPrinting().create();
+        } else {
+            gson = new Gson();
+        }
+        resp.getWriter().write(gson.toJson(result));
     }
 }

Modified: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/JsonExecutor.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/JsonExecutor.java?rev=1349003&r1=1349002&r2=1349003&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/JsonExecutor.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/JsonExecutor.java
 Mon Jun 11 20:49:45 2012
@@ -18,7 +18,9 @@
 package org.apache.tomee.webapp;
 
 import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.HashMap;
 import java.util.Map;
@@ -33,7 +35,7 @@ public class JsonExecutor {
         void call(Map<String, Object> json) throws Exception;
     }
 
-    public static void execute(final HttpServletResponse resp, final Executor 
executor) {
+    public static void execute(final HttpServletRequest req, final 
HttpServletResponse resp, final Executor executor) {
         try {
             final Map<String, Object> result = new HashMap<String, Object>();
 
@@ -41,7 +43,14 @@ public class JsonExecutor {
 
             resp.setContentType("application/json");
             resp.setCharacterEncoding("UTF-8");
-            resp.getWriter().write(new Gson().toJson(result));
+
+            final Gson gson;
+            if(Boolean.valueOf(req.getParameter("pretty"))) {
+                gson = new GsonBuilder().setPrettyPrinting().create();
+            } else {
+                gson = new Gson();
+            }
+            resp.getWriter().write(gson.toJson(result));
 
         } catch (Exception e) {
             //this will redirect the result to the ErrorServlet

Modified: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ConsoleServlet.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ConsoleServlet.java?rev=1349003&r1=1349002&r2=1349003&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ConsoleServlet.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ConsoleServlet.java
 Mon Jun 11 20:49:45 2012
@@ -36,7 +36,7 @@ public class ConsoleServlet extends Http
 
     @Override
     protected void doPost(final HttpServletRequest req, final 
HttpServletResponse resp) throws ServletException, IOException {
-        JsonExecutor.execute(resp, new JsonExecutor.Executor() {
+        JsonExecutor.execute(req, resp, new JsonExecutor.Executor() {
             @Override
             public void call(Map<String, Object> json) throws Exception {
                 final String scriptCode = req.getParameter("scriptCode");

Modified: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java?rev=1349003&r1=1349002&r2=1349003&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java
 Mon Jun 11 20:49:45 2012
@@ -44,7 +44,7 @@ public class DeployServlet extends HttpS
 
     @Override
     protected void doPost(final HttpServletRequest req, final 
HttpServletResponse resp) throws ServletException, IOException {
-        JsonExecutor.execute(resp, new JsonExecutor.Executor() {
+        JsonExecutor.execute(req, resp, new JsonExecutor.Executor() {
             @Override
             public void call(Map<String, Object> json) throws Exception {
                 final AppInfo info = deployer.deploy(req.getParameter("path"));

Modified: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.java?rev=1349003&r1=1349002&r2=1349003&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.java
 Mon Jun 11 20:49:45 2012
@@ -33,7 +33,7 @@ public class FileUploadServlet extends H
 
     @Override
     protected void doPost(final HttpServletRequest req, final 
HttpServletResponse resp) throws ServletException, IOException {
-        JsonExecutor.execute(resp, new JsonExecutor.Executor() {
+        JsonExecutor.execute(req, resp, new JsonExecutor.Executor() {
             @Override
             public void call(Map<String, Object> json) throws Exception {
                 final File tempDir = (File) 
getServletContext().getAttribute("javax.servlet.context.tempdir");

Modified: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/JndiServlet.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/JndiServlet.java?rev=1349003&r1=1349002&r2=1349003&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/JndiServlet.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/JndiServlet.java
 Mon Jun 11 20:49:45 2012
@@ -17,7 +17,12 @@
 
 package org.apache.tomee.webapp.servlet;
 
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.core.ivm.BaseEjbProxyHandler;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl;
+import org.apache.openejb.util.proxy.ProxyManager;
 import org.apache.tomee.webapp.JsonExecutor;
 
 import javax.naming.*;
@@ -26,6 +31,7 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.lang.reflect.Method;
 import java.util.*;
 
 public class JndiServlet extends HttpServlet {
@@ -71,14 +77,81 @@ public class JndiServlet extends HttpSer
         }
     }
 
+    private void buildNames(Context ctx, Map<String, Object> json) throws 
NamingException {
+        final List<Map<String, Object>> objs = new ArrayList<Map<String, 
Object>>();
+        json.put("names", objs);
+
+        final NamingEnumeration<NameClassPair> namingEnumeration = 
ctx.list("");
+        if (namingEnumeration != null) {
+            while (namingEnumeration.hasMoreElements()) {
+                objs.add(buildNode(namingEnumeration.next(), ctx));
+            }
+        }
+    }
+
+    private void buildClass(Context ctx, String name, Map<String, Object> 
json) throws NamingException {
+        final Map<String, Object> values = new HashMap<String, Object>();
+        json.put("cls", values);
+
+        final Object obj = ctx.lookup(name);
+
+        final List<String> interfaces = new ArrayList<String>();
+        values.put("interfaces", interfaces);
+
+        Class<?> cls;
+        {
+            try {
+                final BaseEjbProxyHandler handler = (BaseEjbProxyHandler) 
ProxyManager.getInvocationHandler(obj);
+                final ContainerSystem containerSystem = 
SystemInstance.get().getComponent(ContainerSystem.class);
+                final BeanContext ejb = 
containerSystem.getBeanContext(handler.deploymentID);
+
+                values.put("componentType", ejb.getComponentType().name());
+
+                cls = ejb.getBeanClass();
+
+            } catch (Exception e) {
+                cls = obj.getClass();
+
+            }
+
+            values.put("beanClass", cls.getCanonicalName());
+            for (Class<?> myInterface : cls.getInterfaces()) {
+                interfaces.add(myInterface.getCanonicalName());
+            }
+        }
+
+        {
+            final List<Map<String, Object>> methods = new 
ArrayList<Map<String, Object>>();
+            values.put("methods", methods);
+
+            for (Method method : cls.getDeclaredMethods()) {
+                final Map<String, Object> methodMap = new HashMap<String, 
Object>();
+                methods.add(methodMap);
+
+                final Class<?> returnType = method.getReturnType();
+                if (returnType != null) {
+                    methodMap.put("returns", returnType.getCanonicalName());
+                }
+                methodMap.put("name", method.getName());
+
+                final List<String> parameterTypes = new ArrayList<String>();
+                methodMap.put("parameters", parameterTypes);
+
+                for (Class<?> parameter : method.getParameterTypes()) {
+                    parameterTypes.add(parameter.getCanonicalName());
+
+                }
+            }
+        }
+    }
+
     @Override
     protected void doGet(final HttpServletRequest req, final 
HttpServletResponse resp) throws ServletException, IOException {
-        JsonExecutor.execute(resp, new JsonExecutor.Executor() {
+        JsonExecutor.execute(req, resp, new JsonExecutor.Executor() {
 
             @Override
             public void call(Map<String, Object> json) throws Exception {
-                final List<Map<String, Object>> objs = new 
ArrayList<Map<String, Object>>();
-                json.put("names", objs);
+
 
                 final Properties p = new Properties();
                 p.put(Context.INITIAL_CONTEXT_FACTORY, 
"org.apache.openejb.core.LocalInitialContextFactory");
@@ -95,11 +168,12 @@ public class JndiServlet extends HttpSer
                     ctx = getContext(initCtx, path);
                 }
 
-                final NamingEnumeration<NameClassPair> namingEnumeration = 
ctx.list("");
-                if (namingEnumeration != null) {
-                    while (namingEnumeration.hasMoreElements()) {
-                        objs.add(buildNode(namingEnumeration.next(), ctx));
-                    }
+                final String name = req.getParameter("name");
+                if (name == null) {
+                    buildNames(ctx, json);
+
+                } else {
+                    buildClass(ctx, name, json);
                 }
             }
         });

Modified: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogServlet.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogServlet.java?rev=1349003&r1=1349002&r2=1349003&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogServlet.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogServlet.java
 Mon Jun 11 20:49:45 2012
@@ -35,7 +35,7 @@ public class LogServlet extends HttpServ
 
     @Override
     protected void doGet(final HttpServletRequest req, final 
HttpServletResponse resp) throws ServletException, IOException {
-        JsonExecutor.execute(resp, new JsonExecutor.Executor() {
+        JsonExecutor.execute(req, resp, new JsonExecutor.Executor() {
 
             @Override
             public void call(Map<String, Object> json) throws Exception {

Modified: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogoutServlet.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogoutServlet.java?rev=1349003&r1=1349002&r2=1349003&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogoutServlet.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogoutServlet.java
 Mon Jun 11 20:49:45 2012
@@ -32,7 +32,7 @@ public class LogoutServlet extends HttpS
 
     @Override
     protected void doGet(final HttpServletRequest req, final 
HttpServletResponse resp) throws ServletException, IOException {
-        JsonExecutor.execute(resp, new JsonExecutor.Executor() {
+        JsonExecutor.execute(req, resp, new JsonExecutor.Executor() {
             @Override
             public void call(Map<String, Object> json) {
                 final HttpSession session = req.getSession(false);

Modified: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/SessionDataServlet.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/SessionDataServlet.java?rev=1349003&r1=1349002&r2=1349003&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/SessionDataServlet.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/SessionDataServlet.java
 Mon Jun 11 20:49:45 2012
@@ -31,7 +31,7 @@ public class SessionDataServlet extends 
 
     @Override
     protected void doGet(final HttpServletRequest req, final 
HttpServletResponse resp) throws ServletException, IOException {
-        JsonExecutor.execute(resp, new JsonExecutor.Executor() {
+        JsonExecutor.execute(req, resp, new JsonExecutor.Executor() {
             @Override
             public void call(Map<String, Object> json) throws Exception {
 

Modified: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/SystemInfoServlet.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/SystemInfoServlet.java?rev=1349003&r1=1349002&r2=1349003&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/SystemInfoServlet.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/SystemInfoServlet.java
 Mon Jun 11 20:49:45 2012
@@ -39,7 +39,7 @@ public class SystemInfoServlet extends H
 
     @Override
     protected void doGet(final HttpServletRequest req, final 
HttpServletResponse resp) throws ServletException, IOException {
-        JsonExecutor.execute(resp, new JsonExecutor.Executor() {
+        JsonExecutor.execute(req, resp, new JsonExecutor.Executor() {
             @Override
             public void call(Map<String, Object> json) throws Exception {
 


Reply via email to