rwinch / spring-ldap-migrate-issues

0 stars 0 forks source link

LDAP-306: Permit ODM to allow inheritance #305

Open rwinch opened 10 years ago

rwinch commented 10 years ago

Migrated from LDAP-306

I was trying do use some inheritance when using ODM. Looking in the Internet, I found out this thread: http://forum.spring.io/forum/spring-projects/data/ldap/129952-permit-odm-to-allow-inheritance

But I could not find anything here to make that modification, so I am opening an issue to it.

The solution Fneuch proposed was as follow:

Hi Guys,

First of all, sorry for any english mistake.

Secondly, is it me or ODM doesn't allow hierarchical inheritance? I've made a little change and it seems to work fine.

In the constructor of class ObjectMetaData I've replaced:

Code:

//Field[] fields = clazz.getDeclaredFields();

by

Code:

ArrayList<Field> fieldsTemp = new  ArrayList<>();
        fieldsTemp.addAll(Arrays.asList(clazz.getDeclaredFields()));
        Class<?> classTemp = clazz.getSuperclass();        
        while(!classTemp.equals(Object.class)) {
            fieldsTemp.addAll(Arrays.asList(classTemp.getDeclaredFields()));
          classTemp = classTemp.getSuperclass();            
        }
        // Get field meta-data - the @Attribute annotation
        Field[] fields = fieldsTemp.toArray(new Field[fieldsTemp.size()]);

Can you correct me here? Is there something that I didn't see? Because on create, find, delete I've seen no problem with my test... I didn't checkout project to made a full change, just replace the class in my own project for testing.

How can I ask for that feature in a future version? Thanks for any information!

Sylvain aka Fneuch