Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 96356 invoked from network); 12 Oct 2005 02:28:12 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 12 Oct 2005 02:28:12 -0000 Received: (qmail 57799 invoked by uid 500); 12 Oct 2005 02:28:12 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 57771 invoked by uid 500); 12 Oct 2005 02:28:11 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 57760 invoked by uid 99); 12 Oct 2005 02:28:11 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Oct 2005 19:28:11 -0700 X-ASF-Spam-Status: No, hits=-8.6 required=10.0 tests=ALL_TRUSTED,INFO_TLD,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Tue, 11 Oct 2005 19:28:11 -0700 Received: (qmail 95825 invoked by uid 65534); 12 Oct 2005 02:27:48 -0000 Message-ID: <20051012022748.95820.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r314753 [1/2] - in /geronimo/trunk: applications/console-standard/src/java/org/apache/geronimo/console/configmanager/ applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/ applications/console-standard/src/java... Date: Wed, 12 Oct 2005 02:27:40 -0000 To: scm@geronimo.apache.org From: djencks@apache.org X-Mailer: svnmailer-1.0.5 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: djencks Date: Tue Oct 11 19:27:12 2005 New Revision: 314753 URL: http://svn.apache.org/viewcvs?rev=314753&view=rev Log: GERONIMO-1060 step 1. Rearrange the use of the attribute store Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/configmanager/ConfigManagerPortlet.java geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/configmanager/DeploymentPortlet.java geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/DatabaseManagerHelper.java geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/activemqCF/ActiveMQConnectorHelper.java geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java geronimo/trunk/modules/assembly/maven.xml geronimo/trunk/modules/assembly/src/plan/client-system-plan.xml geronimo/trunk/modules/assembly/src/plan/deployer-system-plan.xml geronimo/trunk/modules/assembly/src/plan/j2ee-tomcat-plan.xml geronimo/trunk/modules/assembly/src/plan/system-plan.xml geronimo/trunk/modules/connector-builder/src/test/org/apache/geronimo/connector/deployment/ConnectorModuleBuilderTest.java geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/local/RedeployCommand.java geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/local/StartCommand.java geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/basic/ProxyMethodInterceptor.java geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/Configuration.java geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManagerImpl.java geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationStore.java geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ManageableAttributeStore.java geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/JMXProxyMethodInterceptor.java geronimo/trunk/modules/kernel/src/test/org/apache/geronimo/kernel/ConfigTest.java geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/configuration/LocalConfigStore.java geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/main/Daemon.java geronimo/trunk/modules/system/src/test/org/apache/geronimo/system/configuration/LocalConfigStoreTest.java geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java geronimo/trunk/plugins/geronimo-deployment-plugin/src/java/org/apache/geronimo/deployment/mavenplugin/StartServer.java geronimo/trunk/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/MavenAttributeStore.java geronimo/trunk/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/MavenConfigStore.java geronimo/trunk/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/configmanager/ConfigManagerPortlet.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/configmanager/ConfigManagerPortlet.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/configmanager/ConfigManagerPortlet.java (original) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/configmanager/ConfigManagerPortlet.java Tue Oct 11 19:27:12 2005 @@ -45,6 +45,7 @@ import org.apache.geronimo.kernel.config.InvalidConfigException; import org.apache.geronimo.kernel.config.NoSuchConfigException; import org.apache.geronimo.kernel.config.NoSuchStoreException; +import org.apache.geronimo.kernel.config.Configuration; import org.apache.geronimo.kernel.jmx.JMXUtil; import org.apache.geronimo.kernel.management.State; @@ -60,14 +61,14 @@ private static final String UNINSTALL_METHOD = "uninstall"; - private static final String[] CONTAINSCONFIG_SIG = { URI.class.getName() }; + private static final String[] CONTAINSCONFIG_SIG = {URI.class.getName()}; - private static final String[] UNINSTALL_SIG = { URI.class.getName() }; + private static final String[] UNINSTALL_SIG = {URI.class.getName()}; private static final String QUEUETOPIC_URI = "runtimedestination/"; private static final String CONFIG_INIT_PARAM = "config-type"; - + private static final ObjectName deployer = JMXUtil .getObjectName(ObjectNameConstants.DEPLOYER_OBJECT_NAME); @@ -92,7 +93,7 @@ } public void processAction(ActionRequest actionRequest, - ActionResponse actionResponse) throws PortletException, IOException { + ActionResponse actionResponse) throws PortletException, IOException { String action = actionRequest.getParameter("action"); actionResponse.setRenderParameter("message", ""); // set to blank first try { @@ -100,15 +101,15 @@ .getConfigurationManager(kernel); ObjectName configName = null; String config = getConfigID(actionRequest); - if (configurationManager.isLoaded(URI.create(config))) - configName = JMXUtil - .getObjectName(ObjectNameConstants.CONFIG_GBEAN_PREFIX - + "\"" + getConfigID(actionRequest) + "\""); - else - configName = configurationManager.load(URI.create(config)); + URI configID = URI.create(config); + if (configurationManager.isLoaded(configID)) { + configName = Configuration.getConfigurationObjectName(configID); + } else { + configName = configurationManager.load(configID); + } if (START_ACTION.equals(action)) { - kernel.startRecursiveGBean(configName); + configurationManager.start(configName); //kernel.startConfiguration(getConfigID(actionRequest)); messageStatus = "Started application

"; } else if (STOP_ACTION.equals(action)) { @@ -136,7 +137,7 @@ throw new PortletException("Exception", e); } } - + /** * Uninstall an application configuration * @@ -155,36 +156,39 @@ ObjectName configStore = (ObjectName) configStores.get(i); Boolean result = (Boolean) kernel.invoke(configStore, CONTAINSCONFIG_METHOD, - new Object[] { URI.create(configID) }, CONTAINSCONFIG_SIG); + new Object[]{URI.create(configID)}, CONTAINSCONFIG_SIG); if (result.booleanValue() == true) { // stop config if running if (configManager.isLoaded(URI.create(configID))) { //int state = kernel.getConfigurationState(configID); int state = kernel .getGBeanState(JMXUtil - .getObjectName(ObjectNameConstants.CONFIG_GBEAN_PREFIX - + "\"" + configID + "\"")); + .getObjectName(ObjectNameConstants.CONFIG_GBEAN_PREFIX + + "\"" + configID + "\"")); if (state == State.RUNNING.toInt()) { //kernel.stopConfiguration(configID); kernel .stopGBean(JMXUtil - .getObjectName(ObjectNameConstants.CONFIG_GBEAN_PREFIX - + "\"" + configID + "\"")); + .getObjectName(ObjectNameConstants.CONFIG_GBEAN_PREFIX + + "\"" + configID + "\"")); } } - kernel.invoke(configStore, UNINSTALL_METHOD, new Object[] { URI - .create(configID) }, UNINSTALL_SIG); + kernel.invoke(configStore, UNINSTALL_METHOD, new Object[]{URI + .create(configID)}, UNINSTALL_SIG); } } } + /** - * Check if a configuration should be listed here. This method depends on the "config-type" portlet parameter + * Check if a configuration should be listed here. This method depends on the "config-type" portlet parameter * which is set in portle.xml. */ - private boolean shouldListConfig(ConfigurationInfo info){ - String configType = getInitParameter(CONFIG_INIT_PARAM); - if(configType!=null && !info.getType().getName().equalsIgnoreCase(configType)) return false; - else return true; + private boolean shouldListConfig(ConfigurationInfo info) { + String configType = getInitParameter(CONFIG_INIT_PARAM); + if (configType != null && !info.getType().getName().equalsIgnoreCase(configType)) + return false; + else + return true; } /* @@ -201,7 +205,7 @@ } protected void doView(RenderRequest renderRequest, - RenderResponse renderResponse) throws IOException, PortletException { + RenderResponse renderResponse) throws IOException, PortletException { if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) { return; } @@ -219,13 +223,11 @@ if (shouldListConfig(info)) { // TODO: Check if this is the right solution // Disregard JMS Queues and Topics && - if (!info.getConfigID().getPath().startsWith( - QUEUETOPIC_URI) + if (!info.getConfigID().getPath().startsWith(QUEUETOPIC_URI) && !info - .getConfigID() - .getPath() - .startsWith( - SecurityConstants.SECURITY_CONFIG_PREFIX)) { + .getConfigID() + .getPath() + .startsWith(SecurityConstants.SECURITY_CONFIG_PREFIX)) { configInfo.add(info); } } @@ -249,19 +251,16 @@ } protected void doHelp(RenderRequest renderRequest, - RenderResponse renderResponse) throws PortletException, IOException { + RenderResponse renderResponse) throws PortletException, IOException { helpView.include(renderRequest, renderResponse); } public void init(PortletConfig portletConfig) throws PortletException { super.init(portletConfig); kernel = KernelRegistry.getSingleKernel(); - normalView = portletConfig.getPortletContext().getRequestDispatcher( - "/WEB-INF/view/configmanager/normal.jsp"); - maximizedView = portletConfig.getPortletContext().getRequestDispatcher( - "/WEB-INF/view/configmanager/maximized.jsp"); - helpView = portletConfig.getPortletContext().getRequestDispatcher( - "/WEB-INF/view/configmanager/help.jsp"); + normalView = portletConfig.getPortletContext().getRequestDispatcher("/WEB-INF/view/configmanager/normal.jsp"); + maximizedView = portletConfig.getPortletContext().getRequestDispatcher("/WEB-INF/view/configmanager/maximized.jsp"); + helpView = portletConfig.getPortletContext().getRequestDispatcher("/WEB-INF/view/configmanager/help.jsp"); } public void destroy() { Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/configmanager/DeploymentPortlet.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/configmanager/DeploymentPortlet.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/configmanager/DeploymentPortlet.java (original) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/configmanager/DeploymentPortlet.java Tue Oct 11 19:27:12 2005 @@ -43,6 +43,7 @@ import org.apache.geronimo.kernel.KernelRegistry; import org.apache.geronimo.kernel.config.ConfigurationManager; import org.apache.geronimo.kernel.config.ConfigurationUtil; +import org.apache.geronimo.kernel.config.Configuration; import org.apache.geronimo.kernel.jmx.JMXUtil; public class DeploymentPortlet extends BasePortlet { @@ -54,8 +55,8 @@ private Kernel kernel; - private static final String[] ARGS = { File.class.getName(), - File.class.getName() }; + private static final String[] ARGS = {File.class.getName(), + File.class.getName()}; private static final ObjectName deployer = JMXUtil .getObjectName(ObjectNameConstants.DEPLOYER_OBJECT_NAME); @@ -63,15 +64,14 @@ private boolean messageNotRendered = true; public void processAction(ActionRequest actionRequest, - ActionResponse actionResponse) throws PortletException, IOException { + ActionResponse actionResponse) throws PortletException, IOException { messageNotRendered = true; if (!PortletFileUpload.isMultipartContent(actionRequest)) { throw new PortletException("Expected file upload"); } File rootDir = new File(System.getProperty("java.io.tmpdir")); - PortletFileUpload uploader = new PortletFileUpload( - new DiskFileItemFactory(10240, rootDir)); + PortletFileUpload uploader = new PortletFileUpload(new DiskFileItemFactory(10240, rootDir)); File moduleFile = null; File planFile = null; String startApp = null; @@ -116,27 +116,23 @@ throw new PortletException(e); } try { - List list = (List) kernel.invoke(deployer, "deploy", new Object[] { - moduleFile, planFile }, ARGS); + List list = (List) kernel.invoke(deployer, "deploy", new Object[]{ + moduleFile, planFile}, ARGS); actionResponse.setRenderParameter("outcome", "The application was successfully deployed.
"); // start installed app/s if ((startApp != null) && "YES".equalsIgnoreCase(startApp)) { ConfigurationManager configurationManager = ConfigurationUtil .getConfigurationManager(kernel); - int size = list.size(); - // assumes installed app/s returned as a list - for (int i = 0; i < size; i++) { - URI config = URI.create((String) list.get(i)); - // This is a hack that seems to work. Please fix this when - // you understand what is happening or where you can get the - // ObjectName from the configId without calling - // ConfigurationManager.load(URI). - if (configurationManager.isLoaded(config)) - configurationManager.unload(config); - - ObjectName configName = configurationManager.load(config); - kernel.startRecursiveGBean(configName); + for (Iterator iterator = list.iterator(); iterator.hasNext();) { + URI config = URI.create((String)iterator.next()); + ObjectName configName; + if (configurationManager.isLoaded(config)) { + configName = Configuration.getConfigurationObjectName(config); + } else { + configName = configurationManager.load(config); + } + configurationManager.start(configName); } } } catch (DeploymentException e) { @@ -168,7 +164,7 @@ } protected void doView(RenderRequest renderRequest, - RenderResponse renderResponse) throws PortletException, IOException { + RenderResponse renderResponse) throws PortletException, IOException { if (messageNotRendered) { renderRequest.setAttribute("outcome", renderRequest .getParameter("outcome")); @@ -179,17 +175,15 @@ } protected void doHelp(RenderRequest renderRequest, - RenderResponse renderResponse) throws PortletException, IOException { + RenderResponse renderResponse) throws PortletException, IOException { helpView.include(renderRequest, renderResponse); } public void init(PortletConfig portletConfig) throws PortletException { super.init(portletConfig); kernel = KernelRegistry.getSingleKernel(); - deployView = portletConfig.getPortletContext().getRequestDispatcher( - "/WEB-INF/view/configmanager/deploy.jsp"); - helpView = portletConfig.getPortletContext().getRequestDispatcher( - "/WEB-INF/view/configmanager/deployHelp.jsp"); + deployView = portletConfig.getPortletContext().getRequestDispatcher("/WEB-INF/view/configmanager/deploy.jsp"); + helpView = portletConfig.getPortletContext().getRequestDispatcher("/WEB-INF/view/configmanager/deployHelp.jsp"); } public void destroy() { Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/DatabaseManagerHelper.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/DatabaseManagerHelper.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/DatabaseManagerHelper.java (original) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/databasemanager/DatabaseManagerHelper.java Tue Oct 11 19:27:12 2005 @@ -40,6 +40,7 @@ import org.apache.geronimo.kernel.KernelRegistry; import org.apache.geronimo.kernel.config.ConfigurationManager; import org.apache.geronimo.kernel.config.ConfigurationUtil; +import org.apache.geronimo.kernel.config.Configuration; import org.apache.geronimo.kernel.jmx.JMXUtil; public class DatabaseManagerHelper { @@ -180,20 +181,15 @@ ConfigurationManager configurationManager = ConfigurationUtil .getConfigurationManager(kernel); // start installed app/s - int size = list.size(); - for (int i = 0; i < size; i++) { - String config = (String) list.get(i); - //URI configID = new URI(config); - //kernel.startConfiguration(configID); + for (Iterator iterator = list.iterator(); iterator.hasNext();) { + URI configId = URI.create((String)iterator.next()); ObjectName configName = null; - if (configurationManager.isLoaded(URI.create(config))) { - configName = JMXUtil - .getObjectName(ObjectNameConstants.CONFIG_GBEAN_PREFIX - + "\"" + config + "\""); + if (configurationManager.isLoaded(configId)) { + configName = Configuration.getConfigurationObjectName(configId); } else { - configName = configurationManager.load(URI.create(config)); + configName = configurationManager.load(configId); } - kernel.startRecursiveGBean(configName); + configurationManager.start(configName); } } catch (DeploymentException e) { StringBuffer buf = new StringBuffer(256); Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/activemqCF/ActiveMQConnectorHelper.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/activemqCF/ActiveMQConnectorHelper.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/activemqCF/ActiveMQConnectorHelper.java (original) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/activemqCF/ActiveMQConnectorHelper.java Tue Oct 11 19:27:12 2005 @@ -40,6 +40,7 @@ import org.apache.geronimo.kernel.KernelRegistry; import org.apache.geronimo.kernel.config.ConfigurationManager; import org.apache.geronimo.kernel.config.ConfigurationUtil; +import org.apache.geronimo.kernel.config.Configuration; import org.apache.geronimo.kernel.jmx.JMXUtil; public class ActiveMQConnectorHelper { @@ -75,8 +76,6 @@ private static final String GETURL_METHOD = "getURL"; - private List dependencies; - static { // Initialize static vars REPO_FOLDER = getRepositoryFile(); @@ -187,19 +186,18 @@ Kernel kernel = KernelRegistry.getSingleKernel(); List list = (List) kernel.invoke(DEPLOYER_NAME, DEPLOY_METHOD, new Object[] {moduleFile, planFile}, DEPLOYER_ARGS); - System.out.println("Deployed: " + moduleFile + " : " + planFile); - // start installed app/s - int size = list.size(); - for (int i = 0; i < size; i++) { - String config = (String) list.get(i); - //URI configID = new URI(config); - //kernel.startConfiguration(configID); - ConfigurationManager configurationManager = ConfigurationUtil - .getConfigurationManager(kernel); - ObjectName configName = configurationManager.load(URI - .create(config)); + ConfigurationManager configurationManager = ConfigurationUtil + .getConfigurationManager(kernel); + for (Iterator iterator = list.iterator(); iterator.hasNext();) { + URI configId = URI.create((String)iterator.next()); + ObjectName configName = null; + if (configurationManager.isLoaded(configId)) { + configName = Configuration.getConfigurationObjectName(configId); + } else { + configName = configurationManager.load(configId); + } - kernel.startRecursiveGBean(configName); + configurationManager.start(configName); } } catch (DeploymentException e) { StringBuffer buf = new StringBuffer(256); Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java (original) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java Tue Oct 11 19:27:12 2005 @@ -156,7 +156,7 @@ ConfigurationData.class.getName(), File.class.getName() }); ObjectName configName = configurationManager.load(configId); - kernel.startRecursiveGBean(configName); + configurationManager.start(configName); } catch (Exception e) { log.info("problem", e); Modified: geronimo/trunk/modules/assembly/maven.xml URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/maven.xml?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/assembly/maven.xml (original) +++ geronimo/trunk/modules/assembly/maven.xml Tue Oct 11 19:27:12 2005 @@ -360,6 +360,12 @@ + Modified: geronimo/trunk/modules/assembly/src/plan/client-system-plan.xml URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/src/plan/client-system-plan.xml?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/assembly/src/plan/client-system-plan.xml (original) +++ geronimo/trunk/modules/assembly/src/plan/client-system-plan.xml Tue Oct 11 19:27:12 2005 @@ -39,6 +39,7 @@ *:j2eeType=ConfigurationStore,* + AttributeManager Modified: geronimo/trunk/modules/assembly/src/plan/deployer-system-plan.xml URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/src/plan/deployer-system-plan.xml?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/assembly/src/plan/deployer-system-plan.xml (original) +++ geronimo/trunk/modules/assembly/src/plan/deployer-system-plan.xml Tue Oct 11 19:27:12 2005 @@ -35,6 +35,7 @@ *:j2eeType=ConfigurationStore,* + AttributeManager Modified: geronimo/trunk/modules/assembly/src/plan/j2ee-tomcat-plan.xml URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/src/plan/j2ee-tomcat-plan.xml?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/assembly/src/plan/j2ee-tomcat-plan.xml (original) +++ geronimo/trunk/modules/assembly/src/plan/j2ee-tomcat-plan.xml Tue Oct 11 19:27:12 2005 @@ -112,14 +112,14 @@ HTTP - 0.0.0.0 - ${PlanHTTPPort} + ${PlanServerHostname} + ${PlanHTTPPort2} 8192 150 25 75 false - ${PlanHTTPSPort} + ${PlanHTTPSPort2} 100 20000 false @@ -131,10 +131,10 @@ AJP AJP - 0.0.0.0 - ${PlanAJPPort} + ${PlanServerHostname} + ${PlanAJPPort2} false - ${PlanHTTPSPort} + ${PlanHTTPSPort2} TomcatWebContainer @@ -145,8 +145,8 @@ --> HTTPS - 0.0.0.0 - ${PlanHTTPSPort} + ${PlanServerHostname} + ${PlanHTTPSPort2} 8192 150 25 Modified: geronimo/trunk/modules/assembly/src/plan/system-plan.xml URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/src/plan/system-plan.xml?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/assembly/src/plan/system-plan.xml (original) +++ geronimo/trunk/modules/assembly/src/plan/system-plan.xml Tue Oct 11 19:27:12 2005 @@ -39,6 +39,7 @@ *:j2eeType=ConfigurationStore,* + AttributeManager Modified: geronimo/trunk/modules/connector-builder/src/test/org/apache/geronimo/connector/deployment/ConnectorModuleBuilderTest.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/connector-builder/src/test/org/apache/geronimo/connector/deployment/ConnectorModuleBuilderTest.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/connector-builder/src/test/org/apache/geronimo/connector/deployment/ConnectorModuleBuilderTest.java (original) +++ geronimo/trunk/modules/connector-builder/src/test/org/apache/geronimo/connector/deployment/ConnectorModuleBuilderTest.java Tue Oct 11 19:27:12 2005 @@ -69,6 +69,7 @@ import org.apache.geronimo.kernel.config.ConfigurationStore; import org.apache.geronimo.kernel.config.InvalidConfigException; import org.apache.geronimo.kernel.config.NoSuchConfigException; +import org.apache.geronimo.kernel.config.ManageableAttributeStore; import org.apache.geronimo.kernel.jmx.JMXUtil; import org.apache.geronimo.kernel.management.State; import org.apache.geronimo.kernel.repository.Repository; @@ -377,8 +378,8 @@ Kernel kernel = null; try { GBeanData config = ExecutableConfigurationUtil.getConfigurationGBeanData(configurationData); - ObjectName objectName = ObjectName.getInstance("test:configuration=test-ejb-jar"); - config.setName(objectName); + ObjectName configName = ObjectName.getInstance("test:configuration=test-ejb-jar"); + config.setName(configName); kernel = KernelFactory.newInstance().createKernel("bar"); kernel.boot(); @@ -413,9 +414,9 @@ // load the configuration config.setAttribute("baseURL", unpackedDir.toURL()); kernel.loadGBean(config, cl); - - // start the configuration - kernel.startRecursiveGBean(objectName); + kernel.startGBean(configName); + kernel.invoke(configName, "loadGBeans", new Object[] {null}, new String[] {ManageableAttributeStore.class.getName()}); + kernel.invoke(configName, "startRecursiveGBeans"); Set gb = kernel.listGBeans(JMXUtil.getObjectName("test:*")); for (Iterator iterator = gb.iterator(); iterator.hasNext();) { ObjectName name = (ObjectName) iterator.next(); @@ -423,7 +424,7 @@ System.out.println("Not running: " + name); } } - assertRunning(kernel, objectName); + assertRunning(kernel, configName); ObjectName applicationObjectName = NameFactory.getApplicationName(null, null, null, j2eeContext); if (!j2eeContext.getJ2eeApplicationName().equals("null")) { @@ -523,7 +524,7 @@ } - kernel.stopGBean(objectName); + kernel.stopGBean(configName); } finally { if (ds != null) { Connection connection = null; Modified: geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/local/RedeployCommand.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/local/RedeployCommand.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/local/RedeployCommand.java (original) +++ geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/local/RedeployCommand.java Tue Oct 11 19:27:12 2005 @@ -110,7 +110,7 @@ List list = configurationManager.loadRecursive(configID); for (int j = 0; j < list.size(); j++) { ObjectName name = (ObjectName) list.get(j); - kernel.startRecursiveGBean(name); + configurationManager.start(name); updateStatus("Started "+clean(name.getKeyProperty("name"))); } } Modified: geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/local/StartCommand.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/local/StartCommand.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/local/StartCommand.java (original) +++ geronimo/trunk/modules/deploy-jsr88/src/java/org/apache/geronimo/deployment/plugin/local/StartCommand.java Tue Oct 11 19:27:12 2005 @@ -70,12 +70,12 @@ // That means that the configuration may have been distributed but has not yet been loaded. // That's fine, we'll load it next. } - + // Load and start the module List list = configurationManager.loadRecursive(moduleID); for (int j = 0; j < list.size(); j++) { ObjectName name = (ObjectName) list.get(j); - kernel.startRecursiveGBean(name); + configurationManager.start(name); String configName = ObjectName.unquote(name.getKeyProperty("name")); List kids = loadChildren(kernel, configName); TargetModuleIDImpl id = new TargetModuleIDImpl(modules[i].getTarget(), configName, Modified: geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java (original) +++ geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java Tue Oct 11 19:27:12 2005 @@ -472,25 +472,29 @@ ClassLoader[] parentCL; List parentId = configurationData.getParentId(); if (kernel != null && parentId != null && parentId.size() > 0) { - loadAncestors(kernel, parentId, loadedAncestors); - ParentSource parentSource = new ConfigurationParentSource(kernel); - parentId = getExtremalSet(parentId, parentSource); - configurationData.setParentId(parentId); - + ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel); try { - for (Iterator iterator = parentId.iterator(); iterator.hasNext();) { - URI uri = (URI) iterator.next(); - ObjectName ancestorName = Configuration.getConfigurationObjectName(uri); - List started = new ArrayList(); - startAncestors(ancestorName, kernel, started); - startedAncestors.addAll(started); + loadAncestors(kernel, parentId, loadedAncestors, configurationManager); + ParentSource parentSource = new ConfigurationParentSource(kernel); + parentId = getExtremalSet(parentId, parentSource); + configurationData.setParentId(parentId); + + try { + for (Iterator iterator = parentId.iterator(); iterator.hasNext();) { + URI uri = (URI) iterator.next(); + ObjectName ancestorName = Configuration.getConfigurationObjectName(uri); + List started = new ArrayList(); + startAncestors(ancestorName, kernel, started, configurationManager); + startedAncestors.addAll(started); + } + } catch (DeploymentException e) { + throw e; + } catch (Exception e) { + throw new DeploymentException(e); } - } catch (DeploymentException e) { - throw e; - } catch (Exception e) { - throw new DeploymentException(e); + } finally { + ConfigurationUtil.releaseConfigurationManager(kernel, configurationManager); } - try { parentCL = new ClassLoader[parentId.size()]; for (int i = 0; i < parentId.size(); i++) { @@ -513,10 +517,8 @@ return parentCL; } - private void loadAncestors(Kernel kernel, List parentId, List loadedAncestors) throws DeploymentException { + private void loadAncestors(Kernel kernel, List parentId, List loadedAncestors, ConfigurationManager configurationManager) throws DeploymentException { if (kernel != null && parentId != null) { - ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel); - try { for (Iterator iterator = parentId.iterator(); iterator.hasNext();) { URI uri = (URI) iterator.next(); @@ -524,23 +526,21 @@ } } catch (Exception e) { throw new DeploymentException("Unable to load parents", e); - } finally { - ConfigurationUtil.releaseConfigurationManager(kernel, configurationManager); } } } - private void startAncestors(ObjectName name, Kernel kernel, List started) throws Exception { + private void startAncestors(ObjectName name, Kernel kernel, List started, ConfigurationManager configurationManager) throws Exception { if (name != null && !isRunning(kernel, name)) { URI[] patterns = (URI[]) kernel.getGBeanData(name).getAttribute("parentId"); if (patterns != null) { for (int i = 0; i < patterns.length; i++) { URI pattern = patterns[i]; ObjectName ancestorName = Configuration.getConfigurationObjectName(pattern); - startAncestors(ancestorName, kernel, started); + startAncestors(ancestorName, kernel, started, configurationManager); } } - kernel.startGBean(name); + configurationManager.loadGBeans(name); started.add(name); } } Modified: geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java (original) +++ geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java Tue Oct 11 19:27:12 2005 @@ -68,6 +68,7 @@ import org.apache.geronimo.kernel.config.ConfigurationStore; import org.apache.geronimo.kernel.config.InvalidConfigException; import org.apache.geronimo.kernel.config.NoSuchConfigException; +import org.apache.geronimo.kernel.config.ManageableAttributeStore; import org.apache.geronimo.kernel.jmx.JMXUtil; import org.apache.geronimo.kernel.management.State; import org.apache.geronimo.security.SecurityServiceImpl; @@ -117,11 +118,14 @@ builder.addGBeans(earContext, module, cl); earContext.close(); module.close(); + GBeanData configData = earContext.getConfigurationGBeanData(); + ObjectName configName = configData.getName(); configData.setAttribute("baseURL", path.toURL()); kernel.loadGBean(configData, cl); - - kernel.startRecursiveGBean(configData.getName()); + kernel.startGBean(configName); + kernel.invoke(configName, "loadGBeans", new Object[] {null}, new String[] {ManageableAttributeStore.class.getName()}); + kernel.invoke(configName, "startRecursiveGBeans"); if (kernel.getGBeanState(configData.getName()) != State.RUNNING_INDEX) { fail("gbean not started: " + configData.getName()); } @@ -135,13 +139,17 @@ GBeanData filterMapping2Data = kernel.getGBeanData(ObjectName.getInstance("test:J2EEApplication=null,J2EEServer=bar,Servlet=Servlet1,WebFilter=Filter2,WebModule=war4,j2eeType=WebFilterMapping")); // assertEquals(Collections.singleton(ObjectName.getInstance("test:J2EEApplication=null,J2EEServer=bar,Servlet=Servlet1,WebFilter=Filter1,WebModule=war4,j2eeType=WebFilterMapping")), filterMapping2Data.getReferencePatterns("Previous")); - kernel.stopGBean(configData.getName()); - kernel.unloadGBean(configData.getName()); + kernel.stopGBean(configName); + kernel.unloadGBean(configName); + + //what is this testing? kernel.loadGBean(configData, cl); - kernel.startRecursiveGBean(configData.getName()); - kernel.stopGBean(configData.getName()); - kernel.unloadGBean(configData.getName()); + kernel.startGBean(configName); + kernel.invoke(configName, "loadGBeans", new Object[] {null}, new String[] {ManageableAttributeStore.class.getName()}); + kernel.invoke(configName, "startRecursiveGBeans"); + kernel.stopGBean(configName); + kernel.unloadGBean(configName); } private EARContext createEARContext(File outputPath, URI id) throws MalformedObjectNameException, DeploymentException { Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/basic/ProxyMethodInterceptor.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/basic/ProxyMethodInterceptor.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/basic/ProxyMethodInterceptor.java (original) +++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/basic/ProxyMethodInterceptor.java Tue Oct 11 19:27:12 2005 @@ -349,7 +349,7 @@ } public Object invoke(ObjectName objectName, Object[] arguments) throws Throwable { - kernel.startRecursiveGBean(objectName); + kernel.startGBean(objectName); return null; } } Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/Configuration.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/Configuration.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/Configuration.java (original) +++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/Configuration.java Tue Oct 11 19:27:12 2005 @@ -128,11 +128,6 @@ */ private final ConfigurationStore configurationStore; - /** - * Used to override stored attribute values with values set by the user. - */ - private final ManageableAttributeStore manageableStore; - private final List dependencies; private final List classPath; private final String domain; @@ -184,7 +179,6 @@ classPath = null; baseURL = null; repositories = null; - manageableStore = null; } /** @@ -210,8 +204,7 @@ byte[] gbeanState, Collection repositories, List dependencies, - ConfigurationStore configurationStore, - ManageableAttributeStore manageableStore) throws Exception { + ConfigurationStore configurationStore) throws Exception { this.kernel = kernel; this.objectNameString = objectName; @@ -234,7 +227,6 @@ } this.configurationStore = configurationStore; - this.manageableStore = manageableStore; this.domain = domain; this.server = server; @@ -267,6 +259,12 @@ configurationClassLoader = new MultiParentClassLoader(id, urls, getClassLoaders(parentId)); } +// loadGBeans(); + + log.info("Started configuration " + id); + } + + public void loadGBeans(ManageableAttributeStore attributeStore) throws InvalidConfigException, GBeanAlreadyExistsException { // DSS: why exactally are we doing this? I bet there is a reason, but // we should state why here. ClassLoader oldCl = Thread.currentThread().getContextClassLoader(); @@ -274,7 +272,10 @@ Thread.currentThread().setContextClassLoader(configurationClassLoader); // create and initialize GBeans - Collection gbeans = loadGBeans(gbeanState, configurationClassLoader); + Collection gbeans = loadGBeans(); + if (attributeStore != null) { + gbeans = attributeStore.setAttributes(id, gbeans); + } // register all the GBeans Set objectNames = new HashSet(); @@ -287,8 +288,15 @@ } finally { Thread.currentThread().setContextClassLoader(oldCl); } + } - log.info("Started configuration " + id); + public void startRecursiveGBeans() throws GBeanNotFoundException { + for (Iterator iterator = objectNames.iterator(); iterator.hasNext();) { + ObjectName gbeanName = (ObjectName) iterator.next(); + if (kernel.isGBeanEnabled(gbeanName)) { + kernel.startRecursiveGBean(gbeanName); + } + } } private void addParentDependencies(Kernel kernel, URI id, URI[] parentId) throws MalformedObjectNameException { @@ -488,11 +496,8 @@ } private ObjectName loadGBean(GBeanData beanData, Set objectNames) throws GBeanAlreadyExistsException { - // todo jnb: initializing attibutes here seems questionable - perhaps these should be injected - // by the ConfigurationManager once the Configuration has been loaded ObjectName name = beanData.getName(); setGBeanBaseUrl(beanData, baseURL); - setManageableAttributes(beanData); log.trace("Registering GBean " + name); kernel.loadGBean(beanData, configurationClassLoader); @@ -502,6 +507,7 @@ return name; } +/* private void setManageableAttributes(GBeanData data) { if(manageableStore == null) { log.debug("Configuration cannot load manageable attributes; no manageable store present"); @@ -516,19 +522,18 @@ } } } +*/ /** * Load GBeans from the supplied byte array using the supplied ClassLoader * - * @param gbeanState the serialized form of the GBeans - * @param cl the ClassLoader used to locate classes needed during deserialization * @return a Map of GBeans loaded from the persisted state * @throws InvalidConfigException if there is a problem deserializing the state */ - private static Collection loadGBeans(byte[] gbeanState, ClassLoader cl) throws InvalidConfigException { + public Collection loadGBeans() throws InvalidConfigException { Map gbeans = new HashMap(); try { - ObjectInputStream ois = new ObjectInputStreamExt(new ByteArrayInputStream(gbeanState), cl); + ObjectInputStream ois = new ObjectInputStreamExt(new ByteArrayInputStream(gbeanState), configurationClassLoader); try { while (true) { GBeanData gbeanData = new GBeanData(); @@ -630,11 +635,13 @@ infoFactory.addReference("Repositories", Repository.class, "GBean"); infoFactory.addReference("ConfigurationStore", ConfigurationStore.class); - infoFactory.addReference("AttributeStore", ManageableAttributeStore.class); +// infoFactory.addReference("AttributeStore", ManageableAttributeStore.class); infoFactory.addOperation("addGBean", new Class[]{GBeanData.class, boolean.class}); infoFactory.addOperation("removeGBean", new Class[]{ObjectName.class}); infoFactory.addOperation("saveState"); + infoFactory.addOperation("loadGBeans", new Class[] {ManageableAttributeStore.class}); + infoFactory.addOperation("startRecursiveGBeans"); infoFactory.setConstructor(new String[]{ "kernel", @@ -649,8 +656,8 @@ "gBeanState", "Repositories", "dependencies", - "ConfigurationStore", - "AttributeStore"}); + "ConfigurationStore" + }); GBEAN_INFO = infoFactory.getBeanInfo(); } Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java (original) +++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java Tue Oct 11 19:27:12 2005 @@ -73,5 +73,8 @@ * @throws NoSuchConfigException if the configuration is now loaded into the kernel */ void unload(URI configID) throws NoSuchConfigException; - + + void start(ObjectName configName) throws InvalidConfigException; + + void loadGBeans(ObjectName configName) throws InvalidConfigException; } Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManagerImpl.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManagerImpl.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManagerImpl.java (original) +++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManagerImpl.java Tue Oct 11 19:27:12 2005 @@ -45,6 +45,7 @@ private static final Log log = LogFactory.getLog(ConfigurationManagerImpl.class); private final Kernel kernel; private final Collection stores; + private final ManageableAttributeStore attributeStore; private final ShutdownHook shutdownHook; private static final ObjectName CONFIGURATION_NAME_QUERY; @@ -56,11 +57,11 @@ } } - public ConfigurationManagerImpl(Kernel kernel, Collection stores) { + public ConfigurationManagerImpl(Kernel kernel, Collection stores, ManageableAttributeStore attributeStore) { this.kernel = kernel; this.stores = stores; + this.attributeStore = attributeStore; shutdownHook = new ShutdownHook(kernel); - } public List listStores() { @@ -99,12 +100,31 @@ for (int i = 0; i < storeSnapshot.size(); i++) { ConfigurationStore store = (ConfigurationStore) storeSnapshot.get(i); if (store.containsConfiguration(configID)) { - return store.loadConfiguration(configID); + ObjectName configName = store.loadConfiguration(configID); + return configName; } } throw new NoSuchConfigException("No configuration with id: " + configID); } + public void loadGBeans(ObjectName configName) throws InvalidConfigException { + try { + kernel.startGBean(configName); + kernel.invoke(configName, "loadGBeans", new Object[] {attributeStore}, new String[] {ManageableAttributeStore.class.getName()}); + } catch (Exception e) { + throw new InvalidConfigException("Could not extract gbean data from configuration", e); + } + } + + public void start(ObjectName configName) throws InvalidConfigException { + loadGBeans(configName); + try { + kernel.invoke(configName, "startRecursiveGBeans"); + } catch (Exception e) { + throw new InvalidConfigException("Could not extract gbean data from configuration", e); + } + } + public List loadRecursive(URI configID) throws NoSuchConfigException, IOException, InvalidConfigException { LinkedList ancestors = new LinkedList(); Set preloaded = kernel.listGBeans(CONFIGURATION_NAME_QUERY); @@ -181,8 +201,9 @@ GBeanInfoBuilder infoFactory = new GBeanInfoBuilder(ConfigurationManagerImpl.class, "ConfigurationManager"); infoFactory.addAttribute("kernel", Kernel.class, false); infoFactory.addReference("Stores", ConfigurationStore.class, "ConfigurationStore"); + infoFactory.addReference("AttributeStore", ManageableAttributeStore.class, ManageableAttributeStore.ATTRIBUTE_STORE); infoFactory.addInterface(ConfigurationManager.class); - infoFactory.setConstructor(new String[]{"kernel", "Stores"}); + infoFactory.setConstructor(new String[]{"kernel", "Stores", "AttributeStore"}); GBEAN_INFO = infoFactory.getBeanInfo(); } Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationStore.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationStore.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationStore.java (original) +++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationStore.java Tue Oct 11 19:27:12 2005 @@ -25,6 +25,8 @@ import javax.management.ObjectName; +import org.apache.geronimo.gbean.GBeanData; + /** * Interface to a store for Configurations. * Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ManageableAttributeStore.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ManageableAttributeStore.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ManageableAttributeStore.java (original) +++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ManageableAttributeStore.java Tue Oct 11 19:27:12 2005 @@ -17,9 +17,12 @@ package org.apache.geronimo.kernel.config; import org.apache.geronimo.gbean.GAttributeInfo; +import org.apache.geronimo.gbean.GBeanData; import javax.management.ObjectName; import java.io.IOException; +import java.net.URI; +import java.util.Collection; /** * Able to retrieve the values of certain "manageable" attributes from a @@ -29,6 +32,10 @@ * @version $Rev: 169154 $ $Date: 2005-05-08 15:35:23 -0400 (Sun, 08 May 2005) $ */ public interface ManageableAttributeStore { + + public static final String ATTRIBUTE_STORE = "AttributeStore"; + + public Collection setAttributes(URI configurationName, Collection datas) throws InvalidConfigException; /** * Return the object name of this store * @return the object name of this store Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/JMXProxyMethodInterceptor.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/JMXProxyMethodInterceptor.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/JMXProxyMethodInterceptor.java (original) +++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/JMXProxyMethodInterceptor.java Tue Oct 11 19:27:12 2005 @@ -234,7 +234,7 @@ } public Object invoke(ObjectName objectName, Object[] arguments) throws Throwable { - kernel.startRecursiveGBean(objectName); + kernel.startGBean(objectName); return null; } } Modified: geronimo/trunk/modules/kernel/src/test/org/apache/geronimo/kernel/ConfigTest.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/test/org/apache/geronimo/kernel/ConfigTest.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/kernel/src/test/org/apache/geronimo/kernel/ConfigTest.java (original) +++ geronimo/trunk/modules/kernel/src/test/org/apache/geronimo/kernel/ConfigTest.java Tue Oct 11 19:27:12 2005 @@ -25,6 +25,7 @@ import org.apache.geronimo.gbean.GBeanData; import org.apache.geronimo.kernel.config.ConfigurationManagerImpl; import org.apache.geronimo.kernel.config.Configuration; +import org.apache.geronimo.kernel.config.ManageableAttributeStore; import org.apache.geronimo.kernel.management.State; /** @@ -50,7 +51,9 @@ // load and start the config kernel.loadGBean(config, this.getClass().getClassLoader()); - kernel.startRecursiveGBean(configName); + kernel.startGBean(configName); + kernel.invoke(configName, "loadGBeans", new Object[] {null}, new String[] {ManageableAttributeStore.class.getName()}); + kernel.invoke(configName, "startRecursiveGBeans"); assertEquals(State.RUNNING_INDEX, kernel.getGBeanState(configName)); assertNotNull(kernel.getAttribute(configName, "configurationClassLoader")); @@ -104,7 +107,9 @@ // load and start the config kernel.loadGBean(config, this.getClass().getClassLoader()); - kernel.startRecursiveGBean(configName); + kernel.startGBean(configName); + kernel.invoke(configName, "loadGBeans", new Object[] {null}, new String[] {ManageableAttributeStore.class.getName()}); + kernel.invoke(configName, "startRecursiveGBeans"); assertEquals(State.RUNNING_INDEX, kernel.getGBeanState(configName)); assertNotNull(kernel.getAttribute(configName, "configurationClassLoader")); Modified: geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java (original) +++ geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/configuration/LocalAttributeManager.java Tue Oct 11 19:27:12 2005 @@ -16,32 +16,40 @@ */ package org.apache.geronimo.system.configuration; -import org.apache.geronimo.kernel.config.ManageableAttributeStore; +import java.beans.PropertyEditor; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URI; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import javax.management.MalformedObjectNameException; +import javax.management.ObjectName; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.geronimo.common.propertyeditor.PropertyEditors; import org.apache.geronimo.gbean.GAttributeInfo; -import org.apache.geronimo.gbean.GBeanLifecycle; +import org.apache.geronimo.gbean.GBeanData; import org.apache.geronimo.gbean.GBeanInfo; import org.apache.geronimo.gbean.GBeanInfoBuilder; -import org.apache.geronimo.common.propertyeditor.PropertyEditors; +import org.apache.geronimo.gbean.GBeanLifecycle; +import org.apache.geronimo.kernel.config.ManageableAttributeStore; +import org.apache.geronimo.kernel.config.InvalidConfigException; import org.apache.geronimo.system.serverinfo.ServerInfo; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; import org.w3c.dom.Document; import org.w3c.dom.Element; -import org.w3c.dom.NodeList; import org.w3c.dom.Node; - -import javax.management.ObjectName; -import javax.management.MalformedObjectNameException; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import java.io.*; -import java.util.Map; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Iterator; -import java.beans.PropertyEditor; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; /** * Stores managed attributes in an XML file on the local filesystem. @@ -50,9 +58,9 @@ */ public class LocalAttributeManager implements ManageableAttributeStore, GBeanLifecycle { private final static Log log = LogFactory.getLog(LocalAttributeManager.class); - private final static String BACKUP_EXTENSION=".bak"; - private final static String TEMP_EXTENSION=".working"; - private final static int SAVE_BUFFER_MS=5000; + private final static String BACKUP_EXTENSION = ".bak"; + private final static String TEMP_EXTENSION = ".working"; + private final static int SAVE_BUFFER_MS = 5000; private final ServerInfo serverInfo; private final String configFile; @@ -79,71 +87,109 @@ this.readOnly = readOnly; } + public Collection setAttributes(URI configurationName, Collection datas) throws InvalidConfigException { + String configName = configurationName.toString(); + Map configInfo = (Map) configurations.get(configName); + if (configInfo != null) { + for (Iterator iterator = datas.iterator(); iterator.hasNext();) { + GBeanData data = (GBeanData) iterator.next(); + setAttributes(data, configInfo, configName); + } + } + return datas; + } + + private void setAttributes(GBeanData data, Map configInfo, String configName) throws InvalidConfigException { + ObjectName gbeanName = data.getName(); + GBeanInfo gBeanInfo = data.getGBeanInfo(); + Map attributeMap = (Map) configInfo.get(gbeanName); + if (attributeMap == null) { + attributeMap = (Map) configInfo.get(gbeanName.getKeyProperty("name")); + if (attributeMap != null) { + for (Iterator iterator = attributeMap.entrySet().iterator(); iterator.hasNext();) { + Map.Entry entry = (Map.Entry) iterator.next(); + String attributeName = (String) entry.getKey(); + GAttributeInfo attributeInfo = gBeanInfo.getAttribute(attributeName); + if (attributeInfo == null) { + throw new InvalidConfigException("No attribute: " + attributeName + " for gbean: " + data.getName()); + } + String valueString = (String) entry.getValue(); + Object value = getValue(attributeInfo, valueString, configName, gbeanName); + data.setAttribute(attributeName, value); + } + } + } + } + public String getObjectName() { return objectName; } public Object getValue(String configurationName, ObjectName gbean, GAttributeInfo attribute) { Map config = (Map) configurations.get(configurationName); - if(config == null) { + if (config == null) { return null; // nothing specified for this configuration } Map atts = (Map) config.get(gbean); - if(atts == null) { - atts = (Map)config.get(gbean.getKeyProperty("name")); + if (atts == null) { + atts = (Map) config.get(gbean.getKeyProperty("name")); } - if(atts == null) { + if (atts == null) { return null; // nothing specified for this GBean } String value = (String) atts.get(attribute.getName()); - if(value == null) { + if (value == null) { return null; // nothing specified for this attribute } + return getValue(attribute, value, configurationName, gbean); + } + + private Object getValue(GAttributeInfo attribute, String value, String configurationName, ObjectName gbeanName) { try { PropertyEditor editor = PropertyEditors.findEditor(attribute.getType(), getClass().getClassLoader()); if (editor == null) { - log.debug("Unable to parse attribute of type "+attribute.getType()+"; no editor found"); + log.debug("Unable to parse attribute of type " + attribute.getType() + "; no editor found"); return null; } editor.setAsText(value); - log.debug("Setting value for "+configurationName+"/"+gbean+"/" + attribute.getName() + " to value " + value); + log.debug("Setting value for " + configurationName + "/" + gbeanName + "/" + attribute.getName() + " to value " + value); return editor.getValue(); } catch (ClassNotFoundException e) { //todo: use the Configuration's ClassLoader to load the attribute, if this ever becomes an issue - log.error("Unable to load attribute type "+attribute.getType()); + log.error("Unable to load attribute type " + attribute.getType()); return null; } } public synchronized void setValue(String configurationName, ObjectName gbean, GAttributeInfo attribute, Object value) { - if(readOnly) { + if (readOnly) { return; } Map config = (Map) configurations.get(configurationName); - if(config == null) { + if (config == null) { config = new HashMap(); configurations.put(configurationName, config); } Map atts = (Map) config.get(gbean); - if(atts == null) { + if (atts == null) { atts = (Map) config.get(gbean.getKeyProperty("name")); - if(atts == null) { + if (atts == null) { atts = new HashMap(); config.put(gbean, atts); } } try { String string = null; - if(value != null) { + if (value != null) { PropertyEditor editor = PropertyEditors.findEditor(attribute.getType(), getClass().getClassLoader()); if (editor == null) { - log.error("Unable to format attribute of type "+attribute.getType()+"; no editor found"); + log.error("Unable to format attribute of type " + attribute.getType() + "; no editor found"); return; } editor.setValue(value); string = editor.getAsText(); } - if(string == null) { + if (string == null) { atts.remove(attribute.getName()); } else { atts.put(attribute.getName(), string); @@ -151,13 +197,13 @@ updater.attributeChanged(); } catch (ClassNotFoundException e) { //todo: use the Configuration's ClassLoader to load the attribute, if this ever becomes an issue - log.error("Unable to store attribute type "+attribute.getType()); + log.error("Unable to store attribute type " + attribute.getType()); } } public void load() throws IOException { ensureParentDirectory(); - if(!attributeFile.exists()) { + if (!attributeFile.exists()) { return; } configurations.clear(); @@ -168,31 +214,31 @@ Document doc = dfactory.newDocumentBuilder().parse(in); Element root = doc.getDocumentElement(); NodeList configs = root.getElementsByTagName("configuration"); - for(int c=0; c -1) { + if (gbeanName.indexOf(':') > -1) { ObjectName name = ObjectName.getInstance(gbeanName); configMap.put(name, gbeanMap); } else { configMap.put(gbeanName, gbeanMap); } NodeList attributes = gbean.getElementsByTagName("attribute"); - for(int a=0; a"); @@ -227,17 +273,17 @@ out.println(""); for (Iterator it = configurations.entrySet().iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry) it.next(); - out.println(" "); + out.println(" "); Map map = (Map) entry.getValue(); for (Iterator gb = map.entrySet().iterator(); gb.hasNext();) { Map.Entry gbean = (Map.Entry) gb.next(); - String gbeanName = gbean.getKey() instanceof String ? (String)gbean.getKey() : ((ObjectName)gbean.getKey()).getCanonicalName(); - out.println(" "); - Map atts = (Map)gbean.getValue(); + String gbeanName = gbean.getKey() instanceof String ? (String) gbean.getKey() : ((ObjectName) gbean.getKey()).getCanonicalName(); + out.println(" "); + Map atts = (Map) gbean.getValue(); for (Iterator att = atts.entrySet().iterator(); att.hasNext();) { Map.Entry attribute = (Map.Entry) att.next(); - out.print(" "); - out.print((String)attribute.getValue()); + out.print(" "); + out.print((String) attribute.getValue()); out.println(""); } out.println(" "); @@ -246,44 +292,44 @@ } out.println(""); out.close(); - if(backupFile.exists()) { - if(!backupFile.delete()) { + if (backupFile.exists()) { + if (!backupFile.delete()) { throw new IOException("Unable to delete old backup file in order to back up current manageable attribute working file for save"); } } - if(attributeFile.exists()) { - if(!attributeFile.renameTo(backupFile)) { - throw new IOException("Unable to rename "+attributeFile.getAbsolutePath()+" to "+backupFile.getAbsolutePath()+" in order to back up manageable attribute save file"); + if (attributeFile.exists()) { + if (!attributeFile.renameTo(backupFile)) { + throw new IOException("Unable to rename " + attributeFile.getAbsolutePath() + " to " + backupFile.getAbsolutePath() + " in order to back up manageable attribute save file"); } } - if(!tempFile.renameTo(attributeFile)) { - throw new IOException("EXTREMELY CRITICAL! Unable to move manageable attributes working file to proper file name! Configuration will revert to defaults unless this is manually corrected! (could not rename "+tempFile.getAbsolutePath()+" to "+attributeFile.getAbsolutePath()+")"); + if (!tempFile.renameTo(attributeFile)) { + throw new IOException("EXTREMELY CRITICAL! Unable to move manageable attributes working file to proper file name! Configuration will revert to defaults unless this is manually corrected! (could not rename " + tempFile.getAbsolutePath() + " to " + attributeFile.getAbsolutePath() + ")"); } } public void doStart() throws Exception { load(); - if(!readOnly) { + if (!readOnly) { updater = new UpdateThread(); updater.start(); } - log.info("Started LocalAttributeManager with data on "+configurations.size()+" configurations"); + log.info("Started LocalAttributeManager with data on " + configurations.size() + " configurations"); } public void doStop() throws Exception { - if(updater != null) { + if (updater != null) { updater.shutdown(); - if(updater.isPending()) { + if (updater.isPending()) { save(); } updater = null; } - log.info("Stopped LocalAttributeManager with data on "+configurations.size()+" configurations"); + log.info("Stopped LocalAttributeManager with data on " + configurations.size() + " configurations"); configurations.clear(); } public void doFail() { - if(updater != null) { + if (updater != null) { updater.shutdown(); updater = null; } @@ -291,10 +337,10 @@ } private void ensureParentDirectory() throws IOException { - if(attributeFile == null) { + if (attributeFile == null) { attributeFile = serverInfo.resolve(configFile); - tempFile = new File(attributeFile.getAbsolutePath()+TEMP_EXTENSION); - backupFile = new File(attributeFile.getAbsolutePath()+BACKUP_EXTENSION); + tempFile = new File(attributeFile.getAbsolutePath() + TEMP_EXTENSION); + backupFile = new File(attributeFile.getAbsolutePath() + BACKUP_EXTENSION); } File parent = attributeFile.getParentFile(); if (!parent.isDirectory()) { @@ -302,8 +348,8 @@ throw new IOException("Unable to create directory for list:" + parent); } } - if(!parent.canRead() || !parent.canWrite()) { - throw new IOException("Unable to write manageable attribute files to directory "+parent.getAbsolutePath()); + if (!parent.canRead() || !parent.canWrite()) { + throw new IOException("Unable to write manageable attribute files to directory " + parent.getAbsolutePath()); } } @@ -331,16 +377,17 @@ } public void run() { - while(!isDone()) { + while (!isDone()) { // Wait until at least one change has been made - synchronized(LocalAttributeManager.this) { - if(!pending) { + synchronized (LocalAttributeManager.this) { + if (!pending) { try { LocalAttributeManager.this.wait(); pending = true; - } catch (InterruptedException e) {} + } catch (InterruptedException e) { + } } - if(done) { + if (done) { return; } } @@ -349,11 +396,12 @@ // Don't synchronize this as it holds monitors while sleeping try { sleep(SAVE_BUFFER_MS); - } catch (InterruptedException e) {} + } catch (InterruptedException e) { + } // Save synchronized (LocalAttributeManager.this) { - if(!isDone()) { + if (!isDone()) { try { save(); } catch (IOException e) { @@ -396,7 +444,7 @@ infoFactory.addAttribute("objectName", String.class, false); infoFactory.addInterface(ManageableAttributeStore.class); - infoFactory.setConstructor(new String[]{"ServerInfo","configFile","objectName"}); + infoFactory.setConstructor(new String[]{"ServerInfo", "configFile", "objectName"}); GBEAN_INFO = infoFactory.getBeanInfo(); } Modified: geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/configuration/LocalConfigStore.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/configuration/LocalConfigStore.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/configuration/LocalConfigStore.java (original) +++ geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/configuration/LocalConfigStore.java Tue Oct 11 19:27:12 2005 @@ -255,13 +255,7 @@ throw new InvalidConfigException("Cannot convert id to ObjectName: ", e); } config.setName(name); - ObjectName pattern; - try { - pattern = attributeStore == null ? null : new ObjectName(attributeStore.getObjectName()); - } catch (MalformedObjectNameException e) { - throw new InvalidConfigException("Invalid ObjectName for AttributeStore: " + attributeStore.getObjectName()); - } - config.setReferencePattern("AttributeStore", pattern); + config.setAttribute("baseURL", getRoot(configId).toURL()); try { kernel.loadGBean(config, Configuration.class.getClassLoader()); @@ -269,16 +263,6 @@ throw new InvalidConfigException("Unable to register configuration", e); } - try { - kernel.setAttribute(name, "baseURL", getRoot(configId).toURL()); - } catch (Exception e) { - try { - kernel.unloadGBean(name); - } catch (Exception ignored) { - // ignore - } - throw new InvalidConfigException("Cannot set baseURL", e); - } log.info("Loaded Configuration " + name); return name; Modified: geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java?rev=314753&r1=314752&r2=314753&view=diff ============================================================================== --- geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java (original) +++ geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java Tue Oct 11 19:27:12 2005 @@ -33,6 +33,7 @@ import org.apache.geronimo.kernel.config.ConfigurationManager; import org.apache.geronimo.kernel.config.ConfigurationUtil; import org.apache.geronimo.kernel.config.Configuration; +import org.apache.geronimo.kernel.config.ManageableAttributeStore; import org.apache.geronimo.kernel.log.GeronimoLogging; @@ -105,6 +106,7 @@ URI configurationId = (URI) configuration.getAttribute("id"); ObjectName configName = Configuration.getConfigurationObjectName(configurationId); configuration.setName(configName); + configuration.setAttribute("baseURL", classLoader.getResource("/")); // boot the kernel kernel = KernelFactory.newInstance().createKernel("geronimo"); @@ -112,8 +114,9 @@ // load this configuration into the kernel kernel.loadGBean(configuration, classLoader); - kernel.setAttribute(configName, "baseURL", classLoader.getResource("/")); - kernel.startRecursiveGBean(configName); + kernel.startGBean(configName); + kernel.invoke(configName, "loadGBeans", new Object[] {null}, new String[] {ManageableAttributeStore.class.getName()}); + kernel.invoke(configName, "startRecursiveGBeans"); // load and start the configurations ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel); @@ -123,7 +126,7 @@ List list = configurationManager.loadRecursive(configID); for (Iterator iterator = list.iterator(); iterator.hasNext();) { ObjectName name = (ObjectName) iterator.next(); - kernel.startRecursiveGBean(name); + configurationManager.start(name); } } } finally {