Yes. And the indonesian word for chili paste, which is also lombok. ("Spice up your java" is the tag line, after all.)
On Aug 18, 1:22 pm, Michael Neale <michael.ne...@gmail.com> wrote: > Lombok - is that named after Lombok in bali - near the island of > Java? > > On Aug 18, 5:00 pm, Reinier Zwitserloot <reini...@gmail.com> wrote: > > > > > public void handleWebRequest(String target, Request req, Response res) > > throws Exception { > > @Cleanup("release") Db db = worker.getDb(); > > db.doWhatever(); > > > } > > > couldn't be simpler, really. @Cleanup is from project lombok, and it > > ensures the db is released even if this method errors out. Note how I > > just toss a 'throws Exception' on there. This is a servlet; it's > > effectively an entire application all by itself. That kind of broad > > context is allowed to throw whatever the heck it wants. The code that > > calls into this code catches throwable, because if a servlet errors > > out, even with something drastic like, say, an InternalError, it > > should not take the whole webserver down with it. The code that > > catches this does some sorting work on the exception in question, and > > targets a different log file if it seems particularly nasty (such as > > out of memory, internalerror, virtual machine error, and a few > > others), but that's really an implementation detail. The point is: The > > gazillion different instances of 'handleWebRequest' are as simple as I > > could make them. > > > NB: The db object isn't passed in primarily because not all these > > handlers need one, and the db engine is an entirely separate module, > > so I'd rather avoid adding a dependency there. If I didn't have > > lombok, I would make Db 'lazy' and grab a connection only when a > > request happens, so that you don't have to try/finally this stuff, and > > pass a Db object into the handleWebRequest call. > > > For you JDBC users, I suggest you go play with projectlombok.org. > > Here's Christian Catchpole's code sample without lombok: > > > PreparedStatement ps = connection.prepareStatement(sql); > > try { > > ResultSet resultSet = ps.executeQuery(); > > try { > > while (resultSet.next()) { > > // stuff > > } > > } finally { > > resultSet.close(); > > } > > } finally { > > ps.close(); > > } > > > and here's the same thing with lombok: > > > @Cleanup PreparedStatement ps = connection.prepareStatement > > (sql); > > @Cleanup ResultSet resultSet = ps.executeQuery(); > > while (resultSet.next()) { > > // stuff > > } > > > If you have a need to handle SQLExceptions locally (I would like to > > state again that if you are forced to do this, your framework sucks > > and you should fix it!), it would turn into: > > > try { > > @Cleanup PreparedStatement ps = connection.prepareStatement > > (sql); > > @Cleanup ResultSet resultSet = ps.executeQuery(); > > while (resultSet.next()) { > > // stuff > > }} catch ( SQLException e ) { > > > //What are ya gonna do now? > > > } > > > rule of thumb: If you can't do anything useful in your catch block > > other than log and/or wrap it, you're doing it wrong. > > > And to the genius who mentioned beep(): Whoa. Did not know about it. > > Evil! Muhahaha! > > > On Aug 18, 3:29 am, phil swenson <phil.swen...@gmail.com> wrote: > > > > I'm happy to see all the runtime exception advocates on here. > > > Definitely not the mainstream view. Smart crowd :) > > > > I would love to see some example of how you guys write JDBC code. > > > JDBC code is usually the most heinous of all with all the SQLException > > > and resource handling crap you have to do. > > > > Please post a snippet :) > > > > On Aug 17, 6:47 pm, Michael Neale <michael.ne...@gmail.com> wrote: > > > > > The only sane way is this: > > > > > try { > > > > > .. your code here > > > > > } catch (Throwable t) { > > > > > for (int i =0; i< 1000; i++) > > > > java.awt.Toolkit.beep(); > > > > System.exit(-1); > > > > > } > > > > > Sometimes can use a Runtime.exec to delete the home directory for good > > > > measure, but that means platform specific code. > > > > > On Aug 18, 8:58 am, Casper Bang <casper.b...@gmail.com> wrote: > > > > > > For that we have Runtime().getRuntime().addShutdownHook() no? That's > > > > > what I used anyway with JSR-296, where Hans Muller had hardwired the > > > > > System.exit() call in the framework. > > > > > > /Casper > > > > > > On 17 Aug., 23:11, Peter Becker <peter.becker...@gmail.com> wrote: > > > > > > > Jess Holle wrote: > > > > > > > Peter Becker wrote: > > > > > > > >> While I agree that you can have shared state, the scenario I had > > > > > > >> was a > > > > > > >> clean worker: some data goes in before the thread gets started, > > > > > > >> other > > > > > > >> data comes out at the end. > > > > > > > >> System.exit is a bad idea generally since you don't really know > > > > > > >> who is > > > > > > >> going to use your code in the future. If you call System.exit in > > > > > > >> your > > > > > > >> average Tomcat installation you'll probably take it down with > > > > > > >> you. I > > > > > > >> tend to restrict the System.exit calls to main(..) methods. > > > > > > > > Low-level code shouldn't be catching VirtualMachineError -- it > > > > > > > should > > > > > > > always re-throw it. > > > > > > > I agree. But between the likelihood of this error being raised and > > > > > > the > > > > > > damage done if you catch it when you shouldn't the risk seems quite > > > > > > acceptable. Again: it is highly dependent on what your application > > > > > > is, I > > > > > > would certainly not recommend this for a mission or even life > > > > > > critical > > > > > > section of code. > > > > > > > > Only top-level thread handlers should catch these errors and call > > > > > > > System.exit(). > > > > > > > And what happens to other threads? If you call System.exit you > > > > > > should > > > > > > have global knowledge of all application threads and their current > > > > > > state. Even in the presence of a VirtualMachineError it is probably > > > > > > better to try a clean shutdown. Calling System.exit could leave a > > > > > > lot of > > > > > > things in inconsistent state that will be hard to recover from. Are > > > > > > all > > > > > > your system's boundaries transactional? > > > > > > > Peter --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to javaposse@googlegroups.com To unsubscribe from this group, send email to javaposse+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/javaposse?hl=en -~----------~----~----~----~------~----~------~--~---