ulrich
2020-05-19 a52c39a698c68fa04789629a79c45ad1f882e627
src/java/de/uhilger/um/web/Initialiser.java
@@ -18,10 +18,13 @@
package de.uhilger.um.web;
import de.uhilger.baselink.GenericRecord;
import de.uhilger.baselink.PersistenceManager;
import de.uhilger.baselink.Record;
import de.uhilger.um.api.UserMgr;
import de.uhilger.um.daten.User;
import de.uhilger.um.daten.UserData;
import de.uhilger.um.daten.UserRole;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@@ -124,6 +127,7 @@
      PersistenceManager db = new PersistenceManager();
      db.setDataSourceName(servletContext.getInitParameter(P_DSNAME));
      servletContext.setAttribute(UserMgr.UM_DB, db);
      initMapper(servletContext);
      Properties sql = (Properties) servletContext.getAttribute(UserMgr.UM_SQL_PROPERTIES);
      if(!dbVorhanden(db, sql.getProperty(SQL_DB_VORHANDEN))) {
        logger.info("Datenbank ist nicht vorhanden");
@@ -141,6 +145,21 @@
    } catch(Exception ex) {
      logger.log(Level.INFO, ex.getMessage(), ex);
    }
  }
  /**
   * Mapper erzeugen
   * @param servletContext der ServletContext dieser Webanwendung
   */
  /*
  TODO: das noch auf on demand anlegen: GenericRecord wird erst angelegt
   wenn er erstmals benoetigt wird. Ggf. auch einen Mechanismus zum entfernen
   laenger nicht benoetigter Mapper hinzufuegen
  */
  private void initMapper(ServletContext servletContext) {
    servletContext.setAttribute(UserMgr.MP_USER, new GenericRecord(User.class));
    servletContext.setAttribute(UserMgr.MP_USER_DATA, new GenericRecord(UserData.class));
    servletContext.setAttribute(UserMgr.MP_USER_ROLE, new GenericRecord(UserRole.class));
  }
  
  @SuppressWarnings("rawtypes")
@@ -182,6 +201,12 @@
  @Override
  public void contextDestroyed(ServletContextEvent sce) {
    // destroy whatever 
    ServletContext ctx = sce.getServletContext();
    ctx.removeAttribute(UserMgr.MP_USER);
    ctx.removeAttribute(UserMgr.MP_USER_DATA);
    ctx.removeAttribute(UserMgr.MP_USER_ROLE);
    ctx.removeAttribute(UserMgr.UM_SQL_PROPERTIES);
    ctx.removeAttribute(UserMgr.UM_DB);
  }
  
}