directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Emmanuel Lecharny <>
Subject Re: [Shared] [Model] What was the reason for removing the schema entity interfaces like AttributeType?
Date Tue, 08 Mar 2011 12:58:19 GMT
On 3/8/11 9:09 AM, Pierre-Arnaud Marcelot wrote:
> Hi Alex,
> That's something I had also noticed a few weeks ago.
> See [1].
> I wanted to decouple the SchemaObjects from the SchemaManager, but I guess I ran into
other work and couldn't complete it.
> AFAIR there are around 5 methods in the SchemaObject interface/abstract class that needed
to be removed and added in the SchemaManager utilities.
> I'm not sure they are that much used outside of SchemaManager related classes.
> On the lack of interfaces for schema objects, it's probably a little more complex to
move them back and requires more refactoring from depending parts.

Just for the record, the reason why we don't have anymore interfaces for 
AT, OC etc is dur to some heavy refactoring back in august 2009, when 
the Interfaces were just make it overly complex to get the schema 
manager refactored. We had classes  that were holding schema information 
AttributeTypeDescription), plus some other classes used in Studio, plus 
another class named AttributeTypeImpl.

Back then, removing the AttributeType interface was dictated by the need 
to simplify the merge of those 3 classes into one single class that can 
be used everywhere. Also this class was not expected to be exposed to 
the public.

This was a choice, may be not the best one, but it helped me to get this 
refactoring done. Remember that it took me 3 months to get the 
SchemaManager working fine in the server, with the extra benefit of 
being usable in Studio, even if Pierre-Arnaud has spent one week to get 
it working as expected for his need.

Now that we want to expose the SchemaManager to the users, sure, the 
lack of interface starts to hurt. It's most certainly time to get those 
interface back in the code, something that will cost some time, but at 
least, the current AT/OC... classes are quite clean, and such a 
refactoring should be easier to conduct than it was 2 years ago...

I want to state here that I haven't removed those interfaces because I 
'hate' interfaces, because it's simply not right. I just get rid of the 
casts I had to apply everywhere when we were using Interfaces, casts 
that were a PITA in the context of the initial SchemaManager refactoring.

Things change, decisions taken 2 years ago can appears now to be wrong, 
but the context has changed too. Back then, it was not *that* stupid...

I also want to say that I didn't do that in my corner, I think I 
carefully expressed the options I selected and informed the project 
about them. Anyone who could have thought about such a change to be a 
bad thing 2 years ago could have emitted an opinion. I don't remember 
having heard about any complaint. Now, I'm quite sure that with the huge 
number of modifications done every week, it's very hard to check 
everything, and some bad decisions will still go through into the code. 
That's life. No need to crucify anyone for such things.

Emmanuel L├ęcharny

View raw message