Hello everyone I was busy the last days while the baby was sleeping.

I added class dependency scanning for java (not in groovy yet we have
to move from the internal groovy parser to the groovy compiler to enable it)

What does this mean.

If you have a component MyComponent and a renderer for instance

and you have a construct in the renderer

((MyComponent)uiComponent).doSomething()

and you change the component, then the renderer at the next reload is also reloaded, that way you wont get Classcast exceptions because the renderer is kept in ram while the component class and component is refreshed.

This works on all artefacts and should reduce the number of server restarts tremendously.

Another Example

BlogService has application scope
BlogView has request scope

both use BlogEntry as Object which is stored and generated on demand!

Now if you change Blogservice, BlogView is also marked as to be reloaded because it references BlogService with a cast and an include!

If you change BlogEntry, both BlogService and BlogView are marked as to be reloaded to keep the classes in sync!


The good thing is, for instance if you have a utils class and have it referenced over various artefacts, then chaning the utils class
will cause a reload of the artefacts which include the utils class as well!

Downside, I had to reintroduce the asm dependency unfortunately, and currently it only works in java (in groovy you can bypass the casting issue for now by using def) and for speed and other reasons it only works on artefacts which are loaded dynamically not in precompiled ones!


So what is left.
a) Bernhard wants to move the entire compile cycle away from the refresh to the scanning tasks for various reasons. (This also will improve the behavior in the case of doing a hot change of code on a running server - if done right)

b) Bernhard wants to add a bean dependency map to allow a better bean restart algorithm, currently if a bean is changed we refresh all dynamic ally loaded beans (we cannot go away from this even with the class dependencies because beans can be wired also over plain Object references)

c) Some optimization and cleanup tasks have to be performed.
There are some parts of the code I am very unhappy with yet,
because some stuff was trial and error.

d) The documentation of course!

Anyway have fun with the new feature and happy christmas everyone!

Reply via email to