1 17 package org.apache.geronimo.console.jmsmanager.wizard; 18 19 import java.io.IOException ; 20 import java.io.Serializable ; 21 import java.util.ArrayList ; 22 import java.util.Collections ; 23 import java.util.List ; 24 import javax.management.MalformedObjectNameException ; 25 import javax.management.ObjectName ; 26 import javax.portlet.ActionRequest; 27 import javax.portlet.ActionResponse; 28 import javax.portlet.PortletException; 29 import javax.portlet.PortletRequest; 30 import javax.portlet.RenderRequest; 31 import javax.portlet.RenderResponse; 32 33 import org.apache.geronimo.console.MultiPageModel; 34 import org.apache.geronimo.console.util.PortletManager; 35 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; 36 import org.apache.geronimo.kernel.management.State; 37 import org.apache.geronimo.kernel.proxy.GeronimoManagedBean; 38 import org.apache.geronimo.management.geronimo.JCAAdminObject; 39 import org.apache.geronimo.management.geronimo.JCAManagedConnectionFactory; 40 import org.apache.geronimo.management.geronimo.JCAResource; 41 import org.apache.geronimo.management.geronimo.ResourceAdapter; 42 import org.apache.geronimo.management.geronimo.ResourceAdapterModule; 43 import org.apache.commons.logging.Log; 44 import org.apache.commons.logging.LogFactory; 45 46 51 public class ListScreenHandler extends AbstractHandler { 52 private static final Log log = LogFactory.getLog(ListScreenHandler.class); 53 54 public ListScreenHandler() { 55 super(LIST_MODE, "/WEB-INF/view/jmswizard/list.jsp"); 56 } 57 58 public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { 59 return getMode(); 60 } 61 62 public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException { 63 populateExistingList(request); 64 } 65 66 public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { 67 JMSResourceData data = (JMSResourceData) model; 68 String provider = request.getParameter(PROVIDER_PARAMETER); 69 if (isEmpty(provider)) { 70 return SELECT_PROVIDER_MODE + BEFORE_ACTION; 71 } 72 JMSProviderData providerData = JMSProviderData.getProviderByName(provider); 73 data.setRarURI(providerData.getRaURI()); 74 data.setDependency(providerData.getDependency()); 75 return CONFIGURE_RA_MODE + BEFORE_ACTION; 76 } 77 78 79 private void populateExistingList(PortletRequest renderRequest) { 80 List resources = new ArrayList (); 82 83 ResourceAdapterModule[] modules = PortletManager.getOutboundRAModules(renderRequest, new String []{ 85 "javax.jms.ConnectionFactory", "javax.jms.QueueConnectionFactory", "javax.jms.TopicConnectionFactory",}); 86 try { 87 for (int i = 0; i < modules.length; i++) { 88 ResourceAdapterModule module = modules[i]; 89 90 JMSResourceSummary target = null; 91 for (int j = 0; j < resources.size(); j++) { 92 JMSResourceSummary data = (JMSResourceSummary) resources.get(j); 93 if (data.adapterObjectName.equals(module.getObjectName())) { 94 target = data; 95 break; 96 } 97 } 98 if (target == null) { 99 ResourceAdapter[] adapters = PortletManager.getResourceAdapters(renderRequest, module); 100 String name = null; 101 if (adapters.length == 1 && adapters[0].getJCAResources().length == 1) { 102 JCAResource[] resource = PortletManager.getJCAResources(renderRequest, adapters[0]); 103 if (resource.length == 1 && resource[0].getResourceAdapterInstances().length == 1) { 104 name = ObjectName.getInstance(resource[0].getResourceAdapterInstanceNames()[0]).getKeyProperty(NameFactory.J2EE_NAME); 105 } 106 } 107 if (name == null) { 108 name = ObjectName.getInstance(module.getObjectName()).getKeyProperty(NameFactory.J2EE_NAME); 109 } 110 target = new JMSResourceSummary(PortletManager.getConfigurationFor(renderRequest, PortletManager.getNameFor(renderRequest, module)).toString(), 111 module.getObjectName(), name, ((GeronimoManagedBean) module).getState()); 112 resources.add(target); 113 } 114 115 JCAManagedConnectionFactory[] factories = PortletManager.getOutboundFactoriesForRA(renderRequest, module, new String []{ 116 "javax.jms.ConnectionFactory", "javax.jms.QueueConnectionFactory", "javax.jms.TopicConnectionFactory",}); 117 for (int j = 0; j < factories.length; j++) { 118 JCAManagedConnectionFactory factory = factories[j]; 119 ObjectName name = ObjectName.getInstance(factory.getObjectName()); 120 target.getConnectionFactories().add(new ConnectionFactorySummary(factory.getObjectName(), name.getKeyProperty(NameFactory.J2EE_NAME), 121 ((GeronimoManagedBean) factory).getState())); 122 } 123 } 124 125 modules = PortletManager.getAdminObjectModules(renderRequest, new String []{"javax.jms.Queue", "javax.jms.Topic"}); 127 for (int i = 0; i < modules.length; i++) { 128 ResourceAdapterModule module = modules[i]; 129 130 JMSResourceSummary target = null; 131 for (int j = 0; j < resources.size(); j++) { 132 JMSResourceSummary data = (JMSResourceSummary) resources.get(j); 133 if (data.adapterObjectName.equals(module.getObjectName())) { 134 target = data; 135 break; 136 } 137 } 138 if (target == null) { 139 ResourceAdapter[] adapters = PortletManager.getResourceAdapters(renderRequest, module); 140 String name = null; 141 if (adapters.length == 1 && adapters[0].getJCAResources().length == 1) { 142 JCAResource[] resource = PortletManager.getJCAResources(renderRequest, adapters[0]); 143 if (resource.length == 1 && resource[0].getResourceAdapterInstances().length == 1) { 144 name = ObjectName.getInstance(resource[0].getResourceAdapterInstanceNames()[0]).getKeyProperty(NameFactory.J2EE_NAME); 145 } 146 } 147 if (name == null) { 148 name = ObjectName.getInstance(module.getObjectName()).getKeyProperty(NameFactory.J2EE_NAME); 149 } 150 target = new JMSResourceSummary(PortletManager.getConfigurationFor(renderRequest, PortletManager.getNameFor(renderRequest, module)).toString(), 151 module.getObjectName(), name, ((GeronimoManagedBean) module).getState()); 152 resources.add(target); 153 } 154 155 JCAAdminObject[] admins = PortletManager.getAdminObjectsForRA(renderRequest, module, new String []{"javax.jms.Queue", "javax.jms.Topic"}); 156 for (int j = 0; j < admins.length; j++) { 157 GeronimoManagedBean bean = (GeronimoManagedBean) admins[j]; 158 ObjectName name = ObjectName.getInstance(bean.getObjectName()); 159 target.getAdminObjects().add(new AdminObjectSummary(bean.getObjectName(), name.getKeyProperty(NameFactory.J2EE_NAME), 160 admins[j].getAdminObjectInterface().indexOf("Queue") > -1 ? "Queue" : "Topic", 161 bean.getState())); 162 } 163 } 164 } catch (MalformedObjectNameException e) { 165 log.error(e.getMessage(), e); 166 } 167 168 Collections.sort(resources); 169 renderRequest.setAttribute("resources", resources); 170 renderRequest.setAttribute("providers", JMSProviderData.getAllProviders()); 172 } 173 174 175 public static class JMSResourceSummary implements Serializable , Comparable { 176 private static final long serialVersionUID = -2788803234448047035L; 177 private final String configurationName; 178 private final String adapterObjectName; 179 private final String name; 180 private final String parentName; 181 private final int state; 182 private final List connectionFactories = new ArrayList (); 183 private final List adminObjects = new ArrayList (); 184 185 public JMSResourceSummary(String configurationName, String adapterObjectName, String name, int state) { 186 this.configurationName = configurationName; 187 this.adapterObjectName = adapterObjectName; 188 this.state = state; 189 try { 190 ObjectName objectName = ObjectName.getInstance(adapterObjectName); 191 String parent = objectName.getKeyProperty(NameFactory.J2EE_APPLICATION); 192 if (parent != null && parent.equals("null")) { 193 parent = null; 194 } 195 parentName = parent; 196 this.name = name; 197 } catch (MalformedObjectNameException e) { 198 throw new RuntimeException ("Can't parse ObjectName", e); 199 } 200 } 201 202 public String getConfigurationName() { 203 return configurationName; 204 } 205 206 public String getAdapterObjectName() { 207 return adapterObjectName; 208 } 209 210 public String getName() { 211 return name; 212 } 213 214 public String getParentName() { 215 return parentName; 216 } 217 218 public int getState() { 219 return state; 220 } 221 222 public List getConnectionFactories() { 223 return connectionFactories; 224 } 225 226 public List getAdminObjects() { 227 return adminObjects; 228 } 229 230 public String getStateName() { 231 return State.toString(state); 232 } 233 234 public int compareTo(Object o) { 235 final JMSResourceSummary pool = (JMSResourceSummary) o; 236 int names = name.toLowerCase().compareTo(pool.name.toLowerCase()); 237 if (parentName == null) { 238 if (pool.parentName == null) { 239 return names; 240 } else { 241 return -1; 242 } 243 } else { 244 if (pool.parentName == null) { 245 return 1; 246 } else { 247 int test = parentName.compareTo(pool.parentName); 248 if (test != 0) { 249 return test; 250 } else { 251 return names; 252 } 253 } 254 } 255 } 256 } 257 258 public static class ConnectionFactorySummary implements Serializable , Comparable { 259 private static final long serialVersionUID = 5777507920880039759L; 260 private final String factoryObjectName; 261 private final String name; 262 private final int state; 263 264 public ConnectionFactorySummary(String factoryObjectName, String name, int state) { 265 this.factoryObjectName = factoryObjectName; 266 this.name = name; 267 this.state = state; 268 } 269 270 public String getFactoryObjectName() { 271 return factoryObjectName; 272 } 273 274 public String getName() { 275 return name; 276 } 277 278 public int getState() { 279 return state; 280 } 281 282 public String getStateName() { 283 return State.toString(state); 284 } 285 286 public int compareTo(Object o) { 287 final ConnectionFactorySummary pool = (ConnectionFactorySummary) o; 288 return name.compareTo(pool.name); 289 } 290 } 291 292 293 public static class AdminObjectSummary implements Serializable , Comparable { 294 private static final long serialVersionUID = 3941332145785485903L; 295 private final String adminObjectName; 296 private final String name; 297 private final String type; 298 private final int state; 299 300 public AdminObjectSummary(String adminObjectName, String name, String type, int state) { 301 this.adminObjectName = adminObjectName; 302 this.name = name; 303 this.type = type; 304 this.state = state; 305 } 306 307 public String getAdminObjectName() { 308 return adminObjectName; 309 } 310 311 public String getName() { 312 return name; 313 } 314 315 public String getType() { 316 return type; 317 } 318 319 public int getState() { 320 return state; 321 } 322 323 public String getStateName() { 324 return State.toString(state); 325 } 326 327 public int compareTo(Object o) { 328 final AdminObjectSummary pool = (AdminObjectSummary) o; 329 int result = name.compareTo(pool.name); 330 return result == 0 ? type.compareTo(pool.type) : result; 331 } 332 } 333 } 334 | Popular Tags |