> >
> > i'm also a bit confused why PluginDeclarationRule throws
> > ClassNotFoundException's when require attributes are missing from the xml.
> > this seems a wrong to me. (i've left these for the moment since it's
> > easier for people to examine the code when it's in cvs.) there are also a
> > few Exception's thrown. i'd prefer specific subclasses to be thrown since
> > this allows users (if they wish) to diagnose the original problem.
>
> Well, I chose ClassNotFound partly because the result of these mandatory
> attributes being missing is that we don't know which class to
> instantiate. Isn't that sort of like ClassNotFound? :-)
>
> Any suggestions for superior options are welcome. I agree it could be
> improved. This code was written before the PluginInvalidInputException
> class existed; would this be more appropriate?
>
> If there are any raw "Exception" classes being thrown, these are just
> remnants of code before cleanup and should definitely be fixed.
Attached is a patch to fix the locations where ClassNotFoundException
and Exception are being thrown. Class PluginInvalidInputException is
thrown instead.
Patch is based from digester root directory.
Regards,
Simon
Index: src/java/org/apache/commons/digester/plugins/Declaration.java
===================================================================
RCS file: /home/cvspublic/jakarta-commons/digester/src/java/org/apache/commons/digester/plugins/Declaration.java,v
retrieving revision 1.2
diff -u -r1.2 Declaration.java
--- src/java/org/apache/commons/digester/plugins/Declaration.java 5 Oct 2003 15:05:38 -0000 1.2
+++ src/java/org/apache/commons/digester/plugins/Declaration.java 6 Oct 2003 00:00:11 -0000
@@ -126,8 +126,7 @@
/**
* Constructor.
*/
- public Declaration(String pluginClassName)
- throws ClassNotFoundException {
+ public Declaration(String pluginClassName) {
pluginClassName_ = pluginClassName;
}
Index: src/java/org/apache/commons/digester/plugins/PluginCreateRule.java
===================================================================
RCS file: /home/cvspublic/jakarta-commons/digester/src/java/org/apache/commons/digester/plugins/PluginCreateRule.java,v
retrieving revision 1.2
diff -u -r1.2 PluginCreateRule.java
--- src/java/org/apache/commons/digester/plugins/PluginCreateRule.java 5 Oct 2003 15:05:30 -0000 1.2
+++ src/java/org/apache/commons/digester/plugins/PluginCreateRule.java 6 Oct 2003 00:00:11 -0000
@@ -354,7 +354,7 @@
currDeclaration = pluginManager.getDeclarationById(pluginId);
if (currDeclaration == null) {
- throw new Exception(
+ throw new PluginInvalidInputException(
"Plugin id [" + pluginId + "] is not defined.");
}
}
Index: src/java/org/apache/commons/digester/plugins/PluginDeclarationRule.java
===================================================================
RCS file: /home/cvspublic/jakarta-commons/digester/src/java/org/apache/commons/digester/plugins/PluginDeclarationRule.java,v
retrieving revision 1.2
diff -u -r1.2 PluginDeclarationRule.java
--- src/java/org/apache/commons/digester/plugins/PluginDeclarationRule.java 5 Oct 2003 15:05:30 -0000 1.2
+++ src/java/org/apache/commons/digester/plugins/PluginDeclarationRule.java 6 Oct 2003 00:00:11 -0000
@@ -128,13 +128,13 @@
}
if (id == null) {
- throw new ClassNotFoundException(
+ throw new PluginInvalidInputException(
"mandatory attribute id not present on tag"
+ " <" + name + ">");
}
if (pluginClassName == null) {
- throw new ClassNotFoundException(
+ throw new PluginInvalidInputException(
"mandatory attribute class not present on tag"
+ " <" + name + ">");
}
@@ -187,7 +187,8 @@
log.debug("plugin redeclaration is identical: ignoring");
return;
} else {
- throw new Exception("Plugin id [" + id + "] is not unique");
+ throw new PluginInvalidInputException(
+ "Plugin id [" + id + "] is not unique");
}
}
@@ -195,7 +196,7 @@
// name. It might be nice someday to allow this but lets keep it
// simple for now.
if (pm.getDeclarationByClass(pluginClassName) != null) {
- throw new Exception(
+ throw new PluginInvalidInputException(
"Plugin id [" + id + "] maps to class [" + pluginClassName + "]"
+ " which has already been mapped by some other id.");
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]