pier 2004/05/04 10:38:54
Modified: src/kernel/org/apache/cocoon/kernel/startup AbstractLogger.java Added: src/kernel/org/apache/cocoon/kernel/startup KernelLoader.java KernelServlet.java ServletWrapper.java Removed: src/kernel/org/apache/cocoon/kernel/startup Main.java Servlet.java Log: Slightly refactored the kernel startup package Revision Changes Path 1.6 +0 -0 cocoon-2.2/src/kernel/org/apache/cocoon/kernel/startup/AbstractLogger.java Index: AbstractLogger.java =================================================================== RCS file: /home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/startup/AbstractLogger.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 1.1 cocoon-2.2/src/kernel/org/apache/cocoon/kernel/startup/KernelLoader.java Index: KernelLoader.java =================================================================== /* * Copyright 1999-2004 The Apache Software Foundation. * * 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.cocoon.kernel.startup; import org.apache.cocoon.kernel.Installer; import org.apache.cocoon.kernel.KernelDeployer; import org.apache.cocoon.kernel.configuration.ConfigurationBuilder; /** * * @author <a href="mailto:[EMAIL PROTECTED]">Pier Fumagalli</a> * @version 1.0 (CVS $Revision: 1.1 $) */ public class KernelLoader { public static void main(String args[]) { if (args.length < 1) { System.err.println("Usage: " + KernelLoader.class.getName() + " <blocks " + "configuration> <deployment configuration>"); System.exit(1); } /* Create a logger for startup operations */ Logger logger = new ConsoleLogger(); try { /* Now let's create our core deployer */ KernelDeployer deployer = new KernelDeployer(); deployer.logger(logger); deployer.configure(ConfigurationBuilder.parse(args[0])); /* Instantiate an installer and process deployment */ Installer installer = new Installer(deployer); installer.process(ConfigurationBuilder.parse(args[1])); } catch (Throwable t) { logger.fatal("An error occurred initializing", t); } } } 1.1 cocoon-2.2/src/kernel/org/apache/cocoon/kernel/startup/KernelServlet.java Index: KernelServlet.java =================================================================== /* * Copyright 1999-2004 The Apache Software Foundation. * * 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.cocoon.kernel.startup; import java.io.IOException; import java.net.URL; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.apache.cocoon.kernel.CoreWirings; import org.apache.cocoon.kernel.Installer; import org.apache.cocoon.kernel.KernelDeployer; import org.apache.cocoon.kernel.composition.Wirings; import org.apache.cocoon.kernel.configuration.Configuration; import org.apache.cocoon.kernel.configuration.ConfigurationBuilder; /** * <p>.</p> * * @author <a href="mailto:[EMAIL PROTECTED]">Pier Fumagalli</a> * @version 1.0 (CVS $Revision: 1.1 $) */ public class KernelServlet implements Servlet { protected static KernelServlet instance = null; private Logger logger = null; private Wirings wirings = null; private ServletConfig config = null; public synchronized void init(ServletConfig config) throws ServletException { if (KernelServlet.instance != null) { throw new ServletException("Kernel cannot be initialized twice"); } /* Create a logger */ ServletContext ctxt = config.getServletContext(); String level = config.getInitParameter("org.apache.cocoon.kernel.logging.level"); String temp = config.getInitParameter("org.apache.cocoon.kernel.logging.trace"); boolean trace = ("true".equalsIgnoreCase(temp) ? true : false); if ("fatal".equalsIgnoreCase(level)) { this.logger = new ServletLogger(ServletLogger.FATAL, trace, ctxt); } else if ("error".equalsIgnoreCase(level)) { this.logger = new ServletLogger(ServletLogger.ERROR, trace, ctxt); } else if ("warn".equalsIgnoreCase(level)) { this.logger = new ServletLogger(ServletLogger.WARN, trace, ctxt); } else if ("info".equalsIgnoreCase(level)) { this.logger = new ServletLogger(ServletLogger.INFO, trace, ctxt); } else if ("debug".equalsIgnoreCase(level)) { this.logger = new ServletLogger(ServletLogger.DEBUG, trace, ctxt); } else { this.logger = new ServletLogger(ServletLogger.INFO, trace, ctxt); } /* Find our configurations */ String deplconf = config.getInitParameter("org.apache.cocoon.kernel.configuration.deployer"); String instconf = config.getInitParameter("org.apache.cocoon.kernel.configuration.installer"); if (deplconf == null) { String message = "Parameter \"deployer-config\" not specified"; logger.fatal(message); throw new ServletException(message); } else if (instconf == null) { String message = "Parameter \"installer-config\" not specified"; logger.fatal(message); throw new ServletException(message); } /* Let's start up */ this.logger.info("Kernel startup"); try { URL deplurl = ctxt.getResource(deplconf); if (deplurl == null) { String message = "Unable to find deployer configurations \"" + deplconf + "\""; logger.fatal(message); throw new ServletException(message); } URL insturl = ctxt.getResource(instconf); if (insturl == null) { String message = "Unable to find installer configuration \"" + deplconf + "\""; logger.fatal(message); throw new ServletException(message); } Configuration conf = null; /* Now let's create our core deployer */ KernelDeployer deployer = new KernelDeployer(); deployer.logger(logger); conf = ConfigurationBuilder.parse(deplurl); deployer.configure(conf); /* Instantiate an installer and process deployment */ Installer installer = new Installer(deployer); conf = ConfigurationBuilder.parse(insturl); installer.process(conf); /* Store the current kernel configuration */ this.config = config; this.wirings = new CoreWirings(deployer); KernelServlet.instance = this; } catch (Throwable throwable) { String message = "An error occurred initializing the kernel"; logger.fatal(message, throwable); throw new ServletException(message); } } public void destroy() { this.logger.info("Kernel shutdown"); } public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { throw new ServletException("Servlet non serviceable"); } public ServletConfig getServletConfig() { return(this.config); } public String getServletInfo() { return("Apache Cocoon Kernel Servlet"); } public Logger getLogger() { return(this.logger); } public Wirings getWirings() { return(this.wirings); } } 1.1 cocoon-2.2/src/kernel/org/apache/cocoon/kernel/startup/ServletWrapper.java Index: ServletWrapper.java =================================================================== /* * Copyright 1999-2004 The Apache Software Foundation. * * 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.cocoon.kernel.startup; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.apache.cocoon.kernel.composition.Wire; import org.apache.cocoon.kernel.composition.Wirings; /** * <p>.</p> * * @author <a href="mailto:[EMAIL PROTECTED]">Pier Fumagalli</a> * @version 1.0 (CVS $Revision: 1.1 $) */ public class ServletWrapper implements Servlet { private Servlet servlet = null; private Wirings wirings = null; private Logger logger = null; private boolean expose = false; public void init(ServletConfig config) throws ServletException { /* Get the deployed block name exposing the servlet */ String inst = config.getInitParameter("org.apache.cocoon.kernel.block.name"); if (inst == null) { throw new ServletException("Block instance not specified in \"" + "org.apache.cocoon.kernel.block\" servlet property"); } /* Check if we have to expose the wirings in the request attributes */ String expose = config.getInitParameter("org.apache.cocoon.kernel.wirings.expose"); this.expose = "true".equalsIgnoreCase(expose); /* Get a hold on the kernel servlet, its wirings and logger */ KernelServlet instance = KernelServlet.instance; if (instance == null) { throw new ServletException("Framework not initialized"); } this.wirings = instance.getWirings(); this.logger = instance.getLogger(); /* Get a hold on the wrapped servlet and initialize it */ try { this.servlet = (Servlet) this.wirings.lookup(Servlet.class, inst); this.servlet.init(config); } catch (ServletException e) { throw (e); } catch (Throwable t) { this.logger.fatal("Unable to access wrapped servlet", t); throw new ServletException("Unable to access wrapped servlet"); } } public void destroy() { this.servlet.destroy(); ((Wire)this.servlet).release(); } public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { if (this.expose) { request.setAttribute("org.apache.cocoon.kernel.wirings", wirings); } this.servlet.service(request, response); } public ServletConfig getServletConfig() { return(this.servlet.getServletConfig()); } public String getServletInfo() { return(this.servlet.getServletInfo()); } }