Return-Path: Delivered-To: apmail-commons-dev-archive@www.apache.org Received: (qmail 34661 invoked from network); 15 Jul 2010 03:12:58 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 15 Jul 2010 03:12:58 -0000 Received: (qmail 85381 invoked by uid 500); 15 Jul 2010 03:12:58 -0000 Delivered-To: apmail-commons-dev-archive@commons.apache.org Received: (qmail 84857 invoked by uid 500); 15 Jul 2010 03:12:55 -0000 Mailing-List: contact dev-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Commons Developers List" Delivered-To: mailing list dev@commons.apache.org Received: (qmail 84849 invoked by uid 99); 15 Jul 2010 03:12:55 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Jul 2010 03:12:55 +0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests=FREEMAIL_FROM,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of gudnabrsam@gmail.com designates 209.85.161.171 as permitted sender) Received: from [209.85.161.171] (HELO mail-gx0-f171.google.com) (209.85.161.171) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Jul 2010 03:12:45 +0000 Received: by gxk6 with SMTP id 6so367875gxk.30 for ; Wed, 14 Jul 2010 20:12:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:mime-version:in-reply-to :references:content-type:message-id:content-transfer-encoding:from :subject:date:to:x-mailer; bh=B19b2v0QT0Qv7Z6a/7GotKUZx5svsRcyf6c3NWXXagk=; b=xvYidQeTc36TpjGEnk1fGH9/0RTzhkCeOHRe4+v9cqurAV0AB6KQ8nfeZKHObeArri gexbsQIhQnnX6VpFK7eDVKWkCQ+YIfSncn7rS2eZZvKVN8k0vdL2j9oj/Q2ZW2d7aI/s 7KjNLWIuQbFfsR0ZIV/lY36WCigp1YKFEHKC8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:content-type:message-id :content-transfer-encoding:from:subject:date:to:x-mailer; b=oJlLFeVqvHTIG7n4SI8KH46oNvfHKS9SNwpJsujPI6tpnV3a4zhlym4wXINBTQ6D5N uW40uXfGDNmx486/hboFnRDw1bApi5fszE4ByRSVEPBI4nuT4JnnM0gg5jhBdsy/BAxS kaQGgsIpO1AG6nunAM/C2lYYFyWm1DAXsFTJE= Received: by 10.224.95.208 with SMTP id e16mr10670254qan.261.1279163544810; Wed, 14 Jul 2010 20:12:24 -0700 (PDT) Received: from [192.168.0.4] ([72.169.48.55]) by mx.google.com with ESMTPS id fb41sm2515529qcb.3.2010.07.14.20.12.20 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 14 Jul 2010 20:12:24 -0700 (PDT) Mime-Version: 1.0 (Apple Message framework v753.1) In-Reply-To: References: Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: <7D5EF163-7C8B-4337-94EE-5EFFEE24EAFC@gmail.com> Content-Transfer-Encoding: 7bit From: Matt Benson Subject: Re: [proxy] Changing the API to an interface (AGAIN)... Date: Wed, 14 Jul 2010 22:12:09 -0500 To: "Commons Developers List" X-Mailer: Apple Mail (2.753.1) X-Virus-Checked: Checked by ClamAV on apache.org On Jul 14, 2010, at 9:21 PM, James Carman wrote: > All, > > One of the biggest complaints I've received from folks about the proxy > library is that it's not based on interfaces. What is the typical basis of a complaint? I.e., what problem does the abstract class cause? > The main class is the > ProxyFactory class and it's a concrete class which implements all > proxying logic using JDK proxies. We did this for maintainability > (adding stuff to the interface breaks binary compatibility as opposed > to adding a method to a concrete superclass with an implementation). > I would like to re-structure proxy so that it contains a few > modules... > > 1. Commons Proxy Core - the API itself containing the ProxyFactory > *interface* > 2. Commons Proxy JDK - the JDK proxies implementation > 3. Commons Proxy CGLIB - the CGLIB implementation > 4. Commons Proxy Javassist - the Javassist Library > > With the new paradigm of just bumping major version numbers (and > package names) allowing us to break compatibility, I don't think the > interface issue is that much of an issue anymore. What do you guys > think? I personally don't feel strongly about the interface vs. abstract class issue; I can understand both sides of the debate. I am curious as to the nature of folks' dissatisfactions with the abstract class approach, however. I do take your point regarding package renaming allowing the expansion of an interface without having to version interfaces e.g. ProxyFactory2, ProxyFactory3, etc... I would support [proxy] becoming a multi-module project; among other things we could selectively have a larger set of dependencies this way. How would you feel about the module that contains the recording functionality depending on [lang] 3.x for type utilities? -Matt > > Thanks, > > James > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org > For additional commands, e-mail: dev-help@commons.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org For additional commands, e-mail: dev-help@commons.apache.org