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
018 package org.apache.geronimo.console.jmsmanager.renderers;
019
020 import java.io.IOException;
021 import java.util.ArrayList;
022 import java.util.Collections;
023 import java.util.Iterator;
024 import java.util.List;
025 import java.util.Set;
026
027 import javax.management.ObjectName;
028 import javax.portlet.PortletException;
029 import javax.portlet.RenderRequest;
030 import javax.portlet.RenderResponse;
031 import javax.jms.Destination;
032
033 import org.apache.commons.logging.Log;
034 import org.apache.commons.logging.LogFactory;
035 import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
036 import org.apache.geronimo.console.jmsmanager.DestinationInfo;
037 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
038 import org.apache.geronimo.kernel.DependencyManager;
039 import org.apache.geronimo.kernel.Kernel;
040 import org.apache.geronimo.kernel.KernelRegistry;
041 import org.apache.geronimo.gbean.AbstractNameQuery;
042 import org.apache.geronimo.gbean.AbstractName;
043
044 public class ViewDestinationsRenderer extends AbstractJMSManager implements
045 PortletRenderer {
046
047 protected static Log log = LogFactory
048 .getLog(ViewDestinationsRenderer.class);
049
050 public String render(RenderRequest request, RenderResponse response)
051 throws PortletException, IOException {
052
053 List destinationList = getDestinationList(request, response);
054
055 request.setAttribute(DESTINATION_LIST, destinationList);
056
057 return "/WEB-INF/view/jmsmanager/view.jsp";
058 }
059
060 public List getDestinationList(RenderRequest request,
061 RenderResponse response) {
062 Kernel kernel = KernelRegistry.getSingleKernel();
063
064 Set destinations = kernel.listGBeans(new AbstractNameQuery(Destination.class.getName()));
065 List destinationInfos = new ArrayList(destinations.size());
066 DependencyManager dm = kernel.getDependencyManager();
067 for (Iterator iterator = destinations.iterator(); iterator.hasNext();) {
068 AbstractName destinationName = (AbstractName) iterator.next();
069
070 try {
071 Class type;
072 try {
073 type = Class.forName((String) kernel.getAttribute(
074 destinationName, "adminObjectInterface"));
075 } catch (ClassCastException cce) {
076 type = (Class) kernel.getAttribute(destinationName,
077 "adminObjectInterface");
078 }
079 Set parents = dm.getParents(destinationName);
080 Iterator i = parents.iterator();
081 // If no parents this is a configuration we don't need those
082 // here.
083 if (!i.hasNext()) {
084 continue;
085 }
086 ObjectName parent = (ObjectName) i.next();
087 String adminObjectName = (String) destinationName.getName().get(NameFactory.J2EE_NAME);
088 if (adminObjectName.equals("MDBTransferBeanOutQueue")
089 || adminObjectName.equals("SendReceiveQueue")) {
090 continue;
091 }
092 String configURI = parent.getKeyProperty("name");
093 if (configURI.startsWith("\"")) {
094 configURI = configURI.substring(1);
095 }
096 if (configURI.endsWith("\"")) {
097 configURI = configURI.substring(0, configURI.length() - 1);
098 }
099
100 DestinationInfo info = new DestinationInfo(adminObjectName,
101 (String) kernel.getAttribute(destinationName, "PhysicalName"),
102 type,
103 (String) destinationName.getName().get(NameFactory.J2EE_APPLICATION),
104 (String) destinationName.getName().get(NameFactory.JCA_RESOURCE),
105 configURI);
106 destinationInfos.add(info);
107 } catch (Exception e) {
108 log.error(e);
109 }
110 }
111 Collections.sort(destinationInfos);
112 return destinationInfos;
113 }
114
115 }