You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by cl...@apache.org on 2008/09/20 18:46:09 UTC
svn commit: r697391 - in /jackrabbit/trunk/jackrabbit-ocm/src:
main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/
main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/
main/java/org/apache/jackrabbit/ocm/mapper/model/ test/java...
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<Paragraph> paragraphs = new ArrayList<Paragraph>();
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<Paragraph> paragraphs = new ArrayList<Paragraph>();
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<Paragraph> paragraphs;
public String getPath()
{
@@ -49,14 +50,14 @@
/**
* @return Returns the paragraphs.
*/
- public java.util.Collection getParagraphs()
+ public List<Paragraph> getParagraphs()
{
return paragraphs;
}
/**
* @param paragraphs The paragraphs to set.
*/
- public void setParagraphs(java.util.Collection paragraphs)
+ public void setParagraphs(List<Paragraph> paragraphs)
{
this.paragraphs = paragraphs;
}
@@ -79,7 +80,7 @@
{
if (paragraphs == null)
{
- paragraphs = new ArrayList();
+ paragraphs = new ArrayList<Paragraph>();
}
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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
-<jackrabbit-ocm>
-
- <class-descriptor className="org.apache.jackrabbit.ocm.testmodel.Page" jcrType="ocm:pagewithoutsibling" discriminator="false" >
- <field-descriptor fieldName="path" path="true" />
- <field-descriptor fieldName="title" jcrName="ocm:title" />
- <collection-descriptor fieldName="paragraphs" proxy="false"
- elementClassName="org.apache.jackrabbit.ocm.testmodel.Paragraph"
- collectionConverter="org.apache.jackrabbit.ocm.manager.collectionconverter.impl.NTCollectionConverterImpl" />
- </class-descriptor>
-
- <class-descriptor className="org.apache.jackrabbit.ocm.testmodel.Paragraph" jcrType="ocm:paragraph" discriminator="false" >
- <field-descriptor fieldName="path" path="true" />
- <field-descriptor fieldName="text" jcrName="ocm:text"/>
- </class-descriptor>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<jackrabbit-ocm>
+
+ <class-descriptor className="org.apache.jackrabbit.ocm.testmodel.Page" jcrType="ocm:pagewithoutsibling" discriminator="false" >
+ <field-descriptor fieldName="path" path="true" />
+ <field-descriptor fieldName="title" jcrName="ocm:title" />
+ <collection-descriptor fieldName="paragraphs" proxy="false"
+ elementClassName="org.apache.jackrabbit.ocm.testmodel.Paragraph"
+ jcrElementName="paragraph"
+ collectionConverter="org.apache.jackrabbit.ocm.manager.collectionconverter.impl.NTCollectionConverterImpl" />
+ </class-descriptor>
+
+ <class-descriptor className="org.apache.jackrabbit.ocm.testmodel.Paragraph" jcrType="ocm:paragraph" discriminator="false" >
+ <field-descriptor fieldName="path" path="true" />
+ <field-descriptor fieldName="text" jcrName="ocm:text"/>
+ </class-descriptor>
<class-descriptor
className="org.apache.jackrabbit.ocm.testmodel.Atomic" jcrType="nt:unstructured" discriminator="true" >
@@ -47,7 +48,7 @@
<field-descriptor fieldName="doublePrimitive" jcrName="doublePrimitive" />
<field-descriptor fieldName="inputStream" jcrName="inputStream" />
<field-descriptor fieldName="timestamp" jcrName="timestamp" />
- </class-descriptor>
-
-</jackrabbit-ocm>
+ </class-descriptor>
+
+</jackrabbit-ocm>
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 @@
<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
<jackrabbit-ocm>
@@ -88,6 +88,7 @@
<field-descriptor fieldName="title" jcrName="ocm:title" />
<collection-descriptor fieldName="paragraphs" proxy="false"
elementClassName="org.apache.jackrabbit.ocm.testmodel.Paragraph"
+ jcrElementName="paragraph"
collectionConverter="org.apache.jackrabbit.ocm.manager.collectionconverter.impl.NTCollectionConverterImpl" />
</class-descriptor>
@@ -109,9 +110,9 @@
<collection-descriptor fieldName="arrayListElement" jcrName="arrayListElement" proxy="false"
elementClassName="org.apache.jackrabbit.ocm.testmodel.collection.Element"
- collectionClassName="org.apache.jackrabbit.ocm.testmodel.collection.ArrayListElement" />
-
- <collection-descriptor fieldName="list" jcrName="list" proxy="false"
+ collectionClassName="org.apache.jackrabbit.ocm.testmodel.collection.ArrayListElement" />
+
+ <collection-descriptor fieldName="list" jcrName="list" proxy="false"
elementClassName="org.apache.jackrabbit.ocm.testmodel.collection.Element" />
</class-descriptor>