// Path: src/main/java/io/teknek/intravert/action/Action.java
// public interface Action {
//   void doAction(Operation operation, Response response, RequestContext request, ApplicationContext application);
// }
// 
// Path: src/main/java/io/teknek/intravert/model/Constants.java
// public class Constants {
//   public static final String STATUS = "status";
//   public static final String OK = "ok";
//   public static final String SESSION_ID = "session_id";
//   public static final String RESULT = "result";
// }
// 
// Path: src/main/java/io/teknek/intravert/model/Operation.java
// public class Operation {
//   private String type;
//   private String id;
//   private Map<String,Object> arguments;
//   
//   public Operation(){
//     arguments = new HashMap<String,Object>();
//   }
// 
//   public String getType() {
//     return type;
//   }
// 
//   public void setType(String type) {
//     this.type = type;
//   }
// 
//   public Map<String, Object> getArguments() {
//     return arguments;
//   }
// 
//   public void setArguments(Map<String, Object> arguments) {
//     this.arguments = arguments;
//   }
// 
//   public String getId() {
//     return id;
//   }
// 
//   public void setId(String id) {
//     this.id = id;
//   }
//   
//   public Operation withId(String id){
//     setId(id);
//     return this;
//   }
//   
//   public Operation withType(String type){
//     setType(type);
//     return this;
//   }
//   
//   public Operation withArguments(Map<String,Object> arguments){
//     setArguments(arguments);
//     return this;
//   }
//   
//   public Map<String,Object> withArgument(String name, Object value){
//     arguments.put(name, value);
//     return arguments;
//   }
// }
// 
// Path: src/main/java/io/teknek/intravert/model/Response.java
// public class Response {
//   private String exceptionMessage;
//   private String exceptionId;
//   private LinkedHashMap<String,Object> results;
//   private LinkedHashMap<String,Object> metaData;
//   
//   public Response(){
//     results = new LinkedHashMap<String,Object>();
//     metaData = new LinkedHashMap<String,Object>();
//   }
// 
//   public String getExceptionMessage() {
//     return exceptionMessage;
//   }
// 
//   public void setExceptionMessage(String exceptionMessage) {
//     this.exceptionMessage = exceptionMessage;
//   }
// 
//   public String getExceptionId() {
//     return exceptionId;
//   }
// 
//   public void setExceptionId(String exceptionId) {
//     this.exceptionId = exceptionId;
//   }
// 
//   public Map<String, Object> getResults() {
//     return results;
//   }
// 
//   public void setResults(LinkedHashMap<String, Object> results) {
//     this.results = results;
//   }
// 
//   public Map<String, Object> getMetaData() {
//     return metaData;
//   }
// 
//   public void setMetaData(LinkedHashMap<String, Object> metaData) {
//     this.metaData = metaData;
//   }
//   
// }
// 
// Path: src/main/java/io/teknek/intravert/service/ApplicationContext.java
// public class ApplicationContext {
// 
//  private Map<String,Filter> filters;
//   
//   public ApplicationContext(){
//     filters = new HashMap<>();
//   }
// 
//   public void putFilter(String name, Filter f){
//     filters.put(name, f);
//   }
//   
//   public Filter getFilter(String name){
//     Filter f = filters.get(name);
//     //todo get from column family
//     if (f == null){
//       throw new RuntimeException ("filter not found");
//     }
//     return f;
//   }
// }
// 
// Path: src/main/java/io/teknek/intravert/service/RequestContext.java
// public class RequestContext {
// 
//   private static final AtomicLong SESSION_ID = new AtomicLong(0);
//   private static LoadingCache<Long,Session> CACHE; 
//   private Session session;
//   
//   static {
//     CacheLoader <Long,Session> loader = new CacheLoader<Long,Session>(){
//       @Override
//       public Session load(Long id) throws Exception {
//         return new Session();
//       }
//     };
//     CACHE = CacheBuilder.newBuilder()
//             .maximumSize(10000)
//             //.expireAfterAccess(60, TimeUnit.SECONDS)
//             .build(loader);
//   }
//   
//   public RequestContext(){
//     
//   }
//   
//   public Session recoverSession(Long l){
//     try {
//       session = CACHE.get(l);
//     } catch (ExecutionException e) {
//       throw new RuntimeException(e);
//     }
//     return session;
//   }
//   
//   public Long saveSession(){
//     Long id = SESSION_ID.getAndIncrement();
//     CACHE.put(id, getSession());
//     return id;
//   }
//   
//   public Session getSession(){
//     if (session == null){
//       session = new Session();
//     }
//     return session;
//   }
//   
// }
// 
// Path: src/main/java/io/teknek/intravert/util/ResponseUtil.java
// public class ResponseUtil {
// 
//   public static List getDefaultHappy(){
//     Map m = new HashMap();
//     m.put(Constants.RESULT, Constants.OK);
//     return Arrays.asList(m);
//   }
// }


import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import io.teknek.intravert.action.Action;
import io.teknek.intravert.model.Constants;
import io.teknek.intravert.model.Operation;
import io.teknek.intravert.model.Response;
import io.teknek.intravert.service.ApplicationContext;
import io.teknek.intravert.service.RequestContext;
import io.teknek.intravert.util.ResponseUtil;
package io.teknek.intravert.action.impl;



public class SetKeyspaceAction implements Action {

  @Override
  public void doAction(Operation o, Response response, RequestContext request,
          ApplicationContext application) {
    String name = (String) o.getArguments().get("name");
// Path: src/main/java/io/teknek/intravert/action/Action.java
// public interface Action {
//   void doAction(Operation operation, Response response, RequestContext request, ApplicationContext application);
// }
// 
// Path: src/main/java/io/teknek/intravert/model/Constants.java
// public class Constants {
//   public static final String STATUS = "status";
//   public static final String OK = "ok";
//   public static final String SESSION_ID = "session_id";
//   public static final String RESULT = "result";
// }
// 
// Path: src/main/java/io/teknek/intravert/model/Operation.java
// public class Operation {
//   private String type;
//   private String id;
//   private Map<String,Object> arguments;
//   
//   public Operation(){
//     arguments = new HashMap<String,Object>();
//   }
// 
//   public String getType() {
//     return type;
//   }
// 
//   public void setType(String type) {
//     this.type = type;
//   }
// 
//   public Map<String, Object> getArguments() {
//     return arguments;
//   }
// 
//   public void setArguments(Map<String, Object> arguments) {
//     this.arguments = arguments;
//   }
// 
//   public String getId() {
//     return id;
//   }
// 
//   public void setId(String id) {
//     this.id = id;
//   }
//   
//   public Operation withId(String id){
//     setId(id);
//     return this;
//   }
//   
//   public Operation withType(String type){
//     setType(type);
//     return this;
//   }
//   
//   public Operation withArguments(Map<String,Object> arguments){
//     setArguments(arguments);
//     return this;
//   }
//   
//   public Map<String,Object> withArgument(String name, Object value){
//     arguments.put(name, value);
//     return arguments;
//   }
// }
// 
// Path: src/main/java/io/teknek/intravert/model/Response.java
// public class Response {
//   private String exceptionMessage;
//   private String exceptionId;
//   private LinkedHashMap<String,Object> results;
//   private LinkedHashMap<String,Object> metaData;
//   
//   public Response(){
//     results = new LinkedHashMap<String,Object>();
//     metaData = new LinkedHashMap<String,Object>();
//   }
// 
//   public String getExceptionMessage() {
//     return exceptionMessage;
//   }
// 
//   public void setExceptionMessage(String exceptionMessage) {
//     this.exceptionMessage = exceptionMessage;
//   }
// 
//   public String getExceptionId() {
//     return exceptionId;
//   }
// 
//   public void setExceptionId(String exceptionId) {
//     this.exceptionId = exceptionId;
//   }
// 
//   public Map<String, Object> getResults() {
//     return results;
//   }
// 
//   public void setResults(LinkedHashMap<String, Object> results) {
//     this.results = results;
//   }
// 
//   public Map<String, Object> getMetaData() {
//     return metaData;
//   }
// 
//   public void setMetaData(LinkedHashMap<String, Object> metaData) {
//     this.metaData = metaData;
//   }
//   
// }
// 
// Path: src/main/java/io/teknek/intravert/service/ApplicationContext.java
// public class ApplicationContext {
// 
//  private Map<String,Filter> filters;
//   
//   public ApplicationContext(){
//     filters = new HashMap<>();
//   }
// 
//   public void putFilter(String name, Filter f){
//     filters.put(name, f);
//   }
//   
//   public Filter getFilter(String name){
//     Filter f = filters.get(name);
//     //todo get from column family
//     if (f == null){
//       throw new RuntimeException ("filter not found");
//     }
//     return f;
//   }
// }
// 
// Path: src/main/java/io/teknek/intravert/service/RequestContext.java
// public class RequestContext {
// 
//   private static final AtomicLong SESSION_ID = new AtomicLong(0);
//   private static LoadingCache<Long,Session> CACHE; 
//   private Session session;
//   
//   static {
//     CacheLoader <Long,Session> loader = new CacheLoader<Long,Session>(){
//       @Override
//       public Session load(Long id) throws Exception {
//         return new Session();
//       }
//     };
//     CACHE = CacheBuilder.newBuilder()
//             .maximumSize(10000)
//             //.expireAfterAccess(60, TimeUnit.SECONDS)
//             .build(loader);
//   }
//   
//   public RequestContext(){
//     
//   }
//   
//   public Session recoverSession(Long l){
//     try {
//       session = CACHE.get(l);
//     } catch (ExecutionException e) {
//       throw new RuntimeException(e);
//     }
//     return session;
//   }
//   
//   public Long saveSession(){
//     Long id = SESSION_ID.getAndIncrement();
//     CACHE.put(id, getSession());
//     return id;
//   }
//   
//   public Session getSession(){
//     if (session == null){
//       session = new Session();
//     }
//     return session;
//   }
//   
// }
// 
// Path: src/main/java/io/teknek/intravert/util/ResponseUtil.java
// public class ResponseUtil {
// 
//   public static List getDefaultHappy(){
//     Map m = new HashMap();
//     m.put(Constants.RESULT, Constants.OK);
//     return Arrays.asList(m);
//   }
// }


// Path: src/main/java/io/teknek/intravert/action/impl/SetKeyspaceAction.java
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import io.teknek.intravert.action.Action;
import io.teknek.intravert.model.Constants;
import io.teknek.intravert.model.Operation;
import io.teknek.intravert.model.Response;
import io.teknek.intravert.service.ApplicationContext;
import io.teknek.intravert.service.RequestContext;
import io.teknek.intravert.util.ResponseUtil;

package io.teknek.intravert.action.impl;



public class SetKeyspaceAction implements Action {

  @Override
  public void doAction(Operation o, Response response, RequestContext request,
          ApplicationContext application) {
    String name = (String) o.getArguments().get("name");
    request.getSession().setCurrentKeyspace(name);