aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/PdfASServletContextListener.java
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/PdfASServletContextListener.java')
-rw-r--r--pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/PdfASServletContextListener.java134
1 files changed, 134 insertions, 0 deletions
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/PdfASServletContextListener.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/PdfASServletContextListener.java
new file mode 100644
index 0000000..ac0c4c5
--- /dev/null
+++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/PdfASServletContextListener.java
@@ -0,0 +1,134 @@
+/**
+ * <copyright> Copyright (c) 2006 by Know-Center, Graz, Austria </copyright>
+ *
+ * This software is the confidential and proprietary information of Know-Center,
+ * Graz, Austria. You shall not disclose such Confidential Information and shall
+ * use it only in accordance with the terms of the license agreement you entered
+ * into with Know-Center.
+ *
+ * KNOW-CENTER MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ * NON-INFRINGEMENT. KNOW-CENTER SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
+ * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
+ * DERIVATIVES.
+ *
+ * $Id: PdfASServletContextListener.java,v 1.3 2006/10/31 08:22:04 wprinz Exp $
+ */
+package at.gv.egiz.pdfas.web;
+
+import java.io.File;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+
+import at.gv.egiz.pdfas.api.PdfAs;
+import at.gv.egiz.pdfas.api.commons.Constants;
+import at.gv.egiz.pdfas.api.internal.PdfAsInternal;
+import at.gv.egiz.pdfas.web.helper.ApiHelper;
+import at.gv.egiz.pdfas.web.helper.WebSettingsReader;
+import at.knowcenter.wag.egov.egiz.exceptions.SettingsException;
+import at.knowcenter.wag.egov.egiz.exceptions.WebException;
+
+/**
+ * The ServletContextListener is notified when the webapplication starts up and
+ * shuts down.
+ *
+ * <p>
+ * Maintainance work is performed.
+ * </p>
+ *
+ * @author wprinz
+ */
+public class PdfASServletContextListener implements ServletContextListener {
+ /**
+ * The logger.
+ */
+ private static final Logger logger = Logger.getLogger(PdfASServletContextListener.class);
+
+ /**
+ * The servlet init parameter that may be used to declare the pdf-as
+ * configuration folder. The init parameter may be set in web.xml or in
+ * META-INF/context.xml resp. conf/Catalina/localhost/pdf-as.xml if deployed.
+ */
+ private final static String CONFIG_SERVLET_INIT_PARAMETER = "work-dir";
+
+ /**
+ * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
+ */
+ public void contextInitialized(ServletContextEvent sce) {
+ logger.info("PDF-AS Context init"); //$NON-NLS-1$
+
+ String sysPropWorkdir = System.getProperty(Constants.CONFIG_DIR_SYSTEM_PROPERTY);
+ String scWorkdir = sce.getServletContext().getInitParameter(CONFIG_SERVLET_INIT_PARAMETER);
+
+ String work_dir;
+
+ // search for system property
+ if (!StringUtils.isEmpty(sysPropWorkdir)) {
+ work_dir = sysPropWorkdir;
+ logger.debug("Work-dir configuration via system property \""
+ + Constants.CONFIG_DIR_SYSTEM_PROPERTY + "\" = \"" + sysPropWorkdir + "\".");
+
+ // search for servlet parameter
+ } else if (!StringUtils.isEmpty(scWorkdir)) {
+ work_dir = scWorkdir;
+ logger.debug("Work-dir configuration via servlet init parameter \""
+ + CONFIG_SERVLET_INIT_PARAMETER + "\" = \"" + scWorkdir + "\".");
+
+ // assume configuration to be located in webapp path
+ } else {
+ work_dir = sce.getServletContext().getRealPath("/");
+ logger.info("PDF-AS work-dir not explicitely given. Assuming configuration is located in webapp folder \""
+ + work_dir + "\".");
+ }
+
+ logger.info("PDF-AS configuration location = \"" + work_dir + "\"");
+
+ // try
+ // {
+ // logger.info("PDF-AS work directory = " + new File(work_dir).getCanonicalPath()); //$NON-NLS-1$
+ // logger.info("PDF-AS base directory = " + new File(base_dir).getCanonicalPath()); //$NON-NLS-1$
+ // }
+ // catch (IOException e)
+ // {
+ // e.printStackTrace();
+ // }
+
+ WebSettingsReader.initialize(work_dir);
+ PdfAs pdfAs;
+ try {
+ pdfAs = ApiHelper.createApiObject(new File(WebSettingsReader.RESOURCES_PATH));
+ sce.getServletContext().setAttribute(ApiHelper.PDF_AS_OBJECT, pdfAs);
+ } catch (WebException e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ PdfAsInternal pdfAsInternal;
+ try {
+ pdfAsInternal = ApiHelper.createInternalApiObject();
+ sce.getServletContext().setAttribute(ApiHelper.INTERNAL_PDF_AS_OBJECT, pdfAsInternal);
+ } catch (WebException e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ try {
+ WebSettingsReader.getInstance();
+ } catch (SettingsException e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ WebSettingsReader.clearTemporaryDirectory();
+ }
+
+ /**
+ * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
+ */
+ public void contextDestroyed(ServletContextEvent sce) {
+ WebSettingsReader.clearTemporaryDirectory();
+ logger.info("PDF-AS Context exit"); //$NON-NLS-1$
+ }
+}