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 2009/11/17 03:30:30 UTC
svn commit: r881104 - in /labs/magma/trunk:
foundation-website/src/main/java/org/apache/magma/website/utils/
website-beansview/src/main/java/org/apache/magma/website/beansview/
Author: simoneg
Date: Tue Nov 17 02:30:29 2009
New Revision: 881104
URL: http://svn.apache.org/viewvc?rev=881104&view=rev
Log:
LABS-221 : relax some LinkHelper checks, cause a FormAction does not always result in a real link
Modified:
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/LinkHelper.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/FormAction.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java
Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/LinkHelper.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/LinkHelper.java?rev=881104&r1=881103&r2=881104&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/LinkHelper.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/LinkHelper.java Tue Nov 17 02:30:29 2009
@@ -36,6 +36,7 @@
private String baseMethod;
private Converter[] converters;
+ private Class<?>[] paramTypes;
public LinkHelper(Method method) {
this(method.getName(), method.getParameterTypes());
@@ -50,13 +51,15 @@
this.baseMethod = methodName;
if (parameters == null) {
converters = new Converter[0];
+ paramTypes = new Class<?>[0];
} else {
converters = new Converter[parameters.length];
for (int i = 0; i < parameters.length; i++) {
converters[i] = Converters.getConverterFor(parameters[i]);
- if (converters[i] == null) throw new MagmaException("Cannot find a converter for {0}, needed to create link for {1}", parameters[i], methodName);
}
+ paramTypes = parameters;
}
+
}
public String makeLink(Object... params) {
@@ -91,16 +94,25 @@
* @param handler A WebHandler to check against.
*/
public void checkAgainst(Class<? extends WebHandler> handlerClass) {
- findMethod(handlerClass);
+ findMethod(handlerClass, true);
+ }
+
+ /**
+ * Check if given handler has a method for this "internal" link, without care for converters.
+ * @param handler A WebHandler to check against.
+ */
+ public void checkAgainstNoConverter(Class<? extends WebHandler> handlerClass) {
+ findMethod(handlerClass, false);
}
/**
* Searches for the method resulting from this link in the specified handler.
* @param handlerClass A WebHandler to search in
+ * @param withConversion If true also checks for converters
* @return A method in the specified class (or superclass)
* @throws MagmaException if a method is not found or if more than one method is found.
*/
- public Method findMethod(Class<? extends WebHandler> handlerClass) {
+ public Method findMethod(Class<? extends WebHandler> handlerClass, boolean withConversion) {
GenericClass gc = GenericClass.forClass(handlerClass);
// search for name
@@ -123,11 +135,26 @@
Class[] params = GenericClass.toRawClasses(genparams);
if (params.length != converters.length) continue;
boolean ok = true;
- for (int i = 0; i < params.length; i++) {
- if (!converters[i].converts(params[i])) {
- ok = false;
- break;
+ if (withConversion) {
+ // Check converters
+ for (int i = 0; i < params.length; i++) {
+ if (converters[i] == null) {
+ throw new MagmaException("Cannot find a converter suitable for {0} for creating links", params[i]);
+ }
+ if (!converters[i].converts(params[i])) {
+ ok = false;
+ break;
+ }
+ }
+ } else {
+ // Check registered types
+ for (int i = 0; i < params.length; i++) {
+ if (!params[i].isAssignableFrom(paramTypes[i])) {
+ ok = false;
+ break;
+ }
}
+
}
if (ok) {
if (found == null) {
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/FormAction.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/FormAction.java?rev=881104&r1=881103&r2=881104&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/FormAction.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/FormAction.java Tue Nov 17 02:30:29 2009
@@ -42,15 +42,6 @@
}
- private void checkMethod() {
- if (method != null) {
- if (!method.startsWith("do") && !method.startsWith("hidden")) {
- throw new MagmaException("A form action method must be either a doMethod or a hiddenMethod");
- }
- }
- }
-
-
public FormAction(String label, String method, boolean parametrized, boolean validate) {
this(label, method);
this.parametrized = parametrized;
@@ -96,14 +87,19 @@
}
}
- public void validate(Class<? extends WebHandler> against, Class<?> beanClass) {
+ public void checkAgainst(Class<? extends WebHandler> against, Class<?> beanClass) {
createHelper(beanClass);
linkHelper.checkAgainst(against);
}
+
+ public void checkAgainstNoConverter(Class<? extends WebHandler> against, Class<?> beanClass) {
+ createHelper(beanClass);
+ linkHelper.checkAgainstNoConverter(against);
+ }
public Method getMethod(Class<? extends WebHandler> on, MagmaBeanSupport bean) {
createHelper(bean.getClass());
- return linkHelper.findMethod(on);
+ return linkHelper.findMethod(on, false);
}
public String getMethodUrl(MagmaBeanSupport bean) {
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=881104&r1=881103&r2=881104&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 Nov 17 02:30:29 2009
@@ -106,7 +106,7 @@
}
if (this.actions != null) {
for (FormAction action : this.actions) {
- action.validate(referringHandler.getClass(), this.myclass);
+ action.checkAgainst(referringHandler.getClass(), this.myclass);
}
}
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=881104&r1=881103&r2=881104&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 Nov 17 02:30:29 2009
@@ -117,7 +117,7 @@
// Check validity of actions
if (this.actions != null) {
for (FormAction action : this.actions) {
- action.validate(getCreatingHandler().getClass(), bean.getClass());
+ action.checkAgainstNoConverter(getCreatingHandler().getClass(), bean.getClass());
}
}
parametrize(prodHeader);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org