Friday December 27, 2002

Java Development with Ant, The Application
If you've been fortunate enough to read Erik Hatcher's Java Development with Ant, you know that there's tons of good tips in it. I read it and I've been recommending it every since. Erik has been continuing development of the sample app for the book ever since it was released. I got many tips from Erik in developing AppFuse and I have to say, it really is a nice example. Maybe I'll get some more stuff now that it appears to have jumped from version 0.4 to 0.9! Here's a message Erik sent about the latest release.
All - I'm proud (and worried about the support e-mails! :) to announce the near-final release of a project demonstrating Ant, XDoclet, Struts, JUnit, Cactus, and Lucene. Its called JavaDevWithAnt as it was written for the book Steve and I co-authored and has been refined during several presentations I've been giving on Ant, XDoclet and Struts. The documentation is in draft stage, and my primary goal is to collect feedback on polishing the documentation (and the application if there are any bugs that surface). The site where I'm hosting the distribution and documentation is: http://www.ehatchersolutions.com/JavaDevWithAnt/ Please let me know if you try it out and have suggestions for improvement, or just to let me know you tried it and hate it or love it, etc. Feedback more than welcome! Direct feedback to me at JavaDevWithAnt@ehatchersolutions.com Erik p.s. Since this e-mail is directed to the XDoclet, Lucene, and Cactus lists, here is a brief teaser for you: XDoclet - its used extensively, even using a custom tag handler to generate starter JSP's from Struts form beans. Lucene - my <index> Ant task is used to index text and HTML files, and Lucene's API is used at run-time to query the index. Cactus - StrutsTestCase is used, although no direct Cactus tests.
Happy information-overload! There's a lot there, but if I could figure it out - I'm sure you can. Erik - finally on Jaguar eh? What took you so long ;-)
Posted in Java
at Dec 27 2002, 07:25:45 PM MST
1 Comment
Copying Properties: The Good, the Bad and the Ugly I realize that having an ActionForm and a POJO with the same getters/setters is ridiculous, but please bear with me for this example. I have a Form and a POJO with Strings, Longs and Dates. The Longs and the Dates get converted into Strings when I get the data from the database using BeanUtils.copyProperties. This works great.
BeanUtils.copyProperties(userForm, user);
However, when going back, it's a different story - here's the ugly way:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date dateChanged = format.parse(userForm.getDateChanged());
Date dateCreated = format.parse(userForm.getDateCreated());
user = new User(userForm.getUserId(), userForm.getPassword(),
Long.valueOf(userForm.getDesktopId()),
Long.valueOf(userForm.getCubeId()),
userForm.getCreatedBy(), dateCreated,
userForm.getChangedBy(), dateChanged);
While this works, it's ugly and a pain. I want something like the ActionForm-Value Object mapper. This mapper allows you to easily copy properties between VOs (or Hibernate Objects) and Forms, and vise-versa.
vo = FormToVOMapper.map(form, new ExampleVO());
So I could do something as simple as user = FormToVOMapper.map(userForm, new User()); I like this mapper and I used it on my last project, where it works great. However, I get the feeling that developers in the Struts Community are using something better - and I want to use it. So please, tell me what it is and lets figure out the best way to do this. Another method I've used in the past is to set the VO (or object) on the form itself, allowing for setting of Strings without copying - and setting dates on the form, to be manipulated by the setter. This framework worked great, and I was actually the happiest with it out of any of the above. Chime in and give me your opinions!
Posted in Java
at Dec 27 2002, 03:14:29 PM MST
6 Comments
ChainedExceptions and BeanUtils.copyProperties
I am wondering about a few things, so thought I'd try and get some help from the best source I know - the java.blogs community. First, an update on last night. I experienced some difficulty with Hibernate (persisting child objects) and Struts (nightly build doesn't quite work right with Tiles and Modules) and gave up at 2:00 a.m. Luckily, my head cleared up this morning after a deep 4 hours of sleep and I figured out Hibernate and it appears that a fix for the Tiles/Modules problem was checked into CVS by Cedric.
Now I'm wondering if it's possible to use declared exceptions in Struts to grab all your Exceptions from the bottom up. I can do this in an Action (or even a filter) using the following:
// caught exception e
ActionErrors errors = new ActionErrors();
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("errors.general"));
while (e != null) {
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("errors.detail", e.getMessage()));
e = (Exception) e.getCause();
}
request.setAttribute(Globals.ERROR_KEY, errors);
Can I do this with declared exceptions? Man that would be sweet if I could - I wouldn't have to have any exception handling in my Actions. Maybe that's the easy way out, but it also makes for rapid development - and you can always add them in when you really want them. Two other things I need to do.
- I have a
java.util.Seton my User (Hibernate) object. This refers to a collection of Resume objects. When I generate my StrutsForms, I need to do something in my XDoclet template to turn ajava.util.Setinto ajava.util.ArrayList. I don't know that I have to do this, but I've always used ArrayLists or Vectors on ActionForms for child objects. - I am using
BeanUtils.copyPropertiesin a Business Delegate to transfer properties from my User object to a UserForm object. When I do this, the child objects come through as Resume objects - where I really want them to come through as ResumeForms. Is this possible usingBeanUtils, or do I have to do this manually?
I should probably do some research now to try and figure this stuff out on my own - but hopefully an answer will come through while I'm doing that ;-). I'll post to the proper mailing lists if I can't figure it out by COB. BTW, if you're using Hibernate, the FAQ is awesome. I wish more OSS (or closed-source software) had documentation this good.
Posted in Java
at Dec 27 2002, 11:40:40 AM MST
9 Comments
Search This Site
Recent Entries
- How to build a Shot-Ski
- Bus Project Update
- Farewell to the 2011-2012 Ski Season
- Cruising around the Western Caribbean
- Spring Break!
- A Spectacular Trip to Stockholm and Madrid
- Comparing Web Frameworks and HTML5 with Play Scala at Jfokus 2012
- Play Framework 2.0 with Peter Hilton at Jfokus
- Secure JSON Services with Play Scala and SecureSocial
- My What's New in Spring 3.1 Presentation