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 2010/01/20 18:54:19 UTC
svn commit: r901307 - in /labs/magma/trunk:
foundation-website/src/main/java/org/apache/magma/website/utils/
website-administration/src/main/java/org/apache/magma/website/admin/
website-beansview/src/main/java/org/apache/magma/website/beansview/ websit...
Author: simoneg
Date: Wed Jan 20 17:54:18 2010
New Revision: 901307
URL: http://svn.apache.org/viewvc?rev=901307&view=rev
Log:
Better form action link rewriting, support for actions in smart list and in default cruds
Modified:
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/LinkHelper.java
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj
labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/AbstractCrudHandler.java
labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/AbstractListCrud.java
labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/CompleteCrudHandler.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/FormAction.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleTableWithSorting.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartListProducer.java
labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/PerformanceTest.java
labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowListTest.java
Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/LinkHelper.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/LinkHelper.java?rev=901307&r1=901306&r2=901307&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/LinkHelper.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/LinkHelper.java Wed Jan 20 17:54:18 2010
@@ -8,6 +8,7 @@
import java.util.List;
import org.apache.magma.basics.MagmaException;
+import org.apache.magma.basics.startup.Cycle;
import org.apache.magma.basics.utils.GenericClass;
import org.apache.magma.basics.utils.GenericClass.MethodDef;
import org.apache.magma.conversion.Converter;
@@ -37,6 +38,7 @@
private String baseMethod;
private Converter[] converters;
private Class<?>[] paramTypes;
+ private WebHandler targetHandler;
public LinkHelper(Method method) {
this(method.getName(), method.getParameterTypes());
@@ -62,8 +64,27 @@
}
+ public LinkHelper(WebHandler target, String methodName, Class<?>... parameters) {
+ this(methodName, parameters);
+ this.targetHandler = target;
+ }
+
+ public LinkHelper(WebHandler target, MethodDef method) {
+ this(method);
+ this.targetHandler = target;
+ }
+
+ public LinkHelper(WebHandler target, Method method) {
+ this(method);
+ this.targetHandler = target;
+ }
+
public String makeLink(Object... params) {
StringBuilder ret = new StringBuilder();
+ if (targetHandler != null) {
+ ret.append("magma:");
+ ret.append(targetHandler.getRelativePath());
+ }
ret.append(this.baseMethod);
if (params != null) {
if (params.length > converters.length) throw new MagmaException("Incorrect number of parameters for link to {0}, expecting {1} got {2}", this.baseMethod, this.converters.length, params.length);
@@ -106,6 +127,21 @@
}
/**
+ * Check if links created by this instance will work against the target handler.
+ */
+ public void check() {
+ findMethod(targetHandler.getClass(), true);
+ }
+
+ /**
+ * Check if links created by this instance will work against the target handler, without checking converters.
+ */
+ public void checkNoConverter() {
+ findMethod(targetHandler.getClass(), false);
+ }
+
+
+ /**
* Searches for the method resulting from this link in the specified handler.
* @param handlerClass A WebHandler to search in
* @param withConversion If true also checks for converters
Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj?rev=901307&r1=901306&r2=901307&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/MakeURLRewritingContextBased.aj Wed Jan 20 17:54:18 2010
@@ -20,11 +20,13 @@
import org.apache.magma.basics.startup.CycleThreadLocal;
import org.apache.magma.website.Producer;
import org.apache.magma.website.HtmlProducer;
+import org.apache.magma.website.WebHandler;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import org.apache.magma.website.Head;
+import org.apache.magma.website.HandlerSetup;
public aspect MakeURLRewritingContextBased {
@@ -35,6 +37,24 @@
execution(* HtmlProducer+.head(Head))
) && this(prod);
+
+ before(WebHandler h) : HandlerSetup.subHandle(h) || HandlerSetup.doMethod(h) || HandlerSetup.hiddenMethod(h) {
+ URLRewritingStream stream = Cycle.get().getRewriting();
+ if (stream == null) return;
+ try {
+ stream.pushBaseUrl(h.getRelativePath());
+ } catch (Throwable e) {
+ return;
+ }
+ }
+
+ after(WebHandler h) : HandlerSetup.subHandle(h) || HandlerSetup.doMethod(h) || HandlerSetup.hiddenMethod(h) {
+ URLRewritingStream stream = Cycle.get().getRewriting();
+ if (stream == null) return;
+ stream.popBaseUrl();
+ }
+
+
before(Producer prod) : producing(prod) {
URLRewritingStream stream = Cycle.get().getRewriting();
if (stream == null) return;
@@ -71,4 +91,6 @@
stream.popBaseUrl();
}
+
+
}
Modified: labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/AbstractCrudHandler.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/AbstractCrudHandler.java?rev=901307&r1=901306&r2=901307&view=diff
==============================================================================
--- labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/AbstractCrudHandler.java (original)
+++ labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/AbstractCrudHandler.java Wed Jan 20 17:54:18 2010
@@ -16,6 +16,8 @@
*/
package org.apache.magma.website.admin;
+import java.util.Set;
+
import org.apache.magma.basics.LocalizableString;
import org.apache.magma.basics.MagmaException;
import org.apache.magma.beans.MagmaBeanSupport;
@@ -28,6 +30,7 @@
import org.apache.magma.website.beansview.SmartForm;
import org.apache.magma.website.beansview.SmartList;
import org.apache.magma.website.producers.StringHtmlProducer;
+import org.apache.magma.website.utils.LinkHelper;
public class AbstractCrudHandler<T extends MagmaBeanSupport> extends WebHandler {
@@ -55,6 +58,7 @@
.setLink("doShow")
.setHeader(header)
.setElementsPerPage(listSize);
+
if (listLayers != null) {
ret.setLayers(listLayers);
}
@@ -71,6 +75,7 @@
protected HtmlProducer doDelete(T bean) {
new Database().delete(bean);
+ redirect(LinkHelper.makeLink("handleList"));
return handleList().do_default();
}
@@ -92,6 +97,7 @@
public HtmlProducer hiddenSave(T bean) {
new Database().save(bean);
+ redirect(LinkHelper.makeLink("doShow", bean));
return doShow(bean);
}
Modified: labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/AbstractListCrud.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/AbstractListCrud.java?rev=901307&r1=901306&r2=901307&view=diff
==============================================================================
--- labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/AbstractListCrud.java (original)
+++ labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/AbstractListCrud.java Wed Jan 20 17:54:18 2010
@@ -46,7 +46,7 @@
sl.compoundWith(
new StringHtmlProducer("<h1>" + new LocalizableString("List of {0}", property.getCollectionClass().getSimpleName()).toString() + "</h1>")
, CompoundType.HEAD);
- sl.addAction(new FormAction("Disconnect", "doDelete"));
+ sl.addAction(new FormAction(this, "Disconnect", "doDelete"));
if (isOverridden(AbstractListCrud.class, "handleNew")) {
sl.compoundWith(handleNew().do_default(), CompoundType.AFTER);
}
Modified: labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/CompleteCrudHandler.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/CompleteCrudHandler.java?rev=901307&r1=901306&r2=901307&view=diff
==============================================================================
--- labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/CompleteCrudHandler.java (original)
+++ labs/magma/trunk/website-administration/src/main/java/org/apache/magma/website/admin/CompleteCrudHandler.java Wed Jan 20 17:54:18 2010
@@ -21,6 +21,7 @@
import org.apache.magma.website.Producer;
import org.apache.magma.website.beansview.SmartForm;
import org.apache.magma.website.beansview.SmartList;
+import org.apache.magma.website.beansview.FormAction;
public class CompleteCrudHandler<T extends MagmaBeanSupport> extends AbstractCrudHandler<T> {
@@ -55,7 +56,11 @@
@Override
public SmartList handleList() {
- return super.handleList();
+ SmartList ret = super.handleList();
+ ret.addAction(new FormAction(this, "Show", "doShow", true, false));
+ ret.addAction(new FormAction(this, "Edit", "handleEdit", true, false));
+ ret.addAction(new FormAction(this, "Delete", "doDelete", true, false));
+ return ret;
}
@Override
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/FormAction.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/FormAction.java?rev=901307&r1=901306&r2=901307&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/FormAction.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/FormAction.java Wed Jan 20 17:54:18 2010
@@ -32,18 +32,20 @@
private String method;
private boolean parametrized = true;
private boolean validate;
+ private WebHandler targetHandler = null;
private LinkHelper linkHelper = null;
- public FormAction(String label, String method) {
+ public FormAction(WebHandler handler, String label, String method) {
this.label = label;
this.method = method;
+ this.targetHandler = handler;
}
- public FormAction(String label, String method, boolean parametrized, boolean validate) {
- this(label, method);
+ public FormAction(WebHandler handler, String label, String method, boolean parametrized, boolean validate) {
+ this(handler, label, method);
this.parametrized = parametrized;
this.validate = validate;
}
@@ -80,9 +82,9 @@
protected void createHelper(Class<?> beanClass) {
if (linkHelper == null) {
if (this.parametrized && beanClass != null) {
- linkHelper = new LinkHelper(this.method, beanClass);
+ linkHelper = new LinkHelper(this.targetHandler, this.method, beanClass);
} else {
- linkHelper = new LinkHelper(this.method);
+ linkHelper = new LinkHelper(this.targetHandler, this.method);
}
}
}
@@ -97,6 +99,15 @@
linkHelper.checkAgainstNoConverter(against);
}
+ public void check(Class<?> beanClass) {
+ createHelper(beanClass);
+ linkHelper.check();
+ }
+ public void checkNoConverter(Class<?> beanClass) {
+ createHelper(beanClass);
+ linkHelper.checkNoConverter();
+ }
+
public Method getMethod(Class<? extends WebHandler> on, MagmaBeanSupport bean) {
createHelper(bean.getClass());
return linkHelper.findMethod(on, false);
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleTableWithSorting.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleTableWithSorting.java?rev=901307&r1=901306&r2=901307&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleTableWithSorting.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleTableWithSorting.java Wed Jan 20 17:54:18 2010
@@ -11,6 +11,7 @@
@Override
protected void openHeaderCell(FieldNode fldn) {
super.openHeaderCell(fldn);
+ if (fldn == null) return;
buff.append("\n#set( $hasSortLink = $list.isSortable('");
buff.append(fldn.getId());
buff.append("') )\n");
@@ -23,22 +24,24 @@
@Override
protected void closeHeaderCell(FieldNode fldn) {
- buff.append("\n#if( $list.isSorted('");
- buff.append(fldn.getId());
- buff.append("'))\n");
- buff.append("\n#if ($list.desc)\n");
- buff.append("<img src=\"sortDesc.png\" alt=\"");
- buff.append(new LocalizableString("Sorted").toString());
- buff.append("\"/>");
- buff.append("\n#else\n");
- buff.append("<img src=\"sortAsc.png\" alt=\"");
- buff.append(new LocalizableString("Sorted").toString());
- buff.append("\"/>");
- buff.append("\n#end\n");
- buff.append("\n#if( $hasSortLink )\n");
- buff.append("</a>");
- buff.append("\n#end\n");
- buff.append("\n#end\n");
+ if (fldn != null) {
+ buff.append("\n#if( $list.isSorted('");
+ buff.append(fldn.getId());
+ buff.append("'))\n");
+ buff.append("\n#if ($list.desc)\n");
+ buff.append("<img src=\"sortDesc.png\" alt=\"");
+ buff.append(new LocalizableString("Sorted").toString());
+ buff.append("\"/>");
+ buff.append("\n#else\n");
+ buff.append("<img src=\"sortAsc.png\" alt=\"");
+ buff.append(new LocalizableString("Sorted").toString());
+ buff.append("\"/>");
+ buff.append("\n#end\n");
+ buff.append("\n#if( $hasSortLink )\n");
+ buff.append("</a>");
+ buff.append("\n#end\n");
+ buff.append("\n#end\n");
+ }
super.closeHeaderCell(fldn);
}
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java?rev=901307&r1=901306&r2=901307&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java Wed Jan 20 17:54:18 2010
@@ -78,8 +78,8 @@
public SmartForm(Object bean, String next) {
this.bean = (MagmaBeanSupport) bean;
- actions.add(new FormAction("Send", next, true, true));
- defaultAction = new FormAction("Send", next, true, true);
+ actions.add(new FormAction(getCreatingHandler(), "Send", next, true, true));
+ defaultAction = new FormAction(getCreatingHandler(), "Send", next, true, true);
}
public SmartForm(Object bean, String next, HtmlProducer header) {
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java?rev=901307&r1=901306&r2=901307&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java Wed Jan 20 17:54:18 2010
@@ -17,6 +17,7 @@
package org.apache.magma.website.beansview;
import java.lang.reflect.Method;
+import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -59,6 +60,7 @@
private Set<String> sortables = null;
private boolean withFilter = false;
+ protected List<FormAction> actions = null;
private HtmlProducer prodHeader = null;
private HtmlProducer prodFooter = null;
@@ -219,11 +221,13 @@
producer.setListStyle(listStyle);
producer.setLayers(layers);
producer.setLink(this.link);
+ producer.setActions(this.actions);
producer.setReferringHandler(getCreatingHandler());
producer.setElementCssClass(elementCssClass);
producer.setIntermediateCssClass(intermediateCssClass);
producer.setOuterCssClass(outerCssClass);
+
producer.compoundWith(prodHeader, CompoundType.HEAD);
if (withFilter && this.sessionReservedQbe != null) {
producer.compoundWith(handleFilter().do_default(), CompoundType.BEFORE);
@@ -407,4 +411,11 @@
return this;
}
+ public SmartList addAction(FormAction action) {
+ if (this.actions == null) this.actions = new ArrayList<FormAction>();
+ this.actions.add(action);
+ return this;
+ }
+
+
}
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartListProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartListProducer.java?rev=901307&r1=901306&r2=901307&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartListProducer.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartListProducer.java Wed Jan 20 17:54:18 2010
@@ -261,6 +261,10 @@
this.link = link;
}
+ public void setActions(List<FormAction> actions) {
+ this.actions = actions;
+ }
+
@Override
public String computeLinkURL(MagmaBeanSupport bean, String nodeid) {
// TODO this is ugly
Modified: labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/PerformanceTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/PerformanceTest.java?rev=901307&r1=901306&r2=901307&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/PerformanceTest.java (original)
+++ labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/PerformanceTest.java Wed Jan 20 17:54:18 2010
@@ -20,6 +20,10 @@
@Test
public void showBeanPerformances() throws Exception {
Settings.setEnvironment("prod");
+ System.gc();
+ Thread.sleep(1000);
+ System.gc();
+ System.gc();
Person p = new Person();
p.setName("Simone");
@@ -47,6 +51,10 @@
@Test
public void showFormPerformances() throws Exception {
Settings.setEnvironment("prod");
+ System.gc();
+ Thread.sleep(1000);
+ System.gc();
+ System.gc();
Person p = new Person();
p.setName("Simone");
Modified: labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowListTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowListTest.java?rev=901307&r1=901306&r2=901307&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowListTest.java (original)
+++ labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowListTest.java Wed Jan 20 17:54:18 2010
@@ -152,8 +152,8 @@
ShowList sbp = new ShowList(Person.class, lst);
sbp.referringHandler = this;
- sbp.addAction(new FormAction("Delete", "doDelete"));
- sbp.addAction(new FormAction("Promote", "doPromote"));
+ sbp.addAction(new FormAction(this, "Delete", "doDelete"));
+ sbp.addAction(new FormAction(this, "Promote", "doPromote"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
sbp.produce(baos);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org