Cannot use @Collection on getters --------------------------------- Key: JCR-1928 URL: https://issues.apache.org/jira/browse/JCR-1928 Project: Jackrabbit Issue Type: Bug Components: jackrabbit-ocm Affects Versions: 1.5.0 Reporter: Yoav Landman
I have a class with no mapped fields that has a collection reference. With JR 1.4.x, I use to use a collection mapping like this on the getter: @Node(extend = OcmStorable.class) public class User implements OcmStorable { @Collection(elementClassName = String.class, collectionConverter = MultiValueCollectionConverterImpl.class) public Set<String> getGroups() { return info.getGroups(); } public void setGroups(Set<String> groups) { info.setGroups(groups); } } With 1.5 this crashes with: Caused by: org.apache.jackrabbit.ocm.exception.InitMapperException: Impossible to read the mapping descriptor from the getter for class : class org.artifactory.security.User for field : groups; nested exception is java.lang.NoSuchFieldException: groups at org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationDescriptorReader.addDescriptorsFromGetters(AnnotationDescriptorReader.java:221) [jackrabbit-ocm-1.5.0.jar:na] at org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationDescriptorReader.addAttributeDescriptors(AnnotationDescriptorReader.java:159) [jackrabbit-ocm-1.5.0.jar:na] at org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationDescriptorReader.buildClassDescriptor(AnnotationDescriptorReader.java:80) [jackrabbit-ocm-1.5.0.jar:na] at org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationDescriptorReader.loadClassDescriptors(AnnotationDescriptorReader.java:64) [jackrabbit-ocm-1.5.0.jar:na] at org.apache.jackrabbit.ocm.mapper.impl.AbstractMapperImpl.buildMapper(AbstractMapperImpl.java:60) [jackrabbit-ocm-1.5.0.jar:na] at org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationMapperImpl.<init>(AnnotationMapperImpl.java:37) [jackrabbit-ocm-1.5.0.jar:na] at org.artifactory.jcr.InitJcrRepoStrategy.initializeOcm(InitJcrRepoStrategy.java:119) [classes/:na] at org.artifactory.jcr.InitJcrRepoStrategy.init(InitJcrRepoStrategy.java:97) [classes/:na] ... 31 common frames omitted Caused by: java.lang.NoSuchFieldException: groups at java.lang.Class.getDeclaredField(Class.java:1854) [na:1.5.0_16] at org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationDescriptorReader.addDescriptorsFromGetters(AnnotationDescriptorReader.java:215) [jackrabbit-ocm-1.5.0.jar:na] ... 38 common frames omitted Looks like org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationDescriptorReader#216 is passing: propertyDescriptor.getPropertyType().getDeclaredField(propertyDescriptor.getName()), and propertyDescriptor.getPropertyType() is, in fact, java.util.Set (so of course no 'groups' field). As a workaround, I have to use a dummy field, annotate it and let the getters and setters work as before. Thanks. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.