Leo found an odd issue in KIM yesterday. AZ's implementation of KIM uses an LDAP backend - but then there's some test users who don't exist in the LDAP, so to create those, Arizona was adding the users as injected Spring beans. However, in Rice 1.0.1 that didn't work - it wouldn't let Leo inject a KimEntityNameInfo into a KimEntityInfo bean.
This is because KimEntityInfo implements KimEntity. KimEntity#getDefaultName returns KimEntityName. KimEntityInfo#getDefaultName returns KimEntityNameInfo, and rather more to the point, KimEntityInfo#setDefaultName takes in a KimEntityNameInfo object. When Spring introspects KimEntityInfo for properties, then, it does not consider "defaultName" as a property as its getter returns one type (KimEntityName, as the interface wins) and the setter takes in a different type (KimEntityNameInfo; a sub-type sure, but different). So Leo created a KimEntity implementation which returned and took in interfaces; that worked.
Of course, this wouldn't happen if KimEntityInfo's getDefultName returned the interface - KimEntityName - and its setter took in KimEntityName, which is what I'm proposing here. DefaultName isn't the only property this issue applies to...