Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LDAP-305: Permit ODM to allow inheritance #340

Open
spring-projects-issues opened this issue May 25, 2014 · 7 comments · May be fixed by #591
Open

LDAP-305: Permit ODM to allow inheritance #340

spring-projects-issues opened this issue May 25, 2014 · 7 comments · May be fixed by #591

Comments

@spring-projects-issues
Copy link

Demétrius Jubé (Migrated from LDAP-305) said:

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

@spring-projects-issues
Copy link
Author

daniel carter said:

This should be trivial to do by changing to use existing spring-framework utility methods. Then field behaviour will be the same as the rest of spring. Such a limitation that spring-ldap does not allow object-oriented programming

@btocquec
Copy link

Hi,
Is there any chance to have this improvement added to a not-so-far release?
Please ... :/
Thanks

@christophs78
Copy link

Just run into this issue... 4 years later... still not fixed. :-(

Background: I have to implement a ldap-scheme which has common attributs. (each objectClass has a base of the same 3 attributes) Wanted to put this 3 attributes into a base class. And inhert the concrete classes (Person, OrgUnit, ...) from this.
Scheme: https://www.ref.gv.at/fileadmin/_migrated/content_uploads/LDAP-gv-at-teil1-2-3-0_2006-0221.pdf, Page 5 (2.4.2)

@ricejamesh
Copy link

ricejamesh commented Dec 28, 2020

In the meantime, perhaps a comment in the @entry documentation stating that it doesn't support class inheritance. I've had the impression that I was doing something wrong in my project by using a class inheritance chain of customObject extends InterOrgPerson which extended OrganizationalPerson which extended Person. Until I read this post. A little comment in the @entry annotation saying that it will only reference the fields in the annotated class and excludes parent classes would have saved me a lot of head scratching. I also feel that JPA repositories do support inheritance which led me to believe this did also. At this point, cut-and-paste along with Lombok is the intermediate solution until something changes.

@jtgasper3
Copy link

Ran into this today. Rather annoying. Please at least add a note to the @entry docs as @ricejamesh suggested.

Rob4001 added a commit to Rob4001/spring-ldap that referenced this issue Nov 25, 2021
@Rob4001 Rob4001 linked a pull request Nov 25, 2021 that will close this issue
@oscarbrookssynacor
Copy link

Hello, are there any plans to merge the PR that will close this issue?

@jzheaux jzheaux modified the milestones: 3.3.x, 3.3.0-M1 Oct 7, 2024
@jzheaux
Copy link
Contributor

jzheaux commented Oct 7, 2024

@oscarbrookssynacor, this is now targeted for the 3.3.0-M1 release

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants