cziegeler 02/01/30 02:14:48
Modified: src/java/org/apache/cocoon/sitemap AbstractSitemap.java
Log:
Applied patch for "Throw actual exception in AbstractSitemap.invokeMethod"
PR: #6039
Submitted by: [EMAIL PROTECTED] (Peter Royal)
Revision Changes Path
1.4 +23 -5
xml-cocoon2/src/java/org/apache/cocoon/sitemap/AbstractSitemap.java
Index: AbstractSitemap.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/sitemap/AbstractSitemap.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AbstractSitemap.java 15 Jan 2002 07:42:02 -0000 1.3
+++ AbstractSitemap.java 30 Jan 2002 10:14:48 -0000 1.4
@@ -20,6 +20,7 @@
import org.apache.avalon.framework.logger.AbstractLoggable;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.cocoon.Constants;
+import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.acting.Action;
import org.apache.cocoon.components.CocoonComponentManager;
import org.apache.cocoon.components.classloader.RepositoryClassLoader;
@@ -37,6 +38,7 @@
import java.io.IOException;
import java.io.InputStream;
+import java.lang.reflect.InvocationTargetException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
@@ -47,7 +49,7 @@
* Base class for generated <code>Sitemap</code> classes
*
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Revision: 1.3 $ $Date: 2002/01/15 07:42:02 $
+ * @version CVS $Revision: 1.4 $ $Date: 2002/01/30 10:14:48 $
*/
public abstract class AbstractSitemap extends AbstractLoggable implements Sitemap,
Disposable, ThreadSafe {
private Context context;
@@ -368,16 +370,32 @@
*
* @exception Exception If an error occurs during method invocation
*/
- protected boolean invokeMethod(String methodName, Class[] argTypes, Object[]
argValues) throws Exception {
+ protected boolean invokeMethod(String methodName, Class[] argTypes, Object[]
argValues)
+ throws Exception {
try {
- getLogger().debug("Dynamically invoking " + methodName);
+ if ( this.getLogger().isDebugEnabled() )
+ this.getLogger().debug("Dynamically invoking " + methodName);
+
java.lang.reflect.Method method =
this.getClass().getDeclaredMethod(methodName, argTypes);
return ((Boolean)method.invoke(this, argValues)).booleanValue();
} catch (NoSuchMethodException e) {
getLogger().error("AbstractSitemap:invokeMethod()", e);
int prefix = methodName.indexOf("_");
- throw new Exception("Sitemap: " + methodName.substring(0, prefix) + "
'" +
- methodName.substring(prefix + 1) + "' not found");
+ throw new ProcessingException("Sitemap: " + methodName.substring(0,
prefix) + " '" +
+ methodName.substring(prefix + 1) + "' not found", e);
+ } catch (InvocationTargetException e) {
+ final Throwable t = e.getTargetException();
+
+ if (t == null) {
+ throw e;
+ } else if (t instanceof Error) {
+ throw (Error) t;
+ } else if (t instanceof Exception) {
+ throw (Exception) t;
+ } else {
+ getLogger().error("Unknown target exception type: " +
t.getClass().getName());
+ throw e;
+ }
} catch (Exception e) {
getLogger().error("AbstractSitemap:invokeMethod()", e);
throw e;
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]