00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 package org.objectweb.jonas.webapp.jonasadmin.resource;
00028
00029 import java.io.IOException;
00030 import java.util.ArrayList;
00031 import java.util.Collections;
00032 import java.util.Set;
00033
00034 import javax.management.ObjectName;
00035 import javax.servlet.ServletException;
00036 import javax.servlet.http.HttpServletRequest;
00037 import javax.servlet.http.HttpServletResponse;
00038
00039 import org.apache.struts.action.ActionForm;
00040 import org.apache.struts.action.ActionForward;
00041 import org.apache.struts.action.ActionMapping;
00042 import org.objectweb.jonas.jmx.JonasManagementRepr;
00043 import org.objectweb.jonas.jmx.JonasObjectName;
00044 import org.objectweb.jonas.webapp.jonasadmin.JonasAdminJmx;
00045 import org.objectweb.jonas.webapp.jonasadmin.JonasBaseAction;
00046
00051 public class ListJmsResourcesAction extends JonasBaseAction {
00052
00053
00054
00057 public ActionForward executeAction(ActionMapping p_Mapping, ActionForm p_Form
00058 , HttpServletRequest p_Request, HttpServletResponse p_Response)
00059 throws IOException, ServletException {
00060
00061 try {
00062 String asDestName = null;
00063
00064
00065 ObjectName ejbServiceMB = JonasObjectName.ejbService();
00066 boolean registeredEjbService = JonasManagementRepr.isRegistered(ejbServiceMB);
00067
00068
00069 ArrayList alQueues = new ArrayList();
00070 ArrayList al = JonasAdminJmx.getQueuesList();
00071 if (al != null) {
00072 for (int i = 0; i < al.size(); i++) {
00073 asDestName = al.get(i).toString();
00074 boolean deps = false;
00075
00076 if (registeredEjbService) {
00077 deps = hasDeps(asDestName, ejbServiceMB);
00078 }
00079 alQueues.add(new DestinationItem(asDestName, "queue", deps));
00080 }
00081 Collections.sort(alQueues, new DestinationItemByNameComparator());
00082 }
00083
00084 ArrayList alTopics = new ArrayList();
00085 al = JonasAdminJmx.getTopicsList();
00086 if (al != null) {
00087 for (int i = 0; i < al.size(); i++) {
00088 asDestName = al.get(i).toString();
00089 boolean deps = false;
00090
00091 if (registeredEjbService) {
00092 deps = hasDeps(asDestName, ejbServiceMB);
00093 }
00094 alTopics.add(new DestinationItem(al.get(i).toString(), "topic", deps));
00095 }
00096 Collections.sort(alTopics, new DestinationItemByNameComparator());
00097 }
00098
00099
00100 ArrayList alDestinations = new ArrayList(alQueues);
00101 alDestinations.addAll(alTopics);
00102
00103 p_Request.setAttribute("destinationsList", alDestinations);
00104 } catch (Throwable t) {
00105 addGlobalError(t);
00106 saveErrors(p_Request, m_Errors);
00107 return (p_Mapping.findForward("Global Error"));
00108 }
00109
00110
00111 return (p_Mapping.findForward("Jms Resources"));
00112 }
00113
00114 private boolean hasDeps(String destName, ObjectName ejbServiceMB) {
00115 String[] asParam = { destName };
00116 String[] asSignature = { "java.lang.String" };
00117 Set deps = (java.util.Set) JonasManagementRepr.invoke(ejbServiceMB, "getJmsDestinationDependence", asParam, asSignature);
00118 boolean res = deps.size() > 0 ? true : false;
00119 return res;
00120 }
00121 }