diff --git a/src/main/java/org/gcube/portlets/user/td/gwtservice/server/TabularDataRowsXServlet.java b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/TabularDataRowsXServlet.java
new file mode 100644
index 0000000..f9ad814
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/TabularDataRowsXServlet.java
@@ -0,0 +1,112 @@
+package org.gcube.portlets.user.td.gwtservice.server;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author "Giancarlo Panichi" g.panichi@isti.cnr.it
+ *
+ */
+public class TabularDataRowsXServlet extends HttpServlet {
+
+ private static final long serialVersionUID = 3995054634540860599L;
+
+ protected Logger logger = LoggerFactory
+ .getLogger(TabularDataRowsXServlet.class);
+
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+ handleRequest(req, resp);
+ }
+
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+ handleRequest(req, resp);
+ }
+
+ protected void handleRequest(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ logger.debug("TabularDataServlet handleRequest");
+
+ try {
+
+ HttpSession session = request.getSession();
+
+ if(session==null){
+ logger.error("Error getting the upload session, no session valid found: "+session);
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "ERROR-Error getting the user session, no session found"+session);
+ return ;
+ }
+ logger.info("Session id: "+session.getId());
+
+
+ ServletInputStream in = request.getInputStream();
+ InputStreamReader buffIn = new InputStreamReader(in);
+ char[] buffer = new char[1024];
+ int n = 0;
+ StringWriter out = new StringWriter();
+
+ while (-1 != (n = buffIn.read(buffer))) {
+ out.write(buffer, 0, n);
+ }
+ ;
+ logger.debug("Stream: " + out);
+
+ JSONObject jsonRequest = new JSONObject(out.toString());
+ logger.debug("JSON request:" + jsonRequest.toString());
+
+ //RowIds
+ JSONArray ids = null;
+ ArrayList rowsIds=new ArrayList();
+ try {
+ ids = jsonRequest.getJSONArray("rowsIds");
+ } catch (JSONException e) {
+ logger.debug("rowsIds: " + e.getLocalizedMessage());
+ }
+
+ if (ids != null) {
+ for (int i = 0; i < ids.length(); i++) {
+ String filter = ids.getString(i);
+
+ rowsIds.add(filter);
+ }
+ }
+ logger.debug("rowsIds:" + rowsIds.size());
+
+ /*
+ DataSourceX dataSource = SessionUtil.getDataSource(
+ request.getSession(), tdSessionId);*/
+ String json=new String();// = dataSource.getRowsAsJson(rowsIds);
+
+
+ response.getOutputStream().write(json.getBytes());
+ response.setStatus(HttpServletResponse.SC_OK);
+ // logger.trace("JSON: "+json);
+ logger.trace("Response sent (" + json.length() + " bytes)");
+
+ } catch (Exception e) {
+ logger.error("Error processing the json data request", e);
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
+ "Error processing the json data request: " + e.getMessage());
+ return;
+ }
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/DataService.java b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/DataService.java
new file mode 100644
index 0000000..d735093
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/DataService.java
@@ -0,0 +1,5 @@
+package org.gcube.portlets.user.td.gwtservice.server.trservice;
+
+public class DataService {
+
+}