[Mondrian] Update on retroweaver 2.0.7 upgrade

Julian Hyde jhyde at pentaho.com
Tue Feb 3 15:44:18 EST 2009

> Eric wrote:
> I've been encountering a NoClassDefFoundError for java/lang/Enum in  
> the mondrian.xmla.RowsetDefinition class initializer, despite 
> the fact  
> that the class appears to have been weaved correctly (it even looks  
> right when the weaved class is decompiled).  I don't see anything  
> obvious I can point to as the culprit.
> I've submitted a report to the retroweaver devs, one of whom 
> is taking  
> a look at the class files to see if he can spot the problem.  With  
> luck, it'll be a simple environment error on my part, but there's no  
> guarantee of it.  For obvious reasons, I can't yet estimate how long  
> this will take to resolve.

It has to be said: RowsetDefinition is a beast of a class. It is an enum
7000 lines long with about 20 members each of which has its own method
implementations and is therefore effectivly an inner class, and another 24
inner classes. I don't apologise for that - I think keeping it all in one
file helps to keep things uniform - but I can see how retroweaver might have
problems. Point out this fact to the Retroweaver developers if they have not

One possible workaround is to convert RowsetDefinition into a regular class.
The enum constants would then be regular constants (public static final
RowsetDefinition) initialized to anonymous inner classes. We would lose the
ability to do 'switch (rowsetDefinition)' but I don't think that is used

But I can also wait a few weeks to see if the Retroweaver guys can fix this.

> Julian, I realize you have upcoming events that impose a time  
> constraint on getting Mondrian 3.1 out the door.  Much as I'd 
> like to  
> get this and the related concurrency fixes to Segment.java 
> included in  
> 3.1, I recognize that it may not be possible.

I'd like to get this in in the next month, but it's not crucial that it's in
3.1. We can consider a 3.1.1 release.


More information about the Mondrian mailing list