All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.daveayan.caret.HttpServletRequestToMockTransformer Maven / Gradle / Ivy

The newest version!
package com.daveayan.caret;

import java.util.Enumeration;
import java.util.HashSet;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import org.springframework.mock.web.MockHttpServletRequest;

import com.daveayan.mirage.ReflectionUtils;
import com.daveayan.transformers.CanTransform;
import com.daveayan.transformers.Context;

public class HttpServletRequestToMockTransformer implements CanTransform {

	public boolean canTransform(Object from, Class to, String fieldName, Context context) {
		if(ReflectionUtils.classImplements(from.getClass(), HttpServletRequest.class)) {
			if(ReflectionUtils.classIsOfType(to, MockHttpServletRequest.class)) {
				return true;
			}
		}
		return false;
	}

	public Object transform(Object from, Class to, String fieldName, Context context) {
		MockHttpServletRequest outRequest = new MockHttpServletRequest();
		HttpServletRequest inRequest = (HttpServletRequest) from;

		Set exceptAttributeNames = (Set) context.get("exceptAttributes");
		if(exceptAttributeNames == null || exceptAttributeNames.isEmpty()) {
			exceptAttributeNames = new HashSet();
		}
		Set attributeNames = (Set) context.get("attributes");
		if(attributeNames == null || attributeNames.isEmpty()) {
			attributeNames = new HashSet();
			Enumeration attributes = inRequest.getAttributeNames();
			int i = 0;
			while(attributes.hasMoreElements()) {
				String key = attributes.nextElement();
				attributeNames.add(key);
				i++;
			}
		}

		for(String name: attributeNames) {
			if(exceptAttributeNames.contains(name)) {
				continue;
			}
			Object value = inRequest.getAttribute(name);
			if(value != null) {
				outRequest.setAttribute(name, value);
			}
		}

		Enumeration params = inRequest.getParameterNames();
		while(params.hasMoreElements()) {
			String key = (String) params.nextElement();
			String value = inRequest.getParameter(key);
			if(value != null) {
				outRequest.setParameter(key, value);
			}
		}

		outRequest.setCharacterEncoding(inRequest.getCharacterEncoding());
		outRequest.setContentType(inRequest.getContentType());
		outRequest.setContextPath(inRequest.getContextPath());

		return outRequest;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy