You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2006/03/13 11:05:26 UTC

svn commit: r385485 - /incubator/jackrabbit/trunk/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/version/report/ReportType.java

Author: angela
Date: Mon Mar 13 02:05:25 2006
New Revision: 385485

URL: http://svn.apache.org/viewcvs?rev=385485&view=rev
Log:
JCR-341 - Jcr-Server: registration of ReportTypes fails

Modified:
    incubator/jackrabbit/trunk/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/version/report/ReportType.java

Modified: incubator/jackrabbit/trunk/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/version/report/ReportType.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/version/report/ReportType.java?rev=385485&r1=385484&r2=385485&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/version/report/ReportType.java (original)
+++ incubator/jackrabbit/trunk/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/version/report/ReportType.java Mon Mar 13 02:05:25 2006
@@ -67,7 +67,7 @@
      */
     public Report createReport(DeltaVResource resource, ReportInfo info) throws DavException {
         try {
-            Report report = (Report) reportClass.getConstructor(new Class[0]).newInstance(new Object[0]);
+            Report report = (Report) reportClass.newInstance();
             report.init(resource, info);
             return report;
         } catch (Exception e) {
@@ -109,7 +109,7 @@
      */
     public String getReportName() {
         return key;
-            }
+    }
 
     /**
      *
@@ -117,7 +117,7 @@
      */
     public String getLocalName() {
         return localName;
-        }
+    }
 
     /**
      *
@@ -143,25 +143,19 @@
         if (localName == null || namespace == null || reportClass == null) {
             throw new IllegalArgumentException("A ReportType cannot be registered with a null name, namespace or report class");
         }
-
         String key = DomUtil.getQualifiedName(localName, namespace);
         if (types.containsKey(key)) {
             return (ReportType) types.get(key);
         } else {
-            // test if this report class has an empty constructor and implements Report interface
-            boolean isValidClass = false;
-            Class[] interfaces = reportClass.getInterfaces();
-            for (int i = 0; i < interfaces.length && !isValidClass; i++) {
-                isValidClass = (interfaces[i] == Report.class);
-            }
-            if (!isValidClass) {
-                throw new IllegalArgumentException("The specified report class must implement the Report interface.");
-            }
-
             try {
-                reportClass.getConstructor(new Class[0]);
-            } catch (NoSuchMethodException e) {
-                throw new IllegalArgumentException("The specified report class must provide a default constructor.");
+                Object report =  reportClass.newInstance();
+                if (!(report instanceof Report)) {
+                    throw new IllegalArgumentException("Unable to register Report class: " + reportClass + " does not implement the Report interface.");
+                }
+            } catch (IllegalAccessException e) {
+                throw new IllegalArgumentException("Error while validating Report class: " + e.getMessage());
+            } catch (InstantiationException e) {
+                throw new IllegalArgumentException("Error while validating Report class.: " + e.getMessage());
             }
 
             ReportType type = new ReportType(localName, namespace, key, reportClass);