image bugfixx - mir now depends on jai imagio
[mir.git] / source / mir / servlet / AbstractServlet.java
index 67c634a..ff059d5 100755 (executable)
@@ -32,6 +32,7 @@ package mir.servlet;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.sql.Connection;
 import java.util.Locale;
 
 import javax.servlet.ServletConfig;
@@ -42,9 +43,8 @@ import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
 import mir.config.MirPropertiesConfiguration;
-import mir.config.MirPropertiesConfiguration.PropertiesConfigExc;
 import mir.log.LoggerWrapper;
-import mir.storage.DatabaseAdaptor;
+import mircoders.global.MirGlobal;
 
 import com.codestudio.util.JDBCPool;
 import com.codestudio.util.JDBCPoolMetaData;
@@ -56,7 +56,7 @@ import com.codestudio.util.SQLManager;
  * Copyright:    Copyright (c) 2001, 2002
  * Company:      Mir-coders group
  * @author       idfx, the Mir-coders group
- * @version      $Id: AbstractServlet.java,v 1.30.2.1 2003/06/13 03:54:08 zapata Exp $
+ * @version      $Id: AbstractServlet.java,v 1.30.2.5 2003/10/23 14:55:26 rk Exp $
  */
 
 public abstract class AbstractServlet extends HttpServlet {
@@ -69,7 +69,6 @@ public abstract class AbstractServlet extends HttpServlet {
    */
   public AbstractServlet() {
     super();
-    logger = new LoggerWrapper("Servlet");
   }
 
   protected void setNoCaching(HttpServletResponse aResponse) {
@@ -147,34 +146,30 @@ public abstract class AbstractServlet extends HttpServlet {
     try {
       configuration = MirPropertiesConfiguration.instance();
     }
-    catch (PropertiesConfigExc e) {
-      throw new ServletException(e);
+    catch (Throwable t) {
+      throw new ServletException("can't read configuration: " + t.toString());
     }
 
-    String dbUser = configuration.getString("Database.Username");
-    String dbPassword = configuration.getString("Database.Password");
-    String dbHost = configuration.getString("Database.Host");
-    String dbAdapName = configuration.getString("Database.Adaptor");
-    String dbName = configuration.getString("Database.Name");
+    logger = new LoggerWrapper("Servlet");
 
-    DatabaseAdaptor adaptor;
     try {
-      adaptor = (DatabaseAdaptor) Class.forName(dbAdapName).newInstance();
+      MirGlobal.localizer();
     }
-    catch (Exception e) {
-      throw new ServletException("Could not load DB adapator: " +
-                                 e.toString());
+    catch (Throwable t) {
+      logger.fatal("can't get localizer: " + t.toString());
+      throw new ServletException("can't get localizer: " + t.toString());
     }
 
-    String dbDriver;
-    String dbUrl;
-    try {
-      dbDriver = adaptor.getDriver();
-      dbUrl = adaptor.getURL(dbUser, dbPassword, dbHost);
-    }
-    catch (Exception e) {
-      throw new ServletException(e);
-    }
+    String dbUser = configuration.getString("Database.Username");
+    String dbPassword = configuration.getString("Database.Password");
+    String dbHost = configuration.getString("Database.Host");
+    String dbPort = configuration.getString("Database.Port");
+    String dbAdapName = configuration.getString("Database.Adaptor");
+    String dbName = configuration.getString("Database.Name");
+    String dbDriver = configuration.getString("Database.Driver");
+    String dbUrl = "jdbc:postgresql://"+dbHost+":"+dbPort+"/"+dbName;
+    int dbMin = configuration.getInteger("Database.poolMin", 1);
+    int dbMax = configuration.getInteger("Database.poolMax", 10);
 
     JDBCPoolMetaData meta = new JDBCPoolMetaData();
     meta.setDbname(dbName);
@@ -183,40 +178,58 @@ public abstract class AbstractServlet extends HttpServlet {
     meta.setUserName(dbUser);
     meta.setPassword(dbPassword);
     meta.setJNDIName("mir");
-    meta.setMaximumSize(10);
-    meta.setMinimumSize(1);
+    meta.setMaximumSize(dbMax);
+    meta.setMinimumSize(dbMin);
     meta.setPoolPreparedStatements(false);
     meta.setCacheEnabled(false);
     meta.setCacheSize(15);
     meta.setDebugging(false);
-//    meta.setLogFile(dblogfile+".pool");
 
     SQLManager manager = SQLManager.getInstance();
+
     JDBCPool pool = null;
     if (manager != null) {
       pool = manager.createPool(meta);
     }
+
+    Connection connection;
+    try {
+      connection = pool.requestConnection();
+         JDBCPool.closeConnection(connection);
+    }
+    catch (Throwable t) {
+      logger.fatal("Can't connect to database: " + t.toString());
+      throw new ServletException("Can't connect to database: " + t.toString());
+    }
   }
 
   private void setEncoding(HttpServletRequest request){
     try {
+      logger.info("Request has encoding: " + request.getCharacterEncoding());
+      logger.info("Config stipulates encoding: " + configuration.getString("Mir.DefaultHTMLCharset"));
       Class reqClass = request.getClass();
       Method method = reqClass.getMethod("setCharacterEncoding", new Class[]{String.class});
       String encoding = configuration.getString("Mir.DefaultHTMLCharset");
       method.invoke(request, new Object[]{encoding});
-    } catch (NoSuchMethodException e) {
+      logger.info("Request now has encoding: " + request.getCharacterEncoding());
+    }
+    catch (NoSuchMethodException e) {
       // TODO set the encoding in a zapata-way
 //      logger.warn("set encoding not yet implemented: " + e.getMessage());
-    } catch (SecurityException e) {
+    }
+    catch (SecurityException e) {
       logger.error(e.getMessage());
       e.printStackTrace();
-    } catch (IllegalArgumentException e) {
+    }
+    catch (IllegalArgumentException e) {
       logger.error(e.getMessage());
       e.printStackTrace();
-    } catch (IllegalAccessException e) {
+    }
+    catch (IllegalAccessException e) {
       logger.error(e.getMessage());
       e.printStackTrace();
-    } catch (InvocationTargetException e) {
+    }
+    catch (InvocationTargetException e) {
       logger.error(e.getMessage());
       e.printStackTrace();
     }
@@ -227,8 +240,7 @@ public abstract class AbstractServlet extends HttpServlet {
   }
 
   protected final void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-    if ( (configuration.getString("RootUri") == null) ||
-        configuration.getString("RootUri").equals("")) {
+    if ((configuration.getString("RootUri") == null) || configuration.getString("RootUri").equals("")) {
       configuration.setProperty("RootUri", request.getContextPath());
     }
     setEncoding(request);