*/
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;
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;
/**
*
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 {
}
}
+ 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);
+ }
}
};
public void subsequentRequest(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure {
try {
-
try {
List validationErrors = new Vector();
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;
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 {
};
};
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 {
}
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
- *
- * <p>Title: </p>
- * <p>Description: </p>
- * <p>Copyright: Copyright (c) 2003</p>
- * <p>Company: </p>
- * @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
return result;
}
+ protected static class DuplicatePostingExc extends SessionExc {
+ public DuplicatePostingExc(String aMessage) {
+ super(aMessage);
+ }
+ }
+
}