From 6c8130fb641414ccc4681ca817db2fc4824d4ff8 Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Fri, 11 May 2018 17:03:43 +0000 Subject: [PATCH] ref 11719: Add management of VREs to the NLPHub interface https://support.d4science.org/issues/11719 Fixed some issue on webapp: Errors of shared variables on servlets Added slf4j over the whole application and logs in nlphub.log Problem of checking nulls on arrays in Javascript Added the ability to retrieve the context and token from the RequestUri git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-analysis/nlphub@167438 82a268e6-3cf1-43bd-a215-b396298e98cf --- pom.xml | 13 +-- .../gcube/data/analysis/nlphub/NLPHub.java | 78 +++++++------- .../gcube/data/analysis/nlphub/NLPMapper.java | 67 ++++++------ .../data/analysis/nlphub/NLPUploader.java | 48 ++++----- .../nlphub/legacy/AsyncHttpRequest.java | 34 +++--- .../analysis/nlphub/legacy/Constants.java | 44 ++++---- .../nlphub/legacy/DataminerException.java | 4 + .../analysis/nlphub/legacy/JsonManager.java | 11 +- .../analysis/nlphub/legacy/NerAlgorithm.java | 8 ++ .../nlphub/legacy/NerAnnotationData.java | 7 ++ .../analysis/nlphub/legacy/NerEntity.java | 7 ++ .../analysis/nlphub/legacy/NerOutput.java | 7 ++ .../nlphub/legacy/NlpHubException.java | 3 + .../analysis/nlphub/mapper/DefaultMapper.java | 33 ++---- .../nlphub/nlp/NLpLanguageRecognizer.java | 101 +++++++++--------- .../nlphub/nlp/NlpAsyncNerRunner.java | 62 ++++++----- .../data/analysis/nlphub/nlp/NlpUtils.java | 2 - .../analysis/nlphub/nlp/RunnerCommander.java | 15 +-- .../analysis/nlphub/session/SessionUtils.java | 22 ++++ .../nlphub/workspace/WorkspaceManager.java | 17 ++- src/main/resources/clientlog4j.properties | 12 --- src/main/resources/log4j.properties | 8 -- src/main/resources/logback-test.xml | 20 ---- src/main/resources/logback_xml_test | 83 ++++++++++++++ src/main/webapp/WEB-INF/web.xml | 6 +- src/main/webapp/index.jsp | 10 +- 26 files changed, 408 insertions(+), 314 deletions(-) create mode 100644 src/main/java/org/gcube/data/analysis/nlphub/session/SessionUtils.java delete mode 100644 src/main/resources/clientlog4j.properties delete mode 100644 src/main/resources/log4j.properties delete mode 100644 src/main/resources/logback-test.xml create mode 100644 src/main/resources/logback_xml_test diff --git a/pom.xml b/pom.xml index fca8c73..b5b40a9 100644 --- a/pom.xml +++ b/pom.xml @@ -105,20 +105,13 @@ org.slf4j slf4j-api - 1.6.4 - compile + 1.7.5 + provided org.slf4j slf4j-log4j12 - 1.6.4 - compile - - - log4j - log4j - 1.2.16 - compile + test diff --git a/src/main/java/org/gcube/data/analysis/nlphub/NLPHub.java b/src/main/java/org/gcube/data/analysis/nlphub/NLPHub.java index 38e0bcb..5f96f2a 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/NLPHub.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/NLPHub.java @@ -14,12 +14,12 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.DocumentBuilderFactory; -import org.apache.log4j.Logger; -import org.gcube.data.analysis.nlphub.legacy.Constants; import org.gcube.data.analysis.nlphub.legacy.JsonManager; import org.gcube.data.analysis.nlphub.nlp.NlpAsyncNerRunner; -import org.gcube.data.analysis.nlphub.nlp.NlpParameter; import org.gcube.data.analysis.nlphub.nlp.RunnerCommander; +import org.gcube.data.analysis.nlphub.session.SessionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -30,12 +30,9 @@ import org.xml.sax.InputSource; */ @WebServlet(asyncSupported = true, name = "NLPServlet", urlPatterns = { "/nlphub-servlet" }) public class NLPHub extends HttpServlet { - private Logger logger = Logger.getLogger(NLPHub.class.getSimpleName()); private static final long serialVersionUID = 1L; - public static final String service = "http://dataminer-prototypes.d4science.org/wps/"; - private String token; //= "df2cc5f5-63ee-48c1-b2a6-1210030c57b8-843339462"; - private boolean devMode = true; - + private static final Logger logger = LoggerFactory.getLogger(NLPHub.class); + /** * @see HttpServlet#HttpServlet() */ @@ -63,16 +60,18 @@ public class NLPHub extends HttpServlet { } private void doWork(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - if(request.getParameter("getInfo") != null) { - getAlgorithmInfo(request, response); - } - else { - runAlgorithms(request, response); + logger.debug("NLPHub"); + String token = SessionUtils.getToken(request); + + if (request.getParameter("getInfo") != null) { + getAlgorithmInfo(request, response, token); + } else { + runAlgorithms(request, response, token); } } - - private void getAlgorithmInfo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - token = Constants.getToken(request, devMode); + + private void getAlgorithmInfo(HttpServletRequest request, HttpServletResponse response, String token) + throws ServletException, IOException { try { String dataMiner = request.getParameter("dataminer"); String algId = request.getParameter("algId"); @@ -82,7 +81,8 @@ public class NLPHub extends HttpServlet { PrintWriter writer = response.getWriter(); response.setContentType("application/json;charset=UTF-8"); try { - String finalUrl = "https://" + dataMiner + NlpAsyncNerRunner.WPS_DESCRIBE_PROCESS_URL + "&gcube-token=" + token; + String finalUrl = "https://" + dataMiner + NlpAsyncNerRunner.WPS_DESCRIBE_PROCESS_URL + "&gcube-token=" + + token; finalUrl += "&lang=en-US&Identifier=" + algId; URL url = new URL(finalUrl); connection = (HttpURLConnection) url.openConnection(); @@ -93,22 +93,21 @@ public class NLPHub extends HttpServlet { r = new BufferedReader(new InputStreamReader(connection.getInputStream())); Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(r)); doc.getDocumentElement().normalize(); - + NodeList nListInput = doc.getElementsByTagName("ows:Abstract"); - if(nListInput.getLength() <= 0) { + if (nListInput.getLength() <= 0) { algAbsrtact = "No description."; writer.println(new JsonManager().getErrorJsonResponse(algAbsrtact)); - } - else { + } else { Node nodeAbstract = nListInput.item(0); algAbsrtact = nodeAbstract.getTextContent(); writer.println(new JsonManager().getSuccessJsonResponse("" + algAbsrtact)); } writer.close(); - } catch (Exception x) { - logger.error(x.getLocalizedMessage()); - writer.println(new JsonManager().getErrorJsonResponse("" + x.getLocalizedMessage())); + } catch (Exception e) { + logger.error(e.getLocalizedMessage(),e); + writer.println(new JsonManager().getErrorJsonResponse("" + e.getLocalizedMessage())); writer.close(); } finally { try { @@ -120,31 +119,30 @@ public class NLPHub extends HttpServlet { logger.error(e.getLocalizedMessage()); } } - - } catch (Exception x) { - logger.error(x.getLocalizedMessage()); - } + + } catch (Exception e) { + logger.error(e.getLocalizedMessage(),e); + } } - - private void runAlgorithms(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - token = Constants.getToken(request, devMode); + + private void runAlgorithms(HttpServletRequest request, HttpServletResponse response, String token) + throws ServletException, IOException { try { String dataMiner = request.getParameter("dataminer"); String[] algs = request.getParameter("algs").split(","); - for(int i=0; i 0) + String[] tokens; + if (toBeMap.indexOf("|") > 0) tokens = toBeMap.split("\\|"); else { tokens = new String[1]; tokens[0] = toBeMap; } - + String annotations = request.getParameter("annotations"); String language = request.getParameter("lang"); PrintWriter writer = response.getWriter(); try { String text = getDocument(documentLink); - text = text.replaceAll("\n", "\\\\n");; + text = text.replaceAll("\n", "\\\\n"); + text = text.replaceAll("\r", "\\\\r"); text = text.replaceAll("\t", "\\\\t"); text = text.replaceAll("\"", "\\\\\""); - + String out = "{"; out += "\"text\":\"" + text + "\","; out += "\"annotations\":\"" + annotations + "\","; @@ -90,9 +96,9 @@ public class NLPMapper extends HttpServlet { out += "\"result\": ["; for (int i = 0; i < tokens.length; i++) { - String token = tokens[i]; - String[] t = token.split(":::"); - if(t[1].equals(Constants.ERROR_ID)) { + String tk = tokens[i]; + String[] t = tk.split(":::"); + if (t[1].equals(Constants.ERROR_ID)) { logger.error("Algorithm " + t[0] + " in error. Bypass..."); continue; } @@ -106,24 +112,26 @@ public class NLPMapper extends HttpServlet { } } out += "]}"; - - String resultLink = saveResult(out); + + String resultLink = saveResult(out, token, ws); String outResult = "{"; outResult += "\"link\":\"" + resultLink + "\","; outResult += "\"output\":" + out; outResult += "}"; writer.append(outResult); - - } catch (Exception x) { - logger.error(x.getLocalizedMessage()); - writer.println(new JsonManager().getErrorJsonResponse(x.getLocalizedMessage())); + + } catch (Exception e) { + logger.error(e.getLocalizedMessage(),e); + writer.println(new JsonManager().getErrorJsonResponse(e.getLocalizedMessage())); } // response.getWriter().write(json); } - private Class getMapper(String algId) throws Exception { - return Class.forName("org.gcube.nlphub.mapper.DefaultMapper"); + private Class getMapper(String algId) throws Exception { + return DefaultMapper.class; + // return + // Class.forName("org.gcube.data.analynlphub.mapper.DefaultMapper"); } private String getDocument(String plink) throws Exception { @@ -142,20 +150,19 @@ public class NLPMapper extends HttpServlet { } return content; } - - private String saveResult(String jsonResult) throws NlpHubException { - WorkspaceManager ws = new WorkspaceManager(); + + private String saveResult(String jsonResult, String token, WorkspaceManager ws) throws NlpHubException { long now = System.currentTimeMillis(); String fileName = "result-nlp-" + now + ".json"; ws.deleteFile(fileName, token); - + byte[] byteContent = jsonResult.getBytes(StandardCharsets.UTF_8); if (!ws.uploadFile(byteContent, fileName, Constants.DEFAULT_DESCRIPTION, token)) { - throw new NlpHubException("Error writing file: " + fileName + " on workspace (token: " + token + ")", null); + throw new NlpHubException("Error writing file: " + fileName + " on workspace (token: " + token + ")", null); } String link = ws.getPublicLink(fileName, token); - + logger.info("Output json [" + fileName + "] created in " + (System.currentTimeMillis() - now) + " millisec."); return link; } diff --git a/src/main/java/org/gcube/data/analysis/nlphub/NLPUploader.java b/src/main/java/org/gcube/data/analysis/nlphub/NLPUploader.java index d04c124..5bdce2f 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/NLPUploader.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/NLPUploader.java @@ -14,13 +14,15 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; -import org.apache.log4j.Logger; import org.gcube.data.analysis.nlphub.legacy.Constants; import org.gcube.data.analysis.nlphub.legacy.JsonManager; import org.gcube.data.analysis.nlphub.legacy.NlpHubException; import org.gcube.data.analysis.nlphub.nlp.NLpLanguageRecognizer; import org.gcube.data.analysis.nlphub.nlp.NlpUtils; +import org.gcube.data.analysis.nlphub.session.SessionUtils; import org.gcube.data.analysis.nlphub.workspace.WorkspaceManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Servlet implementation class NLPUploader @@ -30,10 +32,7 @@ import org.gcube.data.analysis.nlphub.workspace.WorkspaceManager; @MultipartConfig public class NLPUploader extends HttpServlet { private static final long serialVersionUID = 1L; - private Logger logger = Logger.getLogger(NLPUploader.class.getSimpleName()); - private boolean devMode = true; - private String token; // = "df2cc5f5-63ee-48c1-b2a6-1210030c57b8-843339462"; - private WorkspaceManager ws; + private static final Logger logger = LoggerFactory.getLogger(NLPUploader.class); /** * @see HttpServlet#HttpServlet() @@ -58,21 +57,22 @@ public class NLPUploader extends HttpServlet { */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - token = Constants.getToken(request, devMode); doWork(request, response); } private void doWork(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - ws = new WorkspaceManager(); + logger.debug("NLPUploader"); + String token = SessionUtils.getToken(request); + WorkspaceManager ws = new WorkspaceManager(); response.setContentType("application/json;charset=UTF-8"); if (request.getParameter("freetext") == null) - handleFileUpload(request, response); + handleFileUpload(request, response, token, ws); else - handleFreeText(request, response); + handleFreeText(request, response, token, ws); } - private void handleFreeText(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + private void handleFreeText(HttpServletRequest request, HttpServletResponse response, String token, + WorkspaceManager ws) throws ServletException, IOException { String freeText = request.getParameter("freetext"); freeText = NlpUtils.replaceDirtyCharacters(freeText); @@ -86,25 +86,24 @@ public class NLPUploader extends HttpServlet { return; } String link = ws.getPublicLink(fileName, token); - if(request.getParameter("getlang") != null) { + if (request.getParameter("getlang") != null) { String sentence = NlpUtils.getLanguageRecognizerDigest(new String(content)); logger.info(sentence); try { NLpLanguageRecognizer.run(request.getParameter("dataminer"), sentence, token, link, response); } catch (NlpHubException ex) { writer.println(new JsonManager().getSuccessJsonResponse(Constants.UNAVAILABLE, link)); - } - } - else writer.println(new JsonManager().getSuccessJsonResponse("" + link)); - } catch (Exception x) { - x.printStackTrace(); - logger.error(x.getClass().getName() + ": " + x.getLocalizedMessage()); - writer.println(new JsonManager().getErrorJsonResponse(x.getLocalizedMessage())); + } + } else + writer.println(new JsonManager().getSuccessJsonResponse("" + link)); + } catch (Exception e) { + logger.error(e.getLocalizedMessage(),e); + writer.println(new JsonManager().getErrorJsonResponse(e.getLocalizedMessage())); } } - private void handleFileUpload(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + private void handleFileUpload(HttpServletRequest request, HttpServletResponse response, String token, + WorkspaceManager ws) throws ServletException, IOException { int contentLength = request.getContentLength(); Part filePart = request.getPart("mytxtfile"); @@ -154,10 +153,9 @@ public class NLPUploader extends HttpServlet { } // writer.println(new JsonManager().getSuccessJsonResponse("" + // link)); - } catch (Exception x) { - x.printStackTrace(); - logger.error(x.getClass().getName() + ": " + x.getLocalizedMessage()); - writer.println(new JsonManager().getErrorJsonResponse(x.getLocalizedMessage())); + } catch (Exception e) { + logger.error(e.getLocalizedMessage(),e); + writer.println(new JsonManager().getErrorJsonResponse(e.getLocalizedMessage())); } } diff --git a/src/main/java/org/gcube/data/analysis/nlphub/legacy/AsyncHttpRequest.java b/src/main/java/org/gcube/data/analysis/nlphub/legacy/AsyncHttpRequest.java index 02a9f8a..39f2536 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/legacy/AsyncHttpRequest.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/legacy/AsyncHttpRequest.java @@ -6,13 +6,17 @@ import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; -import org.apache.log4j.Logger; + + import org.gcube.data.analysis.nlphub.nlp.NlpParameter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class AsyncHttpRequest extends Thread { private String baseUrl, finalUrl, result, method; private ArrayList parameters; - private Logger logger = Logger.getLogger(AsyncHttpRequest.class.getSimpleName()); + private static final Logger logger = LoggerFactory.getLogger(AsyncHttpRequest.class); + protected long elapsedTime; public AsyncHttpRequest() { @@ -20,13 +24,13 @@ public class AsyncHttpRequest extends Thread { this.parameters = null; this.method = "GET"; finalUrl = null; - elapsedTime = 0; + elapsedTime = 0; } - + public AsyncHttpRequest(String baseUrl, String method, ArrayList parameters) { this.baseUrl = baseUrl; this.parameters = parameters; - if(method == null) + if (method == null) this.method = "GET"; else this.method = (method.equalsIgnoreCase("GET") || method.equalsIgnoreCase("POST")) ? method : "GET"; @@ -36,7 +40,7 @@ public class AsyncHttpRequest extends Thread { public void run() { elapsedTime = System.currentTimeMillis(); - if(finalUrl == null) + if (finalUrl == null) finalUrl = baseUrl; HttpURLConnection connection = null; BufferedReader r = null; @@ -56,11 +60,11 @@ public class AsyncHttpRequest extends Thread { if (line != null) result += line.trim(); } - + asyncHttpRequestCallback(); - } catch (Exception x) { - logger.error(x.getLocalizedMessage()); + } catch (Exception e) { + logger.error(e.getLocalizedMessage(),e); asyncHttpRequestCallback(); } finally { try { @@ -69,19 +73,19 @@ public class AsyncHttpRequest extends Thread { if (connection != null) connection.disconnect(); } catch (Exception e) { - logger.error(e.getLocalizedMessage()); + logger.error(e.getLocalizedMessage(),e); } } } - + public String getResult() { return result; } - + public void asyncHttpRequestCallback() { elapsedTime = System.currentTimeMillis() - elapsedTime; } - + public void setBaseUrl(String baseUrl) { this.baseUrl = baseUrl; } @@ -103,8 +107,8 @@ public class AsyncHttpRequest extends Thread { try { finalUrl += p.getName() + "=" + URLEncoder.encode((String) p.getValue(), "UTF-8"); finalUrl += "&"; - } catch (Exception x) { - logger.error(x.getLocalizedMessage()); + } catch (Exception e) { + logger.error(e.getLocalizedMessage(),e); } } finalUrl = finalUrl.substring(0, finalUrl.length() - 1); diff --git a/src/main/java/org/gcube/data/analysis/nlphub/legacy/Constants.java b/src/main/java/org/gcube/data/analysis/nlphub/legacy/Constants.java index 8483bc5..1baddda 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/legacy/Constants.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/legacy/Constants.java @@ -1,29 +1,29 @@ package org.gcube.data.analysis.nlphub.legacy; -import javax.servlet.http.HttpServletRequest; public class Constants { - //public static String DATAMINER_URL = "http://dataminer0-proto.d4science.org"; - //public static String DATAMINER_URL = "http://dataminer2-proto.d4science.org"; - public static String DATAMINER_URL = "http://dataminer-prototypes.d4science.org"; - public static String DEFAULT_DESCRIPTION = "NlpHub upload"; - public static String TOKEN_PARAMETER = "gcube-token"; - public static String TEST_TOKEN = "df2cc5f5-63ee-48c1-b2a6-1210030c57b8-843339462"; - public static String PUBLIC_TOKEN = "f57441ac-b361-4c2d-992a-40db034f1b8c-843339462"; - public static String MIME_TEXT = "text/plain"; - public static String CONTENT_TYPE = "Content-Type"; - public static String UNAVAILABLE = "unavailable"; - public static String ERROR_ID = "ERROR"; - public static String INPUT_FILE_PARAMETER = "input"; + public static final boolean DEBUG = false; + public static final boolean TEST_ENABLE = false; - public static String getToken(HttpServletRequest request, boolean devMode) { - String token = request.getParameter(TOKEN_PARAMETER); - if(devMode) { - if(token == null) token = TEST_TOKEN; - } - return token; - } + public static final String DEFAULT_USER = "giancarlo.panichi"; + public static final String DEFAULT_SCOPE = "/gcube/devNext/NextNext"; + public static final String DEFAULT_TOKEN = "df2cc5f5-63ee-48c1-b2a6-1210030c57b8-843339462"; - public static String hexDump(byte[] bytes) { + public static final String DEFAULT_DATAMINER_URL = "http://dataminer-prototypes.d4science.org"; + + public static final String TOKEN_PARAMETER = "gcube-token"; + + public static final String DEFAULT_DESCRIPTION = "NlpHub upload"; + + //public static String PUBLIC_TOKEN = "f57441ac-b361-4c2d-992a-40db034f1b8c-843339462"; + public static final String MIME_TEXT = "text/plain"; + public static final String CONTENT_TYPE = "Content-Type"; + public static final String UNAVAILABLE = "unavailable"; + public static final String ERROR_ID = "ERROR"; + public static final String INPUT_FILE_PARAMETER = "input"; + + + + /*public static String hexDump(byte[] bytes) { char[] hexArray = "0123456789ABCDEF".toCharArray(); char[] hexChars = new char[bytes.length * 3]; for (int j = 0; j < bytes.length; j++) { @@ -32,5 +32,5 @@ public class Constants { hexChars[3*j+2] = ' '; } return new String(hexChars); - } + }*/ } diff --git a/src/main/java/org/gcube/data/analysis/nlphub/legacy/DataminerException.java b/src/main/java/org/gcube/data/analysis/nlphub/legacy/DataminerException.java index 513c0ae..0f38871 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/legacy/DataminerException.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/legacy/DataminerException.java @@ -1,6 +1,10 @@ package org.gcube.data.analysis.nlphub.legacy; + class DataminerClientException extends Exception { + + private static final long serialVersionUID = 1L; + public DataminerClientException(String message, Throwable throwable) { super(message, throwable); } diff --git a/src/main/java/org/gcube/data/analysis/nlphub/legacy/JsonManager.java b/src/main/java/org/gcube/data/analysis/nlphub/legacy/JsonManager.java index 8f7b530..5169266 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/legacy/JsonManager.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/legacy/JsonManager.java @@ -2,14 +2,18 @@ package org.gcube.data.analysis.nlphub.legacy; import java.io.Reader; -import java.util.ArrayList; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.gson.JsonArray; -import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class JsonManager { + private static final Logger logger = LoggerFactory.getLogger(JsonManager.class); + + public static String TEXT = "text"; public static String ANNOTATIONS = "annotations"; public static String LANGUAGE = "language"; @@ -23,9 +27,10 @@ public class JsonManager { public static String MESSAGE = "message"; private JsonObject jsonObjectRoot = null; - private JsonParser jsonParser = null; + //private JsonParser jsonParser = null; public JsonManager() { + logger.debug("JsonManager"); jsonObjectRoot = new JsonObject(); } diff --git a/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerAlgorithm.java b/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerAlgorithm.java index cd1e036..14c6642 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerAlgorithm.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerAlgorithm.java @@ -1,14 +1,22 @@ package org.gcube.data.analysis.nlphub.legacy; import java.util.ArrayList; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class NerAlgorithm { + private static final Logger logger = LoggerFactory.getLogger(NerAlgorithm.class); + private String name; private ArrayList annotationsData; public NerAlgorithm(String name) { + logger.debug("NerAlgorithm: "+name); + this.name = name; annotationsData = new ArrayList<>(); } diff --git a/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerAnnotationData.java b/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerAnnotationData.java index 55d295d..9ce5b14 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerAnnotationData.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerAnnotationData.java @@ -1,10 +1,16 @@ package org.gcube.data.analysis.nlphub.legacy; import java.util.ArrayList; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class NerAnnotationData { + private static final Logger logger = LoggerFactory.getLogger(NerAnnotationData.class); + private String name; private ArrayList nerEntities; @@ -13,6 +19,7 @@ public class NerAnnotationData { * @param name */ public NerAnnotationData(String name) { + logger.debug("NerAnnotationData: "+name); this.name = name; nerEntities = new ArrayList<>(); } diff --git a/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerEntity.java b/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerEntity.java index a2d4bd7..a25c5c3 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerEntity.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerEntity.java @@ -2,11 +2,17 @@ package org.gcube.data.analysis.nlphub.legacy; import java.util.HashMap; import java.util.Set; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class NerEntity { + private static final Logger logger = LoggerFactory.getLogger(NerEntity.class); + private int startIndex, endIndex; private HashMap properties = null; @@ -16,6 +22,7 @@ public class NerEntity { * @param endIndex the end index of the matching annotation */ public NerEntity(int startIndex, int endIndex) { + logger.debug("NerEntity: [startIndex="+startIndex+", endIndex="+endIndex+"]"); this.startIndex = startIndex; this.endIndex = endIndex; properties = new HashMap<>(); diff --git a/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerOutput.java b/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerOutput.java index bdba0ac..ec12bf4 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerOutput.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/legacy/NerOutput.java @@ -1,14 +1,21 @@ package org.gcube.data.analysis.nlphub.legacy; import java.util.ArrayList; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class NerOutput { + private static final Logger logger = LoggerFactory.getLogger(NerOutput.class); + private String text, annotations, language; private ArrayList result; public NerOutput(String text, String annotations, String language) { + logger.debug("NerOutput: [text="+text+", annotations="+annotations+", language="+language+"]"); this.text = text; this.annotations = annotations; this.language = language; diff --git a/src/main/java/org/gcube/data/analysis/nlphub/legacy/NlpHubException.java b/src/main/java/org/gcube/data/analysis/nlphub/legacy/NlpHubException.java index 2254307..8c4acfc 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/legacy/NlpHubException.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/legacy/NlpHubException.java @@ -1,6 +1,9 @@ package org.gcube.data.analysis.nlphub.legacy; public class NlpHubException extends Exception { + + private static final long serialVersionUID = 1L; + public NlpHubException(String message, Throwable throwable) { super(message, throwable); } diff --git a/src/main/java/org/gcube/data/analysis/nlphub/mapper/DefaultMapper.java b/src/main/java/org/gcube/data/analysis/nlphub/mapper/DefaultMapper.java index d454eae..fd580f1 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/mapper/DefaultMapper.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/mapper/DefaultMapper.java @@ -10,13 +10,15 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.JsonArray; import com.google.gson.JsonElement; -import org.apache.log4j.Logger; + import org.gcube.data.analysis.nlphub.legacy.NerAlgorithm; import org.gcube.data.analysis.nlphub.legacy.NerAnnotationData; import org.gcube.data.analysis.nlphub.legacy.NerEntity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class DefaultMapper implements JsonMapper { - private Logger logger = Logger.getLogger(DefaultMapper.class.getSimpleName()); + private static final Logger logger = LoggerFactory.getLogger(DefaultMapper.class); public String getJson(String alg, String link) { NerAlgorithm algInfo = new NerAlgorithm(alg); @@ -59,33 +61,10 @@ public class DefaultMapper implements JsonMapper { } } return algInfo.toJson().toString(); - } catch (Exception x) { - logger.error(x.getLocalizedMessage()); + } catch (Exception e) { + logger.error(e.getLocalizedMessage(),e); return null; } } - /* - public static void main(String[] args) { - String remoteJson = "http://data.d4science.org/a2JtV0lOUUxsenZCM2RmcFRqVGtWWm42NU9LQnFGTk9HbWJQNStIS0N6Yz0-VLT"; - String alg = "ENGLISH_NAMED_ENTITY_RECOGNIZER"; - //remoteJson = "http://data.d4science.org/T21IcHlMSzFJRCttZ1lHVzMxd2dyWjVOUEpyY2dwUVNHbWJQNStIS0N6Yz0-VLT"; - //remoteJson = "http://data.d4science.org/bDZLVkdlaVBjZCtLSWsrWUNQdHk3MUs4cEtDUGF5NktHbWJQNStIS0N6Yz0"; - DefaultMapper dm = new DefaultMapper(); - try { - String s = dm.getJson(alg, remoteJson); - System.out.println("" + s); - String file = "/home/erico/debug.json"; - java.io.File f = new java.io.File(file); - f.createNewFile(); - java.io.FileWriter w = new java.io.FileWriter(f); - w.write(s); - w.flush(); - w.close(); - } catch (Exception x) { - System.out.println(x.getLocalizedMessage()); - x.printStackTrace(); - } - - }*/ } diff --git a/src/main/java/org/gcube/data/analysis/nlphub/nlp/NLpLanguageRecognizer.java b/src/main/java/org/gcube/data/analysis/nlphub/nlp/NLpLanguageRecognizer.java index 33c3bd6..2d79c28 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/nlp/NLpLanguageRecognizer.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/nlp/NLpLanguageRecognizer.java @@ -5,45 +5,50 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.List; import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.DocumentBuilderFactory; -import org.apache.log4j.Logger; import org.gcube.data.analysis.nlphub.legacy.Constants; import org.gcube.data.analysis.nlphub.legacy.JsonManager; import org.gcube.data.analysis.nlphub.legacy.NlpHubException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.w3c.dom.Document; -import org.w3c.dom.NodeList; import org.w3c.dom.Node; +import org.w3c.dom.NodeList; import org.xml.sax.InputSource; public class NLpLanguageRecognizer { - private HttpServletResponse response; - private Logger logger = Logger.getLogger(NLpLanguageRecognizer.class.getSimpleName()); - private String sentence, publicLink; + private static final Logger logger = LoggerFactory.getLogger(NLpLanguageRecognizer.class); + + // private HttpServletResponse response; + // private String sentence, publicLink; public final static String RECOGNIZER_ID = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.LANGUAGE_RECOGNIZER"; - private String dataMiner = null; + // private String dataMiner = null; public NLpLanguageRecognizer(String service, String token, String sentence) { - this.sentence = sentence; - response = null; + logger.debug( + "NLpLanguageRecognizer: [service=" + service + ", token=" + token + ", sentence=" + sentence + "]"); + // this.sentence = sentence; + // response = null; } public NLpLanguageRecognizer(String dataMiner, String service, String token, String sentence, String publicLink, HttpServletResponse response) { - this.sentence = sentence; - this.response = response; - this.publicLink = publicLink; - this.dataMiner = dataMiner; + logger.debug("NLpLanguageRecognizer: [dataMiner=" + dataMiner + ",service=" + service + ", token=" + token + + ", sentence=" + sentence + ",publicLink" + publicLink + "]"); + // this.sentence = sentence; + // this.response = response; + // this.publicLink = publicLink; + // this.dataMiner = dataMiner; } - public static void run(String dataMiner, String sentence, String token, String publicLink, HttpServletResponse response) throws NlpHubException { + public static void run(String dataMiner, String sentence, String token, String publicLink, + HttpServletResponse response) throws NlpHubException { try { - if(dataMiner == null) - dataMiner = Constants.DATAMINER_URL; + if (dataMiner == null) + dataMiner = Constants.DEFAULT_DATAMINER_URL; else dataMiner = "http://" + dataMiner; String urlService = dataMiner + "/wps/WebProcessingService?request=Execute&service=WPS&Version=1.0.0"; @@ -53,7 +58,8 @@ public class NLpLanguageRecognizer { urlService += "&DataInputs=sentence=" + URLEncoder.encode(sentence, "UTF-8"); URL url = new URL(urlService); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - //connection.setRequestProperty(Constants.TOKEN_PARAMETER, super.getToken()); + // connection.setRequestProperty(Constants.TOKEN_PARAMETER, + // super.getToken()); connection.setDoInput(true); connection.setDoOutput(true); connection.setUseCaches(false); @@ -64,33 +70,31 @@ public class NLpLanguageRecognizer { doc.getDocumentElement().normalize(); NodeList nListData = doc.getElementsByTagName("d4science:Data"); NodeList nListDesc = doc.getElementsByTagName("d4science:Description"); - + int len = nListData.getLength(); - for(int i=0; i params = buildParameterString(); - String serviceUrl = this.dataMiner + WPS_EXECUTE_URL + "&gcube-token=" + token + "&lang=en-US&Identifier=" + identifier; + String serviceUrl = this.dataMiner + WPS_EXECUTE_URL + "&gcube-token=" + token + "&lang=en-US&Identifier=" + + identifier; serviceUrl += "&" + setUrl(params); super.setBaseUrl(serviceUrl); super.setMethod(httpMethod); @@ -120,8 +124,8 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest { parameters.add(nlpParam); } - } catch (Exception x) { - logger.error(x.getLocalizedMessage()); + } catch (Exception e) { + logger.error(e.getLocalizedMessage(), e); } finally { try { if (r != null) @@ -129,7 +133,7 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest { if (connection != null) connection.disconnect(); } catch (Exception e) { - logger.error(e.getLocalizedMessage()); + logger.error(e.getLocalizedMessage(), e); } } return parameters; @@ -138,7 +142,7 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest { public long getElapsedTime() { return elapsedTime; } - + @Override public void asyncHttpRequestCallback() { elapsedTime = System.currentTimeMillis() - elapsedTime; @@ -147,35 +151,35 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest { String theLink = ""; try { BufferedReader r = new BufferedReader( - new InputStreamReader(new ByteArrayInputStream(result.getBytes(StandardCharsets.UTF_8)))); - + new InputStreamReader(new ByteArrayInputStream(result.getBytes(StandardCharsets.UTF_8)))); + Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(r)); doc.getDocumentElement().normalize(); NodeList nListResult = doc.getElementsByTagName("ogr:Result"); - - for (int i=0, found=0; (i 0) { + if (found > 0) { theLink = res; } } commander.updateResultList(identifier.substring(identifier.lastIndexOf(".") + 1) + ":::" + theLink); - } catch (Exception x) { - commander.updateResultList(identifier.substring(identifier.lastIndexOf(".") + 1) + ":::" + Constants.ERROR_ID); - logger.error(x.getLocalizedMessage()); + } catch (Exception e) { + commander.updateResultList( + identifier.substring(identifier.lastIndexOf(".") + 1) + ":::" + Constants.ERROR_ID); + logger.error(e.getLocalizedMessage(), e); } } } diff --git a/src/main/java/org/gcube/data/analysis/nlphub/nlp/NlpUtils.java b/src/main/java/org/gcube/data/analysis/nlphub/nlp/NlpUtils.java index f0ef235..87eaa04 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/nlp/NlpUtils.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/nlp/NlpUtils.java @@ -1,7 +1,5 @@ package org.gcube.data.analysis.nlphub.nlp; -import java.util.ArrayList; - public class NlpUtils { public static String getLanguageRecognizerDigest(String content) { diff --git a/src/main/java/org/gcube/data/analysis/nlphub/nlp/RunnerCommander.java b/src/main/java/org/gcube/data/analysis/nlphub/nlp/RunnerCommander.java index 269a5df..38cdf85 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/nlp/RunnerCommander.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/nlp/RunnerCommander.java @@ -5,11 +5,14 @@ import java.util.ArrayList; import javax.servlet.http.HttpServletResponse; -import org.apache.log4j.Logger; import org.gcube.data.analysis.nlphub.legacy.Constants; import org.gcube.data.analysis.nlphub.legacy.JsonManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class RunnerCommander extends Thread { + private static final Logger logger = LoggerFactory.getLogger(RunnerCommander.class); + private HttpServletResponse response = null; private String annotationList = ""; private String[] identifiers = null; @@ -19,7 +22,6 @@ public class RunnerCommander extends Thread { private ArrayList outResultList = null; private long sleepTime = 500l; private long maxWaitingTime = 5l * 60l * 1000l; - private Logger logger = Logger.getLogger(RunnerCommander.class.getSimpleName()); private boolean complete = false; public RunnerCommander(String dataMiner, String[] identifiers, String link, String annotationList, String token) { @@ -76,8 +78,8 @@ public class RunnerCommander extends Thread { counter += sleepTime; if(counter > 2*maxWaitingTime) complete = true; - } catch (InterruptedException x) { - logger.info("Interrupted."); + } catch (InterruptedException e) { + logger.info("Interrupted. "+identifiers); } } } @@ -107,7 +109,7 @@ public class RunnerCommander extends Thread { } logger.error("Timeout error."); timeoutHandler(); - } catch (InterruptedException x) { + } catch (InterruptedException e) { logger.info("Elapsed time: " + counter + " msec."); logger.info("Thread interrupted."); timeoutHandler(); @@ -148,8 +150,7 @@ public class RunnerCommander extends Thread { } } catch (Exception ex) { - logger.error(ex.getLocalizedMessage()); - ex.printStackTrace(); + logger.error(ex.getLocalizedMessage(),ex); } finally { complete = true; if (writer != null) diff --git a/src/main/java/org/gcube/data/analysis/nlphub/session/SessionUtils.java b/src/main/java/org/gcube/data/analysis/nlphub/session/SessionUtils.java new file mode 100644 index 0000000..cbbcf53 --- /dev/null +++ b/src/main/java/org/gcube/data/analysis/nlphub/session/SessionUtils.java @@ -0,0 +1,22 @@ +package org.gcube.data.analysis.nlphub.session; + +import javax.servlet.http.HttpServletRequest; + +import org.gcube.data.analysis.nlphub.legacy.Constants; + +public class SessionUtils { + + public static String getToken(HttpServletRequest request) { + String token = request.getParameter(Constants.TOKEN_PARAMETER); + if(token == null || token.isEmpty()){ + if(Constants.DEBUG){ + token = Constants.DEFAULT_TOKEN; + } else { + + } + } + return token; + } + + +} diff --git a/src/main/java/org/gcube/data/analysis/nlphub/workspace/WorkspaceManager.java b/src/main/java/org/gcube/data/analysis/nlphub/workspace/WorkspaceManager.java index 1b4b8c6..5ee5246 100644 --- a/src/main/java/org/gcube/data/analysis/nlphub/workspace/WorkspaceManager.java +++ b/src/main/java/org/gcube/data/analysis/nlphub/workspace/WorkspaceManager.java @@ -10,15 +10,13 @@ import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; -import javax.servlet.http.Part; - -import org.apache.log4j.Logger; -import org.gcube.data.analysis.nlphub.NLPUploader; import org.gcube.data.analysis.nlphub.legacy.Constants; import org.gcube.data.analysis.nlphub.legacy.NlpHubException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class WorkspaceManager { - private Logger logger = Logger.getLogger(WorkspaceManager.class.getSimpleName()); + private static final Logger logger = LoggerFactory.getLogger(WorkspaceManager.class); public String getPublicLink(String fileName, String token) throws NlpHubException { try { @@ -62,7 +60,7 @@ public class WorkspaceManager { return link; } catch (Exception e) { - logger.error(e.getLocalizedMessage()); + logger.error(e.getLocalizedMessage(), e); throw new NlpHubException(e.getLocalizedMessage(), e); } } @@ -93,8 +91,9 @@ public class WorkspaceManager { } String xmlOut = response.toString(); + logger.debug("deleteFile: " + xmlOut); } catch (Exception e) { - logger.error(e.getLocalizedMessage()); + logger.error(e.getLocalizedMessage(), e); throw new NlpHubException(e.getLocalizedMessage(), e); } } @@ -133,7 +132,7 @@ public class WorkspaceManager { return true; } catch (Exception e) { - logger.error(e.getLocalizedMessage()); + logger.error(e.getLocalizedMessage(), e); throw new NlpHubException(e.getLocalizedMessage(), e); } finally { // output stream must be closed anyway... @@ -141,7 +140,7 @@ public class WorkspaceManager { try { output.close(); } catch (IOException e) { - logger.error(e.getLocalizedMessage()); + logger.error(e.getLocalizedMessage(), e); } } } diff --git a/src/main/resources/clientlog4j.properties b/src/main/resources/clientlog4j.properties deleted file mode 100644 index 4a2e1cd..0000000 --- a/src/main/resources/clientlog4j.properties +++ /dev/null @@ -1,12 +0,0 @@ -log4j.rootLogger=DEBUG, A1 -log4j.appender.A1=org.apache.log4j.ConsoleAppender -log4j.appender.A1.layout=org.apache.log4j.PatternLayout - -# Print the date in ISO 8601 format -log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n - -# Print only messages of level TRACE or above in the package org.gcube -log4j.logger.org.gcube=TRACE -log4j.logger.org.gcube.application.framework.core.session=INFO -log4j.logger.org.gcube.common.scope.impl.DefaultScopeProvider=ERROR -log4j.logger.com.netflix.astyanax.connectionpool.impl.CountingConnectionPoolMonitor=ERROR \ No newline at end of file diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties deleted file mode 100644 index 0641702..0000000 --- a/src/main/resources/log4j.properties +++ /dev/null @@ -1,8 +0,0 @@ -log4j.rootLogger=INFO,stdout -log4j.logger.com.endeca=INFO -# Logger for crawl metrics -log4j.logger.com.endeca.itl.web.metrics=INFO - -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%p\t%d{ISO8601}\t%r\t%c\t[%t]\t%m%n diff --git a/src/main/resources/logback-test.xml b/src/main/resources/logback-test.xml deleted file mode 100644 index 93b1a59..0000000 --- a/src/main/resources/logback-test.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{0}: %msg%n - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/logback_xml_test b/src/main/resources/logback_xml_test new file mode 100644 index 0000000..d3931ec --- /dev/null +++ b/src/main/resources/logback_xml_test @@ -0,0 +1,83 @@ + + + /home/gcube/tomcat/logs/ghn.log + true + + %date [%thread] %-5level %logger{0}: %msg%n + + + /home/gcube/tomcat/logs/ghn.%d{yyyy-MM-dd}.%i.log + 30 + 10MB + 2GB + + + + + /home/gcube/tomcat/logs/accounting.log + true + + %date [%thread] %-5level %logger{0}: %msg%n + + + /home/gcube/tomcat/logs/accounting.%d{yyyy-MM-dd}.%i.log + 30 + 10MB + 2GB + + + + + /home/gcube/tomcat/logs/access.log + true + + %date [%thread] %-5level %logger{0}: %msg%n + + + /home/gcube/tomcat/logs/access.%d{yyyy-MM-dd}.%i.log + 30 + 10MB + 2GB + + + + + /home/gcube/tomcat/logs/nlphub.log + true + + %date [%thread] %-5level %logger{0}: %msg%n + + + /home/gcube/tomcat/logs/nlphub.%d{yyyy-MM-dd}.%i.log + 30 + 10MB + 2GB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 7e834fb..2f65c37 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -11,7 +11,7 @@ NLPServlet - org.gcube.nlphub.NLPHub + org.gcube.data.analysis.nlphub.NLPHub NLPServlet @@ -19,7 +19,7 @@ NLPUploader - org.gcube.nlphub.NLPUploader + org.gcube.data.analysis.nlphub.NLPUploader NLPUploader @@ -27,7 +27,7 @@ NLPMapper - org.gcube.nlphub.NLPMapper + org.gcube.data.analysis.nlphub.NLPMapper NLPMapper diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index 642b85b..2db6835 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -23,7 +23,15 @@