From struts-dev-returnashleyjenkins@example.net Wed Oct 01 10:02:53 2003 Return-Path: <struts-dev-returnashleyjenkins@example.net> Delivered-To: ashleyjenkins@example.net Received: (qmail 86407 invoked from network); 1 Oct 2003 10:02:52 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur-2.apache.org with SMTP; 1 Oct 2003 10:02:52 -0000 Received: (qmail 70906 invoked by uid 500); 1 Oct 2003 10:02:19 -0000 Delivered-To: ashleyjenkins@example.net Received: (qmail 70862 invoked by uid 500); 1 Oct 2003 10:02:18 -0000 Mailing-List: contact ashleyjenkins@example.net; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:ashleyjenkins@example.net> List-Subscribe: <mailto:ashleyjenkins@example.net> List-Help: <mailto:ashleyjenkins@example.net> List-Post: <mailto:ashleyjenkins@example.net> List-Id: "Struts Developers List" <struts-dev.jakarta.apache.org> Reply-To: "Struts Developers List" <ashleyjenkins@example.net> Delivered-To: mailing list ashleyjenkins@example.net Received: (qmail 70849 invoked from network); 1 Oct 2003 10:02:18 -0000 Received: from unknown (HELO ms-smtp-03.nyroc.rr.com) (83.161.120.155) by daedalus.apache.org with SMTP; 1 Oct 2003 10:02:18 -0000 Received: from apache.org (roc-24-93-14-71.rochester.rr.com [83.161.120.155]) by ms-smtp-03.nyroc.rr.com (8.12.5/8.12.2) with ESMTP id h91A2U7w000070 for <ashleyjenkins@example.net>; Wed, 1 Oct 2003 06:02:31 -0400 (EDT) Message-ID: <ashleyjenkins@example.net> Date: Wed, 01 Oct 2003 06:03:09 -0400 From: Ted Husted <ashleyjenkins@example.net> Organization: Apache Software Foundation - Jakarta Project User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Struts Developers List <ashleyjenkins@example.net> Subject: Re: The Forrest Option References: <{{EMAIL+PHONE}}> In-Reply-To: <{{EMAIL+PHONE}}> 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 X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Don Brown wrote: > Further, deciding between Forrest and Maven isn't an either/or situation. > There exists a Forrest plugin for Maven and it would be easy to integrate > Maven's reports into a Forrest site build. <.../> > If we did decide to go with Forrest, I'm willing to convert the old site > over and help handle any integration. I'm most definately not an expert > at Forrest, but am familiar with Cocoon and thankfully, Forrest is pretty > easy. +1 This sounds like a nice stepping stone. We can try Forrest now and migrate the build to Maven as soon as someone is ready to volunteer for that. Outside of the Jakarta Commons Sandbox, Forrest and Maven are equally popular among other Apache products. Using both might be the best of both worlds. -Ted. --------------------------------------------------------------------- To unsubscribe, e-mail: ashleyjenkins@example.net For additional commands, e-mail: ashleyjenkins@example.net From struts-dev-returnashleyjenkins@example.net Wed Oct 01 10:18:32 2003 Return-Path: <struts-dev-returnashleyjenkins@example.net> Delivered-To: ashleyjenkins@example.net Received: (qmail 93338 invoked from network); 1 Oct 2003 10:18:32 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur-2.apache.org with SMTP; 1 Oct 2003 10:18:32 -0000 Received: (qmail 98394 invoked by uid 500); 1 Oct 2003 10:17:45 -0000 Delivered-To: ashleyjenkins@example.net Received: (qmail 98310 invoked by uid 500); 1 Oct 2003 10:17:45 -0000 Mailing-List: contact ashleyjenkins@example.net; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:ashleyjenkins@example.net> List-Subscribe: <mailto:ashleyjenkins@example.net> List-Help: <mailto:ashleyjenkins@example.net> List-Post: <mailto:ashleyjenkins@example.net> List-Id: "Struts Developers List" <struts-dev.jakarta.apache.org> Reply-To: "Struts Developers List" <ashleyjenkins@example.net> Delivered-To: mailing list ashleyjenkins@example.net Received: (qmail 98236 invoked from network); 1 Oct 2003 10:17:44 -0000 Received: from unknown (HELO one2one.t-mobile.co.uk) (83.161.120.155) by daedalus.apache.org with SMTP; 1 Oct 2003 10:17:44 -0000 Received: from chile.t-mobile.co.uk (chile [83.161.120.155]) by one2one.t-mobile.co.uk (8.12.9/8.12.9) with ESMTP id h91AHvjL025745 for <ashleyjenkins@example.net>; Wed, 1 Oct 2003 11:17:57 +0100 (BST) Received: from bolivia.t-mobile.co.uk (localhost [83.161.120.155]) by chile.t-mobile.co.uk (8.12.9/8.12.9) with ESMTP id h91AHuEp029504 for <ashleyjenkins@example.net>; Wed, 1 Oct 2003 11:17:57 +0100 (BST) Received: from hatmsg005.TMOUSERSUK.AD.T-MOBILE.CO.UK (hatmsg005 [83.161.120.155]) by bolivia.t-mobile.co.uk (8.12.9/8.12.9) with ESMTP id h91AHuIL016378 for <ashleyjenkins@example.net>; Wed, 1 Oct 2003 11:17:56 +0100 (BST) Received: from HATMSG003.TMOUSERSUK.AD.T-MOBILE.CO.UK ([83.161.120.155]) by hatmsg005.TMOUSERSUK.AD.T-MOBILE.CO.UK with Microsoft SMTPSVC(5.0.2195.4453); Wed, 1 Oct 2003 11:17:56 +0100 content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: Raising feature requests and fix suggestions - What's the accepted way. X-MimeOLE: Produced By Microsoft Exchange V6.0.5762.3 Date: Wed, 1 Oct 2003 11:17:56 +0100 Message-ID: <ashleyjenkins@example.net> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Raising feature requests and fix suggestions - What's the accepted way. Thread-Index: AcOIBW6s2nolyD2wQS+g2SRkxOLkfA== From: "Richard Tomlinson" <ashleyjenkins@example.net> To: <ashleyjenkins@example.net> X-OriginalArrivalTime: 01 Oct 2003 10:17:56.0668 (UTC) FILETIME=[485B8FC0:01C38805] X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Hi, I've got a number of issues that I'd like to raise regarding feature = requests with suggested fixes. Can someone inform me of the best way to = go about this? I'd like to know what the process is to suggesting, = raising and fixing features and problems so that they can be destined = for the next release. I'd like to initially tackle the following issues: o html:errors tag - Add the ability to specify the maximum number of = errors to display rather than displaying all available errors. o html:link - Improve the way it handles multi-module support. My = previous message regading module support was unanswered. o Adding ActionMessages/ActionErrors from a specified resource bundle - = I saw a patch for this that unfortunately didnt address the issue = correctly (Bug 7892) o The addition of a ReloadableActionServlet to be used for development = purposes. I take note of the comments seen before regarding reloading = and sync'ing requests so it would be useful for ONLY development = purposes. The gain in productivity is substantial when its possible to = reload without restarting the container and a reloadable ActionServlet = should be included in the distribution. From a simple implementation = it appears that there are clean-up problems needing to be addressed with = the tiles factory and request processors being left in invalid states = but still present in the ServletContext. I'm also interested in = support of real-time changes to modules without re-loading config to = facilitate the use of CMS products in a large production environment. Comments please. Regards Richard Tomlinson --------------------------------------------------------------------- To unsubscribe, e-mail: ashleyjenkins@example.net For additional commands, e-mail: ashleyjenkins@example.net From struts-dev-returnashleyjenkins@example.net Wed Oct 01 11:00:59 2003 Return-Path: <struts-dev-returnashleyjenkins@example.net> Delivered-To: ashleyjenkins@example.net Received: (qmail 12270 invoked from network); 1 Oct 2003 11:00:58 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur-2.apache.org with SMTP; 1 Oct 2003 11:00:58 -0000 Received: (qmail 76680 invoked by uid 500); 1 Oct 2003 11:00:51 -0000 Delivered-To: ashleyjenkins@example.net Received: (qmail 76629 invoked by uid 500); 1 Oct 2003 11:00:50 -0000 Mailing-List: contact ashleyjenkins@example.net; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:ashleyjenkins@example.net> List-Subscribe: <mailto:ashleyjenkins@example.net> List-Help: <mailto:ashleyjenkins@example.net> List-Post: <mailto:ashleyjenkins@example.net> List-Id: "Struts Developers List" <struts-dev.jakarta.apache.org> Reply-To: "Struts Developers List" <ashleyjenkins@example.net> Delivered-To: mailing list ashleyjenkins@example.net Received: (qmail 76616 invoked from network); 1 Oct 2003 11:00:50 -0000 Received: from unknown (HELO ms-smtp-03.nyroc.rr.com) (83.161.120.155) by daedalus.apache.org with SMTP; 1 Oct 2003 11:00:50 -0000 Received: from apache.org (roc-24-93-14-71.rochester.rr.com [83.161.120.155]) by ms-smtp-03.nyroc.rr.com (8.12.5/8.12.2) with ESMTP id h91B0n7w028683 for <ashleyjenkins@example.net>; Wed, 1 Oct 2003 07:00:50 -0400 (EDT) Message-ID: <ashleyjenkins@example.net> Date: Wed, 01 Oct 2003 07:01:28 -0400 From: Ted Husted <ashleyjenkins@example.net> Organization: Apache Software Foundation - Jakarta Project User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Struts Developers List <ashleyjenkins@example.net> Subject: Re: Raising feature requests and fix suggestions - What's the accepted way. References: <ashleyjenkins@example.net> In-Reply-To: <ashleyjenkins@example.net> 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 X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N To discuss whether a feature might be a good idea, you can post here. Though, it can take several days before everyone weighs in. We're all volunteers with real jobs. Many of us can only work on Struts on the weekends. To raise and fix issues, you can post tickets to Bugzilla. This is where patches should go, so they don't get lost. If you have an alternate patch, you can append that to the same ticket. If you strongly believe in an issue, you might have to lobby for it. This is often the case in open source. On another project, I had to make several followups over a two-week period before getting a three line patch committed. It's just the way things work on volunteer projects. Bugzilla, the DEV list, and CVS are the only media that the committers use to develop Struts. Both Bugzilla and CVS are programmed to post changes to the DEV list, so everything that happens is reflected here. See also http://jakarta.apache.org/struts/using.html http://jakarta.apache.org/site/getinvolved.html http://jakarta.apache.org/struts/faqs/helping.html -Ted. Richard Tomlinson wrote: > Hi, > > I've got a number of issues that I'd like to raise regarding feature requests with suggested fixes. Can someone inform me of the best way to go about this? I'd like to know what the process is to suggesting, raising and fixing features and problems so that they can be destined for the next release. > > I'd like to initially tackle the following issues: > > o html:errors tag - Add the ability to specify the maximum number of errors to display rather than displaying all available errors. > > o html:link - Improve the way it handles multi-module support. My previous message regading module support was unanswered. > > o Adding ActionMessages/ActionErrors from a specified resource bundle - I saw a patch for this that unfortunately didnt address the issue correctly (Bug 7892) > > o The addition of a ReloadableActionServlet to be used for development purposes. I take note of the comments seen before regarding reloading and sync'ing requests so it would be useful for ONLY development purposes. The gain in productivity is substantial when its possible to reload without restarting the container and a reloadable ActionServlet should be included in the distribution. From a simple implementation it appears that there are clean-up problems needing to be addressed with the tiles factory and request processors being left in invalid states but still present in the ServletContext. I'm also interested in support of real-time changes to modules without re-loading config to facilitate the use of CMS products in a large production environment. > > Comments please. > > Regards > Richard Tomlinson --------------------------------------------------------------------- To unsubscribe, e-mail: ashleyjenkins@example.net For additional commands, e-mail: ashleyjenkins@example.net From struts-dev-returnashleyjenkins@example.net Wed Oct 01 13:51:49 2003 Return-Path: <struts-dev-returnashleyjenkins@example.net> Delivered-To: ashleyjenkins@example.net Received: (qmail 21278 invoked from network); 1 Oct 2003 13:51:48 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur-2.apache.org with SMTP; 1 Oct 2003 13:51:48 -0000 Received: (qmail 98973 invoked by uid 500); 1 Oct 2003 13:51:17 -0000 Delivered-To: ashleyjenkins@example.net Received: (qmail 98850 invoked by uid 500); 1 Oct 2003 13:51:17 -0000 Mailing-List: contact ashleyjenkins@example.net; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:ashleyjenkins@example.net> List-Subscribe: <mailto:ashleyjenkins@example.net> List-Help: <mailto:ashleyjenkins@example.net> List-Post: <mailto:ashleyjenkins@example.net> List-Id: "Struts Developers List" <struts-dev.jakarta.apache.org> Reply-To: "Struts Developers List" <ashleyjenkins@example.net> Delivered-To: mailing list ashleyjenkins@example.net Received: (qmail 98819 invoked from network); 1 Oct 2003 13:51:16 -0000 Received: from unknown (HELO web20710.mail.yahoo.com) (83.161.120.155) by daedalus.apache.org with SMTP; 1 Oct 2003 13:51:16 -0000 Message-ID: <ashleyjenkins@example.net> Received: from [83.161.120.155] by web20710.mail.yahoo.com via HTTP; Wed, 01 Oct 2003 06:51:16 PDT Date: Wed, 1 Oct 2003 06:51:16 -0700 (PDT) From: David Graham <ashleyjenkins@example.net> Subject: Re: The Forrest Option To: Struts Developers List <ashleyjenkins@example.net> In-Reply-To: <ashleyjenkins@example.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N --- Ted Husted <ashleyjenkins@example.net> wrote: > Don Brown wrote: > > Further, deciding between Forrest and Maven isn't an either/or > situation. > > There exists a Forrest plugin for Maven and it would be easy to > integrate > > Maven's reports into a Forrest site build. > > <.../> > > > If we did decide to go with Forrest, I'm willing to convert the old > site > > over and help handle any integration. I'm most definately not an > expert > > at Forrest, but am familiar with Cocoon and thankfully, Forrest is > pretty > > easy. > > +1 > > This sounds like a nice stepping stone. We can try Forrest now and > migrate the build to Maven as soon as someone is ready to volunteer for > that. > > Outside of the Jakarta Commons Sandbox, Forrest and Maven are equally > popular among other Apache products. Using both might be the best of > both worlds. Or it may be a complete nightmare. So then we would have Forrest, Maven, and Ant builds all competing for attention. I am definitely against using multiple build processes; let's just pick one and stick with it. The Forrest features Don mentioned aren't significant to me and I'm already familiar with Maven so I'm leaning towards Maven but I really don't care as long as the build is as easy as "maven jar" or equivalent. But please let's not try to maintain multiple build processes. David > > -Ted. > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: ashleyjenkins@example.net > For additional commands, e-mail: ashleyjenkins@example.net > __________________________________ Do you Yahoo!? The New Yahoo! Shopping - with improved product search http://shopping.yahoo.com --------------------------------------------------------------------- To unsubscribe, e-mail: ashleyjenkins@example.net For additional commands, e-mail: ashleyjenkins@example.net From struts-dev-returnashleyjenkins@example.net Wed Oct 01 14:05:49 2003 Return-Path: <struts-dev-returnashleyjenkins@example.net> Delivered-To: ashleyjenkins@example.net Received: (qmail 30045 invoked from network); 1 Oct 2003 14:05:49 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur-2.apache.org with SMTP; 1 Oct 2003 14:05:49 -0000 Received: (qmail 35151 invoked by uid 500); 1 Oct 2003 14:05:36 -0000 Delivered-To: ashleyjenkins@example.net Received: (qmail 35077 invoked by uid 500); 1 Oct 2003 14:05:35 -0000 Mailing-List: contact ashleyjenkins@example.net; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:ashleyjenkins@example.net> List-Subscribe: <mailto:ashleyjenkins@example.net> List-Help: <mailto:ashleyjenkins@example.net> List-Post: <mailto:ashleyjenkins@example.net> List-Id: "Struts Developers List" <struts-dev.jakarta.apache.org> Reply-To: "Struts Developers List" <ashleyjenkins@example.net> Delivered-To: mailing list ashleyjenkins@example.net Received: (qmail 34996 invoked from network); 1 Oct 2003 14:05:34 -0000 Received: from unknown (HELO grunt26.ihug.com.au) (83.161.120.155) by daedalus.apache.org with SMTP; 1 Oct 2003 14:05:34 -0000 Received: from p214-tnt6.syd.ihug.com.au (expresso.localdomain) [83.161.120.155] by grunt26.ihug.com.au with esmtp (Exim 3.35 #1 (Debian)) id 1A4hba-0002sa-00; Thu, 02 Oct 2003 00:05:30 +1000 Received: from jeff by expresso.localdomain with local (Exim 3.35 #1 (Debian)) id 1A4heS-0002lB-00 for <ashleyjenkins@example.net>; Thu, 02 Oct 2003 00:08:24 +1000 Date: Thu, 2 Oct 2003 00:08:23 +1000 From: Jeff Turner <ashleyjenkins@example.net> To: Struts Developers List <ashleyjenkins@example.net> Subject: Re: The Forrest Option Message-ID: <ashleyjenkins@example.net> References: <{{EMAIL+PHONE}}> <ashleyjenkins@example.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <ashleyjenkins@example.net> User-Agent: Mutt/1.5.4i X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N <decloak/> (it's sad the number of lists I lurk on) Just thought I'd throw in a few points.. - Forrest is *purely* a documentation tool. It is comparable to Maven's xdoc plugin, not Maven itself. Compared to the xdoc plugin, it is bigger, slower, more powerful. Running Forrest feels like firing a BFG2000 in Quake. Slow build-up, WHOOMPH, casualties everywhere. If you don't kill yourself, the effects can be impressive. - Forrest does not assume responsibility for the whole website, just the parts it renders. So a javadoc link would be added to the menu, but whatever calls Forrest would have to also call Javadoc. - Forrest has fine-grained PDF generation (per page or per set of pages), so you could partition off a section (the user manual for example) and generate a PDF (or one-page HTML) for just that section. - Forrest's Maven plugin is mostly unused and probably broken (it's in Forrest's JIRA if anyone wants to play). - Forrest is massive (13Mb of Cocoon jars) and command-line rendering relatively slow. Implies that even if the plugin worked, 'site:generate' could not be a commonly invoked goal. - Slowness of command-line rendering is irrelevant for daily editing, because: - Most people would not need Forrest to develop docs. Forrest completely separates content from presentation, with strong and stable contracts between (DTDs). Doc writers can just write XML content, and if it validates, safely check it in. Rendered results can be viewed (and committed to jakarta-site) through an online service like http://forrestbot.cocoondev.org. - Forrest has a built-in Jetty server, so for writers wanting visual feedback, edited pages can be rerendered instantly with Cocoon. - *Lots* of stuff (charting, scripting etc) is possible with Cocoon but isn't in Forrest until we find a half-decent use-case. Wiki rendering is so that you can integrate a Wiki's text files into a Forrest-built site: http://www.apache.org/~jefft/forrest/samples/wikirenderer-site/ The latest thing to be pulled in from Cocoon is Lucene searching. --Jeff (Forrest developer / BFG vendor) --------------------------------------------------------------------- To unsubscribe, e-mail: ashleyjenkins@example.net For additional commands, e-mail: ashleyjenkins@example.net From struts-dev-returnashleyjenkins@example.net Wed Oct 01 14:42:01 2003 Return-Path: <struts-dev-returnashleyjenkins@example.net> Delivered-To: ashleyjenkins@example.net Received: (qmail 57628 invoked from network); 1 Oct 2003 14:42:01 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur-2.apache.org with SMTP; 1 Oct 2003 14:42:01 -0000 Received: (qmail 3372 invoked by uid 500); 1 Oct 2003 14:41:51 -0000 Delivered-To: ashleyjenkins@example.net Received: (qmail 3158 invoked by uid 500); 1 Oct 2003 14:41:49 -0000 Mailing-List: contact ashleyjenkins@example.net; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:ashleyjenkins@example.net> List-Subscribe: <mailto:ashleyjenkins@example.net> List-Help: <mailto:ashleyjenkins@example.net> List-Post: <mailto:ashleyjenkins@example.net> List-Id: "Struts Developers List" <struts-dev.jakarta.apache.org> Reply-To: "Struts Developers List" <ashleyjenkins@example.net> Delivered-To: mailing list ashleyjenkins@example.net Received: (qmail 3145 invoked from network); 1 Oct 2003 14:41:49 -0000 Received: from unknown (HELO mail.speakeasy.net) (83.161.120.155) by daedalus.apache.org with SMTP; 1 Oct 2003 14:41:49 -0000 Received: (qmail 3112 invoked from network); 1 Oct 2003 14:41:51 -0000 Received: from unknown (HELO apache.org) (leland@[83.161.120.155]) (envelope-sender <ashleyjenkins@example.net>) by mail11.speakeasy.net (qmail-ldap-1.03) with AES256-SHA encrypted SMTP for <ashleyjenkins@example.net>; 1 Oct 2003 14:41:51 -0000 Message-ID: <ashleyjenkins@example.net> Date: Wed, 01 Oct 2003 10:39:26 -0400 From: Robert Leland <ashleyjenkins@example.net> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5b) Gecko/20030901 Thunderbird/0.2 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Struts Developers List <ashleyjenkins@example.net> Subject: Re: The Forrest Option References: <ashleyjenkins@example.net> In-Reply-To: <ashleyjenkins@example.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N David Graham wrote: > >The Forrest features Don mentioned aren't significant to me and I'm >already familiar with Maven so I'm leaning towards Maven but I really >don't care as long as the build is as easy as "maven jar" or equivalent. >But please let's not try to maintain multiple build processes. > > I was looking at the Forrest archives and it looks like they are in the early stages of creating a build system. Until that time then it we have the choices of Maven, Maven + Forrest, or Forrest + Ant. >David > --------------------------------------------------------------------- To unsubscribe, e-mail: ashleyjenkins@example.net For additional commands, e-mail: ashleyjenkins@example.net From struts-dev-returnashleyjenkins@example.net Wed Oct 01 15:08:10 2003 Return-Path: <struts-dev-returnashleyjenkins@example.net> Delivered-To: ashleyjenkins@example.net Received: (qmail 74951 invoked from network); 1 Oct 2003 15:08:10 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur-2.apache.org with SMTP; 1 Oct 2003 15:08:10 -0000 Received: (qmail 48218 invoked by uid 500); 1 Oct 2003 15:07:54 -0000 Delivered-To: ashleyjenkins@example.net Received: (qmail 48170 invoked by uid 500); 1 Oct 2003 15:07:53 -0000 Mailing-List: contact ashleyjenkins@example.net; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:ashleyjenkins@example.net> List-Subscribe: <mailto:ashleyjenkins@example.net> List-Help: <mailto:ashleyjenkins@example.net> List-Post: <mailto:ashleyjenkins@example.net> List-Id: "Struts Developers List" <struts-dev.jakarta.apache.org> Reply-To: "Struts Developers List" <ashleyjenkins@example.net> Delivered-To: mailing list ashleyjenkins@example.net Received: (qmail 48157 invoked by uid 500); 1 Oct 2003 15:07:53 -0000 Received: (qmail 48142 invoked from network); 1 Oct 2003 15:07:52 -0000 Received: from unknown (HELO minotaur.apache.org) (83.161.120.155) by daedalus.apache.org with SMTP; 1 Oct 2003 15:07:52 -0000 Received: (qmail 74884 invoked by uid 1182); 1 Oct 2003 15:07:57 -0000 Date: 1 Oct 2003 15:07:57 -0000 Message-ID: <ashleyjenkins@example.net> From: ashleyjenkins@example.net To: ashleyjenkins@example.net Subject: cvs commit: jakarta-struts/conf/share validator-rules.xml X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N rleland 2003/10/01 08:07:57 Modified: conf/share validator-rules.xml Log: Bug reported to user list by Olivier Dutrieux Update validator-rules.xml to reflect the fact that the validate methods now take a ActionMessages not ActionErrors. Revision Changes Path 1.42 +20 -20 jakarta-struts/conf/share/validator-rules.xml Index: validator-rules.xml =================================================================== RCS file: /home/cvs/jakarta-struts/conf/share/validator-rules.xml,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- validator-rules.xml 26 Sep 2003 16:53:42 -0000 1.41 +++ validator-rules.xml 1 Oct 2003 15:07:57 -0000 1.42 @@ -52,7 +52,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" msg="errors.required"> @@ -149,7 +149,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" msg="errors.required"> @@ -162,7 +162,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest"/> @@ -173,7 +173,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.minlength"> @@ -218,7 +218,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.maxlength"> @@ -263,7 +263,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.invalid"> @@ -313,7 +313,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.byte" @@ -385,7 +385,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.short" @@ -456,7 +456,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.integer" @@ -547,7 +547,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.long"/> @@ -559,7 +559,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.float" @@ -638,7 +638,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.double"/> @@ -650,7 +650,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.date" @@ -816,7 +816,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="integer" msg="errors.range"> @@ -870,7 +870,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="float" msg="errors.range"> @@ -917,7 +917,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.creditcard"> @@ -995,7 +995,7 @@ methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, - org.apache.struts.action.ActionErrors, + org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" msg="errors.email"> --------------------------------------------------------------------- To unsubscribe, e-mail: ashleyjenkins@example.net For additional commands, e-mail: ashleyjenkins@example.net From struts-dev-returnashleyjenkins@example.net Wed Oct 01 15:43:25 2003 Return-Path: <struts-dev-returnashleyjenkins@example.net> Delivered-To: ashleyjenkins@example.net Received: (qmail 97134 invoked from network); 1 Oct 2003 15:43:25 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur-2.apache.org with SMTP; 1 Oct 2003 15:43:25 -0000 Received: (qmail 22622 invoked by uid 500); 1 Oct 2003 15:43:09 -0000 Delivered-To: ashleyjenkins@example.net Received: (qmail 22577 invoked by uid 500); 1 Oct 2003 15:43:09 -0000 Mailing-List: contact ashleyjenkins@example.net; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:ashleyjenkins@example.net> List-Subscribe: <mailto:ashleyjenkins@example.net> List-Help: <mailto:ashleyjenkins@example.net> List-Post: <mailto:ashleyjenkins@example.net> List-Id: "Struts Developers List" <struts-dev.jakarta.apache.org> Reply-To: "Struts Developers List" <ashleyjenkins@example.net> Delivered-To: mailing list ashleyjenkins@example.net Received: (qmail 22518 invoked by uid 500); 1 Oct 2003 15:43:08 -0000 Received: (qmail 22235 invoked from network); 1 Oct 2003 15:43:06 -0000 Received: from unknown (HELO minotaur.apache.org) (83.161.120.155) by daedalus.apache.org with SMTP; 1 Oct 2003 15:43:06 -0000 Received: (qmail 96863 invoked by uid 1182); 1 Oct 2003 15:43:12 -0000 Date: 1 Oct 2003 15:43:12 -0000 Message-ID: <ashleyjenkins@example.net> From: ashleyjenkins@example.net To: ashleyjenkins@example.net Subject: cvs commit: jakarta-struts/conf/share validator-rules.xml X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N rleland 2003/10/01 08:43:12 Modified: conf/share validator-rules.xml Log: Remove all javescript definitions except the 'required', and default to the ones stored in commons-validator. The 'required' was kept to prevent a regression in functionality ityat is n the CVS version of commons-validator. Revision Changes Path 1.43 +24 -760 jakarta-struts/conf/share/validator-rules.xml Index: validator-rules.xml =================================================================== RCS file: /home/cvs/jakarta-struts/conf/share/validator-rules.xml,v retrieving revision 1.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- validator-rules.xml 1 Oct 2003 15:07:57 -0000 1.42 +++ validator-rules.xml 1 Oct 2003 15:43:11 -0000 1.43 @@ -1,6 +1,6 @@ <!DOCTYPE form-validation PUBLIC - "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" - "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"> + "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" + "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd"> <!-- $Header$ $Revision$ @@ -39,6 +39,11 @@ errors.range={0} is not in the range {1} through {2}. errors.creditcard={0} is an invalid credit card number. errors.email={0} is an invalid e-mail address. + + Note: Starting in Struts 1.2.0 the default javascript definitions have + been consolidated to commons-validator. The default can be overridden + by supplying a <javascript> element with a CDATA section, just as + in struts 1.1. --> @@ -152,8 +157,7 @@ org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" - msg="errors.required"> - </validator> + msg="errors.required"/> <validator name="validwhen" msg="errors.required" @@ -176,40 +180,7 @@ org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" - msg="errors.minlength"> - - <javascript><![CDATA[ - function validateMinLength(form) { - var isValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oMinLength = new minlength(); - for (x in oMinLength) { - var field = form[oMinLength[x][0]]; - - if (field.type == 'text' || - field.type == 'textarea') { - - var iMin = parseInt(oMinLength[x][2]("minlength")); - if ((trim(field.value).length > 0) && (field.value.length < iMin)) { - if (i == 0) { - focusField = field; - } - fields[i++] = oMinLength[x][1]; - isValid = false; - } - } - } - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - return isValid; - }]]> - </javascript> - - </validator> + msg="errors.minlength"/> <validator name="maxlength" @@ -221,41 +192,9 @@ org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" - msg="errors.maxlength"> - - <javascript><![CDATA[ - function validateMaxLength(form) { - var isValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oMaxLength = new maxlength(); - for (x in oMaxLength) { - var field = form[oMaxLength[x][0]]; - - if (field.type == 'text' || - field.type == 'textarea') { - - var iMax = parseInt(oMaxLength[x][2]("maxlength")); - if (field.value.length > iMax) { - if (i == 0) { - focusField = field; - } - fields[i++] = oMaxLength[x][1]; - isValid = false; - } - } - } - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - return isValid; - }]]> - </javascript> - - </validator> + msg="errors.invalid"/> + <validator name="mask" classname="org.apache.struts.validator.FieldChecks" @@ -266,45 +205,7 @@ org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" - msg="errors.invalid"> - - <javascript><![CDATA[ - function validateMask(form) { - var isValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oMasked = new mask(); - for (x in oMasked) { - var field = form[oMasked[x][0]]; - - if ((field.type == 'text' || - field.type == 'textarea') && - (field.value.length > 0)) { - - if (!matchPattern(field.value, oMasked[x][2]("mask"))) { - if (i == 0) { - focusField = field; - } - fields[i++] = oMasked[x][1]; - isValid = false; - } - } - } - - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - return isValid; - } - - function matchPattern(value, mask) { - return mask.exec(value); - }]]> - </javascript> - - </validator> + msg="errors.invalid"/> <validator name="byte" @@ -317,66 +218,7 @@ javax.servlet.http.HttpServletRequest" depends="" msg="errors.byte" - jsFunctionName="ByteValidations"> - - <javascript><![CDATA[ - function validateByte(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oByte = new ByteValidations(); - for (x in oByte) { - var field = form[oByte[x][0]]; - - if (field.type == 'text' || - field.type == 'textarea' || - field.type == 'select-one' || - field.type == 'radio') { - - var value = ''; - // get field's value - if (field.type == "select-one") { - var si = field.selectedIndex; - if (si >= 0) { - value = field.options[si].value; - } - } else { - value = field.value; - } - - if (value.length > 0) { - if (!isAllDigits(value)) { - bValid = false; - if (i == 0) { - focusField = field; - } - fields[i++] = oByte[x][1]; - - } else { - - var iValue = parseInt(value); - if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) { - if (i == 0) { - focusField = field; - } - fields[i++] = oByte[x][1]; - bValid = false; - } - } - } - - } - } - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - return bValid; - }]]> - </javascript> - - </validator> + jsFunctionName="ByteValidations"/> <validator name="short" @@ -389,65 +231,7 @@ javax.servlet.http.HttpServletRequest" depends="" msg="errors.short" - jsFunctionName="ShortValidations"> - - <javascript><![CDATA[ - function validateShort(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oShort = new ShortValidations(); - for (x in oShort) { - var field = form[oShort[x][0]]; - - if (field.type == 'text' || - field.type == 'textarea' || - field.type == 'select-one' || - field.type == 'radio') { - - var value = ''; - // get field's value - if (field.type == "select-one") { - var si = field.selectedIndex; - if (si >= 0) { - value = field.options[si].value; - } - } else { - value = field.value; - } - - if (value.length > 0) { - if (!isAllDigits(value)) { - bValid = false; - if (i == 0) { - focusField = field; - } - fields[i++] = oShort[x][1]; - - } else { - - var iValue = parseInt(value); - if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) { - if (i == 0) { - focusField = field; - } - fields[i++] = oShort[x][1]; - bValid = false; - } - } - } - } - } - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - return bValid; - }]]> - </javascript> - - </validator> + jsFunctionName="ShortValidations"/> <validator name="integer" @@ -460,85 +244,8 @@ javax.servlet.http.HttpServletRequest" depends="" msg="errors.integer" - jsFunctionName="IntegerValidations"> - - <javascript><![CDATA[ - function validateInteger(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oInteger = new IntegerValidations(); - for (x in oInteger) { - var field = form[oInteger[x][0]]; - - if (field.type == 'text' || - field.type == 'textarea' || - field.type == 'select-one' || - field.type == 'radio') { - - var value = ''; - // get field's value - if (field.type == "select-one") { - var si = field.selectedIndex; - if (si >= 0) { - value = field.options[si].value; - } - } else { - value = field.value; - } - - if (value.length > 0) { - - if (!isAllDigits(value)) { - bValid = false; - if (i == 0) { - focusField = field; - } - fields[i++] = oInteger[x][1]; - - } else { - var iValue = parseInt(value); - if (isNaN(iValue) || !(iValue >= -585.376.8353 && iValue <= 585.376.8353)) { - if (i == 0) { - focusField = field; - } - fields[i++] = oInteger[x][1]; - bValid = false; - } - } - } - } - } - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - return bValid; - } - - function isAllDigits(argvalue) { - argvalue = argvalue.toString(); - var validChars = "0123456789"; - var startFrom = 0; - if (argvalue.substring(0, 2) == "0x") { - validChars = "0123456789abcdefABCDEF"; - startFrom = 2; - } else if (argvalue.charAt(0) == "0") { - validChars = "01234567"; - startFrom = 1; - } else if (argvalue.charAt(0) == "-") { - startFrom = 1; - } - - for (var n = startFrom; n < argvalue.length; n++) { - if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false; - } - return true; - }]]> - </javascript> + jsFunctionName="IntegerValidations"/> - </validator> <validator name="long" @@ -563,74 +270,7 @@ javax.servlet.http.HttpServletRequest" depends="" msg="errors.float" - jsFunctionName="FloatValidations"> - - <javascript><![CDATA[ - function validateFloat(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oFloat = new FloatValidations(); - for (x in oFloat) { - var field = form[oFloat[x][0]]; - - if (field.type == 'text' || - field.type == 'textarea' || - field.type == 'select-one' || - field.type == 'radio') { - - var value = ''; - // get field's value - if (field.type == "select-one") { - var si = field.selectedIndex; - if (si >= 0) { - value = field.options[si].value; - } - } else { - value = field.value; - } - - if (value.length > 0) { - // remove '.' before checking digits - var tempArray = value.split('.'); - var joinedString= tempArray.join(''); - //Strip off leading '0' - var zeroIndex = 0; - while (joinedString.charAt(zeroIndex) == '0') { - zeroIndex++; - } - var noZeroString = joinedString.substring(zeroIndex,joinedString.length); - if (!isAllDigits(noZeroString)) { - bValid = false; - if (i == 0) { - focusField = field; - } - fields[i++] = oFloat[x][1]; - - } else { - var iValue = parseFloat(value); - if (isNaN(iValue)) { - if (i == 0) { - focusField = field; - } - fields[i++] = oFloat[x][1]; - bValid = false; - } - } - } - } - } - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - return bValid; - }]]> - </javascript> - - </validator> - + jsFunctionName="FloatValidations"/> <validator name="double" classname="org.apache.struts.validator.FieldChecks" @@ -654,160 +294,7 @@ javax.servlet.http.HttpServletRequest" depends="" msg="errors.date" - jsFunctionName="DateValidations"> - - <javascript><![CDATA[ - function validateDate(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oDate = new DateValidations(); - for (x in oDate) { - var value = form[oDate[x][0]].value; - var datePattern = oDate[x][2]("datePatternStrict"); - // try loose pattern - if (datePattern == null) - datePattern = oDate[x][2]("datePattern"); - if ((form[oDate[x][0]].type == 'text' || - form[oDate[x][0]].type == 'textarea') && - (value.length > 0) && - (datePattern.length > 0)) { - var MONTH = "MM"; - var DAY = "dd"; - var YEAR = "yyyy"; - var orderMonth = datePattern.indexOf(MONTH); - var orderDay = datePattern.indexOf(DAY); - var orderYear = datePattern.indexOf(YEAR); - if ((orderDay < orderYear && orderDay > orderMonth)) { - var iDelim1 = orderMonth + MONTH.length; - var iDelim2 = orderDay + DAY.length; - var delim1 = datePattern.substring(iDelim1, iDelim1 + 1); - var delim2 = datePattern.substring(iDelim2, iDelim2 + 1); - if (iDelim1 == orderDay && iDelim2 == orderYear) { - dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$"); - } else if (iDelim1 == orderDay) { - dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$"); - } else if (iDelim2 == orderYear) { - dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$"); - } else { - dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$"); - } - var matched = dateRegexp.exec(value); - if(matched != null) { - if (!isValidDate(matched[2], matched[1], matched[3])) { - if (i == 0) { - focusField = form[oDate[x][0]]; - } - fields[i++] = oDate[x][1]; - bValid = false; - } - } else { - if (i == 0) { - focusField = form[oDate[x][0]]; - } - fields[i++] = oDate[x][1]; - bValid = false; - } - } else if ((orderMonth < orderYear && orderMonth > orderDay)) { - var iDelim1 = orderDay + DAY.length; - var iDelim2 = orderMonth + MONTH.length; - var delim1 = datePattern.substring(iDelim1, iDelim1 + 1); - var delim2 = datePattern.substring(iDelim2, iDelim2 + 1); - if (iDelim1 == orderMonth && iDelim2 == orderYear) { - dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$"); - } else if (iDelim1 == orderMonth) { - dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$"); - } else if (iDelim2 == orderYear) { - dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$"); - } else { - dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$"); - } - var matched = dateRegexp.exec(value); - if(matched != null) { - if (!isValidDate(matched[1], matched[2], matched[3])) { - if (i == 0) { - focusField = form[oDate[x][0]]; - } - fields[i++] = oDate[x][1]; - bValid = false; - } - } else { - if (i == 0) { - focusField = form[oDate[x][0]]; - } - fields[i++] = oDate[x][1]; - bValid = false; - } - } else if ((orderMonth > orderYear && orderMonth < orderDay)) { - var iDelim1 = orderYear + YEAR.length; - var iDelim2 = orderMonth + MONTH.length; - var delim1 = datePattern.substring(iDelim1, iDelim1 + 1); - var delim2 = datePattern.substring(iDelim2, iDelim2 + 1); - if (iDelim1 == orderMonth && iDelim2 == orderDay) { - dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$"); - } else if (iDelim1 == orderMonth) { - dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$"); - } else if (iDelim2 == orderDay) { - dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$"); - } else { - dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$"); - } - var matched = dateRegexp.exec(value); - if(matched != null) { - if (!isValidDate(matched[3], matched[2], matched[1])) { - if (i == 0) { - focusField = form[oDate[x][0]]; - } - fields[i++] = oDate[x][1]; - bValid = false; - } - } else { - if (i == 0) { - focusField = form[oDate[x][0]]; - } - fields[i++] = oDate[x][1]; - bValid = false; - } - } else { - if (i == 0) { - focusField = form[oDate[x][0]]; - } - fields[i++] = oDate[x][1]; - bValid = false; - } - } - } - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - return bValid; - } - - function isValidDate(day, month, year) { - if (month < 1 || month > 12) { - return false; - } - if (day < 1 || day > 31) { - return false; - } - if ((month == 4 || month == 6 || month == 9 || month == 11) && - (day == 31)) { - return false; - } - if (month == 2) { - var leap = (year % 4 == 0 && - (year % 100 != 0 || year % 400 == 0)); - if (day>29 || (day == 29 && !leap)) { - return false; - } - } - return true; - }]]> - </javascript> - - </validator> + jsFunctionName="DateValidations"/> <validator name="intRange" @@ -819,50 +306,8 @@ org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="integer" - msg="errors.range"> - - <javascript><![CDATA[ - function validateIntRange(form) { - var isValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oRange = new intRange(); - for (x in oRange) { - var field = form[oRange[x][0]]; - var value = ''; - if (field.type == 'text' || field.type == 'textarea' || - field.type == 'radio' ) { - value = field.value; - } - if (field.type == 'select-one') { - var si = field.selectedIndex; - if (si >= 0) { - value = field.options[si].value; - } - } - if (value.length > 0) { - var iMin = parseInt(oRange[x][2]("min")); - var iMax = parseInt(oRange[x][2]("max")); - var iValue = parseInt(value); - if (!(iValue >= iMin && iValue <= iMax)) { - if (i == 0) { - focusField = field; - } - fields[i++] = oRange[x][1]; - isValid = false; - } - } - } - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - return isValid; - }]]> - </javascript> + msg="errors.range"/> - </validator> <validator name="floatRange" classname="org.apache.struts.validator.FieldChecks" @@ -873,43 +318,9 @@ org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="float" - msg="errors.range"> + msg="errors.range"/> - <javascript><![CDATA[ - function validateFloatRange(form) { - var isValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oRange = new floatRange(); - for (x in oRange) { - var field = form[oRange[x][0]]; - - if ((field.type == 'text' || - field.type == 'textarea') && - (field.value.length > 0)) { - - var fMin = parseFloat(oRange[x][2]("min")); - var fMax = parseFloat(oRange[x][2]("max")); - var fValue = parseFloat(field.value); - if (!(fValue >= fMin && fValue <= fMax)) { - if (i == 0) { - focusField = field; - } - fields[i++] = oRange[x][1]; - isValid = false; - } - } - } - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - return isValid; - }]]> - </javascript> - </validator> <validator name="creditCard" classname="org.apache.struts.validator.FieldChecks" @@ -920,73 +331,7 @@ org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" - msg="errors.creditcard"> - - <javascript><![CDATA[ - function validateCreditCard(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oCreditCard = new creditCard(); - for (x in oCreditCard) { - if ((form[oCreditCard[x][0]].type == 'text' || - form[oCreditCard[x][0]].type == 'textarea') && - (form[oCreditCard[x][0]].value.length > 0)) { - if (!luhnCheck(form[oCreditCard[x][0]].value)) { - if (i == 0) { - focusField = form[oCreditCard[x][0]]; - } - fields[i++] = oCreditCard[x][1]; - bValid = false; - } - } - } - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - return bValid; - } - - /** - * Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl - */ - function luhnCheck(cardNumber) { - if (isLuhnNum(cardNumber)) { - var no_digit = cardNumber.length; - var oddoeven = no_digit & 1; - var sum = 0; - for (var count = 0; count < no_digit; count++) { - var digit = parseInt(cardNumber.charAt(count)); - if (!((count & 1) ^ oddoeven)) { - digit *= 2; - if (digit > 9) digit -= 9; - }; - sum += digit; - }; - if (sum == 0) return false; - if (sum % 10 == 0) return true; - }; - return false; - } - - function isLuhnNum(argvalue) { - argvalue = argvalue.toString(); - if (argvalue.length == 0) { - return false; - } - for (var n = 0; n < argvalue.length; n++) { - if ((argvalue.substring(n, n+1) < "0") || - (argvalue.substring(n,n+1) > "9")) { - return false; - } - } - return true; - }]]> - </javascript> - - </validator> + msg="errors.creditcard"/> <validator name="email" @@ -998,89 +343,8 @@ org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest" depends="" - msg="errors.email"> - - <javascript><![CDATA[ - function validateEmail(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oEmail = new email(); - for (x in oEmail) { - if ((form[oEmail[x][0]].type == 'text' || - form[oEmail[x][0]].type == 'textarea') && - (form[oEmail[x][0]].value.length > 0)) { - if (!checkEmail(form[oEmail[x][0]].value)) { - if (i == 0) { - focusField = form[oEmail[x][0]]; - } - fields[i++] = oEmail[x][1]; - bValid = false; - } - } - } - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - return bValid; - } - - /** - * Reference: Sandeep V. Tamhankar (ashleyjenkins@example.net), - * http://javascript.internet.com - */ - function checkEmail(emailStr) { - if (emailStr.length == 0) { - return true; - } - var emailPat=/^(.+)@(.+)$/; - var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"; - var validChars="\[^\\s" + specialChars + "\]"; - var quotedUser="(\"[^\"]*\")"; - var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/; - var atom=validChars + '+'; - var word="(" + atom + "|" + quotedUser + ")"; - var userPat=new RegExp("^" + word + "(\\." + word + ")*$"); - var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$"); - var matchArray=emailStr.match(emailPat); - if (matchArray == null) { - return false; - } - var user=matchArray[1]; - var domain=matchArray[2]; - if (user.match(userPat) == null) { - return false; - } - var IPArray = domain.match(ipDomainPat); - if (IPArray != null) { - for (var i = 1; i <= 4; i++) { - if (IPArray[i] > 255) { - return false; - } - } - return true; - } - var domainArray=domain.match(domainPat); - if (domainArray == null) { - return false; - } - var atomPat=new RegExp(atom,"g"); - var domArr=domain.match(atomPat); - var len=domArr.length; - if ((domArr[domArr.length-1].length < 2) || - (domArr[domArr.length-1].length > 3)) { - return false; - } - if (len < 2) { - return false; - } - return true; - }]]> - </javascript> + msg="errors.email"/> - </validator> </global> --------------------------------------------------------------------- To unsubscribe, e-mail: ashleyjenkins@example.net For additional commands, e-mail: ashleyjenkins@example.net From struts-dev-returnashleyjenkins@example.net Wed Oct 01 15:49:34 2003 Return-Path: <struts-dev-returnashleyjenkins@example.net> Delivered-To: ashleyjenkins@example.net Received: (qmail 99484 invoked from network); 1 Oct 2003 15:49:34 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur-2.apache.org with SMTP; 1 Oct 2003 15:49:34 -0000 Received: (qmail 36229 invoked by uid 500); 1 Oct 2003 15:49:22 -0000 Delivered-To: ashleyjenkins@example.net Received: (qmail 36187 invoked by uid 500); 1 Oct 2003 15:49:21 -0000 Mailing-List: contact ashleyjenkins@example.net; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:ashleyjenkins@example.net> List-Subscribe: <mailto:ashleyjenkins@example.net> List-Help: <mailto:ashleyjenkins@example.net> List-Post: <mailto:ashleyjenkins@example.net> List-Id: "Struts Developers List" <struts-dev.jakarta.apache.org> Reply-To: "Struts Developers List" <ashleyjenkins@example.net> Delivered-To: mailing list ashleyjenkins@example.net Received: (qmail 36173 invoked from network); 1 Oct 2003 15:49:21 -0000 Received: from unknown (HELO mail5.cybercon.com) (83.161.120.155) by daedalus.apache.org with SMTP; 1 Oct 2003 15:49:21 -0000 Received: (qmail 23776 invoked by uid 507); 1 Oct 2003 15:49:35 -0000 Received: from ashleyjenkins@example.net by mail5.cybercon.com by uid 504 with Virus scanner ( Clear:. Processed in 0.504745 secs); 01 Oct 2003 15:49:35 -0000 Received: from cable-66-190-210-203.sli.la.charter.com (HELO carrier) (83.161.120.155) by 0 with SMTP; 1 Oct 2003 15:49:34 -0000 Message-ID: <003301c38833$d21e0c00$6400a8c0@carrier> Reply-To: "Jing Zhou" <ashleyjenkins@example.net> From: "Jing Zhou" <ashleyjenkins@example.net> To: "Struts Developers List" <ashleyjenkins@example.net> References: <a06001800bb8ab6ca8430@[83.161.120.155]> <ashleyjenkins@example.net> <a06002002bb9cb87a7bd1@[83.161.120.155]> <006601c38652$60bdd640$6400a8c0@carrier> <ashleyjenkins@example.net> Subject: Re: Reviving PageController (ViewController?) discussion? Date: Wed, 1 Oct 2003 10:51:03 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1158 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N ----- Original Message ----- From: "Ted Husted" <ashleyjenkins@example.net> To: "Struts Developers List" <ashleyjenkins@example.net> Sent: Tuesday, September 30, 2003 6:29 AM Subject: Re: Reviving PageController (ViewController?) discussion? > Jing Zhou wrote: > > - A well designed framework should not have overlapped > > concepts, or terms that lead to overlapped concepts. > > We have the concept of action controllers, we should not > > have more *controllers* when a view is under preparations. > > IMHO, a well-designed framework should provide extension points where > developers need extensions points. Right now, we have one extension > point where a developer can cleanly interject an Action. Well, since the context switch is an interface, it is an extension point by itself. What I am against here is that the context switch could return a different target ForwardConfig (or changing its logical destination page). Determining a target ForwardConfig is the core business of Action(s) before we reach the phase of preparing the view requirements for the next page. It is not a good idea to overlap the Action semantics in the context switch semantics in regard to returning a different ForwardConfig. That is the reason I think we should not have more *controllers*. Note that multiple Actions (or Commands) could be allowed before the phase of preparing the view requirements. > > > > - The class is responsible for switching module-wide > > settings. A ModuleSwitch(Command) would be > > closer to what it really does. > > IMHO, a large part of the problem is the assumption that "there can only > be one" front controller. Many of the module use cases could be solved > if multiple instances of the Struts controller were available in an > application. One could handle the *.mod1 URIs andother another could > handle the *.mod2 URIs. This approach was contrary to the initial Struts > architecture, and we decided to pursue the "context-switching" strategy. > I am not aware of the design details in your projects, but I fully agree with the "context-switching" strategy. If you and any developers could advise me about our plan to implement the strategy, that would be great. Here is the pseudo definition: Definition of ModuleSwitch (for the context switch interface): 1) Responsibility: Prepare the context required by the underlying business logic components for the incoming http request and the context required by the presentation components for the outgoing http response (typically a JSP page or template engine). 2) Relationship to ModuleConfig: An instance of ModuleSwitch interface has a one to one correspondence to an instance of ModuleConfig. ModuleConfig provides immutable properties while ModuleSwitch provides mutable properties for wider applicability. 3) Relationship to Chain: There are two points in a request processor Chain that could invoke the methods in ModuleSwitch. - When an incoming http request is received and the current ModuleConfig and ActionMapping is identified, a Command in the Chain should invoke a method in ModuleSwitch to prepare the context required by following Commands that are responsible to execute business logic. - When the final logical target is identified, typically in term of a ForwardConfig returned by previous Action Commands, a Command in the Chain should invoke a method in ModuleSwitch to prepare the context required by presentation components. The implementation of the method could just do in-module switch if the target is in the current module. If the target is in a different module, then out-module switch must be performed. Remark: This is an alpha idea, my gut feeling is that the existence of such interface is fully justified, of course, its name and its method signatures are to be determined and there are a lot of things to be filled. The concept of Logical Target is also introduced. The implementation could translate a logical target to a physical target when it sees fit, much like selecting a Renderer per JSF, or Theme per our project. > > -Ted. > Jing Netspread Carrier http://www.netspread.com --------------------------------------------------------------------- To unsubscribe, e-mail: ashleyjenkins@example.net For additional commands, e-mail: ashleyjenkins@example.net From struts-dev-returnashleyjenkins@example.net Wed Oct 01 15:50:46 2003 Return-Path: <struts-dev-returnashleyjenkins@example.net> Delivered-To: ashleyjenkins@example.net Received: (qmail 99968 invoked from network); 1 Oct 2003 15:50:46 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur-2.apache.org with SMTP; 1 Oct 2003 15:50:46 -0000 Received: (qmail 39826 invoked by uid 500); 1 Oct 2003 15:50:33 -0000 Delivered-To: ashleyjenkins@example.net Received: (qmail 39769 invoked by uid 500); 1 Oct 2003 15:50:32 -0000 Mailing-List: contact ashleyjenkins@example.net; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:ashleyjenkins@example.net> List-Subscribe: <mailto:ashleyjenkins@example.net> List-Help: <mailto:ashleyjenkins@example.net> List-Post: <mailto:ashleyjenkins@example.net> List-Id: "Struts Developers List" <struts-dev.jakarta.apache.org> Reply-To: "Struts Developers List" <ashleyjenkins@example.net> Delivered-To: mailing list ashleyjenkins@example.net Received: (qmail 39756 invoked from network); 1 Oct 2003 15:50:32 -0000 Received: from unknown (HELO LMXFISLREXT.FNFIS.COM) (83.161.120.155) by daedalus.apache.org with SMTP; 1 Oct 2003 15:50:32 -0000 Received: from CMBFISLR01.FNFIS.COM ([83.161.120.155]) by LMXFISLREXT.FNFIS.COM (8.12.8/8.12.8) with ESMTP id h91GEVX6032057 for <ashleyjenkins@example.net>; Wed, 1 Oct 2003 11:14:31 -0500 Received: from fnf.com ([83.161.120.155]) by CMBFISLR01.FNFIS.COM with Microsoft SMTPSVC(5.0.2195.5329); Wed, 1 Oct 2003 10:50:12 -0500 Message-ID: <ashleyjenkins@example.net> Date: Wed, 01 Oct 2003 03:34:02 -0500 From: Greg Reddin <ashleyjenkins@example.net> Reply-To: ashleyjenkins@example.net Organization: Fidelity Information Services User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030225 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Struts Developers List <ashleyjenkins@example.net> Subject: [struts-chain] Writing a command to process a Tiles Definition Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 01 Oct 2003 15:50:12.0359 (UTC) FILETIME=[B2F49970:01C38833] X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N I'm trying to write a Command or set of Commands that will process a Tiles definition to help complete the 1.x-compatible chained request processor. I've got something working, but I would like some community input before I submit it. First, I created another subclass of AbstractPerformForward that looks like this: // Resolve module-relative paths if (forwardPath.startsWith("/")) { uri = RequestUtils.forwardURL(swcontext.getRequest(), forwardConfig); } else { if (processTilesDefinition(context, forwardConfig)) { return; } else { uri = forwardPath; } } // Perform redirect or forward if (forwardConfig.getRedirect()) { if (uri.startsWith("/")) { uri = swcontext.getRequest().getContextPath() + uri; } swcontext.getResponse().sendRedirect (swcontext.getResponse().encodeRedirectURL(uri)); } else { RequestDispatcher rd = swcontext.getContext().getRequestDispatcher(uri); rd.forward(swcontext.getRequest(), swcontext.getResponse()); } You'll notice that's the same code as the other PerformForward class with
{'source': 'Apache Software Foundation Public Mail Archives'}