Author: clombart Date: Sat Sep 20 09:46:09 2008 New Revision: 697391 URL: http://svn.apache.org/viewvc?rev=697391&view=rev Log: Apply patch for JCR-1721 : make collection element names configureable provided by Oliver Lietz Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/DefaultCollectionConverterImpl.java jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/NTCollectionConverterImpl.java jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/AnnotationDescriptorReader.java jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/Collection.java jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/model/CollectionDescriptor.java jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/AnnotationBeanDescriptorTest.java jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/DigesterBeanDescriptorTest.java jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/Page.java jackrabbit/trunk/jackrabbit-ocm/src/test/test-config/jcrmapping-sibling.xml jackrabbit/trunk/jackrabbit-ocm/src/test/test-config/jcrmapping.xml Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/DefaultCollectionConverterImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/DefaultCollectionConverterImpl.java?rev=697391&r1=697390&r2=697391&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/DefaultCollectionConverterImpl.java (original) +++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/DefaultCollectionConverterImpl.java Sat Sep 20 09:46:09 2008 @@ -78,7 +78,7 @@ */ public class DefaultCollectionConverterImpl extends AbstractCollectionConverterImpl { - private static final String COLLECTION_ELEMENT_NAME = "collection-element"; + protected static final String COLLECTION_ELEMENT_NAME = "collection-element"; /** * Constructor @@ -116,7 +116,7 @@ ClassDescriptor elementClassDescriptor = mapper.getClassDescriptorByClass( ReflectionUtils.forName(collectionDescriptor.getElementClassName())); if (objects instanceof ManageableCollection) - insertManageableCollection(session, objects, collectionNode, elementClassDescriptor); + insertManageableCollection(session, objects, collectionNode, elementClassDescriptor, collectionDescriptor); else insertManageableMap(session, objects, collectionNode); @@ -124,7 +124,8 @@ private void insertManageableCollection(Session session, ManageableObjects objects, Node collectionNode, - ClassDescriptor elementClassDescriptor) { + ClassDescriptor elementClassDescriptor, + CollectionDescriptor collectionDescriptor) { Iterator collectionIterator = objects.getIterator(); while (collectionIterator.hasNext()) { Object item = collectionIterator.next(); @@ -137,7 +138,10 @@ elementJcrName = ReflectionUtils.getNestedProperty(item, idFieldName).toString(); } else { - elementJcrName = COLLECTION_ELEMENT_NAME; + elementJcrName = collectionDescriptor.getJcrElementName(); + if (elementJcrName == null) { // use PathFormat.checkFormat() here? + elementJcrName = COLLECTION_ELEMENT_NAME; + } } objectConverter.insert(session, collectionNode, elementJcrName, item); @@ -232,7 +236,10 @@ updatedItems.put(elementJcrName, item); } else { - elementJcrName = COLLECTION_ELEMENT_NAME ; + elementJcrName = collectionDescriptor.getJcrElementName(); + if (elementJcrName == null) { // use PathFormat.checkFormat() here? + elementJcrName = COLLECTION_ELEMENT_NAME; + } objectConverter.insert(session, collectionNode, elementJcrName, item); } } Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/NTCollectionConverterImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/NTCollectionConverterImpl.java?rev=697391&r1=697390&r2=697391&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/NTCollectionConverterImpl.java (original) +++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/NTCollectionConverterImpl.java Sat Sep 20 09:46:09 2008 @@ -90,7 +90,7 @@ private final static Log log = LogFactory.getLog(NTCollectionConverterImpl.class); - private static final String COLLECTION_ELEMENT_NAME = "collection-element"; + protected static final String COLLECTION_ELEMENT_NAME = "collection-element"; /** * Constructor @@ -129,7 +129,10 @@ elementJcrName = ReflectionUtils.getNestedProperty(item, idFieldName).toString(); } else { - elementJcrName = COLLECTION_ELEMENT_NAME; + elementJcrName = collectionDescriptor.getJcrElementName(); + if (elementJcrName == null) { // use PathFormat.checkFormat() here? + elementJcrName = COLLECTION_ELEMENT_NAME; + } } objectConverter.insert(session, parentNode, elementJcrName, item); @@ -181,7 +184,10 @@ updatedItems.put(elementJcrName, item); } else { - elementJcrName = COLLECTION_ELEMENT_NAME; + elementJcrName = collectionDescriptor.getJcrElementName(); + if (elementJcrName == null) { // use PathFormat.checkFormat() here? + elementJcrName = COLLECTION_ELEMENT_NAME; + } objectConverter.insert(session, parentNode, elementJcrName, item); } } Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/AnnotationDescriptorReader.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/AnnotationDescriptorReader.java?rev=697391&r1=697390&r2=697391&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/AnnotationDescriptorReader.java (original) +++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/AnnotationDescriptorReader.java Sat Sep 20 09:46:09 2008 @@ -240,6 +240,8 @@ setElementClassName(collectionDescriptor, field.getGenericType()); } + collectionDescriptor.setJcrElementName(collectionAnnotation.jcrElementName()); + if (! collectionAnnotation.collectionClassName().equals(Object.class)) { collectionDescriptor.setCollectionClassName(collectionAnnotation.collectionClassName().getName()); Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/Collection.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/Collection.java?rev=697391&r1=697390&r2=697391&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/Collection.java (original) +++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/Collection.java Sat Sep 20 09:46:09 2008 @@ -47,6 +47,8 @@ // because it is not possible to have a default null value in annotation field Class elementClassName() default Object.class; + String jcrElementName() default "collection-element"; + Class collectionConverter() default DefaultCollectionConverterImpl.class; // Use Object.class as default value Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/model/CollectionDescriptor.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/model/CollectionDescriptor.java?rev=697391&r1=697390&r2=697391&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/model/CollectionDescriptor.java (original) +++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/mapper/model/CollectionDescriptor.java Sat Sep 20 09:46:09 2008 @@ -30,6 +30,7 @@ private String fieldName; private String jcrName; private String elementClassName; + private String jcrElementName; private String collectionConverterClassName; private String collectionClassName; private boolean proxy; @@ -94,6 +95,23 @@ } /** + * @return Returns the elementName. + */ + public String getJcrElementName() + { + return jcrElementName; + } + + /** + * @param jcrElementName The collection element name to set. + * + */ + public void setJcrElementName(String jcrElementName) + { + this.jcrElementName = jcrElementName; + } + + /** * @return Returns the proxy. */ public boolean isProxy() Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/AnnotationBeanDescriptorTest.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/AnnotationBeanDescriptorTest.java?rev=697391&r1=697390&r2=697391&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/AnnotationBeanDescriptorTest.java (original) +++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/AnnotationBeanDescriptorTest.java Sat Sep 20 09:46:09 2008 @@ -246,7 +246,7 @@ page.setPath("/test"); page.setTitle("Page Title"); - Collection paragraphs = new ArrayList(); + List paragraphs = new ArrayList(); paragraphs.add(new Paragraph("Para 1")); paragraphs.add(new Paragraph("Para 2")); @@ -261,11 +261,10 @@ // -------------------------------------------------------------------------------- page = (Page) ocm.getObject("/test"); paragraphs = page.getParagraphs(); - for (Iterator iter = paragraphs.iterator(); iter.hasNext();) { - Paragraph paragraph = (Paragraph) iter.next(); + for (Paragraph paragraph : paragraphs) { System.out.println("Paragraph path : " + paragraph.getPath()); } - Paragraph p1 = (Paragraph) ocm.getObject("/test/collection-element[2]"); + Paragraph p1 = (Paragraph) ocm.getObject("/test/paragraph[2]"); Page paraPage = p1.getPage(); assertNotNull("Parent page is null", paraPage); assertTrue("Invalid parent page", paraPage.getPath().equals("/test")); Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/DigesterBeanDescriptorTest.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/DigesterBeanDescriptorTest.java?rev=697391&r1=697390&r2=697391&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/DigesterBeanDescriptorTest.java (original) +++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/DigesterBeanDescriptorTest.java Sat Sep 20 09:46:09 2008 @@ -247,7 +247,7 @@ page.setPath("/test"); page.setTitle("Page Title"); - Collection paragraphs = new ArrayList(); + List paragraphs = new ArrayList(); paragraphs.add(new Paragraph("Para 1")); paragraphs.add(new Paragraph("Para 2")); @@ -262,11 +262,10 @@ // -------------------------------------------------------------------------------- page = (Page) ocm.getObject("/test"); paragraphs = page.getParagraphs(); - for (Iterator iter = paragraphs.iterator(); iter.hasNext();) { - Paragraph paragraph = (Paragraph) iter.next(); + for (Paragraph paragraph : paragraphs) { System.out.println("Paragraph path : " + paragraph.getPath()); } - Paragraph p1 = (Paragraph) ocm.getObject("/test/collection-element[2]"); + Paragraph p1 = (Paragraph) ocm.getObject("/test/paragraph[2]"); Page paraPage = p1.getPage(); assertNotNull("Parent page is null", paraPage); assertTrue("Invalid parent page", paraPage.getPath().equals("/test")); Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/Page.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/Page.java?rev=697391&r1=697390&r2=697391&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/Page.java (original) +++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/Page.java Sat Sep 20 09:46:09 2008 @@ -17,6 +17,7 @@ package org.apache.jackrabbit.ocm.testmodel; import java.util.ArrayList; +import java.util.List; import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.NTCollectionConverterImpl; @@ -35,8 +36,8 @@ @Field(path=true) String path; @Field(jcrName="ocm:title") String title; - @Collection(elementClassName=Paragraph.class, collectionConverter=NTCollectionConverterImpl.class) - java.util.Collection paragraphs; + @Collection(collectionConverter=NTCollectionConverterImpl.class, jcrElementName="paragraph") + List paragraphs; public String getPath() { @@ -49,14 +50,14 @@ /** * @return Returns the paragraphs. */ - public java.util.Collection getParagraphs() + public List getParagraphs() { return paragraphs; } /** * @param paragraphs The paragraphs to set. */ - public void setParagraphs(java.util.Collection paragraphs) + public void setParagraphs(List paragraphs) { this.paragraphs = paragraphs; } @@ -79,7 +80,7 @@ { if (paragraphs == null) { - paragraphs = new ArrayList(); + paragraphs = new ArrayList(); } paragraphs.add(paragraph); Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/test-config/jcrmapping-sibling.xml URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/test-config/jcrmapping-sibling.xml?rev=697391&r1=697390&r2=697391&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-ocm/src/test/test-config/jcrmapping-sibling.xml (original) +++ jackrabbit/trunk/jackrabbit-ocm/src/test/test-config/jcrmapping-sibling.xml Sat Sep 20 09:46:09 2008 @@ -1,36 +1,37 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -47,7 +48,7 @@ - - - + + + Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/test-config/jcrmapping.xml URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/test-config/jcrmapping.xml?rev=697391&r1=697390&r2=697391&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-ocm/src/test/test-config/jcrmapping.xml (original) +++ jackrabbit/trunk/jackrabbit-ocm/src/test/test-config/jcrmapping.xml Sat Sep 20 09:46:09 2008 @@ -1,21 +1,21 @@ - - + + @@ -88,6 +88,7 @@ @@ -109,9 +110,9 @@ - - + +