package net.sourceforge.stripes.controller;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

import junit.framework.TestCase;
import net.sourceforge.stripes.action.ActionBean;
import net.sourceforge.stripes.action.ActionBeanContext;
import net.sourceforge.stripes.action.DefaultHandler;
import net.sourceforge.stripes.action.ForwardResolution;
import net.sourceforge.stripes.action.Resolution;


public class AnnotatedClassActionResolverTest extends TestCase {

	public void testOverrideHandlerMethodReturnsSubtype() throws SecurityException, NoSuchMethodException {
		NameBasedActionResolver resolver = new NameBasedActionResolver();
		Map<String, Method> classMappings = new HashMap<String, Method>();
		resolver.processMethods(ExtendedBaseAction.class, classMappings);		
	}
	
	public static abstract class BaseAction implements ActionBean {

		private ActionBeanContext actionBeanContext;
		
		public ActionBeanContext getContext() {
			return actionBeanContext;
		}

		public void setContext(ActionBeanContext actionBeanContext) {
			this.actionBeanContext = actionBeanContext;
		}
		
		@DefaultHandler
		public abstract Resolution process();
		
	}
	
	public static class ExtendedBaseAction extends BaseAction {

		private ActionBeanContext actionBeanContext;
		
		public ActionBeanContext getContext() {
			return actionBeanContext;
		}

		public void setContext(ActionBeanContext actionBeanContext) {
			this.actionBeanContext = actionBeanContext;
		}
		
		@Override
		public ForwardResolution process() {
			return new ForwardResolution("xyz");
		}
		
	}
	
	
	
}

