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 }