January 21, 2006 22:12
Programming, Java, ATG Dynamo
ATG has been busy lately. The big news has to be the new ATG Eclipse plugin (remote plugin site is http://www.atg.com/eclipse). It includes a Repository Editor that looks like this:

editor

Right click, expand, and override properties. It works with XML file combination (so it only defines the changes you make), and make viewing and editing repositories a snap.

There also some functionality that I'd somehow missed in the shuffle: repositories can now support many to many tables. It used to be (back in prehistory) that they didn't support them directly because adding an item to a list automatically added it on the other end as well, and the caches got confused. Now bidirectional links just works, without requiring a link table in the middle to disambiguate them.

I both hate and love little tweaks like this, because they make my life easier when I know about them, and make me feel like an idiot when I miss them. And since ATG doesn't come out with a "new in this release" feature list, the only recourse I have is to read through the manual and classes in every version. It builds character, but it gets a little old.

Still. Named queries support in ATG repositories. This is not a vastly new feature, but I don't remember it supporting stored procedures or SQL queries before. I'm in favor of named queries, because it keeps all the query logic together. It's interesting how many layers queries have gone through. I've gone from queries in UI to queries in DAO/manager components, and now the queries are completely outsourced back to the repository. Eventually there will be a dedicated query engine that we'll communicate with and we'll have to make queries to get the queries out.

There is a "removeNullValues" attribute for multi-valued collections which will make sure that any null elements will not show up when the collection is called. This is actually important, because there are a number of places in DCS where an order has to be reconstituted and will not value the relationships properly if a pipeline processor fails, leaving it null. This kind of thing causes all kinds of headaches, because no-one ever checks for null elements when iterating through a collection. Ever. So it dies with NPE and doesn't tell you what didn't work. So thank goodness for that.

I read about the session backup for repository items feature. I don't know how useful this really is, but I'm sure someone must want it for something. I also found it's possible to notify a repository through RMI or SQL JMS that it should invalidate its caches through the GSAInvalidationService. The distributed cache concurrency through SQL JMS is also new.

Added to this, I found some really old functionality in the middle of comparing ATG Nucleus to Spring. It turns out that Nucleus has been able to able to expose JNDI through a component reference (atg.nucleus.JNDIReference), and can even call static methods directly (atg.nucleus.StaticMethodReference). There's even a system for component aliases built in with atg.nucleus.GenericReference, which explains why I always got confused when looking at price lists and secure price lists (they're actually the same component).

Other than that... well, I'm still investigating atg.repository.test. I'll see if I can reuse anything there over the mock repository stuff. It would be nice to be able to define a repository, run some integration tests against it, and then start the server...

« ATG Security | Home | Environment configuration with Spring »

Yes, they've been busy... Imagine how I felt when in a course last week I said there was no such tool, only to discover it after the last day.

But I *really* feel they should come up with a "What's new" document for every release, telling us which bugs were fixed doesn't cut it.

name
url