NLPHub added logs and correct various problems

git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-analysis/nlphub@169586 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2018-07-02 09:36:22 +00:00
parent d74cc320be
commit 3da3b475f8
17 changed files with 613 additions and 222 deletions

51
pom.xml
View File

@ -31,7 +31,6 @@
<dependency> <dependency>
<groupId>com.googlecode.json-simple</groupId> <groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId> <artifactId>json-simple</artifactId>
<version>1.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
@ -40,53 +39,45 @@
<version>2.8.2</version> <version>2.8.2</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- GCube --> <!-- GCube -->
<!-- <dependency> --> <!-- <dependency> -->
<!-- <groupId>org.gcube.data.analysis</groupId> --> <!-- <groupId>org.gcube.data.analysis</groupId> -->
<!-- <artifactId>data-miner-manager-cl</artifactId> --> <!-- <artifactId>data-miner-manager-cl</artifactId> -->
<!-- <version>[1.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version> --> <!-- <version>[1.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version> -->
<!-- <scope>compile</scope> --> <!-- <scope>compile</scope> -->
<!-- </dependency> --> <!-- </dependency> -->
<dependency> <dependency>
<groupId>org.gcube.common</groupId> <groupId>org.gcube.common</groupId>
<artifactId>common-authorization</artifactId> <artifactId>common-authorization</artifactId>
<version>[2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</version> <scope>provided</scope>
<scope>compile</scope> </dependency>
</dependency>
<dependency> <dependency>
<groupId>org.gcube.common</groupId> <groupId>org.gcube.common</groupId>
<artifactId>authorization-client</artifactId> <artifactId>authorization-client</artifactId>
<version>[2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</version> <scope>provided</scope>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.gcube.contentmanagement</groupId>
<artifactId>storage-manager-wrapper</artifactId>
<version>[2.1.0-SNAPSHOT,)</version>
<scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.gcube.resources.discovery</groupId> <groupId>org.gcube.resources.discovery</groupId>
<artifactId>discovery-client</artifactId> <artifactId>discovery-client</artifactId>
<scope>compile</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.gcube.core</groupId> <groupId>org.gcube.core</groupId>
<artifactId>common-configuration-scanner</artifactId> <artifactId>common-configuration-scanner</artifactId>
<version>[1.0.0-SNAPSHOT,)</version> <scope>provided</scope>
<scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.gcube.resources</groupId> <groupId>org.gcube.resources</groupId>
<artifactId>registry-publisher</artifactId> <artifactId>registry-publisher</artifactId>
<version>[1.2.1-SNAPSHOT,3.0.0-SNAPSHOT)</version> <scope>provided</scope>
<scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.gcube.core</groupId> <groupId>org.gcube.core</groupId>
<artifactId>common-scope</artifactId> <artifactId>common-scope</artifactId>
<scope>compile</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- Sevlet jars for compilation, provided by Tomcat --> <!-- Sevlet jars for compilation, provided by Tomcat -->
<dependency> <dependency>
<groupId>org.apache.tomcat</groupId> <groupId>org.apache.tomcat</groupId>
@ -97,7 +88,6 @@
<dependency> <dependency>
<groupId>commons-lang</groupId> <groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId> <artifactId>commons-lang</artifactId>
<version>2.6</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
@ -113,13 +103,14 @@
<artifactId>slf4j-log4j12</artifactId> <artifactId>slf4j-log4j12</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- JUnit --> <!-- JUnit TEST -->
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<version>3.8.1</version> <version>4.8.1</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
<finalName>nlphub</finalName> <finalName>nlphub</finalName>

View File

@ -0,0 +1,143 @@
package org.gcube.data.analysis.nlphub;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import org.gcube.data.analysis.nlphub.session.SessionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Servlet implementation class NLPHub
*/
@WebServlet(asyncSupported = true, name = "DiscoverDataMinerServlet", urlPatterns = { "/discover-dataminer-servlet" })
public class DiscoverDataMinerService extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(DiscoverDataMinerService.class);
/**
* @see HttpServlet#HttpServlet()
*/
public DiscoverDataMinerService() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doWork(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doWork(request, response);
}
private void doWork(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.debug("Discover DataMinerService");
String token = SessionUtils.getToken(request);
discoverDataMinerService(request, response, token);
}
private void discoverDataMinerService(HttpServletRequest request, HttpServletResponse response, String token)
throws ServletException, IOException {
HttpURLConnection connection = null;
String dataMinerServiceUrl = "";
response.setContentType("text/plain;charset=UTF-8");
try (PrintWriter writer = response.getWriter()) {
try {
String urlInformationSystem = "http://registry.d4science.org/icproxy/gcube/service/ServiceEndpoint/DataAnalysis/DataMiner?";
logger.debug("Request url: " + urlInformationSystem);
urlInformationSystem += "gcube-token=" + token;
URL url = new URL(urlInformationSystem);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.setDoOutput(false);
connection.setUseCaches(false);
try (BufferedReader r = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
dataMinerServiceUrl = readProfileInfo(r);
}
} catch (Exception e) {
logger.error("Discover DataMiner Service error: " + e.getLocalizedMessage(), e);
} finally {
try {
if (connection != null)
connection.disconnect();
} catch (Exception e) {
logger.error("Discover DataMiner Service error: " + e.getLocalizedMessage(), e);
}
}
writer.println(dataMinerServiceUrl);
} catch (Throwable e) {
logger.error("Error discovering DataMiner Service Url: " + e.getLocalizedMessage(), e);
}
}
private String readProfileInfo(BufferedReader r) throws FactoryConfigurationError, XMLStreamException {
String dataMinerServiceUrl = null;
XMLInputFactory xmlInFact = XMLInputFactory.newInstance();
XMLStreamReader reader = xmlInFact.createXMLStreamReader(r);
while (reader.hasNext()) {
int eventType = reader.next();
if (eventType == XMLStreamConstants.START_ELEMENT) {
logger.debug("Read Element: " + reader.getLocalName());
if (reader.getLocalName().compareToIgnoreCase("EndPoint") == 0) {
logger.debug("Attribute count:" + reader.getAttributeCount());
for (int i = 0; i < reader.getAttributeCount(); i++) {
logger.debug("Attribute Name: " + reader.getAttributeName(i));
logger.debug("Attribute Value: " + reader.getAttributeValue(i));
if (reader.getAttributeName(i).toString().compareToIgnoreCase("EntryName") == 0
&& reader.getAttributeValue(i).toString()
.compareToIgnoreCase("dataminer-prototypes.d4science.org") == 0) {
dataMinerServiceUrl = reader.getElementText();
dataMinerServiceUrl=dataMinerServiceUrl.trim();
dataMinerServiceUrl = dataMinerServiceUrl.replace("\\n", "").replace("\\r", "");
logger.debug("url lenght: "+dataMinerServiceUrl.length());
logger.debug("DataMiner service url retrieved: " + dataMinerServiceUrl);
return dataMinerServiceUrl;
}
}
}
}
}
return dataMinerServiceUrl;
}
}

View File

@ -6,6 +6,7 @@ import java.io.InputStreamReader;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.util.Arrays;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet; import javax.servlet.annotation.WebServlet;
@ -32,7 +33,7 @@ import org.xml.sax.InputSource;
public class NLPHub extends HttpServlet { public class NLPHub extends HttpServlet {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(NLPHub.class); private static final Logger logger = LoggerFactory.getLogger(NLPHub.class);
/** /**
* @see HttpServlet#HttpServlet() * @see HttpServlet#HttpServlet()
*/ */
@ -68,22 +69,27 @@ public class NLPHub extends HttpServlet {
} else { } else {
runAlgorithms(request, response, token); runAlgorithms(request, response, token);
} }
logger.debug("NLPHub work done");
} }
private void getAlgorithmInfo(HttpServletRequest request, HttpServletResponse response, String token) private void getAlgorithmInfo(HttpServletRequest request, HttpServletResponse response, String token)
throws ServletException, IOException { throws ServletException, IOException {
try { try {
String dataMiner = request.getParameter("dataminer"); String dataMiner = request.getParameter("dataminer");
//dataMiner=java.net.URLDecoder.decode(dataMiner,"UTF-8");
String algId = request.getParameter("algId"); String algId = request.getParameter("algId");
logger.debug("NLPHub getAlgorithmInfo: [DataMiner="+dataMiner+", algorithmID="+algId+"]");
HttpURLConnection connection = null; HttpURLConnection connection = null;
BufferedReader r = null; BufferedReader r = null;
String algAbsrtact = ""; String algAbsrtact = "";
PrintWriter writer = response.getWriter(); PrintWriter writer = response.getWriter();
response.setContentType("application/json;charset=UTF-8"); response.setContentType("application/json;charset=UTF-8");
try { try {
String finalUrl = "https://" + dataMiner + NlpAsyncNerRunner.WPS_DESCRIBE_PROCESS_URL + "&gcube-token=" String finalUrl = "https://" + dataMiner + NlpAsyncNerRunner.WPS_DESCRIBE_PROCESS_URL+"&lang=en-US&Identifier=" + algId;
logger.debug("Request url: "+finalUrl);
finalUrl+="&gcube-token="
+ token; + token;
finalUrl += "&lang=en-US&Identifier=" + algId;
URL url = new URL(finalUrl); URL url = new URL(finalUrl);
connection = (HttpURLConnection) url.openConnection(); connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true); connection.setDoInput(true);
@ -106,7 +112,7 @@ public class NLPHub extends HttpServlet {
writer.close(); writer.close();
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getLocalizedMessage(),e); logger.error("NLPHub error in GET algorithmInfo: "+e.getLocalizedMessage(),e);
writer.println(new JsonManager().getErrorJsonResponse("" + e.getLocalizedMessage())); writer.println(new JsonManager().getErrorJsonResponse("" + e.getLocalizedMessage()));
writer.close(); writer.close();
} finally { } finally {
@ -116,12 +122,12 @@ public class NLPHub extends HttpServlet {
if (connection != null) if (connection != null)
connection.disconnect(); connection.disconnect();
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getLocalizedMessage()); logger.error("NLPHub error in GET algorithmInfo: "+e.getLocalizedMessage(),e);
} }
} }
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getLocalizedMessage(),e); logger.error("NLPHub error in GET algorithmInfo: "+e.getLocalizedMessage(),e);
} }
} }
@ -129,19 +135,27 @@ public class NLPHub extends HttpServlet {
throws ServletException, IOException { throws ServletException, IOException {
try { try {
String dataMiner = request.getParameter("dataminer"); String dataMiner = request.getParameter("dataminer");
//dataMiner=java.net.URLDecoder.decode(dataMiner,"UTF-8");
String[] algs = request.getParameter("algs").split(","); String[] algs = request.getParameter("algs").split(",");
String plink=request.getParameter("plink");
String annotations=request.getParameter("annotations");
logger.debug("NLPHub getAlgorithmInfo: [DataMiner="+dataMiner+", plink="+plink+
", annotations="+annotations+", algorithms="+Arrays.toString(algs)+"]");
for (int i = 0; i < algs.length; i++) { for (int i = 0; i < algs.length; i++) {
algs[i] = algs[i].trim(); algs[i] = algs[i].trim();
} }
RunnerCommander commander = new RunnerCommander(dataMiner, algs, request.getParameter("plink"), RunnerCommander commander = new RunnerCommander(dataMiner, algs,plink ,
request.getParameter("annotations"), token, response); annotations, token, response);
commander.setSleepTime(100); commander.setSleepTime(100);
commander.setMaxWaitingTime(90 * 1000); commander.setMaxWaitingTime(90 * 1000);
commander.startProcess(); commander.startProcess();
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getLocalizedMessage(),e); logger.error("NLPHub runAlgorithms: "+e.getLocalizedMessage(), e);
} }
} }

View File

@ -0,0 +1,82 @@
package org.gcube.data.analysis.nlphub;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.gcube.data.analysis.nlphub.session.SessionUtils;
import org.gcube.data.analysis.nlphub.shared.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Servlet implementation class NLPHub
*/
@WebServlet(asyncSupported = true, name = "NLPInit", urlPatterns = { "/nlpinit-servlet" })
public class NLPInit extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(NLPInit.class);
public NLPInit() {
super();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doWork(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doWork(request, response);
}
private void doWork(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.debug("NLPInit");
String token = SessionUtils.getToken(request);
String res = request.getParameter(Constants.REQUEST);
RequestType r=RequestType.getRequestTypeFromString(res);
if(r==null){
throw new ServletException("Invalid request: "+res);
}
switch(r){
case DataminerService:
dataminerServiceDiscover(request, response, token);
break;
default:
throw new ServletException("Invalid request: "+res);
}
}
private void dataminerServiceDiscover(HttpServletRequest request, HttpServletResponse response,String token) throws ServletException {
/*
PrintWriter writer = response.getWriter();
response.setContentType("text/plain;charset=UTF-8");
response
String result = null;
result = request.getSession().getId();
} catch (Exception e) {
logger.error(e.getLocalizedMessage(), e);
} finally {
writer.println(result);
writer.close();
}*/
}
}

View File

@ -74,6 +74,11 @@ public class NLPUploader extends HttpServlet {
private void handleFreeText(HttpServletRequest request, HttpServletResponse response, String token, private void handleFreeText(HttpServletRequest request, HttpServletResponse response, String token,
WorkspaceManager ws) throws ServletException, IOException { WorkspaceManager ws) throws ServletException, IOException {
String freeText = request.getParameter("freetext"); String freeText = request.getParameter("freetext");
String langParameter=request.getParameter("getlang");
String dataMiner = request.getParameter("dataminer");
//dataMiner=java.net.URLDecoder.decode(dataMiner,"UTF-8");
freeText = NlpUtils.replaceDirtyCharacters(freeText); freeText = NlpUtils.replaceDirtyCharacters(freeText);
byte[] content = freeText.getBytes("UTF-8"); byte[] content = freeText.getBytes("UTF-8");
@ -86,11 +91,11 @@ public class NLPUploader extends HttpServlet {
return; return;
} }
String link = ws.getPublicLink(fileName, token); String link = ws.getPublicLink(fileName, token);
if (request.getParameter("getlang") != null) { if (langParameter != null) {
String sentence = NlpUtils.getLanguageRecognizerDigest(new String(content)); String sentence = NlpUtils.getLanguageRecognizerDigest(new String(content));
logger.info(sentence); logger.info(sentence);
try { try {
NLpLanguageRecognizer.run(request.getParameter("dataminer"), sentence, token, link, response); NLpLanguageRecognizer.run(dataMiner, sentence, token, link, response);
} catch (NlpHubException ex) { } catch (NlpHubException ex) {
writer.println(new JsonManager().getSuccessJsonResponse(Constants.UNAVAILABLE, link)); writer.println(new JsonManager().getSuccessJsonResponse(Constants.UNAVAILABLE, link));
} }
@ -107,6 +112,9 @@ public class NLPUploader extends HttpServlet {
int contentLength = request.getContentLength(); int contentLength = request.getContentLength();
Part filePart = request.getPart("mytxtfile"); Part filePart = request.getPart("mytxtfile");
String dataMiner = request.getParameter("dataminer");
//dataMiner=java.net.URLDecoder.decode(dataMiner,"UTF-8");
String fileName = getFileName(filePart); String fileName = getFileName(filePart);
@ -147,7 +155,7 @@ public class NLPUploader extends HttpServlet {
String sentence = NlpUtils.getLanguageRecognizerDigest(stringContent); String sentence = NlpUtils.getLanguageRecognizerDigest(stringContent);
logger.info(sentence); logger.info(sentence);
try { try {
NLpLanguageRecognizer.run(request.getParameter("dataminer"), sentence, token, link, response); NLpLanguageRecognizer.run(dataMiner, sentence, token, link, response);
} catch (NlpHubException ex) { } catch (NlpHubException ex) {
writer.println(new JsonManager().getSuccessJsonResponse(Constants.UNAVAILABLE, link)); writer.println(new JsonManager().getSuccessJsonResponse(Constants.UNAVAILABLE, link));
} }

View File

@ -0,0 +1,34 @@
package org.gcube.data.analysis.nlphub;
public enum RequestType {
DataminerService("DataminerService");
private final String id;
private RequestType(final String id) {
this.id = id;
}
public static RequestType getRequestTypeFromString(String res){
if(res==null||res.isEmpty()){
return null;
}
for(RequestType r:RequestType.values()){
if(r.id.compareToIgnoreCase(res)==0){
return r;
}
}
return null;
}
@Override
public String toString() {
return id;
}
}

View File

@ -49,9 +49,9 @@ public class NLpLanguageRecognizer {
try { try {
if (dataMiner == null) if (dataMiner == null)
dataMiner = Constants.DEFAULT_DATAMINER_URL; dataMiner = Constants.DEFAULT_DATAMINER_URL;
else //else
dataMiner = "http://" + dataMiner; // dataMiner = "http://" + dataMiner;
String urlService = dataMiner + "/wps/WebProcessingService?request=Execute&service=WPS&Version=1.0.0"; String urlService = dataMiner + "?request=Execute&service=WPS&Version=1.0.0";
urlService += "&gcube-token=" + token; urlService += "&gcube-token=" + token;
urlService += "&lang=en-US"; urlService += "&lang=en-US";
urlService += "&Identifier=" + RECOGNIZER_ID; urlService += "&Identifier=" + RECOGNIZER_ID;

View File

@ -12,7 +12,6 @@ import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import org.gcube.data.analysis.nlphub.legacy.AsyncHttpRequest; import org.gcube.data.analysis.nlphub.legacy.AsyncHttpRequest;
import org.gcube.data.analysis.nlphub.legacy.NerOutput;
import org.gcube.data.analysis.nlphub.shared.Constants; import org.gcube.data.analysis.nlphub.shared.Constants;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -22,52 +21,64 @@ import org.w3c.dom.NodeList;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
public class NlpAsyncNerRunner extends AsyncHttpRequest { public class NlpAsyncNerRunner extends AsyncHttpRequest {
private static final Logger logger = LoggerFactory.getLogger(NerOutput.class); private static final Logger logger = LoggerFactory.getLogger(NlpAsyncNerRunner.class);
public static final String WPS_EXECUTE_URL = "/wps/WebProcessingService?request=Execute&service=WPS&Version=1.0.0"; public static final String WPS_EXECUTE_URL = "?request=Execute&service=WPS&Version=1.0.0";
public static final String WPS_DESCRIBE_PROCESS_URL = "/wps/WebProcessingService?request=DescribeProcess&service=WPS&Version=1.0.0"; public static final String WPS_DESCRIBE_PROCESS_URL = "?request=DescribeProcess&service=WPS&Version=1.0.0";
private String identifier, token, httpMethod, annotations, publicLink, dataMiner; public static final String DATAMINER_DEFAULT="http://dataminer-prototypes.d4science.org/wps/WebProcessingService";
// private String identifier, token, httpMethod, annotations, publicLink,
// dataMiner;
private String identifier;
private RunnerCommander commander; private RunnerCommander commander;
public NlpAsyncNerRunner(String dataMiner, String identifier, String token, String publicLink, String annotations, public NlpAsyncNerRunner(String dataMiner, String identifier, String token, String publicLink, String annotations,
String language, RunnerCommander commander) { String language, RunnerCommander commander) {
super(); super();
this.identifier = identifier; this.commander=commander;
this.token = token; this.identifier=identifier;
this.httpMethod = "GET"; String httpMethod = "GET";
this.annotations = annotations;
this.publicLink = publicLink;
this.commander = commander;
if (dataMiner == null) if (dataMiner == null)
this.dataMiner = Constants.DEFAULT_DATAMINER_URL; dataMiner = Constants.DEFAULT_DATAMINER_URL;
else // else
this.dataMiner = "http://" + dataMiner; // this.dataMiner = "http://" + dataMiner;
ArrayList<NlpParameter> params = buildParameterString(); logger.debug("NlpAsyncNerRunner: [identifier=" + identifier + ", httpMethod=" + httpMethod + ", annotations="
String serviceUrl = this.dataMiner + WPS_EXECUTE_URL + "&gcube-token=" + token + "&lang=en-US&Identifier=" + annotations + ", publicLink=" + publicLink + ", dataminer=" + dataMiner + "]");
+ identifier;
serviceUrl += "&" + setUrl(params); ArrayList<NlpParameter> params = buildParameterString(dataMiner, identifier, publicLink, annotations, token);
super.setBaseUrl(serviceUrl); StringBuilder serviceUrl = new StringBuilder();
serviceUrl.append(dataMiner);
serviceUrl.append(WPS_EXECUTE_URL);
serviceUrl.append("&lang=en-US&Identifier=");
serviceUrl.append(identifier);
serviceUrl.append("&");
serviceUrl.append(setParams(params));
serviceUrl.append("&gcube-token=" + token);
logger.debug("NlpAsyncNerRunner: [serviceUrl=" + serviceUrl + ", method=" + httpMethod + "]");
super.setBaseUrl(serviceUrl.toString());
super.setMethod(httpMethod); super.setMethod(httpMethod);
} }
public NlpAsyncNerRunner(String baseUrl, String method) { /*public NlpAsyncNerRunner(String baseUrl, String method) {
super(baseUrl, method, null); super(baseUrl, method, null);
} }*/
/*
public String getIdentifier() { public String getIdentifier() {
return identifier; return identifier;
} }
public String getToken() { public String getToken() {
return token; return token;
} }
public String getHttpMethod() { public String getHttpMethod() {
return httpMethod; return httpMethod;
} }*/
private String setUrl(ArrayList<NlpParameter> parameters) { private String setParams(ArrayList<NlpParameter> parameters) {
String url = "DataInputs="; String url = "DataInputs=";
for (NlpParameter p : parameters) { for (NlpParameter p : parameters) {
try { try {
@ -76,22 +87,33 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest {
logger.error(ex.getLocalizedMessage()); logger.error(ex.getLocalizedMessage());
} }
} }
logger.debug("");
return url; return url;
} }
private ArrayList<NlpParameter> buildParameterString() { private ArrayList<NlpParameter> buildParameterString(String dataMiner, String identifier, String publicLink,
String annotations, String token) {
ArrayList<NlpParameter> parameters = new ArrayList<>(); ArrayList<NlpParameter> parameters = new ArrayList<>();
HttpURLConnection connection = null; HttpURLConnection connection = null;
BufferedReader r = null; BufferedReader r = null;
try { try {
String finalUrl = dataMiner + WPS_DESCRIBE_PROCESS_URL + "&gcube-token=" + token; StringBuilder serviceUrl = new StringBuilder();
finalUrl += "&lang=en-US&Identifier=" + identifier; serviceUrl.append(dataMiner);
URL url = new URL(finalUrl); serviceUrl.append(WPS_DESCRIBE_PROCESS_URL);
serviceUrl.append("&lang=en-US&Identifier=");
serviceUrl.append(identifier);
logger.debug("BuildParameterString request URL: " + serviceUrl);
serviceUrl.append("&gcube-token=");
serviceUrl.append(token);
URL url = new URL(serviceUrl.toString());
connection = (HttpURLConnection) url.openConnection(); connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setRequestMethod("GET"); connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.setDoOutput(false);
connection.setUseCaches(false);
r = new BufferedReader(new InputStreamReader(connection.getInputStream())); r = new BufferedReader(new InputStreamReader(connection.getInputStream()));
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(r)); Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(r));
doc.getDocumentElement().normalize(); doc.getDocumentElement().normalize();
@ -125,7 +147,7 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest {
} }
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getLocalizedMessage(), e); logger.error("NlpAsyncNerRunner buildParameterString: " + e.getLocalizedMessage(), e);
} finally { } finally {
try { try {
if (r != null) if (r != null)
@ -146,7 +168,7 @@ public class NlpAsyncNerRunner extends AsyncHttpRequest {
@Override @Override
public void asyncHttpRequestCallback() { public void asyncHttpRequestCallback() {
elapsedTime = System.currentTimeMillis() - elapsedTime; elapsedTime = System.currentTimeMillis() - elapsedTime;
logger.info("ID: " + identifier.substring(identifier.lastIndexOf(".") + 1) + " elapsed time: " + elapsedTime); logger.debug("ID: " + identifier.substring(identifier.lastIndexOf(".") + 1) + " elapsed time: " + elapsedTime);
String result = super.getResult(); String result = super.getResult();
String theLink = ""; String theLink = "";
try { try {

View File

@ -24,7 +24,7 @@ public class RunnerCommander extends Thread {
private long maxWaitingTime = 5l * 60l * 1000l; private long maxWaitingTime = 5l * 60l * 1000l;
private boolean complete = false; private boolean complete = false;
public RunnerCommander(String dataMiner, String[] identifiers, String link, String annotationList, String token) { /*public RunnerCommander(String dataMiner, String[] identifiers, String link, String annotationList, String token) {
this.identifiers = identifiers; this.identifiers = identifiers;
this.annotationList = annotationList; this.annotationList = annotationList;
this.link = link; this.link = link;
@ -33,7 +33,7 @@ public class RunnerCommander extends Thread {
this.sleepTime = 500l; this.sleepTime = 500l;
this.dataMiner = dataMiner; this.dataMiner = dataMiner;
outResultList = new ArrayList<String>(); outResultList = new ArrayList<String>();
} }*/
public RunnerCommander(String dataMiner, String[] identifiers, String link, String annotationList, String token, public RunnerCommander(String dataMiner, String[] identifiers, String link, String annotationList, String token,
HttpServletResponse response) { HttpServletResponse response) {

View File

@ -1,5 +1,6 @@
package org.gcube.data.analysis.nlphub.session; package org.gcube.data.analysis.nlphub.session;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.gcube.data.analysis.nlphub.shared.Constants; import org.gcube.data.analysis.nlphub.shared.Constants;
@ -8,15 +9,38 @@ import org.slf4j.LoggerFactory;
public class SessionUtils { public class SessionUtils {
private static final Logger logger = LoggerFactory.getLogger(SessionUtils.class); private static final Logger logger = LoggerFactory.getLogger(SessionUtils.class);
public static String getToken(HttpServletRequest request) { public static String getToken(HttpServletRequest request) throws ServletException {
String token = request.getParameter(Constants.TOKEN_PARAMETER); String token = request.getParameter(Constants.TOKEN_PARAMETER);
logger.debug("Token in request: "+token); logger.debug("Token in request: " + token);
if(token == null || token.isEmpty()){ if (token == null || token.isEmpty()) {
logger.error("Token in request is null"); logger.debug("Token is null");
throw new ServletException("Token is null");
} }
return token; return token;
} }
/*
private static void checkToken(String token) throws Exception {
if (token == null || token.isEmpty()) {
logger.error("Token is null");
throw new Exception("Token is null");
} else {
AuthorizationEntry entry;
entry = authorizationService().get(token);
ClientInfo clientInfo = entry.getClientInfo();
if (clientInfo == null) {
logger.error("User not found.");
throw new Exception("Authorization failed!");
} else {
logger.debug("User: " + clientInfo.getId());
String context = entry.getContext();
logger.debug("Context: " + context);
}
}
}*/
} }

View File

@ -7,18 +7,20 @@ public class Constants {
public static final String DEFAULT_USER = "giancarlo.panichi"; public static final String DEFAULT_USER = "giancarlo.panichi";
public static final String DEFAULT_SCOPE = "/gcube/devNext/NextNext"; public static final String DEFAULT_SCOPE = "/gcube/devNext/NextNext";
public static final String DEFAULT_DATAMINER_URL = "http://dataminer-prototypes.d4science.org"; public static final String DEFAULT_DATAMINER_URL = "http://dataminer-prototypes.d4science.org/wps/WebProcessingService";
public static final String TOKEN_PARAMETER = "gcube-token"; public static final String TOKEN_PARAMETER = "gcube-token";
public static final String DEFAULT_DESCRIPTION = "NlpHub upload"; 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 MIME_TEXT = "text/plain";
public static final String CONTENT_TYPE = "Content-Type"; public static final String CONTENT_TYPE = "Content-Type";
public static final String UNAVAILABLE = "unavailable"; public static final String UNAVAILABLE = "unavailable";
public static final String ERROR_ID = "ERROR"; public static final String ERROR_ID = "ERROR";
public static final String INPUT_FILE_PARAMETER = "input"; public static final String INPUT_FILE_PARAMETER = "input";
public static final String REQUEST = "Request";

View File

@ -60,8 +60,8 @@ public class WorkspaceManager {
return link; return link;
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getLocalizedMessage(), e); logger.error("Error in WorkspaceManager for getPublicLink: "+e.getLocalizedMessage(), e);
throw new NlpHubException(e.getLocalizedMessage(), e); throw new NlpHubException("Error in WorkspaceManager for getPublicLink: "+e.getLocalizedMessage(), e);
} }
} }

View File

@ -1,83 +0,0 @@
<configuration scan="true" debug="false">
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/gcube/tomcat/logs/ghn.log</file>
<append>true</append>
<encoder>
<pattern>%date [%thread] %-5level %logger{0}: %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/home/gcube/tomcat/logs/ghn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>10MB</maxFileSize>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="ACCOUNT_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/gcube/tomcat/logs/accounting.log</file>
<append>true</append>
<encoder>
<pattern>%date [%thread] %-5level %logger{0}: %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/home/gcube/tomcat/logs/accounting.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>10MB</maxFileSize>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="ACCESS_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/gcube/tomcat/logs/access.log</file>
<append>true</append>
<encoder>
<pattern>%date [%thread] %-5level %logger{0}: %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/home/gcube/tomcat/logs/access.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>10MB</maxFileSize>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="NLP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/gcube/tomcat/logs/nlphub.log</file>
<append>true</append>
<encoder>
<pattern>%date [%thread] %-5level %logger{0}: %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/home/gcube/tomcat/logs/nlphub.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>10MB</maxFileSize>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
</appender>
<logger name="org.gcube.data.publishing" level="ERROR">
<appender-ref ref="ACCOUNT_FILE" />
</logger>
<logger name="org.gcube.documentstore" level="ERROR">
<appender-ref ref="ACCOUNT_FILE" />
</logger>
<logger name="org.gcube.smartgears.handlers.application.request" level="INFO">
<appender-ref ref="ACCESS_FILE" />
</logger>
<logger name="org.gcube" level="WARN" />
<logger name="org.gcube.smartgears" level="WARN" />
<logger name="org.gcube.common.events" level="WARN" />
<logger name="org.gcube.data.analysis.nlphub" level="DEBUG">
<appender-ref ref="NLP_FILE" />
</logger>
<root level="WARN">
<appender-ref ref="FILE" />
</root>
</configuration>

View File

@ -1,36 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true" version="3.0"> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<display-name>NLPHub</display-name> xmlns="http://java.sun.com/xml/ns/javaee"
<welcome-file-list> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
<welcome-file>index.html</welcome-file> metadata-complete="true" version="3.0">
<welcome-file>index.htm</welcome-file> <display-name>NLPHub</display-name>
<welcome-file>index.jsp</welcome-file> <welcome-file-list>
<welcome-file>default.html</welcome-file> <welcome-file>index.html</welcome-file>
<welcome-file>default.htm</welcome-file> <welcome-file>index.htm</welcome-file>
<welcome-file>default.jsp</welcome-file> <welcome-file>index.jsp</welcome-file>
</welcome-file-list> <welcome-file>default.html</welcome-file>
<servlet> <welcome-file>default.htm</welcome-file>
<servlet-name>NLPServlet</servlet-name> <welcome-file>default.jsp</welcome-file>
<servlet-class>org.gcube.data.analysis.nlphub.NLPHub</servlet-class> </welcome-file-list>
</servlet> <servlet>
<servlet-mapping> <servlet-name>NLPServlet</servlet-name>
<servlet-name>NLPServlet</servlet-name> <servlet-class>org.gcube.data.analysis.nlphub.NLPHub</servlet-class>
<url-pattern>/nlphub-servlet</url-pattern> </servlet>
</servlet-mapping> <servlet-mapping>
<servlet> <servlet-name>NLPServlet</servlet-name>
<servlet-name>NLPUploader</servlet-name> <url-pattern>/nlphub-servlet</url-pattern>
<servlet-class>org.gcube.data.analysis.nlphub.NLPUploader</servlet-class> </servlet-mapping>
</servlet> <servlet>
<servlet-mapping> <servlet-name>NLPUploader</servlet-name>
<servlet-name>NLPUploader</servlet-name> <servlet-class>org.gcube.data.analysis.nlphub.NLPUploader</servlet-class>
<url-pattern>/nlphub-uploader-servlet</url-pattern> </servlet>
</servlet-mapping> <servlet-mapping>
<servlet> <servlet-name>NLPUploader</servlet-name>
<servlet-name>NLPMapper</servlet-name> <url-pattern>/nlphub-uploader-servlet</url-pattern>
<servlet-class>org.gcube.data.analysis.nlphub.NLPMapper</servlet-class> </servlet-mapping>
</servlet> <servlet>
<servlet-mapping> <servlet-name>NLPMapper</servlet-name>
<servlet-name>NLPMapper</servlet-name> <servlet-class>org.gcube.data.analysis.nlphub.NLPMapper</servlet-class>
<url-pattern>/nlphub-mapper-servlet</url-pattern> </servlet>
</servlet-mapping> <servlet-mapping>
<servlet-name>NLPMapper</servlet-name>
<url-pattern>/nlphub-mapper-servlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>DiscoverDataMinerServlet</servlet-name>
<servlet-class>org.gcube.data.analysis.nlphub.DiscoverDataMinerService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DiscoverDataMinerServlet</servlet-name>
<url-pattern>/discover-dataminer-servlet</url-pattern>
</servlet-mapping>
</web-app> </web-app>

View File

@ -27,7 +27,7 @@
String requestToken=request.getParameter(Constants.TOKEN_PARAMETER); String requestToken=request.getParameter(Constants.TOKEN_PARAMETER);
if( requestToken == null||requestToken.isEmpty()) { if( requestToken == null||requestToken.isEmpty()) {
%> %>
var gCubeToken = ""; var gCubeToken = "fea75a5a-d84c-495f-b0ca-09cdd95bacce-843339462";
<% } else { %> <% } else { %>
var gCubeToken = <%=requestToken%> var gCubeToken = <%=requestToken%>

View File

@ -27,11 +27,57 @@ $(document).ready(function() {
console.log('HREF: '+appLocation); console.log('HREF: '+appLocation);
appRoot=contextPath; appRoot=contextPath;
console.log('appRoot: '+ appRoot ); console.log('appRoot: '+ appRoot );
evaluateRequest();
});
evaluateRequest = function(){
$(".popup-text").hide(); $(".popup-text").hide();
disableExecuteButton(); disableExecuteButton();
showAnnotationsList(); showAnnotationsList();
checkAuth();
}
checkAuth = function(){
if(gCubeToken ===undefined || gCubeToken==null){
alert("Unexpected error token is null!\n.");
return null;
}
dataMinerClusterInfo();
checkInputLink(); checkInputLink();
}); }
dataMinerClusterInfo = function(){
if(gCubeToken ===undefined || gCubeToken==null){
alert("Unexpected error token is null!\n.");
return null;
}
var discoverDataMinerServiceUrl=appRoot+"/discover-dataminer-servlet?gcube-token="+gCubeToken;
$.ajax({
url : discoverDataMinerServiceUrl,
type : "GET",
async : true,
success : function(data) {
var dataminerHost=data;
console.log("Retrieved dataMinerServiceUrl: "+dataminerHost);
dataMiner=dataminerHost;
//alert("DataMiner Host: "+dataminerHost);
return;
},
error : function(request, error) {
alert("Unexpected error reading from link: '" + discoverDataMinerServiceUrl
+ "'\nStatus: " + request.status + "\nError: "
+ error + "\n.");
hideProgress();
initApplication();
}
});
}
checkInputLink = function() { checkInputLink = function() {
if (inputFile != "") { if (inputFile != "") {
@ -45,7 +91,7 @@ checkInputLink = function() {
var uploaderUrl = appRoot var uploaderUrl = appRoot
+ "/nlphub-uploader-servlet?getlang=on&freetext=" + "/nlphub-uploader-servlet?getlang=on&freetext="
+ encodeURIComponent(freeText) + "&dataminer=" + encodeURIComponent(freeText) + "&dataminer="
+ encodeURIComponent(dataMiner); + dataMiner; //encodeURIComponent(dataMiner);
if (gCubeToken.length > 0) if (gCubeToken.length > 0)
uploaderUrl += "&gcube-token=" + gCubeToken; uploaderUrl += "&gcube-token=" + gCubeToken;
@ -90,8 +136,8 @@ initApplication = function() {
contentType : "text/plain; charset=utf-8", contentType : "text/plain; charset=utf-8",
success : function(data, stato) { success : function(data, stato) {
$("#ner-result-container").hide(); $("#ner-result-container").hide();
var lineTokens = manageCsvData(data); var algorithmsEnable = manageCsvData(data);
getAlgorithms(lineTokens); getAlgorithms(algorithmsEnable);
buildLanguageSelection(); buildLanguageSelection();
buildLanguageList(); buildLanguageList();
buildAnnotations(); buildAnnotations();
@ -111,7 +157,8 @@ initApplication = function() {
disableExecuteButton(); disableExecuteButton();
var uploaderUrl = appRoot var uploaderUrl = appRoot
+ "/nlphub-uploader-servlet?dataminer=" + "/nlphub-uploader-servlet?dataminer="
+ encodeURIComponent(dataMiner); //+ encodeURIComponent(dataMiner);
+ dataMiner;
if (gCubeToken.length > 0) if (gCubeToken.length > 0)
uploaderUrl += "&gcube-token=" + gCubeToken; uploaderUrl += "&gcube-token=" + gCubeToken;
@ -272,8 +319,9 @@ setEventListeners = function() {
+ "/nlphub-uploader-servlet?freetext=" + "/nlphub-uploader-servlet?freetext="
+ encodeURIComponent(freeText) + encodeURIComponent(freeText)
+ "&dataminer=" + "&dataminer="
+ encodeURIComponent(dataMiner); //+ encodeURIComponent(dataMiner);
+dataMiner;
if (gCubeToken.length > 0) if (gCubeToken.length > 0)
uploaderUrl += "&gcube-token=" + gCubeToken; uploaderUrl += "&gcube-token=" + gCubeToken;
@ -327,8 +375,11 @@ enableAjaxFileUpload = function() {
$(".ajax-file-upload").attr("enabled", "true"); $(".ajax-file-upload").attr("enabled", "true");
$(".ajax-file-upload").css("background", pageGreen); $(".ajax-file-upload").css("background", pageGreen);
try { try {
document.getElementById("ajax-file-upload-id").removeEventListener( var fUploadElement=document.getElementById("ajax-file-upload-id");
if(fUploadElement!=null){
fUploadElement.removeEventListener(
"click", listenAjaxFileUpload); "click", listenAjaxFileUpload);
}
} catch (err) { } catch (err) {
console.log(err.message); console.log(err.message);
} }
@ -428,8 +479,8 @@ manageCsvData = function(data) {
lineTokens.push(tokens); lineTokens.push(tokens);
var description = tokens[1].toUpperCase().trim(); var description = tokens[1].toUpperCase().trim();
if (description == "CLOUD COMPUTING") /*if (description == "CLOUD COMPUTING")
dataMiner = tokens[2]; dataMiner = tokens[2];*/
tokens = []; tokens = [];
} }
@ -605,7 +656,7 @@ runAlgorithm = function() {
algList = algList.substring(0, algList.length - 1); algList = algList.substring(0, algList.length - 1);
var parameters = "annotations=" + annList; var parameters = "annotations=" + annList;
parameters += "&dataminer=" + encodeURIComponent(dataMiner); parameters += "&dataminer=" +dataMiner; //+ encodeURIComponent(dataMiner);
parameters += "&lang=" + $("#language-select").val(); parameters += "&lang=" + $("#language-select").val();
parameters += "&plink=" + encodeURIComponent(publicLink); parameters += "&plink=" + encodeURIComponent(publicLink);
parameters += "&algs=" + algList; parameters += "&algs=" + algList;
@ -821,11 +872,15 @@ getAlgInformation = function(alg) {
alert("Invalid algorithm identifier."); alert("Invalid algorithm identifier.");
return; return;
} }
console.log("getAlgorithm from dataMiner: "+dataMiner);
var parameters = "getInfo=on"; var parameters = "getInfo=on";
parameters += "&dataminer=" + encodeURIComponent(dataMiner); parameters += "&dataminer=" + dataMiner; //encodeURIComponent(dataMiner);
parameters += "&algId=" + algId; parameters += "&algId=" + algId;
console.log("parameters: "+parameters);
var nlphubUrl = appRoot + "/nlphub-servlet?" + parameters; var nlphubUrl = appRoot + "/nlphub-servlet?" + parameters;
if (gCubeToken.length > 0) if (gCubeToken.length > 0)
nlphubUrl += "&gcube-token=" + gCubeToken; nlphubUrl += "&gcube-token=" + gCubeToken;

View File

@ -0,0 +1,88 @@
package nlphub;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.gcube.data.analysis.nlphub.shared.Constants;
import org.junit.Assert;
import org.junit.Test;
public class DiscoverDataMinerServiceTest {
private static final Logger logger = LoggerFactory.getLogger(DiscoverDataMinerServiceTest.class);
@Test
public void discover() {
if (Constants.TEST_ENABLE) {
try {
String dataMinerServiceUrl = null;
String urlInformationSystem = "http://registry.d4science.org/icproxy/gcube/service/ServiceEndpoint/DataAnalysis/DataMiner?";
logger.debug("Request url: " + urlInformationSystem);
urlInformationSystem += "gcube-token=" + "f57441ac-b361-4c2d-992a-40db034f1b8c-843339462";
URL url = new URL(urlInformationSystem);
HttpURLConnection connection = null;
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.setDoOutput(false);
connection.setUseCaches(false);
try (BufferedReader r = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
dataMinerServiceUrl = readProfileInfo(r);
}
logger.debug("DataMinerServiceUrl: " + dataMinerServiceUrl);
Assert.assertTrue(true);
} catch (Throwable e) {
logger.error("Error retrieving DataMinerServiceUrl: "+e.getLocalizedMessage(),e);
Assert.fail("Error retrieving DataMinerServiceUrl: "+e.getLocalizedMessage());
}
} else {
Assert.assertTrue(true);
}
}
private String readProfileInfo(BufferedReader r) throws FactoryConfigurationError, XMLStreamException {
String dataMinerServiceUrl = null;
XMLInputFactory xmlInFact = XMLInputFactory.newInstance();
XMLStreamReader reader = xmlInFact.createXMLStreamReader(r);
while (reader.hasNext()) {
int eventType = reader.next();
if (eventType == XMLStreamConstants.START_ELEMENT) {
logger.debug("Read Element: " + reader.getLocalName());
if (reader.getLocalName().compareToIgnoreCase("EndPoint") == 0) {
logger.debug("Attribute count:" + reader.getAttributeCount());
for (int i = 0; i < reader.getAttributeCount(); i++) {
logger.debug("Attribute Name: " + reader.getAttributeName(i));
logger.debug("Attribute Value: " + reader.getAttributeValue(i));
if (reader.getAttributeName(i).toString().compareToIgnoreCase("EntryName") == 0
&& reader.getAttributeValue(i).toString()
.compareToIgnoreCase("dataminer-prototypes.d4science.org") == 0) {
dataMinerServiceUrl = reader.getElementText();
dataMinerServiceUrl = dataMinerServiceUrl.replace("\\n", "").replace("\\r", "");
logger.debug("DataMiner service url retrieved: " + dataMinerServiceUrl);
return dataMinerServiceUrl;
}
}
}
}
}
return dataMinerServiceUrl;
}
}