public void service(SourceBean request, SourceBean response) {
    EngineAnalysisMetadata analysisMetadata = null;
    JSONObject meta;
    String rowMeta = "";

    logger.debug("IN");

    try {
      super.service(request, response);

      analysisMetadata = getEngineInstance().getAnalysisMetadata();

      meta = new JSONObject();
      meta.put("id", analysisMetadata.getId());
      meta.put("name", analysisMetadata.getName());
      meta.put("description", analysisMetadata.getDescription());
      meta.put("scope", analysisMetadata.getScope());

      try {
        writeBackToClient(new JSONSuccess(meta));
      } catch (IOException e) {
        throw new SpagoBIServiceException(
            SERVICE_NAME, "Impossible to write back the responce to the client", e);
      }

    } catch (Throwable t) {
      throw SpagoBIEngineServiceExceptionHandler.getInstance()
          .getWrappedException(getActionName(), getEngineInstance(), t);
    } finally {
      logger.debug("OUT");
    }
  }
  public void service(SourceBean request, SourceBean response) {

    logger.debug("IN");

    try {
      super.service(request, response);

      boolean validationResult = false;
      IStatement statement = getEngineInstance().getStatment();
      statement.setParameters(getEnv());
      String jpaQueryStr = statement.getQueryString();
      //	String sqlQuery = statement.getSqlQueryString();
      logger.debug("Validating query (HQL/JPQL): [" + jpaQueryStr + "]");
      //	logger.debug("Validating query (SQL): [" + sqlQuery + "]");
      try {
        IDataSet dataSet = QbeDatasetFactory.createDataSet(statement);

        Map userAttributes = new HashMap();
        UserProfile profile = (UserProfile) this.getEnv().get(EngineConstants.ENV_USER_PROFILE);
        Iterator it = profile.getUserAttributeNames().iterator();
        while (it.hasNext()) {
          String attributeName = (String) it.next();
          Object attributeValue = profile.getUserAttribute(attributeName);
          userAttributes.put(attributeName, attributeValue);
        }
        dataSet.addBinding("attributes", userAttributes);
        dataSet.addBinding("parameters", this.getEnv());
        dataSet.loadData(0, 1, 1);

        logger.info("Query execution did not throw any exception. Validation successful.");
        validationResult = true;
      } catch (Throwable t) {
        logger.info("Query execution thrown an exception. Validation failed.");
        logger.debug(t);
        validationResult = false;
      }
      JSONObject result = new JSONObject();
      result.put("validationResult", validationResult);
      writeBackToClient(new JSONSuccess(result));
    } catch (Throwable t) {
      throw SpagoBIEngineServiceExceptionHandler.getInstance()
          .getWrappedException(getActionName(), getEngineInstance(), t);
    } finally {
      logger.debug("OUT");
    }
  }