/**
*
* Copyright 2004, 2005 The Apache Software Foundation or its licensors, as applicable.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.geronimo.console.jmsmanager.renderers;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import javax.management.ObjectName;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
import org.apache.geronimo.console.jmsmanager.DestinationInfo;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.apache.geronimo.kernel.DependencyManager;
import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.kernel.KernelRegistry;
public class ViewDestinationsRenderer extends AbstractJMSManager implements
PortletRenderer {
protected static Log log = LogFactory
.getLog(ViewDestinationsRenderer.class);
public String render(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
List destinationList = getDestinationList(request, response);
request.setAttribute(DESTINATION_LIST, destinationList);
return "/WEB-INF/view/jmsmanager/view.jsp";
}
public List getDestinationList(RenderRequest request,
RenderResponse response) {
Kernel kernel = KernelRegistry.getSingleKernel();
Set destinations = kernel.listGBeans(DESTINATION_QUERY);
List destinationInfos = new ArrayList(destinations.size());
DependencyManager dm = kernel.getDependencyManager();
for (Iterator iterator = destinations.iterator(); iterator.hasNext();) {
ObjectName destinationName = (ObjectName) iterator.next();
try {
Class type;
try {
type = Class.forName((String) kernel.getAttribute(
destinationName, "adminObjectInterface"));
} catch (ClassCastException cce) {
type = (Class) kernel.getAttribute(destinationName,
"adminObjectInterface");
}
Set parents = dm.getParents(destinationName);
Iterator i = parents.iterator();
// If no parents this is a configuration we don't need those
// here.
if (!i.hasNext()) {
continue;
}
ObjectName parent = (ObjectName) i.next();
String adminObjectName = destinationName
.getKeyProperty(NameFactory.J2EE_NAME);
if (adminObjectName.equals("MDBTransferBeanOutQueue")
|| adminObjectName.equals("SendReceiveQueue")) {
continue;
}
String configURI = parent.getKeyProperty("name");
if (configURI.startsWith("\"")) {
configURI = configURI.substring(1);
}
if (configURI.endsWith("\"")) {
configURI = configURI.substring(0, configURI.length() - 1);
}
DestinationInfo info = new DestinationInfo(adminObjectName,
(String) kernel.getAttribute(destinationName,
"PhysicalName"), type, destinationName
.getKeyProperty(NameFactory.J2EE_APPLICATION),
destinationName
.getKeyProperty(NameFactory.JCA_RESOURCE),
configURI);
destinationInfos.add(info);
} catch (Exception e) {
log.error(e);
}
}
Collections.sort(destinationInfos);
return destinationInfos;
}
}