You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2008/09/19 05:49:57 UTC
svn commit: r696912 - in
/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview:
BeanFormProducer.java SmartForm.java
Author: simoneg
Date: Thu Sep 18 20:49:56 2008
New Revision: 696912
URL: http://svn.apache.org/viewvc?rev=696912&view=rev
Log:
LABS-161 : Magma is now fully generics aware
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/SmartForm.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=696912&r1=696911&r2=696912&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 Thu Sep 18 20:49:56 2008
@@ -169,20 +169,41 @@
private void createRadioField(FieldNode node, List<?> elements, Writer out) throws IOException {
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);
+ }
for (Object object : elements) {
- String val = conv.toString(object);
- out.append("<input type=\"radio\"");
- createNameAndId(node, out);
- out.append(" value=\"");
- out.append(val);
- out.append("\"");
- String acval = binding.get(node.getId());
- if (acval != null && acval.equals(val)) {
- out.append(" checked=\"checked\"");
- }
- out.append("/>");
+ createRadioButton(node, out, conv, i++, object);
+ }
+ }
+
+
+
+ private void createRadioButton(FieldNode node, Writer out, Converter conv,
+ int i, Object object) throws IOException {
+ String val = conv.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\"");
+ }
+ out.append("/>");
+ out.append("<label for=\"");
+ out.append(getId(node, Integer.toString(i)));
+ out.append("\">");
+ if (object != null) {
out.append(ViewUtils.getStringValue(object));
+ } else {
+ // TODO how to handle this in i18n?
+ out.append("None");
}
+ out.append("</label>");
}
protected void createDropDownField(FieldNode node, List<?> elements, Writer out) throws IOException {
@@ -191,22 +212,38 @@
out.append('>');
PropertyInfo property = node.getProperty();
Converter conv = (Converter)property.getConverter();
+ CompoundValidator<Object> val = property.getValidator();
+ if ((val == null || (val != null && val.acceptsNulls())) && !elements.contains(null)) {
+ createDropDownOption(node, out, conv, null);
+ }
for (Object object : elements) {
- String val = conv.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\"");
- }
- out.append(">");
- out.append(ViewUtils.getStringValue(object));
- out.append("</option>");
+ createDropDownOption(node, out, conv, object);
}
out.append("</select>");
}
+
+
+ private void createDropDownOption(FieldNode node, Writer out,
+ Converter conv, Object object) throws IOException {
+ String val = conv.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\"");
+ }
+ out.append(">");
+ if (object != null) {
+ out.append(ViewUtils.getStringValue(object));
+ } else {
+ // TODO how to handle this in i18n?
+ out.append("None");
+ }
+ out.append("</option>");
+ }
+
protected void createTextField(FieldNode node, Writer out) throws IOException {
PropertyInfo property = node.getProperty();
int maxSize = findInputMaxSize(property);
@@ -268,15 +305,24 @@
public void setLists(Map<String, List<?>> lists) {
this.lists = lists;
}
-
+
protected void createNameAndId(Node node, Writer out) throws IOException {
+ createNameAndId(node, out, null);
+ }
+
+
+ protected void createNameAndId(Node node, Writer out, String addToId) throws IOException {
out.append(" name=\"");
out.append(code);
out.append(".");
out.append(node.getId());
out.append("\" id=\"");
- out.append(node.getId());
+ out.append(getId(node, addToId));
out.append('\"');
}
+ protected String getId(Node node, String addToId) {
+ return node.getId() + (addToId != null ? "-" + addToId : "");
+ }
+
}
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=696912&r1=696911&r2=696912&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 Thu Sep 18 20:49:56 2008
@@ -19,6 +19,8 @@
import org.apache.magma.basics.LocalizableString;
import org.apache.magma.basics.LocalizableStringWithSubject;
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.BeanHandler;
import org.apache.magma.beans.MagmaBeanSupport;
import org.apache.magma.conversion.ConversionException;
@@ -120,12 +122,17 @@
protected HtmlProducer goToNext() {
WebHandler parent = getCreatingHandler();
- Class<? extends WebHandler> parentClass = parent.getClass();
+ GenericClass gc = GenericClass.forClass(parent.getClass());
+ List<MethodDef> methods = gc.findMethods(this.next, new Class<?>[] { this.bean.getClass() });
+ if (methods.size() == 0) {
+ throw new MagmaException("Cannot find method {0}.{1}({2}) to go after the form", getCreatingHandler(), this.next, this.bean.getClass());
+ }
+
+ Method method = methods.get(0).getBaseMethod();
try {
- Method method = parentClass.getMethod(this.next, this.bean.getClass());
return (HtmlProducer) method.invoke(parent, this.bean);
} catch (Exception e) {
- throw new MagmaException(e, "Error invoking {0}.{1}({2}) after proper firm completition.", parentClass.getSimpleName(), this.next, this.bean.getClass().getSimpleName());
+ throw new MagmaException(e, "Error invoking {0}.{1}({2}) after proper firm completition.", parent.getClass(), this.next, this.bean.getClass());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org