Incorrect support for java interfaces in typed collection fields
----------------------------------------------------------------

                 Key: JCR-1889
                 URL: https://issues.apache.org/jira/browse/JCR-1889
             Project: Jackrabbit
          Issue Type: Bug
    Affects Versions: 1.4, 1.5.0
            Reporter: Christophe Lombart


If a typed collection field is defined with an Interface as the type, the 
following exception is thrown when the main object is inserted : 

org.apache.jackrabbit.ocm.exception.JcrMappingException: Cannot load class 
interface [name of the interface];

Here is a example : 

@Node
public class EntityA {
       @Field(path=true) String path;
       @Collection List<MyInterface> entityB;
       ....
}

When inserting a new instance of EntityA with a not null entityB, the exception 
is thrown. 
A workaround is to add the elementClassName on the annotation @Collection. ex. 
: 

@Collection (elementClassName=MyInterface.class) List<MyInterface> entityB;

elementClassName is used only for untyped collections but if you specify it for 
a typed collection, the ObjectContentManager will not use reflexion to check 
the collection class name. 
 
This should be nice to avoid the usage of elementClassName for typed 
collections. 



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to