001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.geronimo.console.configcreator; 018 019 import java.util.ArrayList; 020 import java.util.Iterator; 021 import java.util.List; 022 import java.util.SortedSet; 023 024 import javax.management.MalformedObjectNameException; 025 import javax.management.ObjectName; 026 import javax.portlet.PortletRequest; 027 028 import org.apache.geronimo.console.util.PortletManager; 029 import org.apache.geronimo.gbean.AbstractName; 030 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; 031 import org.apache.geronimo.kernel.repository.ListableRepository; 032 import org.apache.geronimo.management.EJBModule; 033 import org.apache.geronimo.management.J2EEResource; 034 import org.apache.geronimo.management.geronimo.JCAAdminObject; 035 import org.apache.geronimo.management.geronimo.JCAManagedConnectionFactory; 036 import org.apache.geronimo.management.geronimo.ResourceAdapterModule; 037 import org.apache.geronimo.management.geronimo.SecurityRealm; 038 039 /** 040 * Util class for JSR-77 related functions 041 * 042 * @version $Rev: 706640 $ $Date: 2008-10-21 14:44:05 +0000 (Tue, 21 Oct 2008) $ 043 */ 044 public class JSR77_Util { 045 046 public static class ReferredData { 047 private String displayName; 048 049 private String patternName; 050 051 public ReferredData(String displayName, String patternName) { 052 this.displayName = displayName; 053 this.patternName = patternName; 054 } 055 056 public String getDisplayName() { 057 return displayName; 058 } 059 060 public void setDisplayName(String displayName) { 061 this.displayName = displayName; 062 } 063 064 public String getPatternName() { 065 return patternName; 066 } 067 068 public void setPatternName(String patternName) { 069 this.patternName = patternName; 070 } 071 } 072 073 protected static List getDeployedEJBs(PortletRequest request) { 074 List ejbList = new ArrayList(); 075 EJBModule[] ejbModules = PortletManager.getManagementHelper(request).getEJBModules( 076 PortletManager.getCurrentServer(request)); 077 for (int i = 0; ejbModules != null && i < ejbModules.length; i++) { 078 String[] ejbObjectNames = ejbModules[i].getEjbs(); 079 for (int j = 0; j < ejbObjectNames.length; j++) { 080 try { 081 ObjectName objectName = ObjectName.getInstance(ejbObjectNames[j]); 082 String ejbName = objectName.getKeyProperty(NameFactory.J2EE_NAME); 083 String configurationName; 084 if ("null".equalsIgnoreCase(objectName.getKeyProperty(NameFactory.J2EE_APPLICATION))) { 085 configurationName = objectName.getKeyProperty(NameFactory.EJB_MODULE) + "/"; 086 } else { 087 configurationName = objectName.getKeyProperty(NameFactory.J2EE_APPLICATION) + "/" 088 + objectName.getKeyProperty(NameFactory.EJB_MODULE); 089 } 090 ReferredData data = new ReferredData(ejbName + " (" + configurationName + ")", 091 configurationName + "/" + ejbName); 092 ejbList.add(data); 093 } catch (MalformedObjectNameException e) { 094 // log.error(e.getMessage(), e); 095 e.printStackTrace(); 096 } catch (NullPointerException e) { 097 // log.error(e.getMessage(), e); 098 e.printStackTrace(); 099 } 100 } 101 } 102 return ejbList; 103 } 104 105 protected static List getJMSConnectionFactories(PortletRequest request) { 106 // TODO this is a duplicate of the code from 107 // org.apache.geronimo.console.jmsmanager.wizard.ListScreenHandler.populateExistingList() 108 // TODO need to eliminate this duplicate code probably by putting it in a common place 109 List connectionFactories = new ArrayList(); 110 111 // Get the list of connection factories 112 ResourceAdapterModule[] modules = PortletManager.getOutboundRAModules(request, new String[] { 113 "javax.jms.ConnectionFactory", "javax.jms.QueueConnectionFactory", 114 "javax.jms.TopicConnectionFactory", }); 115 try { 116 for (int i = 0; i < modules.length; i++) { 117 ResourceAdapterModule module = modules[i]; 118 String configurationName = PortletManager.getConfigurationFor(request, 119 PortletManager.getNameFor(request, module)).toString() 120 + "/"; 121 122 JCAManagedConnectionFactory[] factories = PortletManager.getOutboundFactoriesForRA(request, 123 module, new String[] { "javax.jms.ConnectionFactory", "javax.jms.QueueConnectionFactory", 124 "javax.jms.TopicConnectionFactory", }); 125 for (int j = 0; j < factories.length; j++) { 126 JCAManagedConnectionFactory factory = factories[j]; 127 String factoryName = ObjectName.getInstance(factory.getObjectName()).getKeyProperty( 128 NameFactory.J2EE_NAME); 129 ReferredData data = new ReferredData(factoryName + " (" + configurationName + ")", 130 configurationName + "/" + factoryName); 131 connectionFactories.add(data); 132 } 133 } 134 } catch (MalformedObjectNameException e) { 135 // log.error(e.getMessage(), e); 136 } 137 return connectionFactories; 138 } 139 140 protected static List getJMSDestinations(PortletRequest request) { 141 // TODO this is a duplicate of the code from 142 // org.apache.geronimo.console.jmsmanager.wizard.ListScreenHandler.populateExistingList() 143 // TODO need to eliminate this duplicate code probably by putting it in a common place 144 List jmsDestinations = new ArrayList(); 145 146 // Get the list of connection factories 147 ResourceAdapterModule[] modules = PortletManager.getOutboundRAModules(request, new String[] { 148 "javax.jms.ConnectionFactory", "javax.jms.QueueConnectionFactory", 149 "javax.jms.TopicConnectionFactory", }); 150 try { 151 for (int i = 0; i < modules.length; i++) { 152 ResourceAdapterModule module = modules[i]; 153 String configurationName = PortletManager.getConfigurationFor(request, 154 PortletManager.getNameFor(request, module)).toString() 155 + "/"; 156 157 JCAAdminObject[] admins = PortletManager.getAdminObjectsForRA(request, module, new String[] { 158 "javax.jms.Queue", "javax.jms.Topic" }); 159 for (int j = 0; j < admins.length; j++) { 160 JCAAdminObject admin = admins[j]; 161 String destinationName = ObjectName.getInstance(admin.getObjectName()).getKeyProperty( 162 NameFactory.J2EE_NAME); 163 ReferredData data = new ReferredData(destinationName + " (" + configurationName + ")", 164 configurationName + "/" + destinationName); 165 jmsDestinations.add(data); 166 } 167 } 168 } catch (MalformedObjectNameException e) { 169 // log.error(e.getMessage(), e); 170 } 171 return jmsDestinations; 172 } 173 174 protected static List getJDBCConnectionPools(PortletRequest request) { 175 // TODO this is a duplicate of the code from 176 // org.apache.geronimo.console.databasemanager.wizard.DatabasePoolPortlet.populatePoolList() 177 // TODO need to eliminate this duplicate code probably by putting it in a common place 178 List list = new ArrayList(); 179 ResourceAdapterModule[] modules = PortletManager.getOutboundRAModules(request, "javax.sql.DataSource"); 180 for (int i = 0; i < modules.length; i++) { 181 ResourceAdapterModule module = modules[i]; 182 JCAManagedConnectionFactory[] databases = PortletManager.getOutboundFactoriesForRA(request, module, 183 "javax.sql.DataSource"); 184 for (int j = 0; j < databases.length; j++) { 185 JCAManagedConnectionFactory db = databases[j]; 186 AbstractName dbName = PortletManager.getManagementHelper(request).getNameFor(db); 187 String poolName = (String) dbName.getName().get(NameFactory.J2EE_NAME); 188 String configurationName = dbName.getArtifact().toString() + "/"; 189 ReferredData data = new ReferredData(poolName + " (" + configurationName + ")", 190 configurationName + "/" + poolName); 191 list.add(data); 192 } 193 } 194 return list; 195 } 196 197 protected static List getJavaMailSessions(PortletRequest request) { 198 List mailSessionList = new ArrayList(); 199 J2EEResource[] j2eeResources = PortletManager.getManagementHelper(request).getResources( 200 PortletManager.getCurrentServer(request)); 201 for (int i = 0; i < j2eeResources.length; i++) { 202 try { 203 ObjectName objectName = ObjectName.getInstance(j2eeResources[i].getObjectName()); 204 if (NameFactory.JAVA_MAIL_RESOURCE.equals(objectName.getKeyProperty(NameFactory.J2EE_TYPE))) { 205 String mailSesssionName = objectName.getKeyProperty(NameFactory.J2EE_NAME); 206 String configurationName = objectName.getKeyProperty(NameFactory.SERVICE_MODULE) + "/"; 207 ReferredData data = new ReferredData(mailSesssionName + " (" + configurationName + ")", 208 configurationName + "/" + mailSesssionName); 209 mailSessionList.add(data); 210 } 211 } catch (MalformedObjectNameException e) { 212 // log.error(e.getMessage(), e); 213 e.printStackTrace(); 214 } catch (NullPointerException e) { 215 // log.error(e.getMessage(), e); 216 e.printStackTrace(); 217 } 218 } 219 return mailSessionList; 220 } 221 222 protected static List getDeployedCredentialStores(PortletRequest request) { 223 List credentialStoreList = new ArrayList(); 224 Object[] objects = PortletManager.getGBeansImplementing(request, 225 org.apache.geronimo.security.credentialstore.CredentialStore.class); 226 for (int i = 0; i < objects.length; i++) { 227 ObjectName objectName = PortletManager.getNameFor(request, objects[i]).getObjectName(); 228 String credentialStoreName = objectName.getKeyProperty(NameFactory.J2EE_NAME); 229 String configurationName = objectName.getKeyProperty(NameFactory.SERVICE_MODULE) + "/"; 230 ReferredData data = new ReferredData(credentialStoreName + " (" + configurationName + ")", 231 configurationName + "/" + credentialStoreName); 232 credentialStoreList.add(data); 233 } 234 return credentialStoreList; 235 } 236 237 protected static List getCommonLibs(PortletRequest request) { 238 // TODO this is a duplicate of the code from 239 // org.apache.geronimo.console.repository.RepositoryViewPortlet.doView() 240 // TODO need to eliminate this duplicate code probably by putting it in a common place 241 List list = new ArrayList(); 242 ListableRepository[] repos = PortletManager.getCurrentServer(request).getRepositories(); 243 for (int i = 0; i < repos.length; i++) { 244 ListableRepository repo = repos[i]; 245 final SortedSet artifacts = repo.list(); 246 for (Iterator iterator = artifacts.iterator(); iterator.hasNext();) { 247 String fileName = iterator.next().toString(); 248 list.add(fileName); 249 } 250 } 251 return list; 252 } 253 254 public static SecurityRealm[] getDeployedSecurityRealms(PortletRequest request) { 255 return PortletManager.getCurrentServer(request).getSecurityRealms(); 256 } 257 }