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>&nbsp;</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