Commit 157b95e91e018fb524aadf98872dfb5117867f64
1 parent
2c3a8d7d
Chiamate completate,manca autenticazione
git-svn-id: http://svn.softecspa.it/desktopmate/DesktopMate%202.0/FileProxyServer/trunk@13300 edf0334f-4afc-450a-8f92-fe1409970e7d
Showing
22 changed files
with
442 additions
and
95 deletions
Show diff stats
| 1 | +<%@page import="it.softecspa.portal.ApplicationClusterInfo"%> | ||
| 2 | +<%@page import="it.softecspa.portal.Parameters"%> | ||
| 3 | +<% | ||
| 4 | + Parameters parameters = Parameters.getInstance(); | ||
| 5 | + String url = request.getScheme()+"://"+parameters.getChannelInfo().getDomainName(); | ||
| 6 | + | ||
| 7 | + url += parameters.getChannelInfo().getPortHTTP()+parameters.getChannelInfo().getContextName()+"/proxy-services/statement?upload"; | ||
| 8 | +%> | ||
| 9 | +<html> | ||
| 10 | +<head> | ||
| 11 | + <title>Upload file</title> | ||
| 12 | + <meta http-equiv="expires" content="-1"> | ||
| 13 | + <meta http-equiv="pragma" content="no-cache"> | ||
| 14 | + <meta http-equiv="cache-control" content="no-cache"> | ||
| 15 | + <script> | ||
| 16 | + function sendData() { | ||
| 17 | + var xmlhttp; | ||
| 18 | + | ||
| 19 | + if (window.XMLHttpRequest) { | ||
| 20 | + xmlhttp = new XMLHttpRequest(); | ||
| 21 | + } else if (window.ActiveXObject) { | ||
| 22 | + xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + //document.dati.risposta.value="Elaborazione in corso...."; | ||
| 26 | + | ||
| 27 | + xmlhttp.open("POST", "<%=url%>", false); | ||
| 28 | + xmlhttp.setRequestHeader("X-username", document.dati.FIELD_USERNAME.value); | ||
| 29 | + xmlhttp.setRequestHeader("X-password", document.dati.FIELD_PASSWORD.value); | ||
| 30 | + // | ||
| 31 | + xmlhttp.setRequestHeader("X-path", document.dati.FIELD_PATH.value); | ||
| 32 | + xmlhttp.setRequestHeader("X-fileName", document.dati.FIELD_FILENAME.value); | ||
| 33 | + xmlhttp.setRequestHeader("X-bufferLenght", document.dati.FIELD_BUFFER.value); | ||
| 34 | + if (document.dati.FIELD_OVERWRITE.checked) { | ||
| 35 | + xmlhttp.setRequestHeader("X-overwrite", document.dati.FIELD_OVERWRITE.value); | ||
| 36 | + } | ||
| 37 | + if (document.dati.FIELD_APPEND.checked) { | ||
| 38 | + xmlhttp.setRequestHeader("X-append", document.dati.FIELD_APPEND.value); | ||
| 39 | + } | ||
| 40 | + xmlhttp.send(document.dati.FIELD_REQUEST.value); | ||
| 41 | + | ||
| 42 | + | ||
| 43 | + var risposta = xmlhttp.responseText; | ||
| 44 | + document.dati.FIELD_RESPONSE.value=risposta; | ||
| 45 | + } | ||
| 46 | + </script> | ||
| 47 | + <style> | ||
| 48 | + .tabella {border:solid 1px #DDDDEE; color:#2b2b2b; } | ||
| 49 | + .cella {padding:5px;color:#2b2b2b; background-color:#DDDDEE; font-face:verdana; font-size:14px;} | ||
| 50 | + .cellaIntestazione {padding:5px;color:#2b2b2b; background-color:#DDDDEE; font-face:verdana; font-size:14px; font-weight:bold;} | ||
| 51 | + </style> | ||
| 52 | +</head> | ||
| 53 | +<body> | ||
| 54 | + <form name="dati"> | ||
| 55 | + <table border="0" cellspacing="2" cellpadding="2" class="tabella"> | ||
| 56 | + <tr><td colspan="2" class="cellaIntestazione">Simulazione traferimento file</td></tr> | ||
| 57 | + <tr> | ||
| 58 | + <td colspan="2" class="cella"> | ||
| 59 | + <ul> | ||
| 60 | + <li>Incollare XML nella text area</li> | ||
| 61 | + <li>La login e la password devono essere quelle di un utente abilitato all'import dei dati (ad esempio un amministratore) </li> | ||
| 62 | + <li>Alla fine dell'importazione verrà visualizzato nell'area esito il risultato dell'importazione:</li> | ||
| 63 | + </ul> | ||
| 64 | + </td> | ||
| 65 | + </tr> | ||
| 66 | + <tr> | ||
| 67 | + <td class="cella">login</td> | ||
| 68 | + <td class="cella"><input name="FIELD_USERNAME" type="text"></td> | ||
| 69 | + </tr> | ||
| 70 | + <tr> | ||
| 71 | + <td class="cella">password</td> | ||
| 72 | + <td class="cella"><input name="FIELD_PASSWORD" type="password"></td> | ||
| 73 | + </tr> | ||
| 74 | + | ||
| 75 | + <tr> | ||
| 76 | + <td class="cella">path</td> | ||
| 77 | + <td class="cella"><input name="FIELD_PATH" type="text"></td> | ||
| 78 | + </tr> | ||
| 79 | + <tr> | ||
| 80 | + <td class="cella">fileName</td> | ||
| 81 | + <td class="cella"><input name="FIELD_FILENAME" type="text"></td> | ||
| 82 | + </tr> | ||
| 83 | + <tr> | ||
| 84 | + <td class="cella">overwrite</td> | ||
| 85 | + <td class="cella"><input name="FIELD_OVERWRITE" type="checkbox" value="true"></td> | ||
| 86 | + </tr> | ||
| 87 | + <tr> | ||
| 88 | + <td class="cella">append</td> | ||
| 89 | + <td class="cella"><input name="FIELD_APPEND" type="checkbox" value="true"></td> | ||
| 90 | + </tr> | ||
| 91 | + <tr> | ||
| 92 | + <td class="cella">bufferLength</td> | ||
| 93 | + <td class="cella"><input name="FIELD_BUFFER" type="text"></td> | ||
| 94 | + </tr> | ||
| 95 | + | ||
| 96 | + <tr> | ||
| 97 | + <td class="cella" colspan="2"><input type="button" value="Invia dati" onclick="sendData();"></td> | ||
| 98 | + </tr> | ||
| 99 | + <tr> | ||
| 100 | + <td colspan="2" class="cella"> | ||
| 101 | + <div style="display: inline-block; vertical-align: top;"> | ||
| 102 | + <div style="display: inline-block; vertical-align: top;"> | ||
| 103 | + Invio<br> | ||
| 104 | + <textarea name="FIELD_REQUEST" cols="80" rows="40"></textarea> | ||
| 105 | + </div> | ||
| 106 | + <div style="display:inline-block; vertical-align: top;"> | ||
| 107 | + Esito<br> | ||
| 108 | + <textarea name="FIELD_RESPONSE" readonly="readonly" cols="50" rows="20"></textarea> | ||
| 109 | + </div> | ||
| 110 | + </div> | ||
| 111 | + </td> | ||
| 112 | + </tr> | ||
| 113 | + </table> | ||
| 114 | + | ||
| 115 | + </form> | ||
| 116 | +</body> | ||
| 117 | +</html> |
lib/common/local/kahuna5j_4.2.3.jar
No preview for this file type
src/it/softecspa/fileproxy/proxyservices/HttpFileProxyService.java
| @@ -4,14 +4,17 @@ import it.softecspa.fileproxy.proxyservices.core.HttpFileProxyServiceInterfaceSe | @@ -4,14 +4,17 @@ import it.softecspa.fileproxy.proxyservices.core.HttpFileProxyServiceInterfaceSe | ||
| 4 | import it.softecspa.fileproxy.proxyservices.manager.DeleteManager; | 4 | import it.softecspa.fileproxy.proxyservices.manager.DeleteManager; |
| 5 | import it.softecspa.fileproxy.proxyservices.manager.DownloadManager; | 5 | import it.softecspa.fileproxy.proxyservices.manager.DownloadManager; |
| 6 | import it.softecspa.fileproxy.proxyservices.manager.ListManager; | 6 | import it.softecspa.fileproxy.proxyservices.manager.ListManager; |
| 7 | +import it.softecspa.fileproxy.proxyservices.manager.MakeFolderManager; | ||
| 7 | import it.softecspa.fileproxy.proxyservices.manager.UploadManager; | 8 | import it.softecspa.fileproxy.proxyservices.manager.UploadManager; |
| 8 | import it.softecspa.fileproxy.proxyservices.request.DeleteRequestType; | 9 | import it.softecspa.fileproxy.proxyservices.request.DeleteRequestType; |
| 9 | import it.softecspa.fileproxy.proxyservices.request.DownloadRequestType; | 10 | import it.softecspa.fileproxy.proxyservices.request.DownloadRequestType; |
| 10 | import it.softecspa.fileproxy.proxyservices.request.ListRequestType; | 11 | import it.softecspa.fileproxy.proxyservices.request.ListRequestType; |
| 12 | +import it.softecspa.fileproxy.proxyservices.request.MakeFolderRequestType; | ||
| 11 | import it.softecspa.fileproxy.proxyservices.request.UploadRequestType; | 13 | import it.softecspa.fileproxy.proxyservices.request.UploadRequestType; |
| 12 | import it.softecspa.fileproxy.proxyservices.response.DeleteResponseType; | 14 | import it.softecspa.fileproxy.proxyservices.response.DeleteResponseType; |
| 13 | import it.softecspa.fileproxy.proxyservices.response.DownloadResponseType; | 15 | import it.softecspa.fileproxy.proxyservices.response.DownloadResponseType; |
| 14 | import it.softecspa.fileproxy.proxyservices.response.ListResponseType; | 16 | import it.softecspa.fileproxy.proxyservices.response.ListResponseType; |
| 17 | +import it.softecspa.fileproxy.proxyservices.response.MakeFolderResponseType; | ||
| 15 | import it.softecspa.fileproxy.proxyservices.response.UploadResponseType; | 18 | import it.softecspa.fileproxy.proxyservices.response.UploadResponseType; |
| 16 | 19 | ||
| 17 | import javax.servlet.ServletConfig; | 20 | import javax.servlet.ServletConfig; |
| @@ -76,4 +79,16 @@ public class HttpFileProxyService extends HttpFileProxyServiceInterfaceServlet { | @@ -76,4 +79,16 @@ public class HttpFileProxyService extends HttpFileProxyServiceInterfaceServlet { | ||
| 76 | return service.process(_request); | 79 | return service.process(_request); |
| 77 | } | 80 | } |
| 78 | 81 | ||
| 82 | + | ||
| 83 | + | ||
| 84 | + /** | ||
| 85 | + * Creazione di una cartella | ||
| 86 | + * @param _request | ||
| 87 | + * @return | ||
| 88 | + */ | ||
| 89 | + public MakeFolderResponseType makeFolder(MakeFolderRequestType _request) { | ||
| 90 | + MakeFolderManager service = new MakeFolderManager(); | ||
| 91 | + return service.process(_request); | ||
| 92 | + } | ||
| 93 | + | ||
| 79 | } | 94 | } |
src/it/softecspa/fileproxy/proxyservices/manager/AbstractHttpFileProxyManager.java
| 1 | package it.softecspa.fileproxy.proxyservices.manager; | 1 | package it.softecspa.fileproxy.proxyservices.manager; |
| 2 | 2 | ||
| 3 | -import it.softecspa.database.dbconnect.ConnectionManager; | ||
| 4 | import it.softecspa.fileproxy.proxyservices.manager.core.NullSession; | 3 | import it.softecspa.fileproxy.proxyservices.manager.core.NullSession; |
| 5 | import it.softecspa.fileproxy.proxyservices.request.AbstractHttpFileProxyRequest; | 4 | import it.softecspa.fileproxy.proxyservices.request.AbstractHttpFileProxyRequest; |
| 6 | import it.softecspa.fileproxy.proxyservices.response.AbstractHttpFileProxyResponse; | 5 | import it.softecspa.fileproxy.proxyservices.response.AbstractHttpFileProxyResponse; |
| 7 | import it.softecspa.fileproxy.services.ServerCacheFactory; | 6 | import it.softecspa.fileproxy.services.ServerCacheFactory; |
| 8 | import it.softecspa.fileproxy.services.common.CheckerException; | 7 | import it.softecspa.fileproxy.services.common.CheckerException; |
| 9 | import it.softecspa.fileproxy.services.common.ManagerException; | 8 | import it.softecspa.fileproxy.services.common.ManagerException; |
| 9 | +import it.softecspa.fileproxy.services.common.ResponseOutcome; | ||
| 10 | import it.softecspa.fileproxy.services.common.core.UniversalManager; | 10 | import it.softecspa.fileproxy.services.common.core.UniversalManager; |
| 11 | -import it.softecspa.kahuna.lang.XString; | ||
| 12 | -import it.softecspa.kahuna.services.PostmanPat; | ||
| 13 | -import it.softecspa.kahuna.sql.SqlWriter; | ||
| 14 | -import it.softecspa.kahuna.util.calendar.EnterpriseCalendar; | ||
| 15 | - | ||
| 16 | -import java.math.BigDecimal; | ||
| 17 | -import java.math.RoundingMode; | ||
| 18 | -import java.sql.SQLException; | 11 | +import it.softecspa.kahuna.io.File; |
| 19 | 12 | ||
| 20 | 13 | ||
| 21 | public abstract class AbstractHttpFileProxyManager<I extends AbstractHttpFileProxyRequest, O extends AbstractHttpFileProxyResponse> extends UniversalManager <I,O,NullSession<I>> { | 14 | public abstract class AbstractHttpFileProxyManager<I extends AbstractHttpFileProxyRequest, O extends AbstractHttpFileProxyResponse> extends UniversalManager <I,O,NullSession<I>> { |
| 22 | 15 | ||
| 23 | - public static final String NULL_VERSION = "0.0.0"; | ||
| 24 | - | ||
| 25 | - // Variabile utilizzata per permetter di saltare i controlli di sessione | ||
| 26 | - boolean jumpSessionValidate; | ||
| 27 | - boolean forceStageMode; | ||
| 28 | 16 | ||
| 29 | boolean logRequestInfo; | 17 | boolean logRequestInfo; |
| 30 | 18 | ||
| @@ -71,6 +59,29 @@ public abstract class AbstractHttpFileProxyManager<I extends AbstractHttpFilePro | @@ -71,6 +59,29 @@ public abstract class AbstractHttpFileProxyManager<I extends AbstractHttpFilePro | ||
| 71 | return ServerCacheFactory.getInstance().getResourceRoot() + _path; | 59 | return ServerCacheFactory.getInstance().getResourceRoot() + _path; |
| 72 | } | 60 | } |
| 73 | 61 | ||
| 62 | + /** | ||
| 63 | + * Controlla la presenza di caratteri speciali non accettati dai path | ||
| 64 | + * @param da_controllare | ||
| 65 | + * @throws CheckerException | ||
| 66 | + */ | ||
| 67 | + protected void checkWildecard(String da_controllare) throws CheckerException { | ||
| 68 | + if (da_controllare==null) return; | ||
| 69 | + | ||
| 70 | + if (da_controllare.contains("..")) { | ||
| 71 | + throw new CheckerException(ResponseOutcome.FOUND_NOT_VALID_CHAR, ".."); | ||
| 72 | + } | ||
| 73 | + if (da_controllare.contains("*")) { | ||
| 74 | + throw new CheckerException(ResponseOutcome.FOUND_NOT_VALID_CHAR, "*"); | ||
| 75 | + } | ||
| 76 | + if (da_controllare.contains("!")) { | ||
| 77 | + throw new CheckerException(ResponseOutcome.FOUND_NOT_VALID_CHAR, "!"); | ||
| 78 | + } | ||
| 79 | + if (da_controllare.contains("?")) { | ||
| 80 | + throw new CheckerException(ResponseOutcome.FOUND_NOT_VALID_CHAR, "?"); | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + } | ||
| 84 | + | ||
| 74 | 85 | ||
| 75 | 86 | ||
| 76 | @Override | 87 | @Override |
src/it/softecspa/fileproxy/proxyservices/manager/DeleteManager.java
| @@ -16,8 +16,10 @@ public class DeleteManager extends AbstractHttpFileProxyManager<DeleteRequestTyp | @@ -16,8 +16,10 @@ public class DeleteManager extends AbstractHttpFileProxyManager<DeleteRequestTyp | ||
| 16 | 16 | ||
| 17 | // Non si possono cancellare le cartelle | 17 | // Non si possono cancellare le cartelle |
| 18 | checkRequestMandatory("fileName"); | 18 | checkRequestMandatory("fileName"); |
| 19 | + checkWildecard(request.getPath()); | ||
| 19 | String path = normalizePath(request.getPath()); | 20 | String path = normalizePath(request.getPath()); |
| 20 | 21 | ||
| 22 | + checkWildecard(request.getFileName()); | ||
| 21 | file_to_delete = new File (path, request.getFileName()); | 23 | file_to_delete = new File (path, request.getFileName()); |
| 22 | if (!file_to_delete.exists()) { | 24 | if (!file_to_delete.exists()) { |
| 23 | log.warn("File do not exist: '"+file_to_delete.getAbsolutePath()+"'"); | 25 | log.warn("File do not exist: '"+file_to_delete.getAbsolutePath()+"'"); |
src/it/softecspa/fileproxy/proxyservices/manager/DownloadManager.java
| @@ -19,11 +19,12 @@ public class DownloadManager extends AbstractHttpFileProxyManager<DownloadReques | @@ -19,11 +19,12 @@ public class DownloadManager extends AbstractHttpFileProxyManager<DownloadReques | ||
| 19 | // Non si possono scaricare le cartelle | 19 | // Non si possono scaricare le cartelle |
| 20 | checkRequestMandatory("fileName"); | 20 | checkRequestMandatory("fileName"); |
| 21 | String path = normalizePath(request.getPath()); | 21 | String path = normalizePath(request.getPath()); |
| 22 | + checkWildecard(request.getPath()); | ||
| 22 | 23 | ||
| 23 | checkRequestIfNullSetDefault("chunk", 0); | 24 | checkRequestIfNullSetDefault("chunk", 0); |
| 24 | checkRequestIfNullSetDefault("inline", Boolean.FALSE); | 25 | checkRequestIfNullSetDefault("inline", Boolean.FALSE); |
| 25 | 26 | ||
| 26 | - | 27 | + checkWildecard(request.getFileName()); |
| 27 | file_to_download = new File (path, request.getFileName()); | 28 | file_to_download = new File (path, request.getFileName()); |
| 28 | if (!file_to_download.exists()) { | 29 | if (!file_to_download.exists()) { |
| 29 | log.warn("File do not exist: '"+file_to_download.getAbsolutePath()+"'"); | 30 | log.warn("File do not exist: '"+file_to_download.getAbsolutePath()+"'"); |
src/it/softecspa/fileproxy/proxyservices/manager/ListManager.java
| @@ -24,6 +24,7 @@ public class ListManager extends AbstractHttpFileProxyManager<ListRequestType, L | @@ -24,6 +24,7 @@ public class ListManager extends AbstractHttpFileProxyManager<ListRequestType, L | ||
| 24 | 24 | ||
| 25 | checkRequestIfNullSetDefault("onlyFile", Boolean.FALSE); | 25 | checkRequestIfNullSetDefault("onlyFile", Boolean.FALSE); |
| 26 | checkRequestIfNullSetDefault("showHidden", Boolean.FALSE); | 26 | checkRequestIfNullSetDefault("showHidden", Boolean.FALSE); |
| 27 | + checkWildecard(request.getPath()); | ||
| 27 | 28 | ||
| 28 | path = normalizePath(request.getPath()); | 29 | path = normalizePath(request.getPath()); |
| 29 | } | 30 | } |
| @@ -32,8 +33,8 @@ public class ListManager extends AbstractHttpFileProxyManager<ListRequestType, L | @@ -32,8 +33,8 @@ public class ListManager extends AbstractHttpFileProxyManager<ListRequestType, L | ||
| 32 | 33 | ||
| 33 | @Override | 34 | @Override |
| 34 | protected void doService(ListRequestType request, ListResponseType response) throws ManagerException { | 35 | protected void doService(ListRequestType request, ListResponseType response) throws ManagerException { |
| 35 | - | ||
| 36 | log.info("Request LIST of folder '"+path+"' (onlyFile="+request.getOnlyFile().booleanValue()+")"); | 36 | log.info("Request LIST of folder '"+path+"' (onlyFile="+request.getOnlyFile().booleanValue()+")"); |
| 37 | + | ||
| 37 | List<File> files = File.dir(path, request.getOnlyFile().booleanValue()); | 38 | List<File> files = File.dir(path, request.getOnlyFile().booleanValue()); |
| 38 | if (files==null) { | 39 | if (files==null) { |
| 39 | throw new ManagerException(new CheckerException(ResponseOutcome.PATH_NOT_VALID)); | 40 | throw new ManagerException(new CheckerException(ResponseOutcome.PATH_NOT_VALID)); |
src/it/softecspa/fileproxy/proxyservices/manager/MakeFolderManager.java
0 → 100644
| 1 | +package it.softecspa.fileproxy.proxyservices.manager; | ||
| 2 | + | ||
| 3 | +import it.softecspa.fileproxy.proxyservices.request.MakeFolderRequestType; | ||
| 4 | +import it.softecspa.fileproxy.proxyservices.response.MakeFolderResponseType; | ||
| 5 | +import it.softecspa.fileproxy.services.common.CheckerException; | ||
| 6 | +import it.softecspa.fileproxy.services.common.ManagerException; | ||
| 7 | +import it.softecspa.fileproxy.services.common.ResponseOutcome; | ||
| 8 | +import it.softecspa.kahuna.io.File; | ||
| 9 | + | ||
| 10 | +public class MakeFolderManager extends AbstractHttpFileProxyManager<MakeFolderRequestType, MakeFolderResponseType> { | ||
| 11 | + | ||
| 12 | + private File dir_to_create; | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + @Override | ||
| 16 | + protected void validateRequest() throws CheckerException, ManagerException { | ||
| 17 | + | ||
| 18 | + // Non si possono scaricare le cartelle | ||
| 19 | + checkRequestMandatory("path"); | ||
| 20 | + String path = normalizePath(request.getPath()); | ||
| 21 | + checkWildecard(path); | ||
| 22 | + | ||
| 23 | + dir_to_create = new File (path); | ||
| 24 | + if (dir_to_create.exists()) { | ||
| 25 | + log.warn("Directory just exist: '"+dir_to_create.getAbsolutePath()+"'"); | ||
| 26 | + throw new CheckerException(ResponseOutcome.DIRECTORY_JUST_EXIST); | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + | ||
| 33 | + | ||
| 34 | + @Override | ||
| 35 | + protected void doService(MakeFolderRequestType request, MakeFolderResponseType response) throws ManagerException { | ||
| 36 | + log.info("Request CREATE of folder '"+dir_to_create.getAbsolutePath()+"'"); | ||
| 37 | + | ||
| 38 | + if (!dir_to_create.mkdirs()) { | ||
| 39 | + log.error("Error in create folder '"+dir_to_create.getAbsolutePath()+"'"); | ||
| 40 | + throw new ManagerException(new CheckerException(ResponseOutcome.ERROR_CREATING_DIR)); | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + | ||
| 44 | + // Risposta POSITIVA | ||
| 45 | + new ResponseBuilder(response).setReturn(ResponseOutcome.OK); | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + | ||
| 49 | +} |
src/it/softecspa/fileproxy/proxyservices/manager/UploadManager.java
| @@ -4,37 +4,126 @@ import it.softecspa.fileproxy.proxyservices.request.UploadRequestType; | @@ -4,37 +4,126 @@ import it.softecspa.fileproxy.proxyservices.request.UploadRequestType; | ||
| 4 | import it.softecspa.fileproxy.proxyservices.response.UploadResponseType; | 4 | import it.softecspa.fileproxy.proxyservices.response.UploadResponseType; |
| 5 | import it.softecspa.fileproxy.services.common.CheckerException; | 5 | import it.softecspa.fileproxy.services.common.CheckerException; |
| 6 | import it.softecspa.fileproxy.services.common.ManagerException; | 6 | import it.softecspa.fileproxy.services.common.ManagerException; |
| 7 | +import it.softecspa.fileproxy.services.common.ResponseOutcome; | ||
| 8 | +import it.softecspa.kahuna.io.File; | ||
| 9 | + | ||
| 10 | +import java.io.FileNotFoundException; | ||
| 11 | +import java.io.FileOutputStream; | ||
| 12 | +import java.io.IOException; | ||
| 13 | +import java.io.InputStream; | ||
| 14 | +import java.io.OutputStream; | ||
| 7 | 15 | ||
| 8 | public class UploadManager extends AbstractHttpFileProxyManager<UploadRequestType, UploadResponseType> { | 16 | public class UploadManager extends AbstractHttpFileProxyManager<UploadRequestType, UploadResponseType> { |
| 9 | 17 | ||
| 10 | - @Override | ||
| 11 | - protected void initialize() throws ManagerException { | ||
| 12 | - // TODO Auto-generated method stub | ||
| 13 | - | ||
| 14 | - } | 18 | + private File file_to_upload; |
| 15 | 19 | ||
| 16 | @Override | 20 | @Override |
| 17 | protected void validateRequest() throws CheckerException, ManagerException { | 21 | protected void validateRequest() throws CheckerException, ManagerException { |
| 18 | - // TODO Auto-generated method stub | 22 | + // Non si possono sovrascrivere le cartelle |
| 23 | + | ||
| 24 | + checkRequestMandatory("fileName"); | ||
| 25 | + checkWildecard(request.getPath()); | ||
| 26 | + String path = normalizePath(request.getPath()); | ||
| 27 | + | ||
| 28 | + checkRequestIfNullSetDefault("overwrite", Boolean.FALSE); | ||
| 29 | + checkRequestIfNullSetDefault("append", Boolean.FALSE); | ||
| 30 | + checkRequestIfNullSetDefault("bufferLength", 4096); | ||
| 31 | + | ||
| 32 | + checkWildecard(request.getFileName()); | ||
| 33 | + file_to_upload = new File (path, request.getFileName()); | ||
| 34 | + if (file_to_upload.exists()) { | ||
| 35 | + if (!request.getOverwrite().booleanValue() && !request.getAppend().booleanValue()) { | ||
| 36 | + log.warn("File just not exist: '"+file_to_upload.getAbsolutePath()+"', overwrite or append are FALSE"); | ||
| 37 | + throw new CheckerException(ResponseOutcome.FILE_JUST_EXIST); | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + if (file_to_upload.isDirectory()) { | ||
| 41 | + log.warn("File just not exist: '"+file_to_upload.getAbsolutePath()+"', but is a directory"); | ||
| 42 | + throw new CheckerException(ResponseOutcome.FILE_IS_DIRECTORY); | ||
| 43 | + } | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + | ||
| 19 | 47 | ||
| 20 | } | 48 | } |
| 21 | 49 | ||
| 22 | @Override | 50 | @Override |
| 23 | protected void doService(UploadRequestType request, UploadResponseType response) throws ManagerException { | 51 | protected void doService(UploadRequestType request, UploadResponseType response) throws ManagerException { |
| 24 | - // TODO Auto-generated method stub | 52 | + log.info("Request UPLOAD file '"+ file_to_upload.getAbsolutePath()+"'" |
| 53 | + + (request.getOverwrite().booleanValue()?" (overwrite = TRUE)":"") | ||
| 54 | + + (request.getAppend().booleanValue()?" (append = TRUE)":"") | ||
| 55 | + + " (bufferLength = "+request.getBufferLength()+") "); | ||
| 25 | 56 | ||
| 26 | - } | ||
| 27 | - | ||
| 28 | - @Override | ||
| 29 | - protected void completeWithSuccess(boolean stage) throws ManagerException { | ||
| 30 | - // TODO Auto-generated method stub | 57 | + // Prendo input stream e lo salvo su un file (prima temporaneo) |
| 58 | + File file_temp = new File(file_to_upload.getAbsoluteFile()+".tmp"); | ||
| 59 | + // Provo a cancellare il file temporaneo | ||
| 60 | + file_temp.delete(); | ||
| 61 | + | ||
| 62 | + if (request.getAppend().booleanValue()) { | ||
| 63 | + // Devo fare una copia del file per farlo diventara temporaneo | ||
| 64 | + if (file_to_upload.exists()) { | ||
| 65 | + // ...naturalmente se il file esite! | ||
| 66 | + try { | ||
| 67 | + | ||
| 68 | + log.info("Creating temporay copy of file '"+ file_to_upload.getAbsolutePath()+"'"); | ||
| 69 | + file_to_upload.copyTo(file_temp); | ||
| 70 | + } catch (IOException e) { | ||
| 71 | + throw new ManagerException(new CheckerException(ResponseOutcome.ERROR_COPY_FILE_TEMP)); | ||
| 72 | + } | ||
| 73 | + } | ||
| 74 | + } | ||
| 75 | + | ||
| 76 | + | ||
| 77 | + InputStream input = request.takeInputStream(); | ||
| 78 | + OutputStream output = null; | ||
| 79 | + int BUFFER_LENGTH = request.getBufferLength(); | ||
| 80 | + | ||
| 81 | + try { | ||
| 82 | + output = new FileOutputStream(file_temp, request.getAppend().booleanValue()); | ||
| 83 | + | ||
| 84 | + byte[] buffer = new byte[BUFFER_LENGTH]; | ||
| 85 | + int bytesRead; | ||
| 86 | + while ((bytesRead = input.read(buffer)) != -1) { | ||
| 87 | + output.write(buffer, 0, bytesRead); | ||
| 88 | + output.flush(); | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + } catch (FileNotFoundException e) { | ||
| 92 | + log.error("File '"+file_temp.getAbsolutePath()+"' not found"); | ||
| 93 | + throw new ManagerException(new CheckerException(ResponseOutcome.FILE_NOT_FOUND)); | ||
| 94 | + | ||
| 95 | + } catch (IOException e) { | ||
| 96 | + log.error("IOException writing file '"+file_temp.getAbsolutePath()+"'", e); | ||
| 97 | + throw new ManagerException(e); | ||
| 98 | + | ||
| 99 | + } finally { | ||
| 100 | + if (output!=null) { | ||
| 101 | + try { | ||
| 102 | + output.close(); | ||
| 103 | + } catch (IOException e) { | ||
| 104 | + log.error("IOException close file '"+file_temp.getAbsolutePath()+"'",e); | ||
| 105 | + } | ||
| 106 | + } | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + log.info("Copy completed, rename temp file to '"+ file_to_upload.getAbsolutePath()+"'"); | ||
| 110 | + if (request.getOverwrite().booleanValue()) { | ||
| 111 | + if (file_to_upload.exists() && !file_to_upload.delete()) { | ||
| 112 | + log.info("Impossibility to delete file '"+ file_to_upload.getAbsolutePath()+"' with override flag"); | ||
| 113 | + } | ||
| 114 | + } else if (request.getAppend().booleanValue()) { | ||
| 115 | + if (file_to_upload.exists() && !file_to_upload.delete()) { | ||
| 116 | + log.info("Impossibility to delete old file '"+ file_to_upload.getAbsolutePath()+"' with append flag"); | ||
| 117 | + } | ||
| 118 | + } | ||
| 119 | + | ||
| 120 | + file_temp.renameTo(file_to_upload); | ||
| 31 | 121 | ||
| 32 | - } | ||
| 33 | - | ||
| 34 | - @Override | ||
| 35 | - protected void checkAndTraceCheckerExceptionErrorIfExist(CheckerException e) { | ||
| 36 | - // TODO Auto-generated method stub | ||
| 37 | 122 | ||
| 123 | + | ||
| 124 | + // Risposta POSITIVA | ||
| 125 | + new ResponseBuilder(response).setReturn(ResponseOutcome.OK); | ||
| 38 | } | 126 | } |
| 39 | 127 | ||
| 128 | + | ||
| 40 | } | 129 | } |
src/it/softecspa/fileproxy/proxyservices/request/AbstractHttpFileProxyRequest.java
| @@ -9,7 +9,7 @@ import it.softecspa.fileproxy.services.common.core.request.TrackRequestInfo; | @@ -9,7 +9,7 @@ import it.softecspa.fileproxy.services.common.core.request.TrackRequestInfo; | ||
| 9 | import it.softecspa.fileproxy.services.common.core.request.UniversalAuthenticatedRequest; | 9 | import it.softecspa.fileproxy.services.common.core.request.UniversalAuthenticatedRequest; |
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | -public abstract class AbstractHttpFileProxyRequest implements GlobalHttpProxyRequest, RemoteHostRequestInfo, TrackRequestInfo, UniversalAuthenticatedRequest { | 12 | +public abstract class AbstractHttpFileProxyRequest implements GlobalHttpProxyRequest, RemoteHostRequestInfo, TrackRequestInfo { |
| 13 | 13 | ||
| 14 | // UniversalRequest | 14 | // UniversalRequest |
| 15 | private String language; | 15 | private String language; |
| @@ -21,53 +21,28 @@ public abstract class AbstractHttpFileProxyRequest implements GlobalHttpProxyReq | @@ -21,53 +21,28 @@ public abstract class AbstractHttpFileProxyRequest implements GlobalHttpProxyReq | ||
| 21 | // TrackRequestInfo | 21 | // TrackRequestInfo |
| 22 | private boolean traceRequestInfo; | 22 | private boolean traceRequestInfo; |
| 23 | 23 | ||
| 24 | - // UniversalAuthenticatedRequest | 24 | + |
| 25 | private String username; | 25 | private String username; |
| 26 | private String password; | 26 | private String password; |
| 27 | - private String organization; | ||
| 28 | - | ||
| 29 | - private String accessToken; | ||
| 30 | 27 | ||
| 31 | 28 | ||
| 32 | - @Override | ||
| 33 | public String getUsername() { | 29 | public String getUsername() { |
| 34 | return username; | 30 | return username; |
| 35 | } | 31 | } |
| 36 | 32 | ||
| 37 | - @Override | ||
| 38 | public void setUsername(String username) { | 33 | public void setUsername(String username) { |
| 39 | this.username = username; | 34 | this.username = username; |
| 40 | } | 35 | } |
| 41 | 36 | ||
| 42 | - @Override | ||
| 43 | public String getPassword() { | 37 | public String getPassword() { |
| 44 | return password; | 38 | return password; |
| 45 | } | 39 | } |
| 46 | 40 | ||
| 47 | - @Override | ||
| 48 | public void setPassword(String password) { | 41 | public void setPassword(String password) { |
| 49 | this.password = password; | 42 | this.password = password; |
| 50 | } | 43 | } |
| 51 | 44 | ||
| 52 | - @Override | ||
| 53 | - public String getOrganization() { | ||
| 54 | - return organization; | ||
| 55 | - } | ||
| 56 | - | ||
| 57 | - @Override | ||
| 58 | - public void setOrganization(String organization) { | ||
| 59 | - this.organization = organization; | ||
| 60 | - } | ||
| 61 | 45 | ||
| 62 | - @Override | ||
| 63 | - public String getAccessToken() { | ||
| 64 | - return accessToken; | ||
| 65 | - } | ||
| 66 | - | ||
| 67 | - @Override | ||
| 68 | - public void setAccessToken(String authToken) { | ||
| 69 | - this.accessToken = authToken; | ||
| 70 | - } | ||
| 71 | 46 | ||
| 72 | 47 | ||
| 73 | @Override | 48 | @Override |
src/it/softecspa/fileproxy/proxyservices/request/MakeFolderRequestType.java
0 → 100644
| 1 | +package it.softecspa.fileproxy.proxyservices.request; | ||
| 2 | + | ||
| 3 | + | ||
| 4 | +public class MakeFolderRequestType extends AbstractHttpFileProxyRequest{ | ||
| 5 | + | ||
| 6 | + private String path; | ||
| 7 | + | ||
| 8 | + public String getPath() { | ||
| 9 | + return path; | ||
| 10 | + } | ||
| 11 | + | ||
| 12 | + public void setPath(String filename) { | ||
| 13 | + this.path = filename; | ||
| 14 | + } | ||
| 15 | + | ||
| 16 | + | ||
| 17 | +} |
src/it/softecspa/fileproxy/proxyservices/request/UploadRequestType.java
| @@ -3,13 +3,20 @@ package it.softecspa.fileproxy.proxyservices.request; | @@ -3,13 +3,20 @@ package it.softecspa.fileproxy.proxyservices.request; | ||
| 3 | import java.io.InputStream; | 3 | import java.io.InputStream; |
| 4 | 4 | ||
| 5 | import it.softecspa.fileproxy.services.common.core.request.InputStreamReaderXML; | 5 | import it.softecspa.fileproxy.services.common.core.request.InputStreamReaderXML; |
| 6 | +import it.softecspa.fileproxy.services.common.core.request.MethodPostMandatory; | ||
| 6 | import it.softecspa.kahuna.util.xml.XmlRoot; | 7 | import it.softecspa.kahuna.util.xml.XmlRoot; |
| 7 | 8 | ||
| 8 | -public class UploadRequestType extends AbstractHttpFileProxyRequest implements InputStreamReaderXML<XmlRoot>{ | 9 | +public class UploadRequestType extends AbstractHttpFileProxyRequest implements InputStreamReaderXML<XmlRoot>, MethodPostMandatory { |
| 9 | 10 | ||
| 10 | private Boolean overwrite; | 11 | private Boolean overwrite; |
| 11 | - private String filename; | 12 | + private Boolean append; |
| 12 | 13 | ||
| 14 | + private String path; | ||
| 15 | + private String fileName; | ||
| 16 | + | ||
| 17 | + private String encoding; | ||
| 18 | + private Integer bufferLength; | ||
| 19 | + | ||
| 13 | 20 | ||
| 14 | // InputStreamReaderXML | 21 | // InputStreamReaderXML |
| 15 | private InputStream inputStream; | 22 | private InputStream inputStream; |
| @@ -44,12 +51,45 @@ public class UploadRequestType extends AbstractHttpFileProxyRequest implements I | @@ -44,12 +51,45 @@ public class UploadRequestType extends AbstractHttpFileProxyRequest implements I | ||
| 44 | } | 51 | } |
| 45 | 52 | ||
| 46 | 53 | ||
| 47 | - public String getFilename() { | ||
| 48 | - return filename; | 54 | + |
| 55 | + public String getFileName() { | ||
| 56 | + return fileName; | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + public void setFileName(String filename) { | ||
| 60 | + this.fileName = filename; | ||
| 61 | + } | ||
| 62 | + | ||
| 63 | + public String getPath() { | ||
| 64 | + return path; | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + public void setPath(String path) { | ||
| 68 | + this.path = path; | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + public String getEncoding() { | ||
| 72 | + return encoding; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + public void setEncoding(String encoding) { | ||
| 76 | + this.encoding = encoding; | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + public Integer getBufferLength() { | ||
| 80 | + return bufferLength; | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + public void setBufferLength(Integer bufferLength) { | ||
| 84 | + this.bufferLength = bufferLength; | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + public Boolean getAppend() { | ||
| 88 | + return append; | ||
| 49 | } | 89 | } |
| 50 | 90 | ||
| 51 | - public void setFilename(String filename) { | ||
| 52 | - this.filename = filename; | 91 | + public void setAppend(Boolean append) { |
| 92 | + this.append = append; | ||
| 53 | } | 93 | } |
| 54 | 94 | ||
| 55 | } | 95 | } |
src/it/softecspa/fileproxy/proxyservices/response/MakeFolderResponseType.java
0 → 100644
src/it/softecspa/fileproxy/proxyservices/xml/output/list/ResponseROOT.java
| @@ -15,7 +15,7 @@ public class ResponseROOT extends XmlRoot { | @@ -15,7 +15,7 @@ public class ResponseROOT extends XmlRoot { | ||
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | public ResponseROOT() { | 17 | public ResponseROOT() { |
| 18 | - super("list"); | 18 | + super("response"); |
| 19 | this.files = new XmlList<FileElement>(null); | 19 | this.files = new XmlList<FileElement>(null); |
| 20 | } | 20 | } |
| 21 | 21 |
src/it/softecspa/fileproxy/services/common/ResponseOutcome.java
| @@ -405,6 +405,7 @@ public enum ResponseOutcome { | @@ -405,6 +405,7 @@ public enum ResponseOutcome { | ||
| 405 | // Classe 90900 | 405 | // Classe 90900 |
| 406 | , DEVICE_LOCKED (90970,false,false,"Application locked on this device") | 406 | , DEVICE_LOCKED (90970,false,false,"Application locked on this device") |
| 407 | 407 | ||
| 408 | + , REQUEST_METHOD_NOT_VALID (90979,"Http request method not valid (POST mandatory)") | ||
| 408 | , REQUEST_NOT_IMPL_ISREADER (90980,"Internal error, request must implements interface to perform operation") | 409 | , REQUEST_NOT_IMPL_ISREADER (90980,"Internal error, request must implements interface to perform operation") |
| 409 | , DB_COMPARE_CLASS_NOT_MAPPED (90981,"Class not managed from database field comparator") | 410 | , DB_COMPARE_CLASS_NOT_MAPPED (90981,"Class not managed from database field comparator") |
| 410 | , DB_FILED_NOT_MAPPED (90982,"Database filed not mapped") | 411 | , DB_FILED_NOT_MAPPED (90982,"Database filed not mapped") |
| @@ -425,23 +426,19 @@ public enum ResponseOutcome { | @@ -425,23 +426,19 @@ public enum ResponseOutcome { | ||
| 425 | , SESSION_NOT_VALID (90997,"Session null or not valid") | 426 | , SESSION_NOT_VALID (90997,"Session null or not valid") |
| 426 | , REQUEST_NOT_VALID (90998,"Request is not valid") | 427 | , REQUEST_NOT_VALID (90998,"Request is not valid") |
| 427 | , RESPONSE_NOT_VALID (90999,"Response is not valid") // Valore di default | 428 | , RESPONSE_NOT_VALID (90999,"Response is not valid") // Valore di default |
| 428 | - // APP IN BICI CUSTOM | ||
| 429 | - , PHONE_NUMBER_NOT_VALID (71000,"Phone number not valid") | ||
| 430 | - , DATE_INVALID_MISSING (71001,"Date invalid or missing") | ||
| 431 | - , MANDATORY_KM_USEFUL (71002,"Km Useful is a mandatory field") | ||
| 432 | - , MANDATORY_KM_USELESS (71003,"Km Useless is a mandatory field") | ||
| 433 | - , MANDATORY_KM_OUT_THRESHOLD (71004,"Km Out Threshold is a mandatory field") | ||
| 434 | - , MANDATORY_TYPE (71005,"Type is a mandatory field") | ||
| 435 | - , MANDATORY_DATE_START (71006,"Date start is a mandatory field") | ||
| 436 | - , MANDATORY_DATE_END (71007,"Date end is a mandatory field") | ||
| 437 | - , SESSION_TOKEN_INVALID (71008,"Invalid Session Token") | ||
| 438 | - //----------------- | ||
| 439 | - | ||
| 440 | 429 | ||
| 430 | + // FILE PROXY CUSTOM | ||
| 441 | , PATH_NOT_VALID (30001,"Path not valid or not found") | 431 | , PATH_NOT_VALID (30001,"Path not valid or not found") |
| 442 | , FILE_NOT_EXIST (30002,"File do not exist") | 432 | , FILE_NOT_EXIST (30002,"File do not exist") |
| 443 | , FILE_IS_DIRECTORY (30003,"This is not a file") | 433 | , FILE_IS_DIRECTORY (30003,"This is not a file") |
| 444 | , ERROR_DELETING_FILE (30004,"Error deleting file") | 434 | , ERROR_DELETING_FILE (30004,"Error deleting file") |
| 435 | + , FILE_JUST_EXIST (30005,"File just exist") | ||
| 436 | + , FILE_NOT_FOUND (30006,"File not found") | ||
| 437 | + , ERROR_COPY_FILE_TEMP (30007,"Error creating temp file for append") | ||
| 438 | + , DIRECTORY_JUST_EXIST (30008,"Directory just exist") | ||
| 439 | + , ERROR_CREATING_DIR (30009,"Error creating directory") | ||
| 440 | + , FOUND_NOT_VALID_CHAR (30010,"Found not valid char in path or filename") | ||
| 441 | + //----------------- | ||
| 445 | 442 | ||
| 446 | 443 | ||
| 447 | 444 |
src/it/softecspa/fileproxy/services/common/core/UniversalStatementHttpServlet.java
| @@ -13,10 +13,12 @@ import it.softecspa.fileproxy.services.common.comunicator.http.HttpRemote; | @@ -13,10 +13,12 @@ import it.softecspa.fileproxy.services.common.comunicator.http.HttpRemote; | ||
| 13 | import it.softecspa.fileproxy.services.common.core.request.InputStreamReaderJSON; | 13 | import it.softecspa.fileproxy.services.common.core.request.InputStreamReaderJSON; |
| 14 | import it.softecspa.fileproxy.services.common.core.request.InputStreamReaderXML; | 14 | import it.softecspa.fileproxy.services.common.core.request.InputStreamReaderXML; |
| 15 | import it.softecspa.fileproxy.services.common.core.request.JsonMapper; | 15 | import it.softecspa.fileproxy.services.common.core.request.JsonMapper; |
| 16 | +import it.softecspa.fileproxy.services.common.core.request.MethodPostMandatory; | ||
| 16 | import it.softecspa.fileproxy.services.common.core.request.MultipartFormDataRequestReader; | 17 | import it.softecspa.fileproxy.services.common.core.request.MultipartFormDataRequestReader; |
| 17 | import it.softecspa.fileproxy.services.common.core.request.OutputPrintWriter; | 18 | import it.softecspa.fileproxy.services.common.core.request.OutputPrintWriter; |
| 18 | import it.softecspa.fileproxy.services.common.core.request.OutputStreamWriter; | 19 | import it.softecspa.fileproxy.services.common.core.request.OutputStreamWriter; |
| 19 | import it.softecspa.fileproxy.services.common.core.request.RemoteHostRequestInfo; | 20 | import it.softecspa.fileproxy.services.common.core.request.RemoteHostRequestInfo; |
| 21 | +import it.softecspa.fileproxy.services.common.core.request.TrackRequestCustomInfo; | ||
| 20 | import it.softecspa.fileproxy.services.common.core.request.TrackRequestInfo; | 22 | import it.softecspa.fileproxy.services.common.core.request.TrackRequestInfo; |
| 21 | import it.softecspa.fileproxy.services.common.core.request.UniversalRequest; | 23 | import it.softecspa.fileproxy.services.common.core.request.UniversalRequest; |
| 22 | import it.softecspa.fileproxy.services.common.core.response.AbstractDummyResponse; | 24 | import it.softecspa.fileproxy.services.common.core.response.AbstractDummyResponse; |
| @@ -330,7 +332,7 @@ public abstract class UniversalStatementHttpServlet <UREQ extends UniversalReque | @@ -330,7 +332,7 @@ public abstract class UniversalStatementHttpServlet <UREQ extends UniversalReque | ||
| 330 | HttpRemote remote = myResponse.getHttpRemote(); | 332 | HttpRemote remote = myResponse.getHttpRemote(); |
| 331 | if (log.isDebugEnabled()) log.debug("Remote call from "+remote.getTraceHost()); | 333 | if (log.isDebugEnabled()) log.debug("Remote call from "+remote.getTraceHost()); |
| 332 | 334 | ||
| 333 | - if (log.isDebugEnabled()) log.debug("Operation required: '"+myResponse.getStatementKey()+"'"); | 335 | + if (log.isDebugEnabled()) log.debug("Operation required: '"+myResponse.getStatementKey()+"', method "+request.getMethod()); |
| 334 | // Se trovo un "-" devo mettere a maiuscolo la lettera seguente | 336 | // Se trovo un "-" devo mettere a maiuscolo la lettera seguente |
| 335 | int pos; | 337 | int pos; |
| 336 | String statement = new String(myResponse.getStatementKey()!=null?myResponse.getStatementKey():""); | 338 | String statement = new String(myResponse.getStatementKey()!=null?myResponse.getStatementKey():""); |
| @@ -368,6 +370,17 @@ public abstract class UniversalStatementHttpServlet <UREQ extends UniversalReque | @@ -368,6 +370,17 @@ public abstract class UniversalStatementHttpServlet <UREQ extends UniversalReque | ||
| 368 | Object[] parameterArgs = new Object[1]; | 370 | Object[] parameterArgs = new Object[1]; |
| 369 | parameterArgs[0] = clazzT.newInstance(statementRequestClazz, request, true); | 371 | parameterArgs[0] = clazzT.newInstance(statementRequestClazz, request, true); |
| 370 | 372 | ||
| 373 | + | ||
| 374 | + // m.veroni - 2014-06-24 - verifica obbligatorietà del metodo | ||
| 375 | + if (parameterArgs[0] instanceof MethodPostMandatory) { | ||
| 376 | + if (!request.getMethod().equalsIgnoreCase("POST")) { | ||
| 377 | + log.error("Request method not valid, required POST (vs '"+request.getMethod()+"')"); | ||
| 378 | + responseError(myResponse, ResponseOutcome.REQUEST_METHOD_NOT_VALID); | ||
| 379 | + return; | ||
| 380 | + } | ||
| 381 | + } | ||
| 382 | + | ||
| 383 | + | ||
| 371 | // Stampo i parametri di chiamata | 384 | // Stampo i parametri di chiamata |
| 372 | myResponse.setInput(parameterArgs[0]); | 385 | myResponse.setInput(parameterArgs[0]); |
| 373 | if (log.isDebugEnabled()) log.debug(requestInfo(myResponse, null)); | 386 | if (log.isDebugEnabled()) log.debug(requestInfo(myResponse, null)); |
| @@ -445,22 +458,17 @@ public abstract class UniversalStatementHttpServlet <UREQ extends UniversalReque | @@ -445,22 +458,17 @@ public abstract class UniversalStatementHttpServlet <UREQ extends UniversalReque | ||
| 445 | myReturn.setTrace(((TrackRequestInfo)parameterArgs[0]).isTrackRequestInfo()); | 458 | myReturn.setTrace(((TrackRequestInfo)parameterArgs[0]).isTrackRequestInfo()); |
| 446 | } | 459 | } |
| 447 | 460 | ||
| 448 | - /* FIXME aggiungere codice custom per stampare info aggiuntive nel log | 461 | + |
| 449 | // Aggiunta di informazioni accessorie recuperate dalla request | 462 | // Aggiunta di informazioni accessorie recuperate dalla request |
| 450 | - if (myResponse.getInput() instanceof GlobalDeviceRequestHeader) { | 463 | + if (myResponse.getInput() instanceof TrackRequestCustomInfo) { |
| 451 | // Stampo le info recuperate delle chiamata | 464 | // Stampo le info recuperate delle chiamata |
| 452 | - GlobalDeviceRequestHeader input = (GlobalDeviceRequestHeader)myResponse.getInput(); | 465 | + TrackRequestCustomInfo input = (TrackRequestCustomInfo)myResponse.getInput(); |
| 453 | if (input!=null) { | 466 | if (input!=null) { |
| 454 | - myResponse.setInfo(new Entry[] { new Entry("client", input.getClientId()) | ||
| 455 | - , new Entry("tech", input.getTechnology()) | ||
| 456 | - , new Entry("group", input.getGroupCode()) | ||
| 457 | - , new Entry("instance", input.getInstanceCode()) | ||
| 458 | - , new Entry("protocol", (input.getProtocolVersion()!=null?input.getProtocolVersion():Protocollo._1).toString()) | ||
| 459 | - , new Entry("lang", input.getLanguage()) | ||
| 460 | - }); | 467 | + myResponse.setInfo(input.takeCustomEntry()); |
| 461 | } | 468 | } |
| 462 | } | 469 | } |
| 463 | - */ | 470 | + |
| 471 | + | ||
| 464 | // ---- | 472 | // ---- |
| 465 | responseReturn(myResponse, myReturn, res); | 473 | responseReturn(myResponse, myReturn, res); |
| 466 | 474 |
src/it/softecspa/fileproxy/services/common/core/request/InputStreamReaderJSON.java
| @@ -3,7 +3,7 @@ package it.softecspa.fileproxy.services.common.core.request; | @@ -3,7 +3,7 @@ package it.softecspa.fileproxy.services.common.core.request; | ||
| 3 | import java.io.InputStream; | 3 | import java.io.InputStream; |
| 4 | import java.io.Serializable; | 4 | import java.io.Serializable; |
| 5 | 5 | ||
| 6 | -public interface InputStreamReaderJSON <J extends Serializable> { | 6 | +public interface InputStreamReaderJSON <J extends Serializable> extends MethodPostMandatory { |
| 7 | 7 | ||
| 8 | /** | 8 | /** |
| 9 | * Restituisce l'input stream della request | 9 | * Restituisce l'input stream della request |
src/it/softecspa/fileproxy/services/common/core/request/InputStreamReaderXML.java
| @@ -4,7 +4,7 @@ import it.softecspa.kahuna.util.xml.XmlRoot; | @@ -4,7 +4,7 @@ import it.softecspa.kahuna.util.xml.XmlRoot; | ||
| 4 | 4 | ||
| 5 | import java.io.InputStream; | 5 | import java.io.InputStream; |
| 6 | 6 | ||
| 7 | -public interface InputStreamReaderXML<X extends XmlRoot> { | 7 | +public interface InputStreamReaderXML<X extends XmlRoot> extends MethodPostMandatory { |
| 8 | 8 | ||
| 9 | /** | 9 | /** |
| 10 | * Restituisce l'input stream della request | 10 | * Restituisce l'input stream della request |
src/it/softecspa/fileproxy/services/common/core/request/MethodPostMandatory.java
0 → 100644
src/it/softecspa/fileproxy/services/common/core/request/MultipartFormDataRequestReader.java
| @@ -2,7 +2,7 @@ package it.softecspa.fileproxy.services.common.core.request; | @@ -2,7 +2,7 @@ package it.softecspa.fileproxy.services.common.core.request; | ||
| 2 | 2 | ||
| 3 | import javazoom.upload.MultipartFormDataRequest; | 3 | import javazoom.upload.MultipartFormDataRequest; |
| 4 | 4 | ||
| 5 | -public interface MultipartFormDataRequestReader { | 5 | +public interface MultipartFormDataRequestReader extends MethodPostMandatory { |
| 6 | 6 | ||
| 7 | /** | 7 | /** |
| 8 | * Restituisce l'istanza della MultipartFormDataRequest | 8 | * Restituisce l'istanza della MultipartFormDataRequest |
src/it/softecspa/fileproxy/services/common/core/request/TrackRequestCustomInfo.java
0 → 100644
| 1 | +package it.softecspa.fileproxy.services.common.core.request; | ||
| 2 | + | ||
| 3 | +import it.softecspa.fileproxy.services.common.core.response.Entry; | ||
| 4 | + | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * Interfaccia universale che tutte le classi response devono estendere | ||
| 8 | + * - lingua | ||
| 9 | + * - versione protocollo | ||
| 10 | + */ | ||
| 11 | +public interface TrackRequestCustomInfo extends TrackRequestInfo { | ||
| 12 | + | ||
| 13 | + public Entry[] takeCustomEntry(); | ||
| 14 | + | ||
| 15 | +} |
src/it/softecspa/fileproxy/services/common/core/response/XMLResponseKO.java
| @@ -44,7 +44,7 @@ public class XMLResponseKO extends XmlRoot { | @@ -44,7 +44,7 @@ public class XMLResponseKO extends XmlRoot { | ||
| 44 | 44 | ||
| 45 | 45 | ||
| 46 | public XMLResponseKO() { | 46 | public XMLResponseKO() { |
| 47 | - super("error"); | 47 | + super("response"); |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | public XMLResponseKO(String code, String message) { | 50 | public XMLResponseKO(String code, String message) { |