Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.splout.db.qnode.rest;
  
  /*
   * #%L
   * Splout SQL Server
   * %%
   * Copyright (C) 2012 Datasalt Systems S.L.
   * %%
   * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  * 
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU Affero General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * #L%
  */
 
 
 
We don't use Jetty's rewrite handler because it has a bug which is not fixed until version 8.
 
 public class RewriteRuleHandler extends HandlerWrapper {
 
 	Pattern tablespaceInfo = Pattern.compile("/api/tablespace/([^/]*)(/)?");
 	Pattern tablespaceVersions = Pattern.compile("/api/tablespace/([^/]*)/versions(/)?");
 	Pattern dnodeInfo = Pattern.compile("/api/dnode/([^/]*)(/|/status)?");
 	Pattern query = Pattern.compile("/api/query/([^/]*)(/)?");

An implementation of HttpServletRequestWrapper which we can use to add more parameters if we want.
 
 	public static class MutableHttpRequest extends HttpServletRequestWrapper {
 
 		private HashMap<StringStringparams = new HashMap<StringString>();
 
 			super(request);
 		}
 
 		public String getParameter(String name) {
 			// if we added one, return that one
 			if(.get(name) != null) {
 				return .get(name);
 			}
 			// otherwise return what's in the original request
 			return req.getParameter(name);
 		}
 
 		public void addParameter(String nameString value) {
 			.put(namevalue);
 		}
 	}
 
 	public void handle(String targetHttpServletRequest requestHttpServletResponse response,
 	    int dispatchthrows IOExceptionServletException {

QueryServlet rewrite rules
 
 		Matcher m = .matcher(target);
 		if(m.matches()) {
 	  	String tablespace = m.group(1);
 			MutableHttpRequest req = new MutableHttpRequest(request);
 			req.addParameter("tablespace"tablespace);
 			super.handle("/api/query"reqresponsedispatch);						
   	}

AdminServlet rewrite rules
 
 		
 		if(target.startsWith("/api/overview")) {
 			MutableHttpRequest req = new MutableHttpRequest(request);
 			super.handle("/api/admin"reqresponsedispatch);
 		} 
 		
 		if(target.startsWith("/api/dnodelist")) {
 			MutableHttpRequest req = new MutableHttpRequest(request);
			super.handle("/api/admin"reqresponsedispatch);
		}
		if(target.startsWith("/api/tablespaces")) {
			MutableHttpRequest req = new MutableHttpRequest(request);
			super.handle("/api/admin"reqresponsedispatch);
		}
		m = .matcher(target);
		if(m.matches()) {
	  	String tablespace = m.group(1);
			MutableHttpRequest req = new MutableHttpRequest(request);
			req.addParameter("tablespace"tablespace);
			super.handle("/api/admin"reqresponsedispatch);						
  	} 
		m = .matcher(target);
		if(m.matches()) {
	  	String dnode = m.group(1);
			MutableHttpRequest req = new MutableHttpRequest(request);
			req.addParameter("dnode"dnode);
			super.handle("/api/admin"reqresponsedispatch);						
		if(m.matches()) {
	  	String tablespace = m.group(1);
			MutableHttpRequest req = new MutableHttpRequest(request);
			req.addParameter("tablespace"tablespace);
			super.handle("/api/admin"reqresponsedispatch);						


DeployRollbackServlet rewrite rules
		if(target.startsWith("/api/deploy")) {
			MutableHttpRequest req = new MutableHttpRequest(request);
			super.handle("/api/deploy"reqresponsedispatch);			
		}
		if(target.startsWith("/api/rollback")) {
			MutableHttpRequest req = new MutableHttpRequest(request);
			super.handle("/api/deploy"reqresponsedispatch);						
	  }
		super.handle(targetrequestresponsedispatch);
	}
New to GrepCode? Check out our FAQ X