// Path: src/main/java/org/mockenize/model/ScriptBean.java
// @Data
// public class ScriptBean implements Serializable, Cacheable {
// 
// 	private static final long serialVersionUID = 1L;
// 
// 	private String name;
// 
// 	private String value;
// 
// 	public ScriptBean(String name, String value) {
// 		this.name = name;
// 		this.value = value;
// 	}
// 
// 	@Override
// 	public String getKey() {
// 		return this.name;
// 	}
// }
// 
// Path: src/main/java/org/mockenize/service/ScriptService.java
// @Service
// public class ScriptService {
// 
// 	private static final String ENGINE_NAME = "JavaScript";
// 
// 	private static final String DEFAUL_FUNCTION_NAME = "_func";
// 
// 	private static final String PARSE_FUNCTION = "function _func(url, body) {"
// 			+ "obj=null;try{obj=JSON.parse(body)}catch(ex){};" + "ret = func(url, body, obj);"
// 			+ "try{return (typeof ret === 'string') ? ret : JSON.stringify(ret)}catch(ex){};" + "return ret};";
// 
// 	private static final String EMPTY = "";
// 
// 	@Autowired
// 	private ObjectMapper objectMapper;
// 
// 	@Autowired
// 	private ScriptRespository scriptRespository;
// 
// 	public ScriptBean getByKey(String jsName) {
// 		ScriptBean scriptBean = scriptRespository.findByKey(jsName);
// 
// 		if (scriptBean == null) {
// 			throw new ScriptNotFoundException(jsName);
// 		}
// 
// 		return scriptBean;
// 	}
// 
// 	public ScriptBean delete(ScriptBean scriptBean) {
// 		return scriptRespository.delete(scriptBean.getName());
// 	}
// 
// 	public Collection<ScriptBean> deleteAll() {
// 		return scriptRespository.deleteAll();
// 	}
// 
// 	public void save(ScriptBean scriptBean) {
// 		scriptRespository.save(scriptBean);
// 	}
// 
// 	public Collection<ScriptBean> getAll() {
// 		return scriptRespository.findAll();
// 	}
// 
// 	public JsonNode execute(ScriptBean scriptBean, String uri, JsonNode body) {
// 		try {
// 			ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName(ENGINE_NAME);
// 			scriptEngine.eval(PARSE_FUNCTION + scriptBean.getValue());
// 			Invocable invocable = (Invocable) scriptEngine;
// 			String stringBody = body != null ? body.toString() : EMPTY;
// 			String ret = String.valueOf(invocable.invokeFunction(DEFAUL_FUNCTION_NAME, uri, stringBody));
// 			return parse(ret);
// 		} catch (NoSuchMethodException | ScriptException | IOException e) {
// 			throw new ScriptExecutionException(e);
// 		}
// 	}
// 
// 	private JsonNode parse(String ret) throws IOException {
// 		try {
// 			return objectMapper.readTree(ret);
// 		} catch (JsonParseException parseException) {
// 			return objectMapper.createObjectNode().textNode(ret);
// 		}
// 	}
// 
// 	public Collection<String> getAllKeys() {
// 		return scriptRespository.findAllKeys();
// 	}
// 
// }


import java.util.Collection;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.mockenize.model.ScriptBean;
import org.mockenize.service.ScriptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
package org.mockenize.controller;




@Path("/_mockenize/scripts")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Controller
public class ScriptsController {

	@Autowired
// Path: src/main/java/org/mockenize/model/ScriptBean.java
// @Data
// public class ScriptBean implements Serializable, Cacheable {
// 
// 	private static final long serialVersionUID = 1L;
// 
// 	private String name;
// 
// 	private String value;
// 
// 	public ScriptBean(String name, String value) {
// 		this.name = name;
// 		this.value = value;
// 	}
// 
// 	@Override
// 	public String getKey() {
// 		return this.name;
// 	}
// }
// 
// Path: src/main/java/org/mockenize/service/ScriptService.java
// @Service
// public class ScriptService {
// 
// 	private static final String ENGINE_NAME = "JavaScript";
// 
// 	private static final String DEFAUL_FUNCTION_NAME = "_func";
// 
// 	private static final String PARSE_FUNCTION = "function _func(url, body) {"
// 			+ "obj=null;try{obj=JSON.parse(body)}catch(ex){};" + "ret = func(url, body, obj);"
// 			+ "try{return (typeof ret === 'string') ? ret : JSON.stringify(ret)}catch(ex){};" + "return ret};";
// 
// 	private static final String EMPTY = "";
// 
// 	@Autowired
// 	private ObjectMapper objectMapper;
// 
// 	@Autowired
// 	private ScriptRespository scriptRespository;
// 
// 	public ScriptBean getByKey(String jsName) {
// 		ScriptBean scriptBean = scriptRespository.findByKey(jsName);
// 
// 		if (scriptBean == null) {
// 			throw new ScriptNotFoundException(jsName);
// 		}
// 
// 		return scriptBean;
// 	}
// 
// 	public ScriptBean delete(ScriptBean scriptBean) {
// 		return scriptRespository.delete(scriptBean.getName());
// 	}
// 
// 	public Collection<ScriptBean> deleteAll() {
// 		return scriptRespository.deleteAll();
// 	}
// 
// 	public void save(ScriptBean scriptBean) {
// 		scriptRespository.save(scriptBean);
// 	}
// 
// 	public Collection<ScriptBean> getAll() {
// 		return scriptRespository.findAll();
// 	}
// 
// 	public JsonNode execute(ScriptBean scriptBean, String uri, JsonNode body) {
// 		try {
// 			ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName(ENGINE_NAME);
// 			scriptEngine.eval(PARSE_FUNCTION + scriptBean.getValue());
// 			Invocable invocable = (Invocable) scriptEngine;
// 			String stringBody = body != null ? body.toString() : EMPTY;
// 			String ret = String.valueOf(invocable.invokeFunction(DEFAUL_FUNCTION_NAME, uri, stringBody));
// 			return parse(ret);
// 		} catch (NoSuchMethodException | ScriptException | IOException e) {
// 			throw new ScriptExecutionException(e);
// 		}
// 	}
// 
// 	private JsonNode parse(String ret) throws IOException {
// 		try {
// 			return objectMapper.readTree(ret);
// 		} catch (JsonParseException parseException) {
// 			return objectMapper.createObjectNode().textNode(ret);
// 		}
// 	}
// 
// 	public Collection<String> getAllKeys() {
// 		return scriptRespository.findAllKeys();
// 	}
// 
// }


// Path: src/main/java/org/mockenize/controller/ScriptsController.java
import java.util.Collection;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.mockenize.model.ScriptBean;
import org.mockenize.service.ScriptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

package org.mockenize.controller;




@Path("/_mockenize/scripts")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Controller
public class ScriptsController {

	@Autowired
	private ScriptService scriptService;