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.