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/30 15:29:29 UTC
svn commit: r700464 - in /labs/magma/trunk/website-beansview/src:
main/java/org/apache/magma/website/beansview/
main/java/org/apache/magma/website/beansview/html/
main/java/org/apache/magma/website/beansview/i18n/ main/resources/
main/resources/org/ ma...
Author: simoneg
Date: Tue Sep 30 06:29:28 2008
New Revision: 700464
URL: http://svn.apache.org/viewvc?rev=700464&view=rev
Log:
Various small bug fixes
Added SmartList
Added:
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/main/java/org/apache/magma/website/beansview/i18n/
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/i18n/Contextualizer.aj
labs/magma/trunk/website-beansview/src/main/resources/
labs/magma/trunk/website-beansview/src/main/resources/org/
labs/magma/trunk/website-beansview/src/main/resources/org/apache/
labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/
labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/
labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/
labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/sortAsc.png (with props)
labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/sortDesc.png (with props)
Removed:
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/html/
Modified:
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanFormProducer.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowBean.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java
labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/BeanFormProducerTest.java
labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/SmartFormBindingTest.java
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanFormProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanFormProducer.java?rev=700464&r1=700463&r2=700464&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanFormProducer.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanFormProducer.java Tue Sep 30 06:29:28 2008
@@ -19,6 +19,7 @@
import org.apache.magma.basics.LocalizableString;
import org.apache.magma.basics.LocalizableStringWithSubject;
import org.apache.magma.basics.MagmaException;
+import org.apache.magma.beans.BeanHandler;
import org.apache.magma.beans.MagmaBeanSupport;
import org.apache.magma.beans.PropertyInfo;
import org.apache.magma.conversion.BooleanConverter;
@@ -44,15 +45,15 @@
public class BeanFormProducer extends ShowBean {
- private static int MAX_FIELD_SIZE = 0;
- private Map<String, String> binding;
+ private static int MAX_FIELD_SIZE = 80;
private List<LocalizableStringWithSubject> errors;
private String code;
private Map<String, List<?>> lists = new HashMap<String, List<?>>();
+ private BeanHandler handler;
- public BeanFormProducer(Object bean, Map<String, String> binding, List<LocalizableStringWithSubject> errors, ViewCustomizer filter, String code) {
+ public BeanFormProducer(Object bean, List<LocalizableStringWithSubject> errors, ViewCustomizer filter, String code) {
super(bean, filter);
- this.binding = binding;
+ this.handler = this.bean.handler();
this.errors = errors;
this.code = code;
}
@@ -61,12 +62,14 @@
@Override
public void produce(OutputStream stream) {
- OutputStreamWriter out = new OutputStreamWriter(stream);
+ OutputStreamWriter out = new OutputStreamWriter(stream, "UTF-8");
try {
out.write("<form action=\"filled\" method=\"POST\">");
out.flush();
super.produce(stream);
- out.write("<input type=\"submit\" name=\"submit\"/>");
+ out.write("<input type=\"submit\" name=\"submit\" value=\"");
+ out.write(new LocalizableString("Send").toString());
+ out.write("\"/>");
out.write("</form>");
out.flush();
} catch (IOException e) {
@@ -76,17 +79,25 @@
@Override
protected void createLabelNodeOutput(LabelNode node, Writer out) throws IOException {
- out.append("<label for=\"" + node.getCorrespondingFieldId() + "\">");
- super.createLabelNodeOutput(node, out);
+ StringBuilder sb = new StringBuilder();
+ sb.append("MagmaLabel");
PropertyInfo property = node.getProperty();
List<LocalizableString> errs = findErrors(property);
if (errs.size() > 0) {
- createErrorsOutput(node, out, errs);
+ sb.append(" WithErrors");
}
-
CompoundValidator allvals = property.getValidator();
- if (allvals == null) return;
- if (!allvals.acceptsNulls()) {
+ if (allvals != null && !allvals.acceptsNulls()) {
+ sb.append(" NotNullable");
+ }
+
+ createAdditionalInfo(node, sb.toString(), out);
+ out.append("<label for=\"" + node.getCorrespondingFieldId() + "\">");
+ super.createLabelNodeOutput(node, out);
+ if (errs.size() > 0) {
+ createErrorsOutput(node, out, errs);
+ }
+ if (allvals != null && !allvals.acceptsNulls()) {
out.append(" *");
}
out.append("</label>");
@@ -129,12 +140,29 @@
}
}
+ private void commonFieldClasses(FieldNode node, StringBuilder sb) {
+ PropertyInfo property = node.getProperty();
+ List<LocalizableString> errs = findErrors(property);
+ if (errs.size() > 0) {
+ sb.append(" WithErrors");
+ }
+ CompoundValidator allvals = property.getValidator();
+ if (allvals != null && !allvals.acceptsNulls()) {
+ sb.append(" NotNullable");
+ }
+
+ }
+
protected void createBooleanField(FieldNode node, Writer out) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ sb.append("MagmaField CheckBox");
+ commonFieldClasses(node, sb);
+ createAdditionalInfo(node, sb.toString(), out);
out.append("<input type=\"checkbox\"");
createNameAndId(node, out);
out.append(" value=\"true\"");
- String val = binding.get(node.getId());
- if (((BooleanConverter)node.getProperty().getConverter()).fromString(val)) {
+ Boolean bool = (Boolean) ViewUtils.getNodeValue(node, bean);
+ if (bool != null && bool.booleanValue()) {
out.append(" checked=\"checked\"");
}
out.append("/>");
@@ -154,92 +182,105 @@
}
}
if (elements != null && elements.size() > 0) {
- if (elements.size() < 5) {
+ createDropDownField(node, elements, out);
+ /*
+ if (elements.size() < 3) {
createRadioField(node, elements, out);
- } else if (elements.size() < 50) {
+ } else if (elements.size() < 100) {
createDropDownField(node, elements, out);
} else {
// TODO
out.write("TODO .. too many to use drop down");
}
+ */
}
}
private void createRadioField(FieldNode node, List<?> elements, Writer out) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ sb.append("MagmaField RadioButton");
+ commonFieldClasses(node, sb);
+ createAdditionalInfo(node, sb.toString(), out);
+
PropertyInfo property = node.getProperty();
- Converter conv = (Converter)property.getConverter();
int i = 0;
CompoundValidator<Object> val = property.getValidator();
if ((val == null || (val != null && val.acceptsNulls())) && !elements.contains(null)) {
- createRadioButton(node, out, conv, i++, null);
+ createRadioButton(node, out, i++, null);
}
for (Object object : elements) {
- createRadioButton(node, out, conv, i++, object);
+ createRadioButton(node, out, i++, object);
}
}
- private void createRadioButton(FieldNode node, Writer out, Converter conv,
- int i, Object object) throws IOException {
- String val = conv.toString(object);
+ private void createRadioButton(FieldNode node, Writer out, int i, Object object) throws IOException {
+ String val = node.getProperty().toString(object);
out.append("<input type=\"radio\"");
createNameAndId(node, out, Integer.toString(i));
out.append(" value=\"");
out.append(val);
out.append("\"");
- String acval = binding.get(node.getId());
- if (acval != null && acval.equals(val)) {
- out.append(" checked=\"checked\"");
+ MagmaBeanSupport subbean = ViewUtils.findProperBean(node, bean, false);
+ if (subbean != null) {
+ String acval = subbean.handler().getStringValue(node.getProperty().getName());
+ if (acval != null && acval.equals(val)) {
+ out.append(" checked=\"checked\"");
+ }
}
out.append("/>");
out.append("<label for=\"");
out.append(getId(node, Integer.toString(i)));
out.append("\">");
if (object != null) {
- out.append(ViewUtils.getStringValue(object));
+ out.append(node.getProperty().toUser(object));
} else {
- // TODO how to handle this in i18n?
- out.append("None");
+ out.append(new LocalizableString("None").toString());
}
out.append("</label>");
}
protected void createDropDownField(FieldNode node, List<?> elements, Writer out) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ sb.append("MagmaField Select");
+ commonFieldClasses(node, sb);
+ createAdditionalInfo(node, sb.toString(), out);
+
out.append("<select");
createNameAndId(node, out);
out.append('>');
- PropertyInfo property = node.getProperty();
- Converter conv = (Converter)property.getConverter();
+ PropertyInfo property = node.getProperty();
CompoundValidator<Object> val = property.getValidator();
if ((val == null || (val != null && val.acceptsNulls())) && !elements.contains(null)) {
- createDropDownOption(node, out, conv, null);
+ createDropDownOption(node, out, null);
}
for (Object object : elements) {
- createDropDownOption(node, out, conv, object);
+ createDropDownOption(node, out, object);
}
out.append("</select>");
}
- private void createDropDownOption(FieldNode node, Writer out,
- Converter conv, Object object) throws IOException {
- String val = conv.toString(object);
+ private void createDropDownOption(FieldNode node, Writer out, Object object) throws IOException {
+ String val = node.getProperty().toString(object);
out.append("<option value=\"");
out.append(val);
out.append("\"");
- String acval = binding.get(node.getId());
- if (acval != null && acval.equals(val)) {
- out.append(" selected=\"selected\"");
+ MagmaBeanSupport subbean = ViewUtils.findProperBean(node, bean, false);
+ if (subbean != null) {
+ String acval = subbean.handler().getStringValue(node.getProperty().getName());
+ if (acval != null && acval.equals(val)) {
+ out.append(" selected=\"selected\"");
+ }
}
out.append(">");
if (object != null) {
- out.append(ViewUtils.getStringValue(object));
+ out.append(node.getProperty().toUser(object));
} else {
- // TODO how to handle this in i18n?
- out.append("None");
+ out.append(new LocalizableString("None").toString());
}
out.append("</option>");
}
@@ -255,6 +296,11 @@
}
protected void createTextAreaField(FieldNode node, Writer out) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ sb.append("MagmaField TextArea");
+ commonFieldClasses(node, sb);
+ createAdditionalInfo(node, sb.toString(), out);
+
PropertyInfo property = node.getProperty();
int maxSize = findInputMaxSize(property);
int size = Math.min(MAX_FIELD_SIZE, maxSize);
@@ -263,21 +309,32 @@
if (rows > 15) rows = 15;
out.append("<textarea rows=\"");
out.append(Integer.toString(rows));
- out.append("\" cols=\"");
- out.append(Integer.toString(size));
+ //out.append("\" cols=\"");
+ //out.append(Integer.toString(size));
out.append('\"');
createNameAndId(node, out);
out.append('>');
- String val = binding.get(node.getId());
- out.append(val == null ? "" : val);
+ MagmaBeanSupport subbean = ViewUtils.findProperBean(node, bean, false);
+ if (subbean != null) {
+ String val = subbean.handler().getFormattedStringValue(property.getName());
+ out.append(val == null ? "" : val);
+ }
out.append("</textarea>");
}
protected void createSimpleTextField(FieldNode node, Writer out) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ sb.append("MagmaField TextField");
+ commonFieldClasses(node, sb);
PropertyInfo property = node.getProperty();
-
int maxSize = findInputMaxSize(property);
- int size = Math.min(MAX_FIELD_SIZE, maxSize);
+ int size = maxSize;
+ if (size > MAX_FIELD_SIZE) size = 0;
+ if (size <= 0) {
+ sb.append(" NoSize");
+ }
+ createAdditionalInfo(node, sb.toString(), out);
+
out.append("<input type=\"text\"");
createNameAndId(node, out);
if (size > 0) {
@@ -291,15 +348,16 @@
out.append('\"');
}
out.append(" value=\"");
- String val = binding.get(node.getId());
- out.append(val == null ? "" : val);
+ MagmaBeanSupport subbean = ViewUtils.findProperBean(node, bean, false);
+ if (subbean != null) {
+ String val = subbean.handler().getFormattedStringValue(property.getName());
+ out.append(val == null ? "" : val);
+ }
out.append("\"/>");
}
protected int findInputMaxSize(PropertyInfo property) {
- CompoundValidator<Object> allvals = property.getValidator();
- if (allvals == null) return 0;
- return allvals.maxCharacterLength();
+ return property.getMaximumStringSize();
}
public void setLists(Map<String, List<?>> lists) {
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowBean.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowBean.java?rev=700464&r1=700463&r2=700464&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowBean.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowBean.java Tue Sep 30 06:29:28 2008
@@ -19,12 +19,15 @@
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
+import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.regex.Matcher;
+import org.apache.magma.basics.LocalizableString;
import org.apache.magma.basics.MagmaException;
import org.apache.magma.beans.MagmaBeanSupport;
import org.apache.magma.beans.PropertyInfo;
@@ -60,8 +63,8 @@
@Override
public void produce(OutputStream stream) {
Node root = bean.beanData().getViewTree(this.filter);
- if (root.getAllNodes().size() == 1) throw new MagmaException("Cannot display {0}, seems like no @View elements are present or they are not correctly connected to each other correctly using @Order, @Zone etc..", bean.getClass());
- OutputStreamWriter tables = new OutputStreamWriter(stream);
+ if (root.getAllNodes().size() == 1) throw new MagmaException("Cannot display {0}, seems like no @View elements are present or they are not correctly connected to each other correctly using @Order, @Zone etc..", bean.getClass());
+ StringWriter tables = new StringWriter();
try {
createTable(root, tables);
tables.flush();
@@ -71,6 +74,12 @@
} catch (IOException e) {
throw new MagmaException(e, "Error writing to output");
}
+ String fullform = tables.toString();
+ fullform = fullform.replaceAll(">\\|MAGMA-([^\\|]*)\\|"," $1>");
+ fullform = fullform.replaceAll("<td></td>", "<td> </td>");
+ OutputStreamWriter osw = new OutputStreamWriter(stream, "UTF-8");
+ osw.write(fullform);
+ osw.flush();
}
protected void createTable(Node node, Writer out) throws IOException {
@@ -92,7 +101,7 @@
protected void createOutsideZonedNodeTable(Node node, Writer out) throws IOException {
// Create a full table
- out.append("<table>");
+ out.append("<table class=\"LayoutTable OutsideZones\">");
out.append("<tr>");
// Create the table for the outside left
Zone zone = node.getZone(Side.OutsideLeft);
@@ -121,7 +130,7 @@
protected void createInsideZonedNodeTable(Node node, Writer out) throws IOException {
// Create a full table
- out.append("<table>");
+ out.append("<table class=\"LayoutTable InsideZones\">");
out.append("<tr>");
Zone zone = node.getZone(Side.InsideLeft);
if (zone != null && zone.getSlices() > 0) {
@@ -189,28 +198,30 @@
String sliceseparator = vertical ? "</td><td>" : "</td></tr><tr><td>";
String nodeseparator = vertical ? "</td></tr><tr><td>" : "</td><td>";
if (zone.getSlices() > 1) {
- out.append("<table>");
+ out.append("<table class=\"LayoutTable ZoneSlices " + (vertical ? "Vertical" : "Horizontal") + "\">");
out.append("<tr><td>");
}
for (int slice = 0; slice < zone.getSlices(); slice++) {
List<Node> sliceNodes = zone.getSliceNodes(slice);
- if (sliceNodes.size() > 1) {
- out.append("<table>");
- out.append("<tr><td>");
- }
- for (Iterator iterator = sliceNodes.iterator(); iterator.hasNext();) {
- Node acnode = (Node) iterator.next();
- createTable(acnode, out);
- if (iterator.hasNext()) {
- out.append(nodeseparator);
+ if (sliceNodes.size() > 0) {
+ if (sliceNodes.size() > 1) {
+ out.append("<table class=\"LayoutTable Slice\">");
+ out.append("<tr><td>");
+ }
+ for (Iterator iterator = sliceNodes.iterator(); iterator.hasNext();) {
+ Node acnode = (Node) iterator.next();
+ createTable(acnode, out);
+ if (iterator.hasNext()) {
+ out.append(nodeseparator);
+ }
+ }
+ if (sliceNodes.size() > 1) {
+ out.append("</tr></td>");
+ out.append("</table>");
+ }
+ if (slice + 1 < zone.getSlices()) {
+ out.append(sliceseparator);
}
- }
- if (sliceNodes.size() > 1) {
- out.append("</tr></td>");
- out.append("</table>");
- }
- if (slice + 1 < zone.getSlices()) {
- out.append(sliceseparator);
}
}
if (zone.getSlices() > 1) {
@@ -236,17 +247,34 @@
}
protected void createFieldNodeOutput(FieldNode node, Writer out) throws IOException {
- String valueString = ViewUtils.getStringNodeValue(node, this.bean);
- out.append(valueString);
+ createAdditionalInfo(node, "MagmaField", out);
+ Object value = ViewUtils.getNodeValue(node, bean);
+ String valueString = node.getProperty().toUser(value);
+ if (valueString != null && valueString.length() > 0) {
+ valueString = valueString.trim();
+ out.append(valueString);
+ }
}
protected void createLabelNodeOutput(LabelNode node, Writer out) throws IOException {
- out.append(node.getProperty().getViewSettings().getLabel());
+ createAdditionalInfo(node, "MagmaLabel", out);
+ out.append(new LocalizableString(node.getProperty().getViewSettings().getLabel()).toString());
}
protected void createGenericNodeOutput(Node node, Writer out) throws IOException {
//out.append("Node " + node.getId());
}
+ protected void createAdditionalInfo(Node node, String baseclass, Writer out) throws IOException {
+ out.append("|MAGMA-");
+ out.append("class=\"");
+ out.append(baseclass);
+ out.append("\" id=\"");
+ out.append(node.getId());
+ out.append("-cell");
+ out.append("\"");
+ out.append("|");
+ }
+
}
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java?rev=700464&r1=700463&r2=700464&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java Tue Sep 30 06:29:28 2008
@@ -16,6 +16,7 @@
*/
package org.apache.magma.website.beansview;
+import org.apache.magma.basics.LocalizableString;
import org.apache.magma.basics.MagmaException;
import org.apache.magma.basics.utils.GenericClass;
import org.apache.magma.basics.utils.GenericClass.MethodDef;
@@ -83,7 +84,12 @@
GenericClass gc = GenericClass.forClass(getCreatingHandler().getClass());
List<MethodDef> methods = gc.findMethods(this.link, new Class<?>[] { this.myclass });
if (methods.size() == 0) {
- throw new MagmaException("Cannot find method {0}.{1}({2}) to make the link", getCreatingHandler(), this.link, this.myclass);
+ methods = gc.findMethods(this.link, new Class<?>[] { null });
+ if (methods.size() == 0) {
+ throw new MagmaException("Cannot find method {0}.{1}({2}) to make the link", getCreatingHandler(), this.link, this.myclass);
+ } else if (methods.size() > 1) {
+ throw new MagmaException("There is more than one method {0}.{1}(), and no one is accepting explicitly {2} as a parameter. Cannot not make the link", getCreatingHandler(), this.link, this.myclass);
+ }
}
this.converter = Converters.getConverterFor(this.myclass);
if (this.converter == null) throw new MagmaException("Cannot find converter for {0}, cannot make link!", this.myclass);
@@ -104,6 +110,7 @@
openOuterTable(root, tables);
createHeader(root, tables);
createBody(root, tables);
+ createFooter(root, tables);
closeOuterTable(root, tables);
tables.flush();
} catch (UnsupportedEncodingException e) {
@@ -141,7 +148,11 @@
tables.write(createUrlFor(fldn, bean));
tables.write("\">");
}
- tables.write(ViewUtils.getStringNodeValue(fldn, bean));
+ Object value = ViewUtils.getNodeValue(fldn, bean);
+ String string = fldn.getProperty().toUser(value);
+ if (string != null) {
+ tables.write(string);
+ }
if (this.linkUrl != null) {
tables.write("</a>");
}
@@ -172,10 +183,14 @@
tables.write("</tr>");
tables.write("</thead>");
}
+
+ protected void createFooter(Node root, Writer tables) throws IOException {
+
+ }
protected void createFieldNodeHeader(FieldNode fldn, Writer tables) throws IOException {
tables.write("<th class=\"MagmaList-HeaderCell " + fldn.getId() + "\">");
- tables.write(fldn.getProperty().getViewListSettings().getLabel());
+ tables.write(new LocalizableString(fldn.getProperty().getViewListSettings().getLabel()).toString());
tables.write("</th>");
}
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=700464&r1=700463&r2=700464&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 Tue Sep 30 06:29:28 2008
@@ -83,7 +83,6 @@
public void setAllParams(Map<String, String[]> params) {
String mycode = getMyCode();
int mycodeLen = mycode.length();
- binding.clear();
for (Map.Entry<String, String[]> entry : params.entrySet()) {
if (entry.getKey().startsWith(mycode) && entry.getValue()[0].length() > 0) {
// TODO here we can bind multiple parameters (lists etc)
@@ -101,12 +100,9 @@
}
public HtmlProducer doShow() {
- if (binding.size() == 0) {
- prepareBinding();
- }
parametrize(header);
parametrize(footer);
- BeanFormProducer producer = new BeanFormProducer(this.bean, binding, errors, this.filter, getMyCode());
+ BeanFormProducer producer = new BeanFormProducer(this.bean, errors, this.filter, getMyCode());
producer.setLists(this.lists);
return new CompoundHtmlProducer(header, producer, footer);
}
@@ -153,7 +149,7 @@
h = properBean.handler();
handlers.put(properBean, h);
}
- h.setStringValue(((FieldNode)node).getProperty().getName(), binding.get(node.getId()));
+ h.setFormattedStringValue(((FieldNode)node).getProperty().getName(), binding.get(node.getId()));
}
}
@@ -181,17 +177,6 @@
}
}
- void prepareBinding() {
- Node root = bean.beanData().getViewTree(this.filter);
- Set<Node> allNodes = root.getAllNodes();
- for (Node node : allNodes) {
- if (node instanceof FieldNode) {
- String value = ViewUtils.getStringNodeValue((FieldNode)node, bean);
- binding.put(node.getId(), value);
- }
- }
- }
-
public SmartForm setHeader(HtmlProducer header) {
this.header = header;
return this;
Added: 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=700464&view=auto
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java (added)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java Tue Sep 30 06:29:28 2008
@@ -0,0 +1,217 @@
+package org.apache.magma.website.beansview;
+
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.beanutils.BeanUtils;
+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.beans.BeanData;
+import org.apache.magma.beans.MagmaBeanSupport;
+import org.apache.magma.beans.PropertyInfo;
+import org.apache.magma.database.Database;
+import org.apache.magma.view.tree.FieldNode;
+import org.apache.magma.view.tree.Node;
+import org.apache.magma.view.tree.PropertyNode;
+import org.apache.magma.view.tree.ViewCustomizer;
+import org.apache.magma.website.HtmlProducer;
+import org.apache.magma.website.WebHandler;
+import org.apache.magma.website.producers.CompoundHtmlProducer;
+import org.apache.magma.website.producers.ParametrizableProducer;
+
+public class SmartList<T extends MagmaBeanSupport> extends WebHandler {
+
+ private String query = null;
+ private Object[] queryParams = null;
+
+ private Set<String> sortables = null;
+
+ private HtmlProducer header = null;
+ private HtmlProducer footer = null;
+
+ private ViewCustomizer filter = null;
+
+ private int start = 0;
+ private int len = 10;
+ private String sorting = null;
+ private boolean desc = false;
+
+ private String link;
+ private Class<T> myclass;
+
+
+ public SmartList(Class<T> beanClass, String query, Object... queryParams) {
+ this.myclass = beanClass;
+ this.query = query;
+ this.queryParams = queryParams;
+ }
+
+ public HtmlProducer do_default() {
+ return doShow();
+ }
+
+ public HtmlProducer doShow() {
+ checkSortables();
+
+ Database db = new Database();
+ int count = -1;
+ StringBuilder countquery = new StringBuilder(this.query);
+ if (!this.query.toLowerCase().startsWith("select")) {
+ countquery.insert(0, "SELECT COUNT(x) FROM " + this.myclass.getName() + " x ");
+ } else {
+ int index = this.query.toLowerCase().indexOf("from");
+ if (index == -1) {
+ countquery = null;
+ } else {
+ countquery.delete(0, index);
+ countquery.insert(0, "SELECT COUNT(x) ");
+ }
+ }
+ if (countquery != null) {
+ count = db.queryNumber(countquery.toString(), this.queryParams).intValue();
+ }
+
+ StringBuilder acquery = new StringBuilder(this.query);
+ if (sorting != null && (sortables != null && sortables.contains(sorting))) {
+ BeanData bd = BeanData.getFor(this.myclass);
+ Node root = bd.getViewListTree(this.filter);
+ Node subnode = root.findById(sorting);
+ if (subnode != null && subnode instanceof FieldNode) {
+ String fieldJqlId = "x.";
+ List<PropertyInfo> parents = ((FieldNode)subnode).getLogicalPropertyParents();
+ if (parents != null) {
+ for (PropertyInfo info : parents) {
+ fieldJqlId += info.getName() + ".";
+ }
+ }
+ fieldJqlId += ((FieldNode)subnode).getProperty().getName();
+ acquery.append(" ORDER BY ");
+ acquery.append(fieldJqlId);
+ if (desc) acquery.append(" DESC");
+ }
+ }
+ List<T> list = db.query(myclass, start, len, acquery.toString(), this.queryParams);
+ parametrize(header);
+ parametrize(footer);
+ SmartListProducer producer = new SmartListProducer(myclass, list);
+ producer.setLen(len);
+ producer.setStart(start);
+ producer.setCount(count);
+ producer.setSorting(sorting);
+ producer.setDesc(desc);
+ producer.setSortables(sortables);
+ producer.setLink("doNext");
+ producer.setFilter(filter);
+ return new CompoundHtmlProducer(header, producer, footer);
+ }
+
+ protected void checkSortables() {
+ if (this.sortables != null) return;
+ BeanData bd = BeanData.getFor(this.myclass);
+ Node root = bd.getViewListTree(this.filter);
+ Set<Node> nodes = root.getAllNodes();
+ if (nodes.size() == 0) return;
+ this.sortables = new HashSet<String>();
+ for (Node node : nodes) {
+ if (node instanceof PropertyNode) {
+ PropertyInfo property = ((PropertyNode)node).getProperty();
+ Class type = property.getType();
+ if (type != null) {
+ if (String.class.isAssignableFrom(type) ||
+ Number.class.isAssignableFrom(type) ||
+ type.isPrimitive() ||
+ Boolean.class.isAssignableFrom(type) ||
+ Enum.class.isAssignableFrom(type)) {
+ sortables.add(node.getId());
+ }
+ }
+ }
+ }
+ }
+
+ public HtmlProducer doNext(T bean) {
+ WebHandler parent = getCreatingHandler();
+ GenericClass gc = GenericClass.forClass(parent.getClass());
+ List<MethodDef> methods = gc.findMethods(this.link, new Class<?>[] { bean.getClass() });
+ if (methods.size() == 0) {
+ throw new MagmaException("Cannot find method {0}.{1}({2}) to go after the form", getCreatingHandler(), link, bean.getClass());
+ }
+
+ Method method = methods.get(0).getBaseMethod();
+ try {
+ return (HtmlProducer) method.invoke(parent, bean);
+ } catch (Exception e) {
+ throw new MagmaException(e, "Error invoking {0}.{1}({2}) after proper firm completition.", parent.getClass(), link, bean.getClass());
+ }
+ }
+
+ public HtmlProducer doSort(boolean desc, String field) {
+ field = field.replace('/', '-');
+ this.sorting = field;
+ this.desc = desc;
+ return doShow();
+ }
+
+ public HtmlProducer doStart(int start) {
+ this.start = start;
+ return doShow();
+ }
+
+ protected void parametrize(HtmlProducer prod) {
+ if (prod instanceof ParametrizableProducer) {
+ ((ParametrizableProducer)prod).addParameter("start", start + 1);
+ ((ParametrizableProducer)prod).addParameter("page", (start / len) + 1);
+ }
+ }
+
+ public SmartList<T> setLink(String linkMethod) {
+ this.link = linkMethod;
+ return this;
+ }
+
+
+ public SmartList<T> setHeader(HtmlProducer header) {
+ this.header = header;
+ return this;
+ }
+
+ public SmartList<T> setFooter(HtmlProducer footer) {
+ this.footer = footer;
+ return this;
+ }
+
+ public SmartList<T> setFilter(ViewCustomizer filter) {
+ this.filter = filter;
+ return this;
+ }
+
+ public SmartList<T> addSortable(String nodeId) {
+ this.sortables.add(nodeId);
+ return this;
+ }
+
+ public void setSessionReservedSorting(String sorting) {
+ this.sorting = sorting;
+ }
+
+ public String getSessionReservedSorting() {
+ return this.sorting;
+ }
+
+ public void setSessionReservedDesc(Boolean desc) {
+ if (desc == null) {
+ this.desc = false;
+ } else {
+ this.desc = desc;
+ }
+ }
+
+ public Boolean getSessionReservedDesc() {
+ return this.desc;
+ }
+
+}
Added: 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=700464&view=auto
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartListProducer.java (added)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartListProducer.java Tue Sep 30 06:29:28 2008
@@ -0,0 +1,194 @@
+package org.apache.magma.website.beansview;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.magma.basics.LocalizableString;
+import org.apache.magma.view.tree.FieldNode;
+import org.apache.magma.view.tree.Node;
+import org.apache.magma.view.tree.ViewCustomizer;
+
+public class SmartListProducer extends ShowList {
+
+ private int start = 0;
+ private int len = 10;
+ private String sorting = null;
+ private boolean desc = false;
+ private ViewCustomizer filter = null;
+ private Set<String> sortables = null;
+ private int count = -1;
+
+ public <T> SmartListProducer(Class<T> myclass, Collection<? extends T> list) {
+ super(myclass, list);
+ }
+
+
+ public int getStart() {
+ return start;
+ }
+
+
+ public void setStart(int start) {
+ this.start = start;
+ }
+
+
+ public int getLen() {
+ return len;
+ }
+
+
+ public void setLen(int len) {
+ this.len = len;
+ }
+
+
+ public String getSorting() {
+ return sorting;
+ }
+
+
+ public void setSorting(String sorting) {
+ this.sorting = sorting;
+ }
+
+
+ public boolean isDesc() {
+ return desc;
+ }
+
+
+ public void setDesc(boolean desc) {
+ this.desc = desc;
+ }
+
+
+ public String getLink() {
+ return link;
+ }
+
+
+ public void setLink(String next) {
+ this.link = next;
+ }
+
+
+ public ViewCustomizer getFilter() {
+ return filter;
+ }
+
+
+ public void setFilter(ViewCustomizer filter) {
+ this.filter = filter;
+ }
+
+
+ public Set<String> getSortables() {
+ return sortables;
+ }
+
+
+ public void setSortables(Set<String> sortables) {
+ this.sortables = sortables;
+ }
+
+ @Override
+ public void produce(OutputStream stream) {
+ String pagination = createPagination();
+ stream.write(pagination.getBytes("UTF-8"));
+ super.produce(stream);
+ stream.write(pagination.getBytes("UTF-8"));
+ }
+
+
+ String createPagination() {
+ int currentpage = start / len;
+ int totalpage = count == -1 ? -1 : count / len;
+
+ StringBuilder ret = new StringBuilder();
+ ret.append("<div class=\"MagmaPagination\">");
+ ret.append("<div class=\"PaginationInfoPage\">");
+ ret.append(new LocalizableString("Page {0} on {1}", currentpage + 1, totalpage + 1));
+ ret.append("</div>");
+ ret.append("<div class=\"PaginationInfoElement\">");
+ ret.append(new LocalizableString("Element {0} to {1} on {2}", start + 1, Math.min(start + len, count), count));
+ ret.append("</div>");
+ ret.append("<div class=\"PaginationNavigation\">");
+ if (start > 0) {
+ ret.append(" <a class=\"PaginationPrevious\" href=\"start-" + Math.max(0, start - len) + "\">");
+ ret.append(new LocalizableString("Previous page"));
+ ret.append("</a>");
+ }
+ ret.append("<span class=\"PaginationPageList\">");
+ int po = Math.max(-3, currentpage * -1);
+ while (po < 7 && currentpage + po <= totalpage) {
+ if (po == 0) {
+ ret.append(" <b>");
+ ret.append(Integer.toString(currentpage + 1));
+ ret.append("</b> ");
+ } else {
+ ret.append(" <a href=\"start-" + Math.max(0, start + (len * po)) + "\">");
+ ret.append(Integer.toString(currentpage + po + 1));
+ ret.append("</a> ");
+ }
+ po++;
+ }
+ ret.append("</span>");
+
+ if (start + len < count) {
+ ret.append(" <a class=\"PaginationNext\" href=\"start-" + Math.max(0, start + len) + "\">");
+ ret.append(new LocalizableString("Next page"));
+ ret.append("</a>");
+ }
+
+ ret.append("</div>");
+ ret.append("</div>");
+ return ret.toString();
+ }
+
+
+ @Override
+ protected void createFieldNodeHeader(FieldNode fldn, Writer tables)
+ throws IOException {
+ if (sortables != null && (sortables != null && sortables.contains(fldn.getId()))) {
+ boolean sorted = this.sorting != null && this.sorting.equals(fldn.getId());
+ tables.write("<th class=\"MagmaList-HeaderCell " + fldn.getId() + " Sortable" + (sorted ? "Sorted" : "") + "\">");
+ String link = "sort-";
+ if (sorted) {
+ if (desc) {
+ link += "false-";
+ } else {
+ link += "true-";
+ }
+ } else {
+ link += "false-";
+ }
+ link += fldn.getId();
+ tables.write("<a href=\"" + link + "\">");
+ tables.write(new LocalizableString(fldn.getProperty().getViewListSettings().getLabel()).toString());
+ if (sorted) {
+ tables.write("<img src=\"");
+ if (desc) {
+ tables.write("sortDesc.png");
+ } else {
+ tables.write("sortAsc.png");
+ }
+ tables.write("\"/>");
+ }
+ tables.write("</th>");
+ } else {
+ super.createFieldNodeHeader(fldn, tables);
+ }
+ }
+
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+}
Added: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/i18n/Contextualizer.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/i18n/Contextualizer.aj?rev=700464&view=auto
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/i18n/Contextualizer.aj (added)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/i18n/Contextualizer.aj Tue Sep 30 06:29:28 2008
@@ -0,0 +1,52 @@
+package org.apache.magma.website.beansview.i18n;
+
+import org.apache.magma.basics.LocalizationContext;
+import org.apache.magma.beans.PropertyInfo;
+import org.apache.magma.view.tree.PropertyNode;
+import org.apache.magma.view.tree.Node;
+import org.apache.magma.website.beansview.ShowBean;
+import org.apache.magma.website.beansview.ShowList;
+
+public privileged aspect Contextualizer {
+
+ before(ShowBean sb) : execution(void ShowBean+.produce(..)) && this(sb) {
+ LocalizationContext current = LocalizationContext.current();
+ Object bean = sb.bean;
+ if (bean != null) {
+ current.push(bean);
+ }
+ }
+
+ void around() : (
+ execution(void ShowBean+.create*(Node,..)) ||
+ execution(void ShowList+.create*(Node,..))
+ ) {
+ Object[] args = thisJoinPoint.getArgs();
+ if (args == null || args.length == 0) {
+ proceed();
+ return;
+ }
+ if (!(args[0] instanceof PropertyNode)) {
+ proceed();
+ return;
+ }
+ PropertyNode node = (PropertyNode)args[0];
+ LocalizationContext current = LocalizationContext.current();
+ PropertyInfo property = node.getProperty();
+ current.push(property.getName());
+ try {
+ proceed();
+ } finally {
+ current.pop();
+ }
+ }
+
+ before(ShowList sl) : execution(void ShowList+.produce(..)) && this(sl) {
+ LocalizationContext current = LocalizationContext.current();
+ Class<?> clz = sl.myclass;
+ if (clz != null) {
+ current.push(clz);
+ }
+ }
+
+}
Added: labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/sortAsc.png
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/sortAsc.png?rev=700464&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/sortAsc.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/sortDesc.png
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/sortDesc.png?rev=700464&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/sortDesc.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/BeanFormProducerTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/BeanFormProducerTest.java?rev=700464&r1=700463&r2=700464&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/BeanFormProducerTest.java (original)
+++ labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/BeanFormProducerTest.java Tue Sep 30 06:29:28 2008
@@ -19,6 +19,8 @@
import static org.junit.Assert.assertThat;
import static org.junit.matchers.StringContains.containsString;
import org.apache.magma.basics.LocalizableStringWithSubject;
+import org.apache.magma.beans.MagmaBeanSupport;
+import org.apache.magma.view.tree.FieldNode;
import org.apache.magma.view.tree.LabelNode;
import org.apache.magma.view.tree.Node;
import org.apache.magma.view.tree.SimpleViewFilter;
@@ -45,12 +47,7 @@
p.setSurname("Gianni");
p.setEmail("simoneg@apache.org");
- HashMap<String, String> binding = new HashMap<String, String>();
- binding.put("name", "Simone");
- binding.put("surname", "Gianni");
- binding.put("email", "simoneg@apache.org");
-
- BeanFormProducer sbp = new BeanFormProducer(p, binding, new ArrayList<LocalizableStringWithSubject>(), null, "ABC");
+ BeanFormProducer sbp = new BeanFormProducer(p, new ArrayList<LocalizableStringWithSubject>(), null, "ABC");
sbp.setCompletePath("testing");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -68,7 +65,7 @@
}
}
- checkValueBinding(binding, result);
+ checkValueBinding(p, node, result);
}
@@ -87,19 +84,9 @@
p.setMother(pp);
- ViewCustomizer flt = new SimpleViewFilter("withmother", "+mother");
-
- HashMap<String, String> binding = new HashMap<String, String>();
- binding.put("name", "Simone");
- binding.put("middle", "Simone");
- binding.put("surname", "Gianni");
- binding.put("email", "simoneg@apache.org");
- binding.put("mother-name", "Mara");
- binding.put("mother-middle", "?");
- binding.put("mother-surname", "Scialanga");
- binding.put("mother-email", "boh@bih.it");
+ ViewCustomizer flt = new SimpleViewFilter("withmother", "+mother", "-mother-mother");
- BeanFormProducer sbp = new BeanFormProducer(p, binding, new ArrayList<LocalizableStringWithSubject>(), flt, "ABC");
+ BeanFormProducer sbp = new BeanFormProducer(p, new ArrayList<LocalizableStringWithSubject>(), flt, "ABC");
sbp.setCompletePath("testing");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -114,14 +101,19 @@
assertThat(result, containsString(((LabelNode)acnode).getProperty().getViewSettings().getLabel()));
}
}
- checkValueBinding(binding, result);
+ checkValueBinding(p, node, result);
}
- private void checkValueBinding(HashMap<String, String> binding, String result) {
- for (Map.Entry<String, String> bindentry : binding.entrySet()) {
- assertThat(result, containsString("name=\"ABC." + bindentry.getKey() + "\""));
- assertThat(result, containsString("value=\"" + bindentry.getValue() + "\""));
+ private void checkValueBinding(MagmaBeanSupport bean, Node node, String result) {
+ Set<Node> allNodes = node.getAllNodes();
+ for (Node acnode : allNodes) {
+ if (acnode instanceof FieldNode) {
+ String name = ((FieldNode)acnode).getProperty().getName();
+ String value = bean.handler().getFormattedStringValue(name);
+ assertThat(result, containsString("name=\"ABC." + acnode.getId() + "\""));
+ assertThat(result, containsString("value=\"" + value + "\""));
+ }
}
}
@@ -132,12 +124,7 @@
p.setSurname("Gianni");
p.setEmail("simoneg@apache.org");
- HashMap<String, String> binding = new HashMap<String, String>();
- binding.put("name", "Simone");
- binding.put("surname", "Gianni");
- binding.put("email", "simoneg@apache.org");
-
- BeanFormProducer sbp = new BeanFormProducer(p, binding, new ArrayList<LocalizableStringWithSubject>(), null, "ABC");
+ BeanFormProducer sbp = new BeanFormProducer(p, new ArrayList<LocalizableStringWithSubject>(), null, "ABC");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
sbp.produce(baos);
@@ -154,7 +141,7 @@
}
}
- checkValueBinding(binding, result);
+ checkValueBinding(p, node, result);
}
@Test
@@ -165,10 +152,7 @@
p.setEmail("simoneg@apache.org");
p.setDescription("bla bla bla");
- HashMap<String, String> binding = new HashMap<String, String>();
- binding.put("description", "bla bla bla");
-
- BeanFormProducer sbp = new BeanFormProducer(p, binding, new ArrayList<LocalizableStringWithSubject>(), null, "ABC");
+ BeanFormProducer sbp = new BeanFormProducer(p, new ArrayList<LocalizableStringWithSubject>(), null, "ABC");
sbp.setCompletePath("testing");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Modified: labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/SmartFormBindingTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/SmartFormBindingTest.java?rev=700464&r1=700463&r2=700464&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/SmartFormBindingTest.java (original)
+++ labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/SmartFormBindingTest.java Tue Sep 30 06:29:28 2008
@@ -39,27 +39,6 @@
public class SmartFormBindingTest {
@Test
- public void simpleReadBinding() throws Exception {
- Person p = new Person();
- p.setName("Simone");
- p.setSurname("Gianni");
- p.setEmail("simoneg@apache.org");
-
- SmartForm sf = new SmartForm(p, null);
-
- sf.prepareBinding();
-
- Map<String, String> binding = sf.binding;
- assertThat(binding.keySet(), hasItem(equalTo("name")));
- assertThat(binding.keySet(), hasItem(equalTo("surname")));
- assertThat(binding.keySet(), hasItem(equalTo("email")));
-
- assertThat(binding.get("name"), equalTo("Simone"));
- assertThat(binding.get("surname"), equalTo("Gianni"));
- assertThat(binding.get("email"), equalTo("simoneg@apache.org"));
- }
-
- @Test
public void simpleWriteBinding() throws Exception {
Person p = new Person();
Map<String, String> binding = new HashMap<String, String>();
@@ -77,7 +56,7 @@
}
@Test
- public void expandedReadAndWrite() throws Exception {
+ public void expandedWrite() throws Exception {
Person4 p = new Person4();
p.setName("Simone");
p.setMiddle("P");
@@ -95,26 +74,15 @@
SmartForm sf = new SmartForm(p, null).setFilter(flt);
- sf.prepareBinding();
-
- Map<String, String> binding = sf.binding;
- assertThat(binding.keySet(), hasItem(equalTo("name")));
- assertThat(binding.keySet(), hasItem(equalTo("surname")));
- assertThat(binding.keySet(), hasItem(equalTo("email")));
- assertThat(binding.keySet(), hasItem(equalTo("middle")));
- assertThat(binding.keySet(), hasItem(equalTo("mother-name")));
- assertThat(binding.keySet(), hasItem(equalTo("mother-surname")));
- assertThat(binding.keySet(), hasItem(equalTo("mother-email")));
- assertThat(binding.keySet(), hasItem(equalTo("mother-middle")));
-
- assertThat(binding.get("name"), equalTo("Simone"));
- assertThat(binding.get("surname"), equalTo("Gianni"));
- assertThat(binding.get("middle"), equalTo("P"));
- assertThat(binding.get("email"), equalTo("simoneg@apache.org"));
- assertThat(binding.get("mother-name"), equalTo("Mara"));
- assertThat(binding.get("mother-surname"), equalTo("Scialanga"));
- assertThat(binding.get("mother-middle"), equalTo("?"));
- assertThat(binding.get("mother-email"), equalTo("boh@bih.it"));
+ Map<String, String> binding = new HashMap<String, String>();
+ binding.put("name","Simone");
+ binding.put("surname","Gianni");
+ binding.put("middle","P");
+ binding.put("email","simoneg@apache.org");
+ binding.put("mother-name","Mara");
+ binding.put("mother-surname","Scialanga");
+ binding.put("mother-middle","?");
+ binding.put("mother-email","boh@bih.it");
Person4 otherp = new Person4();
sf = new SmartForm(otherp, null).setFilter(flt);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org