Return-Path: Delivered-To: apmail-incubator-jackrabbit-commits-archive@www.apache.org Received: (qmail 26370 invoked from network); 13 Mar 2006 10:07:06 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 13 Mar 2006 10:07:06 -0000 Received: (qmail 64017 invoked by uid 500); 13 Mar 2006 10:06:13 -0000 Mailing-List: contact jackrabbit-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: jackrabbit-dev@incubator.apache.org Delivered-To: mailing list jackrabbit-commits@incubator.apache.org Received: (qmail 63957 invoked by uid 500); 13 Mar 2006 10:06:12 -0000 Delivered-To: apmail-incubator-jackrabbit-cvs@incubator.apache.org Received: (qmail 63939 invoked by uid 99); 13 Mar 2006 10:06:11 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 13 Mar 2006 02:06:11 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Mon, 13 Mar 2006 02:06:10 -0800 Received: (qmail 25400 invoked by uid 65534); 13 Mar 2006 10:05:26 -0000 Message-ID: <20060313100526.25399.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r385485 - /incubator/jackrabbit/trunk/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/version/report/ReportType.java Date: Mon, 13 Mar 2006 10:05:26 -0000 To: jackrabbit-cvs@incubator.apache.org From: angela@apache.org X-Mailer: svnmailer-1.0.7 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N 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);