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