| Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2007 10:03:55
|
bruno.braga
Joined: 01/12/2006 09:37:16
Messages: 226
Offline
|
Alias, se tratar só o ActionException acho que não atrapalha, porque aquela exceção ali (que tem a ver com o consequence) não é uma outra exceção que foi jogada dentro do ActionException. É uma exceção nova.
Porém pode ter "problemas" futuros dependendo de como for usado o ActionExceptio (novos casos)... Por isso prefiro a idéia de uma exceção especifica. Ou não tratar todas as exceções do inneraction, tratar só as de reflection.
|
http://www.brunobraga.com.br
http://www.j2eespider.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/02/2007 07:32:15
|
bruno.braga
Joined: 01/12/2006 09:37:16
Messages: 226
Offline
|
Desistiram de tentar acertar isso?
|
http://www.brunobraga.com.br
http://www.j2eespider.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/02/2007 13:51:20
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Tentamos e nada. Alguma novidade por aí?
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2007 16:41:20
|
bruno.braga
Joined: 01/12/2006 09:37:16
Messages: 226
Offline
|
Você tentou algo q eu tinha falado?
Eu tinha falado muita coisa acho que não deu para entender direito...
Mas no InvocationChain tem esse código:
Code:
if (innerAction != null) {
Method m = getMethod(innerAction);
if (m != null) {
try {
result = (String) m.invoke(action, new Object[0]);
} catch(Exception e) {
throw new ActionException(e);
}
} else {
throw new ActionException("The inner action does not exist: " + innerAction);
}
} else {
result = action.execute();
}
Se vc fizer assim funciona:
Code:
if (innerAction != null) {
Method m = getMethod(innerAction);
if (m != null) {
result = (String) m.invoke(action, new Object[0]);
} else {
throw new ActionException("The inner action does not exist: " + innerAction);
}
} else {
result = action.execute();
}
Veja que eu não estou pedindo para deixar de tratar a exceção, estou pedindo para usar a mesma regra do else ali (quando não é innerAction)... Ou seja, não substituir a exceção real.
Tem outras formas de fazer mantendo o ActionException, mas esse é o mais simples de explicar e fazer... hehe
|
http://www.brunobraga.com.br
http://www.j2eespider.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/02/2007 14:05:58
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Fala Bruno !!!
Acho que consegui resolvi fazendo a alteraçao abaixo na classe ActionException.
Se alguém puder testar e dizer se ficou melhor. Acho que agora ficou show de bola !!!! Valeu pela ajuda Bruno!
Code:
package org.mentawai.core;
/**
* An exception that can happen when an action is executed.
*
* @author Sergio Oliveira
*/
public class ActionException extends Exception {
public ActionException() {
super();
}
public ActionException(Throwable e) {
super(e);
Throwable root = getRootCause(e);
this.setStackTrace(root.getStackTrace());
}
public ActionException(String msg) {
super(msg);
}
public ActionException(String msg, Throwable e) {
super(msg, e);
Throwable root = getRootCause(e);
this.setStackTrace(root.getStackTrace());
}
private static Throwable getRootCause(Throwable t) {
Throwable root = t.getCause();
if (root == null) return t;
while(root.getCause() != null) {
root = root.getCause();
}
return root;
}
}
Antes estava assim:
Code:
package org.mentawai.core;
/**
* An exception that can happen when an action is executed.
*
* @author Sergio Oliveira
*/
public class ActionException extends Exception {
public ActionException() {
super();
}
public ActionException(Throwable e) {
super(e);
this.setStackTrace(e.getStackTrace());
}
public ActionException(String msg) {
super(msg);
}
public ActionException(String msg, Throwable e) {
super(msg, e);
this.setStackTrace(e.getStackTrace());
}
}
|
Sergio Oliveira
|
|
|
 |
|
|