Return-Path: Delivered-To: apmail-incubator-geronimo-dev-archive@incubator.apache.org Received: (qmail 89686 invoked by uid 500); 14 Aug 2003 07:27:29 -0000 Mailing-List: contact geronimo-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: Reply-To: geronimo-dev@incubator.apache.org Delivered-To: mailing list geronimo-dev@incubator.apache.org Received: (qmail 89664 invoked from network); 14 Aug 2003 07:27:28 -0000 Received: from jetty2.inetu.net (HELO jetty.mortbay.com) (209.235.192.112) by daedalus.apache.org with SMTP; 14 Aug 2003 07:27:28 -0000 Received: (qmail 26962 invoked from network); 14 Aug 2003 07:27:40 -0000 Received: from unknown (HELO mortbay.com) (janb@203.45.77.110) by jetty.mortbay.com with SMTP; 14 Aug 2003 07:27:40 -0000 Message-ID: <3F3B38BC.4030709@mortbay.com> Date: Thu, 14 Aug 2003 17:22:36 +1000 From: Jan Bartel Reply-To: janb@mortbay.com Organization: Mort Bay Consulting User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030430 Debian/1.3-5 X-Accept-Language: en, en-us MIME-Version: 1.0 To: geronimo-dev@incubator.apache.org CC: dain@apache.org, jboynes@apache.org Subject: Container interface and AbstractContainer Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N Dain, Jeremy et al, I am working on the AbstractWebContainer and having difficulty making progress given the current form of the org.apache.geronimo.common.Container. I'd like to make an AbstractContainer class but here are the issues that I face in trying to accomplish that: 1. Why does Container already contain deprecated methods?! Can't these be removed, they're kinda cluttering up the codebase. 2. Is it really necessary that it has the method invoke(Invocation)? Doesn't this pre-suppose that there is some de-typed mode of communicating to/between containers like JMX? Couldn't this method be moved into another subclass, say something like "InvokableContainer" or something? 3. Are the get/addPlugin() methods really necessary to have in the base interface type? Again, couldn't these be handled by subclassing from AbstractContainer? I propose that the Container interface looks like: Container extends Component Components[] getComponents() setComponents(Component[]) addComponent(Component) removeComponent(Component) In other words, a standard implementation of the Composite pattern. Other subclasses can then treat the Components as Plugins, Invokers or whatever. I also propose that the Component interface has one extra method: String getObjectName(); which is the identity of the Component, and will help out Containers wishing to maintain maps of Components. It will also gel nicely with the JSR077 requirement to identify ManagedObjects by a name. Jan