1 17 18 package org.apache.geronimo.console.jmsmanager.handlers; 19 20 import java.io.File ; 21 import java.io.IOException ; 22 import java.util.List ; 23 24 import javax.jms.Queue ; 25 import javax.jms.Topic ; 26 import javax.management.ObjectName ; 27 import javax.portlet.ActionRequest; 28 import javax.portlet.ActionResponse; 29 import javax.portlet.PortletException; 30 31 import org.apache.commons.logging.Log; 32 import org.apache.commons.logging.LogFactory; 33 import org.apache.geronimo.console.core.jms.TopicBrowserGBean; 34 import org.apache.geronimo.console.jmsmanager.AbstractJMSManager; 35 import org.apache.geronimo.gbean.AbstractName; 36 import org.apache.geronimo.gbean.GBeanData; 37 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; 38 import org.apache.geronimo.kernel.config.ConfigurationData; 39 import org.apache.geronimo.kernel.config.ConfigurationManager; 40 import org.apache.geronimo.kernel.config.ConfigurationUtil; 41 import org.apache.geronimo.kernel.repository.Artifact; 42 import org.apache.geronimo.kernel.repository.Dependency; 43 import org.apache.geronimo.kernel.repository.ImportType; 44 45 public class CreateDestinationHandler extends AbstractJMSManager implements PortletResponseHandler { 46 protected static Log log = LogFactory 47 .getLog(CreateDestinationHandler.class); 48 49 private static final Artifact parentId = new Artifact("geronimo", "activemq-broker", org.apache.geronimo.system.serverinfo.ServerConstants.getVersion(), "car"); 50 51 68 public void processAction(ActionRequest request, ActionResponse response) 69 throws IOException , PortletException { 70 String destinationName = request.getParameter(DESTINATION_NAME); 71 String destinationPhysicalName = request 72 .getParameter(DESTINATION_PHYSICAL_NAME); 73 String destinationType = request.getParameter(DESTINATION_TYPE); 74 String destinationApplicationName = request 75 .getParameter(DESTINATION_APPLICATION_NAME); 76 String destinationModuleName = request 77 .getParameter(DESTINATION_MODULE_NAME); 78 try { 79 80 Artifact configId = new Artifact(Artifact.DEFAULT_GROUP_ID, BASE_CONFIG_URI + destinationName, "0", "car"); 81 ConfigurationData configurationData = new ConfigurationData(configId, kernel.getNaming()); 82 configurationData.getEnvironment().addDependency(new Dependency(ACTIVEMQ_ARTIFACT, ImportType.ALL)); 83 84 AbstractName adminObjectName = kernel.getNaming().createRootName(configId, destinationName, NameFactory.JCA_ADMIN_OBJECT); 85 89 GBeanData adminObjectData; 90 if (Topic .class.getName().equals(destinationType)) { 91 adminObjectData = getTopicGBeanData(); 92 AbstractName browserName = kernel.getNaming().createChildName(adminObjectName, destinationName, "TopicBrowser"); 95 GBeanData tBrowserBeanData = new GBeanData(browserName, TopicBrowserGBean.GBEAN_INFO); 96 tBrowserBeanData.setAttribute("subscriberName", destinationName); 97 tBrowserBeanData.setReferencePattern("ConnectionFactoryWrapper", JCA_MANAGED_CONNECTION_FACTORY_NAME); 98 tBrowserBeanData.setReferencePattern("TopicWrapper", 99 adminObjectName); 100 101 configurationData.addGBean(tBrowserBeanData); 102 } else if (Queue .class.getName().equals(destinationType)) { 103 adminObjectData = getQueueGBeanData(); 104 } else { 105 throw new PortletException( 106 "Invalid choice destination, must be FQCL of Topic or Queue, not " 107 + destinationType); 108 } 109 adminObjectData.setAbstractName(adminObjectName); 110 adminObjectData.setAttribute("PhysicalName", 111 destinationPhysicalName); 112 configurationData.addGBean(adminObjectData); 113 114 115 ConfigurationManager configurationManager = ConfigurationUtil 116 .getConfigurationManager(kernel); 117 List stores = configurationManager.listStores(); 118 assert stores.size() == 1 : "Piling one hack on another, this code only works with exactly one store"; 119 120 ObjectName storeName = (ObjectName ) stores.iterator().next(); 121 File installDir = (File ) kernel.invoke(storeName, 122 "createNewConfigurationDir"); 123 File configurationDir = null; 130 137 kernel.invoke(storeName, "install", new Object [] {configurationData, installDir}, 140 new String [] {ConfigurationData.class.getName(), File .class.getName() }); 141 142 configurationManager.loadConfiguration(configId); 143 configurationManager.startConfiguration(configId); 144 145 } catch (Exception e) { 146 log.error("problem", e); 147 } 148 response.setRenderParameter("processAction", "viewDestinations"); 149 } 150 151 } 152 | Popular Tags |