/**
  * Run REST validation on API, stores results into apiEntry.
  *
  * @param apiEntry informations about API.
  */
 private void validateTree(ApiEntry apiEntry) {
   RestValidator restValidator = new RestValidator(apiEntry.getResourceNodes());
   String validation = "";
   if (restValidator.validateApi()) {
     if (apiEntry.getQuestionnaires().evaluate().equals("")) {
       validation = "</p><h3>Great Job! The API is RESTful!</h3><p>";
     }
     validation =
         validation
             + "</p><h4>Automatically checked constraints</h4><p>Cache constraint OK!<br />Layered System constraint OK!<br />Uniform Interface OK! (for resources under the API structure)</p>";
   } else {
     ErrsAndWarns errsAndWarns = countErrsAndWarns(apiEntry);
     if (errsAndWarns.getErrorsCount() == 0) {
       validation =
           "</p><h4>Automatically checked constraints</h4><p>Cache constraint OK!<br />Layered System constraint OK!<br />Uniform Interface OK! (for resources under the API structure)<br /> But found "
               + errsAndWarns.getWarnsCount()
               + " warnings - see yellow marks below for details.</p>";
     } else {
       validation =
           "</p><h4>Automatically checked constraints</h4><p>Your API is not RESTful, found "
               + errsAndWarns.getErrorsCount()
               + " errors and "
               + errsAndWarns.getWarnsCount()
               + " warnings - see colored marks below for details.</p>";
     }
   }
   apiEntry.setMessage(validation);
 }
 /**
  * Generates view of questionnaire for JSP and stores it into apiEntry.
  *
  * @param apiEntry for which the view is generated.
  */
 private void generateViewOfQuestionnaires(ApiEntry apiEntry) {
   String evaluation = apiEntry.getQuestionnaires().evaluate();
   StringBuilder sb = new StringBuilder(apiEntry.getMessage());
   sb.append("\n<div id=\"questionnairesEvaluation\">");
   sb.append("<h4>Questionnaires evaluation</h4>");
   if (evaluation.equals("")) {
     sb.append("Client-Server OK!<br /> Stateless constraints OK!<br />");
   } else {
     if (!evaluation.contains("This is violation of REST constraint: Client-Server.")) {
       sb.append("Client-Server constraint OK!<br />");
     } else {
       sb.append("Client-Server constraint VIOLATION!<br />");
     }
     if (!evaluation.contains("This is violation of REST constraint: Stateless.")) {
       sb.append("Stateless constraint OK!<br />");
     } else {
       sb.append("Stateless constraint VIOLATION!<br />");
     }
     sb.append(evaluation);
   }
   sb.append("</div>\n");
   apiEntry.setMessage(sb.toString());
 }