// Path: src/main/java/org/droolsfiddle/rest/DrlParserService.java
// @Path("/drools")
// @Produces(MediaType.APPLICATION_JSON)
// @Consumes(MediaType.APPLICATION_JSON)
// public interface DrlParserService {
// 
//     @POST
//     @Path("/drlParser")
//     Request postDrlParser(Request iRequest) throws DroolsParserException;
// 
// }
// 
// Path: src/main/java/org/droolsfiddle/rest/model/Request.java
// public class Request {
// 
//   private int id;
//   private String data;
//   private String log;
//   private String json; 
//   private int nestingLimit; 
//   private boolean success;
//   private boolean hasLoop;
//   // private List<PackageDTO> packages;
//   private JsonSchemaNode jsonSchema;
//   private JsonSchemaNodeNew jsonSchemaNew;
//   // private Map<String,Object> jsonValue = new HashMap<>();
// 
// 
//   public int getId() {
//     return id;
//   }
// 
//   public void setId(int id) {
//     this.id = id;
//   }
// 
//   public String getData() {
//     return data;
//   }
// 
//   public void setData(String data) {
//     this.data = data;
//   }
// 
//   public String getLog() {
//     return log;
//   }
// 
//   public void setLog(String log) {
//     this.log = log;
//   }
//   
//   public String getJson() {
//     return json;
//   }
// 
//   public void setJson(String json) {
//     this.json = json;
//   }
//   
//   public int getNestingLimit() {
// 	    return nestingLimit;
// 	  }
// 
// 	  public void setNestingLimit(int nestingLimit) {
// 	    this.nestingLimit = nestingLimit;
// 	  }
// 
//   // public List<PackageDTO> getPackages() {
//   //  return packages;
//   //}
// 
//   // public void setPackages(List<PackageDTO> packages) {
//   //  this.packages = packages;
//   // }
// 
//   public JsonSchemaNode getJsonSchema() {
//     return jsonSchema;
//   }
// 
//   public void setJsonSchema(JsonSchemaNode jsonSchema) {
//     this.jsonSchema = jsonSchema;
//   }
// 
//   public JsonSchemaNodeNew getJsonSchemaNew() {
//     return jsonSchemaNew;
//   }
// 
//   public void setJsonSchemaNew(JsonSchemaNodeNew jsonSchemaNew) {
//     this.jsonSchemaNew = jsonSchemaNew;
//   }
// 
//   // public Map<String, Object> getJsonValue() {
//   //   return jsonValue;
//   // }
// 
//   // public void setJsonValue(Map<String, Object> jsonValue) {
//   //   this.jsonValue = jsonValue;
//   // }
// 
// 
//   public boolean isSuccess() {
//     return success;
//   }
// 
//   public void setSuccess(boolean success) {
//     this.success = success;
//   }
//   
//   public boolean isHasLoop() {
// 	  return hasLoop;
//   }
// 
//   public void setHasLoop(boolean hasLoop) {
// 	  this.hasLoop = hasLoop;
//   }
// 
// 
//   @Override
//   public String toString() {
//     return "Request{" +
//             "id=" + id +
//             ", data='" + data + '\'' +
//             ", log='" + log + '\'' +
//             ", JSON='" + json + '\'' +
//             ", success=" + success +
//             ", jsonSchema=" + jsonSchema +
//             '}';
//   }
// 
// }


import org.drools.compiler.compiler.DroolsParserException;
import org.droolsfiddle.rest.DrlParserService;
import org.droolsfiddle.rest.model.Request;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.extension.rest.client.ArquillianResteasyResource;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.Archive;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;

    public void postDrlParserTest(@ArquillianResteasyResource DrlParserService service) throws DroolsParserException {

        // Given

        Request request = new Request();

        request.setData("import java.util.Date\n" +
                "\n" +
                "declare Address\n" +
                "    name : String\n" +
                "end\n" +
                "\n" +
                "declare Person\n" +
                "    name : String\n" +
                "    dateOfBirth : Date\n" +
                "    address : Address\n" +
                "end\n" +
                "\n" +
                "rule \"Using a declared Type\"\n" +
                "when\n" +
                "    $p : Person( name == \"Bob\" )\n" +
                "then\n" +
                "    // Insert Mark, who is Bob's mate.\n" +
                "    Person mark = new Person();\n" +
                "    mark.setName(\"Mark\");\n" +
                "    insert( mark );\n" +
                "end");

        // When


// Path: src/main/java/org/droolsfiddle/rest/DrlParserService.java
// @Path("/drools")
// @Produces(MediaType.APPLICATION_JSON)
// @Consumes(MediaType.APPLICATION_JSON)
// public interface DrlParserService {
// 
//     @POST
//     @Path("/drlParser")
//     Request postDrlParser(Request iRequest) throws DroolsParserException;
// 
// }
// 
// Path: src/main/java/org/droolsfiddle/rest/model/Request.java
// public class Request {
// 
//   private int id;
//   private String data;
//   private String log;
//   private String json; 
//   private int nestingLimit; 
//   private boolean success;
//   private boolean hasLoop;
//   // private List<PackageDTO> packages;
//   private JsonSchemaNode jsonSchema;
//   private JsonSchemaNodeNew jsonSchemaNew;
//   // private Map<String,Object> jsonValue = new HashMap<>();
// 
// 
//   public int getId() {
//     return id;
//   }
// 
//   public void setId(int id) {
//     this.id = id;
//   }
// 
//   public String getData() {
//     return data;
//   }
// 
//   public void setData(String data) {
//     this.data = data;
//   }
// 
//   public String getLog() {
//     return log;
//   }
// 
//   public void setLog(String log) {
//     this.log = log;
//   }
//   
//   public String getJson() {
//     return json;
//   }
// 
//   public void setJson(String json) {
//     this.json = json;
//   }
//   
//   public int getNestingLimit() {
// 	    return nestingLimit;
// 	  }
// 
// 	  public void setNestingLimit(int nestingLimit) {
// 	    this.nestingLimit = nestingLimit;
// 	  }
// 
//   // public List<PackageDTO> getPackages() {
//   //  return packages;
//   //}
// 
//   // public void setPackages(List<PackageDTO> packages) {
//   //  this.packages = packages;
//   // }
// 
//   public JsonSchemaNode getJsonSchema() {
//     return jsonSchema;
//   }
// 
//   public void setJsonSchema(JsonSchemaNode jsonSchema) {
//     this.jsonSchema = jsonSchema;
//   }
// 
//   public JsonSchemaNodeNew getJsonSchemaNew() {
//     return jsonSchemaNew;
//   }
// 
//   public void setJsonSchemaNew(JsonSchemaNodeNew jsonSchemaNew) {
//     this.jsonSchemaNew = jsonSchemaNew;
//   }
// 
//   // public Map<String, Object> getJsonValue() {
//   //   return jsonValue;
//   // }
// 
//   // public void setJsonValue(Map<String, Object> jsonValue) {
//   //   this.jsonValue = jsonValue;
//   // }
// 
// 
//   public boolean isSuccess() {
//     return success;
//   }
// 
//   public void setSuccess(boolean success) {
//     this.success = success;
//   }
//   
//   public boolean isHasLoop() {
// 	  return hasLoop;
//   }
// 
//   public void setHasLoop(boolean hasLoop) {
// 	  this.hasLoop = hasLoop;
//   }
// 
// 
//   @Override
//   public String toString() {
//     return "Request{" +
//             "id=" + id +
//             ", data='" + data + '\'' +
//             ", log='" + log + '\'' +
//             ", JSON='" + json + '\'' +
//             ", success=" + success +
//             ", jsonSchema=" + jsonSchema +
//             '}';
//   }
// 
// }


// Path: src/test/java/org/droolsfiddle/it/DrlParserIT.java
import org.drools.compiler.compiler.DroolsParserException;
import org.droolsfiddle.rest.DrlParserService;
import org.droolsfiddle.rest.model.Request;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.extension.rest.client.ArquillianResteasyResource;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.Archive;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;

    public void postDrlParserTest(@ArquillianResteasyResource DrlParserService service) throws DroolsParserException {

        // Given

        Request request = new Request();

        request.setData("import java.util.Date\n" +
                "\n" +
                "declare Address\n" +
                "    name : String\n" +
                "end\n" +
                "\n" +
                "declare Person\n" +
                "    name : String\n" +
                "    dateOfBirth : Date\n" +
                "    address : Address\n" +
                "end\n" +
                "\n" +
                "rule \"Using a declared Type\"\n" +
                "when\n" +
                "    $p : Person( name == \"Bob\" )\n" +
                "then\n" +
                "    // Insert Mark, who is Bob's mate.\n" +
                "    Person mark = new Person();\n" +
                "    mark.setName(\"Mark\");\n" +
                "    insert( mark );\n" +
                "end");

        // When


        final Request response = service.postDrlParser(request);
