Author: rdonkin
Date: Tue May 10 12:57:16 2011
New Revision: 1101447

URL: http://svn.apache.org/viewvc?rev=1101447&view=rev
Log:
MAILETDOCS-6 Catch exception when mailet info cannot be loaded and log some 
details.

Modified:
    
james/mailet/maven-mailetdocs-plugin/trunk/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java

Modified: 
james/mailet/maven-mailetdocs-plugin/trunk/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java
URL: 
http://svn.apache.org/viewvc/james/mailet/maven-mailetdocs-plugin/trunk/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java?rev=1101447&r1=1101446&r2=1101447&view=diff
==============================================================================
--- 
james/mailet/maven-mailetdocs-plugin/trunk/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java
 (original)
+++ 
james/mailet/maven-mailetdocs-plugin/trunk/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java
 Tue May 10 12:57:16 2011
@@ -107,18 +107,10 @@ public class DefaultDescriptorsExtractor
 
         } catch (ClassNotFoundException e) {
             log.error("NotFound: " + e.getMessage());
-        } catch (InstantiationException e) {
-            log.info("IE: " + e.getMessage()+" / Probably an abstract 
mailet/matcher: "+nextClass.getName());
-        } catch (IllegalAccessException e) {
-            log.error("IAE: " + e.getMessage());
         } catch (SecurityException e) {
             log.error("SE: " + e.getMessage());
-        } catch (NoSuchMethodException e) {
-            log.error("NSME: " + e.getMessage());
         } catch (IllegalArgumentException e) {
             log.error("IAE2: " + e.getMessage());
-        } catch (InvocationTargetException e) {
-            log.error("ITE: " + e.getMessage());
         }
 
         logInterfacesImplemented(log, nextClass);
@@ -127,11 +119,9 @@ public class DefaultDescriptorsExtractor
 
     private MailetMatcherDescriptor describeMatcher(Log log,
             final JavaClass nextClass, final String nameOfNextClass,
-            final Class<?> klass) throws InstantiationException,
-            IllegalAccessException, InvocationTargetException,
-            NoSuchMethodException {
+            final Class<?> klass) {
         
-        final MailetMatcherDescriptor result = buildDescriptor(nextClass,
+        final MailetMatcherDescriptor result = buildDescriptor(log, nextClass,
                 nameOfNextClass, klass, "getMatcherInfo", 
MailetMatcherDescriptor.Type.MATCHER);
         
         log.info("Found a Matcher: " + klass.getName());
@@ -139,33 +129,50 @@ public class DefaultDescriptorsExtractor
     }
 
 
-    private MailetMatcherDescriptor buildDescriptor(final JavaClass nextClass,
-            final String nameOfNextClass, final Class<?> klass,
-            final String infoMethodName, final Type type)
-            throws InstantiationException, IllegalAccessException,
-            InvocationTargetException, NoSuchMethodException {
+    private MailetMatcherDescriptor buildDescriptor(final Log log, final 
JavaClass nextClass,
+            final String nameOfClass, final Class<?> klass,
+            final String infoMethodName, final Type type) {
         final MailetMatcherDescriptor result = new MailetMatcherDescriptor();
         result.setName(nextClass.getName());
-        result.setFullyQualifiedName(nameOfNextClass);
+        result.setFullyQualifiedName(nameOfClass);
         result.setClassDocs(nextClass.getComment());
         result.setType(type);
 
-        final Object instance = klass.newInstance();
-        final String info = (String) 
klass.getMethod(infoMethodName).invoke(instance);
-        if (info != null && info.length() > 0) {
-            result.setInfo(info);
+        try {
+            final Object instance = klass.newInstance();
+            final String info = (String) 
klass.getMethod(infoMethodName).invoke(instance);
+            if (info != null && info.length() > 0) {
+                result.setInfo(info);
+            }
+        } catch (InstantiationException e) {
+            handleInfoLoadFailure(log, nameOfClass, type, e);
+        } catch (IllegalAccessException e) {
+            handleInfoLoadFailure(log, nameOfClass, type, e);
+        } catch (IllegalArgumentException e) {
+            handleInfoLoadFailure(log, nameOfClass, type, e);
+        } catch (SecurityException e) {
+            handleInfoLoadFailure(log, nameOfClass, type, e);
+        } catch (InvocationTargetException e) {
+            handleInfoLoadFailure(log, nameOfClass, type, e);
+        } catch (NoSuchMethodException e) {
+            handleInfoLoadFailure(log, nameOfClass, type, e);
         }
         return result;
     }
 
 
+    private void handleInfoLoadFailure(final Log log, final String nameOfClass,
+            final Type type, Exception e) {
+        log.info("Cannot load " + type + " info for " + nameOfClass + ": " + 
e.getMessage());
+        log.debug(e);
+    }
+
+
     private MailetMatcherDescriptor describeMailet(Log log,
             final JavaClass nextClass, final String nameOfNextClass,
-            final Class<?> klass) throws InstantiationException,
-            IllegalAccessException, InvocationTargetException,
-            NoSuchMethodException {
+            final Class<?> klass) {
 
-        final MailetMatcherDescriptor result = buildDescriptor(nextClass,
+        final MailetMatcherDescriptor result = buildDescriptor(log, nextClass,
                 nameOfNextClass, klass, "getMailetInfo", 
MailetMatcherDescriptor.Type.MAILET);
         
         log.info("Found a Mailet: " + klass.getName());



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to