You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Yoav Landman (JIRA)" <ji...@apache.org> on 2009/01/08 15:01:00 UTC

[jira] Created: (JCR-1928) Cannot use @Collection on getters

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.


[jira] Moved: (OCM-8) Cannot use @Collection on getters

Posted by "Jukka Zitting (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OCM-8?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jukka Zitting moved JCR-1928 to OCM-8:
--------------------------------------

          Component/s:     (was: jackrabbit-ocm)
    Affects Version/s:     (was: 1.5.0)
             Workflow: no-reopen-closed, patch-avail  (was: jira)
                  Key: OCM-8  (was: JCR-1928)
              Project: Jackrabbit OCM  (was: Jackrabbit Content Repository)

> Cannot use @Collection on getters
> ---------------------------------
>
>                 Key: OCM-8
>                 URL: https://issues.apache.org/jira/browse/OCM-8
>             Project: Jackrabbit OCM
>          Issue Type: Bug
>            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.