fixes the problem Alster spotted ...
[mir.git] / source / mircoders / servlet / ServletModuleOpenIndy.java
index 993433c..ea91bf0 100755 (executable)
@@ -11,7 +11,7 @@
  * Mir is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * GNU General Public License for more details.f
  *
  * You should have received a copy of the GNU General Public License
  * along with Mir; if not, write to the Free Software
 
 package mircoders.servlet;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.Vector;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpUtils;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.net.smtp.SMTPClient;
-import org.apache.commons.net.smtp.SMTPReply;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.Searcher;
-import org.apache.struts.util.MessageResources;
 import gnu.regexp.RE;
 import gnu.regexp.REMatch;
-
+import mir.bundle.Bundle;
 import mir.entity.Entity;
 import mir.generator.Generator;
 import mir.log.LoggerWrapper;
@@ -74,44 +41,37 @@ import mir.servlet.ServletModule;
 import mir.servlet.ServletModuleExc;
 import mir.servlet.ServletModuleFailure;
 import mir.servlet.ServletModuleUserExc;
-import mir.session.HTTPAdapters;
-import mir.session.Request;
-import mir.session.Session;
-import mir.session.SessionHandler;
-import mir.session.SimpleResponse;
-import mir.session.UploadedFile;
-import mir.storage.StorageObjectFailure;
-import mir.util.ExceptionFunctions;
-import mir.util.HTTPParsedRequest;
-import mir.util.HTTPRequestParser;
-import mir.util.StringRoutines;
+import mir.session.*;
+import mir.storage.DatabaseFailure;
+import mir.util.*;
 import mircoders.entity.EntityComment;
 import mircoders.entity.EntityContent;
 import mircoders.global.CacheKey;
 import mircoders.global.MirGlobal;
 import mircoders.media.MediaUploadProcessor;
+import mircoders.media.UnsupportedMediaTypeExc;
 import mircoders.module.ModuleComment;
 import mircoders.module.ModuleContent;
-import mircoders.module.ModuleImages;
-import mircoders.module.ModuleMediaType;
-import mircoders.module.ModuleTopics;
 import mircoders.pdf.PDFGenerator;
-import mircoders.search.AudioSearchTerm;
-import mircoders.search.ContentSearchTerm;
-import mircoders.search.ImagesSearchTerm;
-import mircoders.search.KeywordSearchTerm;
-import mircoders.search.TextSearchTerm;
-import mircoders.search.TopicSearchTerm;
-import mircoders.search.TopicMatrixSearchTerm;
-import mircoders.search.UnIndexedSearchTerm;
-import mircoders.search.VideoSearchTerm;
-import mircoders.storage.DatabaseComment;
-import mircoders.storage.DatabaseContent;
-import mircoders.storage.DatabaseContentToMedia;
-import mircoders.storage.DatabaseContentToTopics;
-import mircoders.storage.DatabaseImages;
-import mircoders.storage.DatabaseLanguage;
-import mircoders.storage.DatabaseTopics;
+import mircoders.search.*;
+import mircoders.storage.*;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.net.smtp.SMTPClient;
+import org.apache.commons.net.smtp.SMTPReply;
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.queryParser.QueryParser;
+import org.apache.lucene.search.Hits;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.Searcher;
+import org.apache.lucene.store.FSDirectory;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.*;
+import java.util.*;
 
 /*
  *  ServletModuleOpenIndy -
@@ -120,7 +80,7 @@ import mircoders.storage.DatabaseTopics;
  *    open-postings to the newswire
  *
  * @author mir-coders group
- * @version $Id: ServletModuleOpenIndy.java,v 1.89.2.5 2003/06/30 14:46:22 zapata Exp $
+ * @version $Id: ServletModuleOpenIndy.java,v 1.89.2.18 2005/08/21 17:09:24 zapata Exp $
  *
  */
 
@@ -133,12 +93,12 @@ public class ServletModuleOpenIndy extends ServletModule
   private String        prepareMailTemplate,sentMailTemplate,emailAnArticleTemplate;
   private ModuleContent contentModule;
   private ModuleComment commentModule;
-  private ModuleImages  imageModule;
-  private ModuleTopics  topicsModule;
   private String        directOp ="yes";
-  // Singelton / Kontruktor
   private static ServletModuleOpenIndy instance = new ServletModuleOpenIndy();
-  public static ServletModule getInstance() { return instance; }
+
+  public  static ServletModule getInstance() {
+    return instance;
+  }
 
   private ServletModuleOpenIndy() {
     super();
@@ -158,20 +118,25 @@ public class ServletModuleOpenIndy extends ServletModule
       emailAnArticleTemplate = configuration.getString("ServletModule.OpenIndy.MailableArticleTemplate");
       sentMailTemplate = configuration.getString("ServletModule.OpenIndy.SentMailTemplate");
       directOp = configuration.getString("DirectOpenposting").toLowerCase();
-      commentModule = new ModuleComment(DatabaseComment.getInstance());
+      commentModule = new ModuleComment();
       mainModule = commentModule;
-      contentModule = new ModuleContent(DatabaseContent.getInstance());
-      topicsModule = new ModuleTopics(DatabaseTopics.getInstance());
-      imageModule = new ModuleImages(DatabaseImages.getInstance());
-      defaultAction="addposting";
+      contentModule = new ModuleContent();
+      defaultAction = "defaultAction";
     }
-    catch (StorageObjectFailure e) {
+    catch (DatabaseFailure e) {
       logger.error("servletmoduleopenindy could not be initialized: " + e.getMessage());
     }
   }
 
   /**
-   * Method to return an "apology" when open postings are disabled
+   * Perform the default open posting action
+   */
+  public void defaultAction(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
+    opensession(aRequest, aResponse);
+  }
+
+  /**
+   * Method to return an out of service notice when open postings are disabled
    *
    * @param aRequest
    * @param aResponse
@@ -180,14 +145,12 @@ public class ServletModuleOpenIndy extends ServletModule
    * @throws ServletModuleFailure
    */
   public void openPostingDisabled(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
-    deliver(aRequest, aResponse, (Map) null, null,
-       configuration.getString("ServletModule.OpenIndy.PostingDisabledTemplate"));
+    deliver(aRequest, aResponse, null, null, configuration.getString("ServletModule.OpenIndy.PostingDisabledTemplate"));
   }
 
   /**
    *  Method for making a comment
    */
-
   public void addcomment(HttpServletRequest req, HttpServletResponse res) throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
     if (MirGlobal.abuse().getOpenPostingDisabled()) {
       openPostingDisabled(req, res);
@@ -203,13 +166,13 @@ public class ServletModuleOpenIndy extends ServletModule
 
         // onetimepasswd
         if (MirGlobal.abuse().getOpenPostingPassword()) {
-          String passwd = this.createOneTimePasswd();
+          String passwd = generateOnetimePassword();
           HttpSession session = req.getSession(false);
           session.setAttribute("passwd", passwd);
           mergeData.put("passwd", passwd);
         }
         else {
-          mergeData.put("passwd", (String)null);
+          mergeData.put("passwd", null);
         }
         mergeData.put("aid", aid);
 
@@ -275,7 +238,7 @@ public class ServletModuleOpenIndy extends ServletModule
         response.setResponseGenerator(commentFormDoneTemplate);
 
         if (id == null) {
-          deliver(req, res, (Map)null, null, commentFormDupeTemplate);
+          deliver(req, res, null, null, commentFormDupeTemplate);
         }
         else {
           DatabaseContent.getInstance().setUnproduced("id=" + aid);
@@ -309,8 +272,7 @@ public class ServletModuleOpenIndy extends ServletModule
    */
 
   public void addposting(HttpServletRequest req, HttpServletResponse res)
-      throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure
-  {
+      throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
     try {
       if (MirGlobal.abuse().getOpenPostingDisabled()) {
         openPostingDisabled(req, res);
@@ -328,7 +290,7 @@ public class ServletModuleOpenIndy extends ServletModule
         mergeData.put("passwd", passwd);
       }
       else {
-        mergeData.put("passwd", (String)null);
+        mergeData.put("passwd", null);
       }
 
       String maxMedia = configuration.getString("ServletModule.OpenIndy.MaxMediaUploadItems");
@@ -343,7 +305,7 @@ public class ServletModuleOpenIndy extends ServletModule
       }
 
       int mediaNum = Integer.parseInt(numOfMedia);
-      List mediaFields = new Vector();
+      List mediaFields = new ArrayList();
       for (int i = 0; i < mediaNum; i++) {
         Integer mNum = new Integer(i + 1);
         mediaFields.add(mNum.toString());
@@ -354,9 +316,8 @@ public class ServletModuleOpenIndy extends ServletModule
 
       Map extraInfo = new HashMap();
       extraInfo.put("languagePopUpData", DatabaseLanguage.getInstance().getPopupData());
-      extraInfo.put("themenPopupData", topicsModule.getTopicsAsSimpleList());
+      extraInfo.put("themenPopupData", DatabaseTopics.getInstance().getPopupData());
 
-      extraInfo.put("topics", topicsModule.getTopicsList());
       deliver(req, res, mergeData, extraInfo, postingFormTemplate);
     }
     catch (Throwable t) {
@@ -389,7 +350,7 @@ public class ServletModuleOpenIndy extends ServletModule
       HttpSession session = aRequest.getSession(false);
       String sessionPasswd = (String) session.getAttribute("passwd");
       if (sessionPasswd != null) {
-        String passwd = (String) parsedRequest.getParameter("passwd");
+        String passwd = parsedRequest.getParameter("passwd");
 
         if (passwd == null || passwd.length() == 0) {
           throw new ServletModuleUserExc("posting.error.missingpassword", new String[] {});
@@ -400,12 +361,12 @@ public class ServletModuleOpenIndy extends ServletModule
         session.invalidate();
       }
 
-      if ((((String) parsedRequest.getParameter("title")).length() == 0) ||
-          (((String) parsedRequest.getParameter("description")).length() == 0) ||
-          (((String) parsedRequest.getParameter("content_data")).length() == 0))
+      if (((parsedRequest.getParameter("title")).length() == 0) ||
+          ((parsedRequest.getParameter("description")).length() == 0) ||
+          ((parsedRequest.getParameter("content_data")).length() == 0))
         throw new ServletModuleUserExc("posting.error.missingfield", new String[] {});
 
-      List mediaList = new Vector();
+      List mediaList = new ArrayList();
       Iterator i = parsedRequest.getFiles().iterator();
 
       while (i.hasNext()) {
@@ -426,7 +387,7 @@ public class ServletModuleOpenIndy extends ServletModule
       }
 
       Map withValues = new HashMap();
-      i = DatabaseContent.getInstance().getFields().iterator();
+      i = DatabaseContent.getInstance().getFieldNames().iterator();
       while (i.hasNext()) {
         String field = (String) i.next();
         String value = parsedRequest.getParameter(field);
@@ -505,9 +466,9 @@ public class ServletModuleOpenIndy extends ServletModule
     }
     catch (Throwable e) {
       e.printStackTrace(logger.asPrintWriter(LoggerWrapper.DEBUG_MESSAGE));
-      Throwable cause = ExceptionFunctions.traceCauseException(e);
+      Throwable cause = ExceptionRoutines.traceCauseException(e);
 
-      if (cause instanceof ModuleMediaType.UnsupportedMimeTypeExc) {
+      if (cause instanceof UnsupportedMediaTypeExc) {
         throw new ServletModuleUserExc("media.unsupportedformat", new String[] {});
       }
       throw new ServletModuleFailure(e);
@@ -524,12 +485,8 @@ public class ServletModuleOpenIndy extends ServletModule
   private static final String SESSION_REQUEST_KEY="sessionid";
 
   /**
-   * Selects the language for the response.
-   *
-   * @param session
-   * @param aRequest
+   * Determines the Locale to be used for the current session
    */
-
   protected Locale getResponseLocale(HttpSession aSession, HttpServletRequest aRequest) {
     String requestLanguage = aRequest.getParameter("language");
     String sessionLanguage = (String) aSession.getAttribute("language");
@@ -562,7 +519,6 @@ public class ServletModuleOpenIndy extends ServletModule
    * @throws ServletModuleUserExc
    * @throws ServletModuleFailure
    */
-
   public void opensession(HttpServletRequest aRequest, HttpServletResponse aResponse)
       throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
 
@@ -581,9 +537,9 @@ public class ServletModuleOpenIndy extends ServletModule
 
       SimpleResponse response = new SimpleResponse(
           ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getResponseLocale(aRequest.getSession(), aRequest), getFallbackLocale(aRequest)},
-             "bundles.open"));
+             "etc/bundles/open"));
 
-      response.setResponseValue("actionURL", aResponse.encodeURL(configuration.getString("Producer.OpenAction"))+"?"+SESSION_REQUEST_KEY+"="+aRequest.getSession().getId());
+      response.setResponseValue("actionURL", aResponse.encodeURL(MirGlobal.config().getString("RootUri") + "/servlet/OpenMir")+"?"+SESSION_REQUEST_KEY+"="+aRequest.getSession().getId());
 
       SessionHandler handler = MirGlobal.localizer().openPostings().getOpenSessionHandler(request, session);
 
@@ -601,7 +557,6 @@ public class ServletModuleOpenIndy extends ServletModule
   /**
    * Method for preparing and sending a content as an email message
    */
-
   public void mail(HttpServletRequest req, HttpServletResponse res)
       throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure
   {
@@ -773,7 +728,7 @@ public class ServletModuleOpenIndy extends ServletModule
       }
 
       try {
-        mergeData.put("topics", topicsModule.getTopicsAsSimpleList());
+        mergeData.put("topics", DatabaseTopics.getInstance().getPopupData());
       }
       catch (Throwable e) {
         logger.debug("Can't get topics: " + e.toString());
@@ -803,7 +758,7 @@ public class ServletModuleOpenIndy extends ServletModule
           session.setAttribute("positionInResults", new Integer(newPosition));
         }
         else {
-          String indexPath = configuration.getString("IndexPath");
+          File indexFile = FileRoutines.getAbsoluteOrRelativeFile(configuration.getHome(), configuration.getString("IndexPath"));
 
           String creatorFragment = creatorTerm.makeTerm(req);
           if (creatorFragment != null) {
@@ -843,17 +798,18 @@ public class ServletModuleOpenIndy extends ServletModule
             queryString = queryString + " +" + videoFragment;
           }
 
-          if (queryString == null || queryString == "") {
+          if (queryString == null || queryString.length()==0) {
             queryString = "";
           }
           else {
             try {
               Searcher searcher = null;
+             
               try {
-                searcher = new IndexSearcher(indexPath);
+                searcher = new IndexSearcher(FSDirectory.getDirectory(indexFile,false));
               }
               catch (IOException e) {
-                logger.debug("Can't open indexPath: " + indexPath);
+                logger.debug("Can't open indexPath: " + indexFile.getAbsolutePath());
                 throw new ServletModuleExc("Problem with Search Index! : " + e.toString());
               }
 
@@ -885,7 +841,7 @@ public class ServletModuleOpenIndy extends ServletModule
                 throw new ServletModuleExc("Please let me sort by something!(missing search_sort)");
               }
 
-              // here is where the documents will go for storage across sessions
+              // here is where the documents will go for database across sessions
               ArrayList theDocumentsSorted = new ArrayList();
 
               if (sortBy.equals("score")) {
@@ -958,8 +914,8 @@ public class ServletModuleOpenIndy extends ServletModule
         ArrayList theDocs = (ArrayList) session.getAttribute("theDocumentsSorted");
         if (theDocs != null) {
 
-          mergeData.put("numberOfHits", ( (Integer) session.getAttribute("numberOfHits")).toString());
-          List theHits = new Vector();
+          mergeData.put("numberOfHits", (session.getAttribute("numberOfHits")).toString());
+          List theHits = new ArrayList();
           int pIR = ( (Integer) session.getAttribute("positionInResults")).intValue();
           int terminus;
           int numHits = ( (Integer) session.getAttribute("numberOfHits")).intValue();
@@ -1019,83 +975,80 @@ public class ServletModuleOpenIndy extends ServletModule
    */
 
   public void getpdf(HttpServletRequest req, HttpServletResponse res)
-    throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
-    long starttime=System.currentTimeMillis();
+      throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
+    long starttime = System.currentTimeMillis();
     String ID_REQUEST_PARAM = "id";
     int maxArticlesInNewsleter = 15; // it is nice not to be dos'ed
     try {
       String idParam = req.getParameter(ID_REQUEST_PARAM);
       if (idParam != null) {
 
+        RE re = new RE("[0-9]+");
 
-  RE re = new RE("[0-9]+");
-
+        REMatch[] idMatches = re.getAllMatches(idParam);
 
-  REMatch[] idMatches=re.getAllMatches(idParam);
+        String cacheSelector = "";
 
-  String cacheSelector="";
-
-  for (int i = 0; i < idMatches.length; i++){
-    cacheSelector=   cacheSelector + "," + idMatches[i].toString();
-  }
+        for (int i = 0; i < idMatches.length; i++) {
+          cacheSelector = cacheSelector + "," + idMatches[i].toString();
+        }
 
-  String cacheType="pdf";
+        String cacheType = "pdf";
 
-  CacheKey theCacheKey = new CacheKey(cacheType,cacheSelector);
+        CacheKey theCacheKey = new CacheKey(cacheType, cacheSelector);
 
-  byte[] thePDF;
+        byte[] thePDF;
 
-  if (MirGlobal.mruCache().hasObject(theCacheKey)){
-    logger.info("fetching pdf from cache");
-    thePDF = (byte[]) MirGlobal.mruCache().getObject(theCacheKey);
-  }
-  else {
-    logger.info("generating pdf and caching it");
-    ByteArrayOutputStream out = new ByteArrayOutputStream();
-    PDFGenerator pdfMaker = new PDFGenerator(out);
-
-    if (idMatches.length > 1){
-      pdfMaker.addLine();
-      for (int i = 0; i < idMatches.length  && i < maxArticlesInNewsleter; i++){
-        REMatch aMatch = idMatches[i];
-        String id=aMatch.toString();
-        EntityContent contentEnt = (EntityContent)contentModule.getById(id);
-        pdfMaker.addIndexItem(contentEnt);
-      }
-    }
+        if (MirGlobal.mruCache().hasObject(theCacheKey)) {
+          logger.info("fetching pdf from cache");
+          thePDF = (byte[]) MirGlobal.mruCache().getObject(theCacheKey);
+        }
+        else {
+          logger.info("generating pdf and caching it");
+          ByteArrayOutputStream out = new ByteArrayOutputStream();
+          PDFGenerator pdfMaker = new PDFGenerator(out);
+
+          if (idMatches.length > 1) {
+            pdfMaker.addLine();
+            for (int i = 0; i < idMatches.length && i < maxArticlesInNewsleter; i++) {
+              REMatch aMatch = idMatches[i];
+              String id = aMatch.toString();
+              EntityContent contentEnt = (EntityContent) contentModule.getById(id);
+              pdfMaker.addIndexItem(contentEnt);
+            }
+          }
 
-    for (int i = 0; i < idMatches.length; i++){
-      REMatch aMatch = idMatches[i];
-      String id=aMatch.toString();
-      EntityContent contentEnt = (EntityContent)contentModule.getById(id);
+          for (int i = 0; i < idMatches.length; i++) {
+            REMatch aMatch = idMatches[i];
+            String id = aMatch.toString();
+            EntityContent contentEnt = (EntityContent) contentModule.getById(id);
 
-      pdfMaker.add(contentEnt);
-    }
+            pdfMaker.add(contentEnt);
+          }
 
-    pdfMaker.stop();
-    thePDF  = out.toByteArray();
+          pdfMaker.stop();
+          thePDF = out.toByteArray();
 
-    //and save all our hard work!
-    MirGlobal.mruCache().storeObject(theCacheKey,thePDF);
-  }
+          //and save all our hard work!
+          MirGlobal.mruCache().storeObject(theCacheKey, thePDF);
+        }
 
-  res.setContentType("application/pdf");
-  res.setContentLength(thePDF.length);
-  res.getOutputStream().write(thePDF);
-  res.getOutputStream().flush();
-  String elapsedtime=(new Long(System.currentTimeMillis()-starttime)).toString();
-  logger.info("pdf retireval took "+elapsedtime + " milliseconds"  );
+        res.setContentType("application/pdf");
+        res.setContentLength(thePDF.length);
+        res.getOutputStream().write(thePDF);
+        res.getOutputStream().flush();
+        String elapsedtime = (new Long(System.currentTimeMillis() - starttime)).toString();
+        logger.info("pdf retireval took " + elapsedtime + " milliseconds");
 
       }
       else {
-  throw new ServletModuleExc("Missing id.");
+        throw new ServletModuleExc("Missing id.");
       }
     }
     catch (Throwable t) {
       logger.error(t.toString());
       throw new ServletModuleFailure(t);
     }
-
   }
 
 
@@ -1126,7 +1079,7 @@ public class ServletModuleOpenIndy extends ServletModule
   public void deliver(PrintWriter anOutputWriter, HttpServletRequest aRequest, HttpServletResponse aResponse, Map aData, Map anExtra, String aGenerator)
       throws ServletModuleFailure {
     try {
-      Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)}, "bundles.open");
+      Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)}, "etc/bundles/open");
       responseData.put("data", aData);
       responseData.put("extra", anExtra);
 
@@ -1146,7 +1099,7 @@ public class ServletModuleOpenIndy extends ServletModule
   public void deliver(PrintWriter anOutputWriter, HttpServletRequest aRequest, HttpServletResponse aResponse, Map aData, Map anExtra, String aGenerator,String aLocaleString)
       throws ServletModuleFailure {
     try {
-      Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { new Locale(aLocaleString,""), getFallbackLocale(aRequest)}, "bundles.open");
+      Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { new Locale(aLocaleString,""), getFallbackLocale(aRequest)}, "etc/bundles/open");
       responseData.put("data", aData);
       responseData.put("extra", anExtra);
 
@@ -1166,7 +1119,7 @@ public class ServletModuleOpenIndy extends ServletModule
 
   public void handleError(HttpServletRequest aRequest, HttpServletResponse aResponse,PrintWriter out, Throwable anException) {
     try {
-      logger.error("error: " + anException);
+      logger.error("Error during open action", anException);
       Map data = new HashMap();
 
       data.put("errorstring", anException.getMessage());
@@ -1185,8 +1138,10 @@ public class ServletModuleOpenIndy extends ServletModule
       logger.warn("user error: " + anException.getMessage());
       Map data = new HashMap();
 
-      MessageResources messages = MessageResources.getMessageResources("bundles.open");
-      data.put("errorstring", messages.getMessage(getLocale(aRequest), anException.getMessage(), anException.getParameters()));
+      Bundle bundle =
+          MirGlobal.getBundleFactory().getBundle("etc/bundles/open", new
+              String[] { getLocale(aRequest).getLanguage() });
+      data.put("errorstring", bundle.getValue(anException.getMessage(), Arrays.asList(anException.getParameters())));
       data.put("date", StringUtil.date2readableDateTime(new GregorianCalendar()));
 
       deliver(out, aRequest, aResponse, data, null, configuration.getString("ServletModule.OpenIndy.UserErrorTemplate"));
@@ -1195,8 +1150,4 @@ public class ServletModuleOpenIndy extends ServletModule
       throw new ServletModuleFailure(e);
     }
   }
-
-  private String createOneTimePasswd() {
-    return "";
-  }
 }