You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2008/09/19 19:48:15 UTC

svn commit: r697164 - in /labs/magma/trunk/foundation-website/src: main/java/org/apache/magma/website/ test/java/org/apache/magma/website/ test/java/org/apache/magma/website/teststuff/

Author: simoneg
Date: Fri Sep 19 10:48:15 2008
New Revision: 697164

URL: http://svn.apache.org/viewvc?rev=697164&view=rev
Log:
Fix and new test for LABS-179 : checking that hiddenMethods or doMethods are used for recalls, instead of non standard methods.

Added:
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/RecallingWebHandler.java
Modified:
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/SimpleWebHandler.java

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj?rev=697164&r1=697163&r2=697164&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj Fri Sep 19 10:48:15 2008
@@ -48,10 +48,9 @@
 	
 	public pointcut subHandle(WebHandler h) : execution(public WebHandler+ WebHandler+.handle*(..)) && this(h);
 	public pointcut doMethod(WebHandler h) : execution(public Producer+ WebHandler+.do*(..)) && this(h);
+	public pointcut hiddenMethod(WebHandler h) : execution(public Producer+ WebHandler+.hidden*(..)) && this(h);
 	
-
-	
-	Object around (WebHandler h) : (doMethod(h) || subHandle(h)) {
+	Object around (WebHandler h) : (doMethod(h) || subHandle(h) || hiddenMethod(h)) {
 		Object retObj = null;
 		if (!h.inited) { 
 			try {

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java?rev=697164&r1=697163&r2=697164&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java Fri Sep 19 10:48:15 2008
@@ -170,6 +170,75 @@
 		
 		assertEquals("report", parameters.getTemplateName());
 	}
+
+	/**
+	 * Tests ticket #12 + LABS-179
+	 * @throws Exception
+	 */
+	@Test
+	public void findAndbindOnlyOnceEvenOnNonDoMethods() throws Exception {
+		Mockery mock = new Mockery();
+		
+		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
+		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
+		final HttpSession session = mock.mock(HttpSession.class);
+		final Cookie loggedinCookie = new Cookie("loggedIn", "yesterday");
+		final Cookie[] cookies = new Cookie[] { loggedinCookie };
+		final Person person = Person.getPerson("Simone");
+		final MockServletOutputStream out = new MockServletOutputStream();
+		
+		mock.checking(new Expectations() {{
+			one(req).getPathInfo(); will(returnValue("/test/resend2"));
+			one(req).getContextPath(); will(returnValue(""));
+			one(req).getServletPath(); will(returnValue(""));
+			allowing(req).getSession(); will(returnValue(session));
+			allowing(req).getCookies(); will(returnValue(cookies));
+			one(req).setAttribute("__magma_url","/test/resend2");
+			allowing(req).getAttribute("__magma_url"); will(returnValue("/test/resend2"));
+			one(session).getAttribute("__magma_lastmain"); will(returnValue(null));			
+			one(session).setAttribute("__magma_lastmain","/test/report");
+			allowing(session).getAttribute("name"); will(returnValue("test name"));
+			allowing(req).getHeader("User-Agent"); will(returnValue("Mozilla"));
+			allowing(req).getParameter("page"); will(returnValue("1"));
+			allowing(req).getAttribute("user"); will(returnValue(person));
+			one(session).setAttribute("name", "test name");
+			one(session).setAttribute("name", "resend2");
+			allowing(resp).setHeader("User-Agent", "Mozilla");
+			allowing(resp).addCookie(loggedinCookie);
+			allowing(req).setAttribute("user", person);
+			allowing(resp).getOutputStream(); will(returnValue(out));
+		}});
+		
+		Dispatch disp = new Dispatch();
+		disp.doGet(req, resp);
+		
+		mock.assertIsSatisfied();
+		
+		FakeHtmlProducer prod = FakeHtmlProducer.getInstance();
+		assertNotNull(prod);
+		
+		assertEquals(SimpleWebHandler.class, prod.getCreatingHandler().getClass());
+		assertEquals("doReport", prod.getCreatingMethod().getName());
+		assertEquals("/test/", prod.getBasePath());
+		assertEquals("/test/report", prod.getCompletePath());
+				
+		Object[] params = prod.getParams();
+		assertNotNull(params);
+		
+		assertEquals("resend2", params[0]);
+		assertEquals("Mozilla", params[1]);
+		assertEquals(1, ((Integer)params[2]).intValue());
+		assertEquals("yesterday", params[3]);
+		assertSame(person, params[4]);
+		
+		ProducerParameters parameters = prod.getHPParameters();
+		Map<String, Object> parmap = parameters.getParameters();
+		assertTrue(parmap.containsKey("sessionName"));
+		assertTrue(parmap.containsKey("requestUser"));
+		assertTrue(parmap.containsKey("header_User__Agent"));
+		
+		assertEquals("report", parameters.getTemplateName());
+	}
 	
 	@Test
 	public void findAndChange() throws Exception {

Added: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/RecallingWebHandler.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/RecallingWebHandler.java?rev=697164&view=auto
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/RecallingWebHandler.java (added)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/RecallingWebHandler.java Fri Sep 19 10:48:15 2008
@@ -0,0 +1,36 @@
+package org.apache.magma.website.teststuff;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import org.apache.magma.basics.MagmaException;
+import org.apache.magma.basics.utils.GenericClass;
+import org.apache.magma.basics.utils.GenericClass.MethodDef;
+import org.apache.magma.website.HtmlProducer;
+import org.apache.magma.website.WebHandler;
+
+public class RecallingWebHandler extends WebHandler {
+
+	private String next;
+	
+	public RecallingWebHandler(String next) {
+		this.next = next;
+	}
+
+	public HtmlProducer do_default() {
+		WebHandler parent = getCreatingHandler();
+		GenericClass gc = GenericClass.forClass(parent.getClass());
+		List<MethodDef> methods = gc.findMethods(this.next, new Class<?>[] { });
+		if (methods.size() == 0) {
+			throw new MagmaException("Cannot find method {0}.{1}() to go after the form", getCreatingHandler(), this.next);					
+		}
+
+		Method method = methods.get(0).getBaseMethod();
+		try {
+			return (HtmlProducer) method.invoke(parent);
+		} catch (Exception e) {
+			throw new MagmaException(e, "Error invoking {0}.{1}() after proper firm completition.", parent.getClass(), this.next);
+		}		
+	}
+	
+}

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/SimpleWebHandler.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/SimpleWebHandler.java?rev=697164&r1=697163&r2=697164&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/SimpleWebHandler.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/SimpleWebHandler.java Fri Sep 19 10:48:15 2008
@@ -98,6 +98,16 @@
 		this.sessionName = "resend";
 		return doReport();
 	}
+
+	
+	public WebHandler handleResend2() {
+		return new RecallingWebHandler("hiddenResend");
+	}
+	
+	public HtmlProducer hiddenResend() {
+		this.sessionName = "resend2";
+		return doReport();
+	}
 	
 	public HtmlProducer doNeverRepeat() {
 		return unrepeatable(new FakeHtmlProducer());



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org