// Get the list of connection factories
ResourceAdapterModule[] modules = PortletManager.getOutboundRAModules(renderRequest, new String[]{
"javax.jms.ConnectionFactory", "javax.jms.QueueConnectionFactory", "javax.jms.TopicConnectionFactory",});
try {
for (int i = 0; i < modules.length; i++) {
ResourceAdapterModule module = modules[i];
JMSResourceSummary target = null;
ResourceAdapter[] adapters = PortletManager.getResourceAdapters(renderRequest, module);
String name = null;
if (adapters.length == 1 && adapters[0].getJCAResources().length == 1) {
JCAResource[] resource = PortletManager.getJCAResources(renderRequest, adapters[0]);
if (resource.length == 1 && resource[0].getResourceAdapterInstances().length == 1) {
name = ObjectName.getInstance(resource[0].getResourceAdapterInstanceNames()[0]).getKeyProperty(NameFactory.J2EE_NAME);
}
}
if (name == null) {
name = ObjectName.getInstance(module.getObjectName()).getKeyProperty(NameFactory.J2EE_NAME);
}
String configurationName = PortletManager.getConfigurationFor(renderRequest, PortletManager.getNameFor(renderRequest, module)).toString();
String resourceAdapterModuleName = PortletManager.getNameFor(renderRequest, module).toString();
target = new JMSResourceSummary(configurationName, module.getObjectName(), resourceAdapterModuleName, name);
resources.add(target);
JCAManagedConnectionFactory[] factories = PortletManager.getOutboundFactoriesForRA(renderRequest, module, new String[]{
"javax.jms.ConnectionFactory", "javax.jms.QueueConnectionFactory", "javax.jms.TopicConnectionFactory",});
for (int j = 0; j < factories.length; j++) {
JCAManagedConnectionFactory factory = factories[j];
ObjectName objectName = ObjectName.getInstance(factory.getObjectName());
Kernel kernel = PortletManager.getKernel();
AbstractName abstractName = kernel.getAbstractNameFor(factory);
int state = kernel.getGBeanState(abstractName);
target.getConnectionFactories().add(new ConnectionFactorySummary(factory.getObjectName(), objectName.getKeyProperty(NameFactory.J2EE_NAME),
state));
String factoryInterface = factory.getConnectionInterface();
if (!target.isQueueConnectionFactoryContained()) {
target.setQueueConnectionFactoryContained(factoryInterface.equals("javax.jms.ConnectionFactory") || factoryInterface.equals("javax.jms.QueueConnectionFactory"));
}
if (!target.isTopicConnectionFactoryContained()) {
target.setQueueConnectionFactoryContained(factoryInterface.equals("javax.jms.ConnectionFactory") || factoryInterface.equals("javax.jms.TopicConnectionFactory"));
}
}
}
// Get the list of admin objects
modules = PortletManager.getAdminObjectModules(renderRequest, new String[]{"javax.jms.Queue", "javax.jms.Topic"});
for (int i = 0; i < modules.length; i++) {
ResourceAdapterModule module = modules[i];
JMSResourceSummary target = null;
for (int j = 0; j < resources.size(); j++) {
JMSResourceSummary data = (JMSResourceSummary) resources.get(j);
if (data.adapterObjectName.equals(module.getObjectName())) {
target = data;
break;
}
}
if (target == null) {
ResourceAdapter[] adapters = PortletManager.getResourceAdapters(renderRequest, module);
String name = null;
if (adapters.length == 1 && adapters[0].getJCAResources().length == 1) {
JCAResource[] resource = PortletManager.getJCAResources(renderRequest, adapters[0]);
if (resource.length == 1 && resource[0].getResourceAdapterInstances().length == 1) {
name = ObjectName.getInstance(resource[0].getResourceAdapterInstanceNames()[0]).getKeyProperty(NameFactory.J2EE_NAME);
}
}
if (name == null) {
name = ObjectName.getInstance(module.getObjectName()).getKeyProperty(NameFactory.J2EE_NAME);
}
String configurationName = PortletManager.getConfigurationFor(renderRequest, PortletManager.getNameFor(renderRequest, module)).toString();
String resourceAdapterModuleName = PortletManager.getNameFor(renderRequest, module).toString();
target = new JMSResourceSummary(configurationName, module.getObjectName(), resourceAdapterModuleName, name);
resources.add(target);
}
boolean activeMQAdapter = module.getVendorName().equals("activemq.org");
JCAAdminObject[] admins = PortletManager.getAdminObjectsForRA(renderRequest, module, new String[]{"javax.jms.Queue", "javax.jms.Topic"});
for (int j = 0; j < admins.length; j++) {
Kernel kernel = PortletManager.getKernel();
AbstractName abstractName = kernel.getAbstractNameFor(admins[j]);
ObjectName name = ObjectName.getInstance(abstractName.getObjectName());
String queueName = name.getKeyProperty(NameFactory.J2EE_NAME);
String physicalName = null;
try {
physicalName = (String) admins[j].getConfigProperty("PhysicalName");
} catch (Exception e) {
logger.warn("PhysicalName undefined, using queueName as PhysicalName");
physicalName = queueName;
}
String destType = admins[j].getAdminObjectInterface().indexOf("Queue") > -1 ? "Queue" : "Topic";
String vendorName = module.getVendorName();
DestinationStatistics destinationStat = null;
if (physicalName != null) {
try {
JMSDestinationInfo jmsDestinationInfo = new JMSDestinationInfo();
jmsDestinationInfo.setPhysicalName(physicalName);