Skip to main content

Tripping on Convention over Configuration

It is with dismay that I sometimes find the trend of moving traditional configuration heavy programming models to convention based troubling. Case in point - I've been trying to adopt the newfangled Spring Data based repository framework. It's been working wonders and I got the QueryDSL support and naming convention based query generation going.

After creating a bunch of these repositories, I ran into an issue with one of my custom repositories. It was not recognizing that a method in the custom repo is part of the custom side and not to be a candidate method for spring to do its voodoo magic. For some reason Spring thought the method is a property of the entity bound to the repository. After digging through the Spring code base and spending a lot of time, it finally was clear why this was happening: I had made a typo on the repository naming and the "y" was missing from custom RepositoryImpl class. If only Spring was smart enough to tell me that this is what was causing the problem instead of point to a confusing message. So long type safety and compile-type checking, and welcome to the brave new world of magic based frameworks! 

Comments

Popular posts from this blog

Automate SQL Dumps for SQLServer

The backup mechanism in SQL Server may be fine for many cases, but there are limitations with it (like restoring to a different server). I really like how I can just dump the database SQL with mySQL which can be easily processed with custom scripts. I was looking around for a mysqldump equivalent for SQLServer. I know you can do this with the SQL Management Studio through GUI in 2008 version, but I need this to be automated. This lead me to discover the SQL Server Management API . With it, you can do a SQL Dump like: using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management.Common; using Microsoft.SqlServer.Management.Sdk.Sfc; namespace SQLGenerator { class Program { static void Main(string[] args) { //Connect to the local, default instance of SQL Server. { Server myServer = new Server(args[0]); Database db = default(Database); db = myServer.Databases["be"];

Better Samsung DeX Experience

Samsung Dex  is a pretty amazing technology that turns phone into a full fledged desktop PC. The original device costs about $150 but has some limitations such as not being able to use headphone jack and basically having the phone locked down. A cheaper, and arguably a more functional device can be had for less than $40 with things like the Melopow Doc  that leaves the device in a more usable state with full access to the devices ports at a much better price. And while using DeX, make sure to use the fantastic Dex MaX  app to add support for fullscreen to all your apps. Happy DeXing!

GWT: Emulate tab on Enter

Sometimes users expect text boxes to move focus on to the next element after pressing Enter, similar to most spreadsheets. If you are using GWT and jQuery, here is a little snippet to help you along: public class AutoTabbedTextBox extends TextBox implements KeyUpHandler {     public AutoTabbedTextBox() {         super ();         addKeyUpHandler( this );     }     @Override     public void onKeyUp(KeyUpEvent event) {         // emulate tab on key         if (event.getNativeKeyCode() == KeyCodes. KEY_ENTER )             focusNext(event.getNativeEvent());     }     public native void focusNext(NativeEvent event)/*-{             var inputs = $wnd.$( ':input:visible' );             inputs.eq(inputs.index(event.target) + 1).focus();     }-* / ; }