You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by tv...@apache.org on 2012/06/12 19:09:50 UTC

svn commit: r1349444 - in /openejb/trunk/openejb/tomee/tomee-webapp/src/main: java/org/apache/tomee/webapp/servlet/JndiServlet.java webapp/application/js/view/panels/JndiClass.js

Author: tveronezi
Date: Tue Jun 12 17:09:50 2012
New Revision: 1349444

URL: http://svn.apache.org/viewvc?rev=1349444&view=rev
Log:
https://issues.apache.org/jira/browse/TOMEE-224
* load class/ejb info

Modified:
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/JndiServlet.java
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/application/js/view/panels/JndiClass.js

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=1349444&r1=1349443&r2=1349444&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 Tue Jun 12 17:09:50 2012
@@ -36,28 +36,32 @@ import java.util.*;
 
 public class JndiServlet extends HttpServlet {
 
-    private Map<String, Object> buildNode(NameClassPair pair, Context ctx) throws NamingException {
-        final String name = pair.getName();
-        final Object obj = ctx.lookup(name);
-
-        final String beanType;
-        if (obj instanceof Context) {
-            beanType = "CONTEXT";
-
-        } else if (obj instanceof java.rmi.Remote
-                || obj instanceof org.apache.openejb.core.ivm.IntraVmProxy
-                || (obj != null && LocalBeanProxyGeneratorImpl.isLocalBean(obj.getClass()))) {
-            beanType = "BEAN";
+    private String getBeanType(Object bean) {
+        if (bean instanceof Context) {
+            return "CONTEXT";
+
+        } else if (bean instanceof java.rmi.Remote
+                || bean instanceof org.apache.openejb.core.ivm.IntraVmProxy
+                || (bean != null && LocalBeanProxyGeneratorImpl.isLocalBean(bean.getClass()))) {
+            return "BEAN";
         } else {
-            beanType = "OTHER";
+            return "OTHER";
         }
+    }
 
+    private Map<String, Object> buildNode(NameClassPair pair, Context ctx) throws NamingException {
         final Map<String, Object> node = new HashMap<String, Object>();
+
+        final String name = pair.getName();
         node.put("name", name);
+
+        final Object obj = ctx.lookup(name);
+        final String beanType = getBeanType(obj);
         node.put("type", beanType);
         if ("CONTEXT".equals(beanType)) {
             node.put("children", Collections.emptyList());
         }
+
         return node;
     }
 
@@ -89,14 +93,36 @@ public class JndiServlet extends HttpSer
         }
     }
 
+    /**
+     * {cls: {
+     *     type: 'String', //CONTEXT, BEAN, OTHER
+     *     componentType: 'String', //STATEFUL, STATELESS, SINGLETON, BMP_ENTITY, CMP_ENTITY, MESSAGE_DRIVEN, MANAGED
+     *     beanClass: 'impl class name',
+     *     interfaces: ['InterfaceA', 'InterfaceB'],
+     *     methods: [
+     *       {
+     *         name: 'methodName',
+     *         returns: 'Class type',
+     *         parameters: ['ClassA', 'ClassB']
+     *       },
+     *       {
+     *         name: 'methodName',
+     *         returns: 'Class type',
+     *         parameters: ['ClassA', 'ClassB']
+     *       }
+     *     ]
+     * }}
+     * @param ctx
+     * @param name
+     * @param json
+     * @throws NamingException
+     */
     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);
+        values.put("type", getBeanType(obj));
 
         Class<?> cls;
         {
@@ -115,6 +141,10 @@ public class JndiServlet extends HttpSer
             }
 
             values.put("beanClass", cls.getCanonicalName());
+
+            final List<String> interfaces = new ArrayList<String>();
+            values.put("interfaces", interfaces);
+
             for (Class<?> myInterface : cls.getInterfaces()) {
                 interfaces.add(myInterface.getCanonicalName());
             }

Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/application/js/view/panels/JndiClass.js
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/application/js/view/panels/JndiClass.js?rev=1349444&r1=1349443&r2=1349444&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/application/js/view/panels/JndiClass.js (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/application/js/view/panels/JndiClass.js Tue Jun 12 17:09:50 2012
@@ -30,49 +30,141 @@ TOMEE.JndiClass = function (cfg) {
         }
     });
 
-    var buildList = function(parent, obj) {
-        var li = $('<li></li>');
-        for(var prop in obj) {
-            (function(key, value) {
-                if(TOMEE.utils.isPrimitive(value)) {
-                    li.append(key + ': ' + value);
-
-                } else if(value instanceof Array) {
-                    li.append(key);
-                    var ul = $('<ul></ul>');
-
-                    for(var i = 0; i < value.length; i++) {
-                        buildList(ul, value[i]);
-                    }
-
-                    li.append(ul);
-                } else {
-
-                    li.append(key);
-                    var ul = $('<ul></ul>');
-
-                    for(var inner in value) {
-                        buildList(ul, value[inner]);
-                    }
-
-                    li.append(ul);
-                }
-            })(prop, obj[prop]);
-        }
-        parent.append(li);
-    };
-
     return {
         show:function (params) {
             var el = panel.getContentEl();
             el.empty();
 
-            var innerDiv = $('<ul></ul>');
             var cls = params.data.cls;
-            buildList(innerDiv, cls);
 
-            panel.getContentEl().append(innerDiv);
+            /*
+            Data format
+            {
+                cls: {
+                    type: 'String',
+                        //CONTEXT, BEAN, OTHER
+                        componentType: 'String',
+                        //STATEFUL, STATELESS, SINGLETON, BMP_ENTITY, CMP_ENTITY, MESSAGE_DRIVEN, MANAGED
+                        beanClass: 'impl class name',
+                        interfaces: ['InterfaceA', 'InterfaceB'],
+                        methods: [{
+                        name: 'methodName',
+                        returns: 'Class type',
+                        parameters: ['ClassA', 'ClassB']
+                    }, {
+                        name: 'methodName',
+                        returns: 'Class type',
+                        parameters: ['ClassA', 'ClassB']
+                    }]
+                }
+            }
+            */
+            var getFieldCfg = function (bean, getLabel, getValue) {
+                var fieldId = TOMEE.Sequence.next('cls_property');
+                var fieldConfig = {
+                    tag:'div',
+                    cls:'control-group',
+                    children:[
+                        {
+                            tag:'label',
+                            cls:'control-label',
+                            attributes:{
+                                'for':fieldId
+                            },
+                            html:getLabel(bean)
+                        },
+                        {
+                            tag:'div',
+                            cls:'controls',
+                            children:[
+                                {
+                                    tag:'input',
+                                    cls:'input input-xlarge',
+                                    attributes:{
+                                        style: 'margin-bottom: 5px;',
+                                        'type':'text',
+                                        'id':fieldId,
+                                        'value':getValue(bean)
+                                    }
+                                }
+                            ]
+
+                        }
+                    ]
+                };
+                return fieldConfig;
+            };
+
+            var fields = [];
+            fields.push(getFieldCfg(cls, function (bean) {
+                return 'type';
+            }, function (bean) {
+                return bean['type'];
+            }));
+            fields.push(getFieldCfg(cls, function (bean) {
+                return 'componentType';
+            }, function (bean) {
+                return bean['componentType'];
+            }));
+
+            var elBottomBar = TOMEE.el.getElMap({
+                elName:'main',
+                tag:'form',
+                cls:'well form-inline',
+                attributes:{
+                    style:'height: 27px;margin-bottom: 0px;padding-top: 1px;padding-left: 1px;padding-bottom: 1px;padding-right: 1px;'
+                },
+                children:[
+                    {
+                        tag:'div',
+                        cls:'pull-right',
+                        children:[
+                            {
+                                elName:'fileSelector',
+                                tag:'select',
+                                attributes:{
+                                    style:'margin-right: 2px;'
+                                }
+                            },
+                            {
+                                elName:'loadBtn',
+                                tag:'button',
+                                cls:'btn',
+                                html:TOMEE.I18N.get('application.log.load')
+                            }
+                        ]
+                    }
+                ]
+            });
+
+            var elements = TOMEE.el.getElMap({
+                elName:'main',
+                tag:'div',
+
+                children:[
+                    {
+                        tag:'div',
+                        attributes:{
+                            style:'padding: 5px'
+                        },
+                        children:[
+                            {
+                                tag:'form',
+                                cls:'form-horizontal',
+                                children:[
+                                    {
+                                        tag:'fieldset',
+                                        children:fields
+                                    }
+                                ]
+                            }
+                        ]
+                    }
+                ]
+            });
 
+            elements.main.append(elBottomBar.main);
+            panel.getContentEl().append(elements.main);
             panel.showAt({
                 modal:true
             });