X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Flocalizer%2Fbasic%2FMirBasicPostingSessionHandler.java;h=786fd6268b1f32c6b68fffec067427e9a6fa3e0a;hb=04bf29aa1f1abf43e96d0272b2a286f0c1f9fea8;hp=0152cab12b5a127deb7130e779ae07890de24a03;hpb=f0f8f85e69c74d10a86f3c0f7ec6e70b6abd72ff;p=mir.git diff --git a/source/mircoders/localizer/basic/MirBasicPostingSessionHandler.java b/source/mircoders/localizer/basic/MirBasicPostingSessionHandler.java index 0152cab1..786fd626 100755 --- a/source/mircoders/localizer/basic/MirBasicPostingSessionHandler.java +++ b/source/mircoders/localizer/basic/MirBasicPostingSessionHandler.java @@ -29,16 +29,14 @@ */ package mircoders.localizer.basic; -import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Random; -import java.util.*; +import java.util.Vector; import mir.config.MirPropertiesConfiguration; -import mir.entity.Entity; import mir.log.LoggerWrapper; import mir.session.Request; import mir.session.Response; @@ -47,15 +45,11 @@ import mir.session.SessionExc; import mir.session.SessionFailure; import mir.session.SessionHandler; import mir.session.UploadedFile; +import mir.session.ValidationError; import mir.storage.StorageObject; import mir.util.ExceptionFunctions; -import mircoders.entity.EntityComment; import mircoders.global.MirGlobal; -import mircoders.media.MediaUploadProcessor; -import mircoders.module.ModuleComment; -import mircoders.storage.DatabaseComment; -import mircoders.storage.DatabaseCommentToMedia; -import mircoders.storage.DatabaseContent; +import mircoders.module.ModuleMediaType; /** * @@ -71,6 +65,12 @@ public abstract class MirBasicPostingSessionHandler implements SessionHandler { protected LoggerWrapper logger; protected MirPropertiesConfiguration configuration; + private String normalResponseGenerator; + private String dupeResponseGenerator; + private String unsupportedMediaTypeResponseGenerator; + private String finalResponseGenerator; + + public MirBasicPostingSessionHandler() { logger = new LoggerWrapper("Localizer.OpenPosting"); try { @@ -83,13 +83,31 @@ public abstract class MirBasicPostingSessionHandler implements SessionHandler { } } + protected void setNormalResponseGenerator(String aGenerator) { + normalResponseGenerator = aGenerator; + } + + protected void setResponseGenerators(String aNormalResponseGenerator, String aDupeResponseGenerator, + String anUnsupportedMediaTypeResponseGenerator, String aFinalResponseGenerator) { + setNormalResponseGenerator(aNormalResponseGenerator); + dupeResponseGenerator = aDupeResponseGenerator; + unsupportedMediaTypeResponseGenerator = anUnsupportedMediaTypeResponseGenerator; + finalResponseGenerator = aFinalResponseGenerator; + } + public void processRequest(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure { - if (aSession.getAttribute("initialRequest")==null) { - initialRequest(aRequest, aSession, aResponse); - aSession.setAttribute("initialRequest", "no"); + if (MirGlobal.abuse().getOpenPostingDisabled()) { + makeOpenPostingDisabledResponse(aRequest, aSession, aResponse); + aSession.terminate(); } else { - subsequentRequest(aRequest, aSession, aResponse); + if (aSession.getAttribute("initialRequest") == null) { + initialRequest(aRequest, aSession, aResponse); + aSession.setAttribute("initialRequest", "no"); + } + else { + subsequentRequest(aRequest, aSession, aResponse); + } } }; @@ -101,7 +119,6 @@ public abstract class MirBasicPostingSessionHandler implements SessionHandler { public void subsequentRequest(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure { try { - try { List validationErrors = new Vector(); @@ -149,12 +166,21 @@ public abstract class MirBasicPostingSessionHandler implements SessionHandler { logger.debug("referrer = " + aRequest.getHeader("Referer")); aSession.setAttribute("referer", aRequest.getHeader("Referer")); - aSession.setAttribute("nrmediaitems", - new Integer(configuration.getInt("ServletModule.OpenIndy.DefaultMediaUploadItems"))); } protected void initializeResponseData(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure { - int nrMediaItems = ((Integer) aSession.getAttribute("nrmediaitems")).intValue(); + int nrMediaItems = configuration.getInt("ServletModule.OpenIndy.DefaultMediaUploadItems", 5); + + if (aSession.getAttribute("nrmediaitems")!=null) { + nrMediaItems = ((Integer) aSession.getAttribute("nrmediaitems")).intValue(); + } + try { + nrMediaItems = Math.min(configuration.getInt("ServletModule.OpenIndy.MaxMediaUploadItems"), Integer.parseInt(aRequest.getParameter("nrmediaitems"))); + } + catch (Throwable t) { + } + aSession.setAttribute("nrmediaitems", new Integer(nrMediaItems)); + List mediaItems = new Vector(); int i=0; @@ -170,9 +196,38 @@ public abstract class MirBasicPostingSessionHandler implements SessionHandler { aResponse.setResponseValue("errors", null); } - protected abstract void makeInitialResponse(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure; - protected abstract void makeResponse(Request aRequest, Session aSession, Response aResponse, List anErrors) throws SessionExc, SessionFailure; - protected abstract void makeFinalResponse(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure; + protected void makeInitialResponse(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure { + aResponse.setResponseGenerator(normalResponseGenerator); + }; + + protected void makeResponse(Request aRequest, Session aSession, Response aResponse, List anErrors) throws SessionExc, SessionFailure { + aResponse.setResponseValue("errors", anErrors); + aResponse.setResponseGenerator(normalResponseGenerator); + }; + + protected void makeFinalResponse(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure { + aResponse.setResponseGenerator(finalResponseGenerator); + }; + + protected void makeErrorResponse(Request aRequest, Session aSession, Response aResponse, Throwable anError) throws SessionExc, SessionFailure { + anError.printStackTrace(); + Throwable rootCause = ExceptionFunctions.traceCauseException(anError); + + if (rootCause instanceof DuplicatePostingExc) + aResponse.setResponseGenerator(dupeResponseGenerator); + if (rootCause instanceof ModuleMediaType.UnsupportedMimeTypeExc) { + aResponse.setResponseValue("mimetype", ((ModuleMediaType.UnsupportedMimeTypeExc) rootCause).getMimeType()); + aResponse.setResponseGenerator(unsupportedMediaTypeResponseGenerator); + } + else { + aResponse.setResponseValue("errorstring", anError.getMessage()); + aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.ErrorTemplate")); + } + }; + + protected void makeOpenPostingDisabledResponse(Request aRequest, Session aSession, Response aResponse) { + aResponse.setResponseGenerator(configuration.getString("ServletModule.OpenIndy.PostingDisabledTemplate")); + } protected void preProcessRequest(Request aRequest, Session aSession) throws SessionExc, SessionFailure { }; @@ -182,15 +237,6 @@ public abstract class MirBasicPostingSessionHandler implements SessionHandler { }; protected boolean shouldProcessRequest(Request aRequest, Session aSession, List aValidationErrors) throws SessionExc, SessionFailure { - int nrMediaItems = ((Integer) aSession.getAttribute("nrmediaitems")).intValue(); - try { - nrMediaItems = Math.min(configuration.getInt("ServletModule.OpenIndy.MaxMediaUploadItems"), Integer.parseInt(aRequest.getParameter("nrmediaitems"))); - } - catch (Throwable t) { - } - - aSession.setAttribute("nrmediaitems", new Integer(nrMediaItems)); - if (aRequest.getParameter("post")==null) return false; else { @@ -200,123 +246,17 @@ public abstract class MirBasicPostingSessionHandler implements SessionHandler { } protected void validate(List aResults, Request aRequest, Session aSession) throws SessionExc, SessionFailure { - } + String password = (String) aSession.getAttribute("password"); - protected void makeErrorResponse(Request aRequest, Session aSession, Response aResponse, Throwable anError) throws SessionExc, SessionFailure { - aResponse.setResponseValue("errorstring", anError.getMessage()); - aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.ErrorTemplate")); - }; - - /** - * Class that represents a validation error - * - *

Title:

- *

Description:

- *

Copyright: Copyright (c) 2003

- *

Company:

- * @author not attributable - * @version 1.0 - */ + if (password!=null) { + String submittedPassword= aRequest.getParameter("password").trim(); - public class ValidationError { - private String field; - private String message; - private List parameters; - - public ValidationError(String aField, String aMessage) { - this (aField, aMessage, new String[] {}); - } - - public ValidationError(String aField, String aMessage, Object aParameter) { - this (aField, aMessage, new Object[] {aParameter}); - } - - public ValidationError(String aField, String aMessage, Object[] aParameters) { - field = aField; - message = aMessage; - parameters = Arrays.asList(aParameters); - } - - public String getMessage() { - return message; - } - - public String getField() { - return field; - } - - public List getParameters() { - return parameters; - } - } - - /** - * Convenience validation method to test wether a field has been filled in - * - * @param aRequest - * @param aFieldName - * @param anErrorMessageResource - * @param aValidationResults - * @return - */ - - protected boolean testFieldEntered(Request aRequest, String aFieldName, String anErrorMessageResource, List aValidationResults) { - Object value = aRequest.getParameter(aFieldName); - if (value==null || !(value instanceof String) || ((String) value).trim().length()==0) { - aValidationResults.add(new ValidationError(aFieldName, anErrorMessageResource)); - return false; - } - else - return true; - } - - /** - * Convenience validation method to test wether a field is numeric - - * @param aRequest - * @param aFieldName - * @param anErrorMessageResource - * @param aValidationResults - * @return - */ - - protected boolean testFieldIsNumeric(Request aRequest, String aFieldName, String anErrorMessageResource, List aValidationResults) { - Object value = aRequest.getParameter(aFieldName); - if (value!=null) { - try { - Integer.parseInt((String) value); - return true; - } - catch (Throwable t) { - aValidationResults.add(new ValidationError(aFieldName, anErrorMessageResource)); - return false; + if (!password.equals(submittedPassword)) { + aResults.add(new ValidationError("password", "passwordmismatch")); } } - return true; } - /** - * Convenience validation method to test wether a field is numeric - - * @param aRequest - * @param aFieldName - * @param anErrorMessageResource - * @param aValidationResults - * @return - */ - - protected boolean testFieldLength(Request aRequest, String aFieldName, int aMaxLength, String anErrorMessageResource, List aValidationResults) { - String value = aRequest.getParameter(aFieldName); - - if (value!=null) { - if (value.length()>aMaxLength) { - aValidationResults.add(new ValidationError(aFieldName, anErrorMessageResource)); - return false; - } - else return true; - } - return true; - } /** * Method to generate a one-time password @@ -364,4 +304,10 @@ public abstract class MirBasicPostingSessionHandler implements SessionHandler { return result; } + protected static class DuplicatePostingExc extends SessionExc { + public DuplicatePostingExc(String aMessage) { + super(aMessage); + } + } + }