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
});