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/04/10 21:47:30 UTC
svn commit: r646938 [2/2] - in /jackrabbit/trunk/jackrabbit-ocm/src:
main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/
main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/
main/java/org/apache/jackrabbit/ocm/manager/obje...
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=646938&r1=646937&r2=646938&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 Thu Apr 10 12:47:23 2008
@@ -20,6 +20,9 @@
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
import java.util.List;
import org.apache.commons.logging.Log;
@@ -32,6 +35,7 @@
import org.apache.jackrabbit.ocm.mapper.model.FieldDescriptor;
import org.apache.jackrabbit.ocm.mapper.model.ImplementDescriptor;
import org.apache.jackrabbit.ocm.mapper.model.MappingDescriptor;
+import org.apache.jackrabbit.ocm.reflection.ReflectionUtils;
/**
* Helper class that reads the xml mapping file and load all class descriptors into memory (object graph)
@@ -42,7 +46,7 @@
public class AnnotationDescriptorReader implements DescriptorReader
{
private static final Log log = LogFactory.getLog(AnnotationDescriptorReader.class);
-
+
List<Class> annotatedClassNames;
public AnnotationDescriptorReader(List<Class> annotatedClassNames)
{
@@ -53,24 +57,24 @@
public MappingDescriptor loadClassDescriptors()
{
- MappingDescriptor mappingDescriptor = new MappingDescriptor();
+ MappingDescriptor mappingDescriptor = new MappingDescriptor();
for (Class clazz : annotatedClassNames) {
-
+
ClassDescriptor classDescriptor = buildClassDescriptor(mappingDescriptor, clazz);
mappingDescriptor.addClassDescriptor(classDescriptor);
}
return mappingDescriptor;
-
+
}
-
+
private ClassDescriptor buildClassDescriptor(MappingDescriptor mappingDescriptor, Class clazz)
{
ClassDescriptor classDescriptor = null;
-
+
Node nodeAnnotation = (Node) clazz.getAnnotation(Node.class);
if (nodeAnnotation != null)
{
- classDescriptor = createClassDescriptor(clazz, nodeAnnotation);
+ classDescriptor = createClassDescriptor(clazz, nodeAnnotation);
addImplementDescriptor(classDescriptor, clazz);
addAttributeDescriptors(mappingDescriptor, classDescriptor, clazz);
return classDescriptor;
@@ -79,9 +83,9 @@
{
throw new InitMapperException("The annotation @Node is not defined for the persistent class " + clazz.getName());
}
-
-
-
+
+
+
}
private ClassDescriptor createClassDescriptor(Class clazz, Node nodeAnnotation)
@@ -94,22 +98,22 @@
{
classDescriptor.setJcrSuperTypes(nodeAnnotation.jcrSuperTypes());
}
-
+
if (nodeAnnotation.jcrMixinTypes() != null && ! nodeAnnotation.jcrMixinTypes().equals(""))
- {
+ {
classDescriptor.setJcrMixinTypes(nodeAnnotation.jcrMixinTypes());
}
-
+
if (nodeAnnotation.extend() != null && ! nodeAnnotation.extend().equals(Object.class))
{
classDescriptor.setExtend(nodeAnnotation.extend().getName());
}
-
+
classDescriptor.setAbstract(nodeAnnotation.isAbstract());
classDescriptor.setInterface(clazz.isInterface());
return classDescriptor;
}
-
+
private void addImplementDescriptor(ClassDescriptor classDescriptor, Class clazz)
{
Implement implementAnnotation = (Implement) clazz.getAnnotation(Implement.class);
@@ -119,9 +123,9 @@
implementDescriptor.setInterfaceName(implementAnnotation.interfaceName().getName());
classDescriptor.addImplementDescriptor(implementDescriptor);
}
-
+
}
-
+
/**
* Add FieldDescriptors, BeanDescriptors and CollectionDescriptors.
* The descriptots can be defined on the getter methods or on the field declation.
@@ -137,103 +141,126 @@
}
private void addDescriptorsFromFields(MappingDescriptor mappingDescriptor, ClassDescriptor classDescriptor, Class clazz) {
-
+
java.lang.reflect.Field[] fields = clazz.getDeclaredFields();
+
for (int index = 0; index < fields.length; index++)
{
+
Field fieldAnnotation = fields[index].getAnnotation(Field.class);
if (fieldAnnotation != null) {
addFieldDescriptor(classDescriptor, fields[index].getName(), fieldAnnotation);
}
-
+
// Check if there is an Bean annotation
Bean beanAnnotation = fields[index].getAnnotation(Bean.class);
if (beanAnnotation != null) {
addBeanDescriptor(classDescriptor, fields[index].getName(), beanAnnotation);
}
-
+
// Check if there is an Collection annotation
Collection collectionAnnotation = fields[index].getAnnotation(Collection.class);
if (collectionAnnotation != null) {
- addCollectionDescriptor(mappingDescriptor, classDescriptor, fields[index].getName(),
- fields[index].getName(), collectionAnnotation);
+ addCollectionDescriptor(mappingDescriptor, classDescriptor, fields[index], collectionAnnotation);
}
-
-
+
+
}
-
+
}
private void addDescriptorsFromGetters(MappingDescriptor mappingDescriptor, ClassDescriptor classDescriptor, Class clazz) {
BeanInfo beanInfo;
try {
beanInfo = Introspector.getBeanInfo(clazz);
- } catch (IntrospectionException e) {
- throw new RuntimeException(e);
- }
- PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
- for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
+ PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+ for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
- // Check if there is an Field annotation
- Field fieldAnnotation = propertyDescriptor.getReadMethod().getAnnotation(Field.class);
- if (fieldAnnotation != null) {
- addFieldDescriptor(classDescriptor, propertyDescriptor.getName(), fieldAnnotation);
- }
-
- // Check if there is an Bean annotation
- Bean beanAnnotation = propertyDescriptor.getReadMethod().getAnnotation(Bean.class);
- if (beanAnnotation != null) {
- addBeanDescriptor(classDescriptor, propertyDescriptor.getName(), beanAnnotation);
- }
-
- // Check if there is an Collection annotation
- Collection collectionAnnotation = propertyDescriptor.getReadMethod().getAnnotation(Collection.class);
- if (collectionAnnotation != null) {
- addCollectionDescriptor(mappingDescriptor, classDescriptor, propertyDescriptor.getName(),
- propertyDescriptor.getReadMethod().getReturnType().getName(), collectionAnnotation);
+ // Check if there is an Field annotation
+ Field fieldAnnotation = propertyDescriptor.getReadMethod().getAnnotation(Field.class);
+ if (fieldAnnotation != null) {
+ addFieldDescriptor(classDescriptor, propertyDescriptor.getName(), fieldAnnotation);
+ }
+
+ // Check if there is an Bean annotation
+ Bean beanAnnotation = propertyDescriptor.getReadMethod().getAnnotation(Bean.class);
+ if (beanAnnotation != null) {
+ addBeanDescriptor(classDescriptor, propertyDescriptor.getName(), beanAnnotation);
+ }
+
+ // Check if there is an Collection annotation
+ Collection collectionAnnotation = propertyDescriptor.getReadMethod().getAnnotation(Collection.class);
+ if (collectionAnnotation != null) {
+
+ addCollectionDescriptor(mappingDescriptor, classDescriptor,
+ propertyDescriptor.getPropertyType().getDeclaredField(propertyDescriptor.getName()),
+ collectionAnnotation);
+ }
}
+ } catch (Exception e) {
+ throw new InitMapperException("Impossible to read the mapping descriptor from the getter", e);
}
+
}
private void addCollectionDescriptor(MappingDescriptor mappingDescriptor, ClassDescriptor descriptor,
- String fieldName, String collectionClassName, Collection collectionAnnotation) {
-
+ java.lang.reflect.Field field, Collection collectionAnnotation) {
+
Class targetClass = collectionAnnotation.elementClassName();
- CollectionDescriptor collectionDescriptor = new CollectionDescriptor();
-
- collectionDescriptor.setFieldName(fieldName);
-
+ CollectionDescriptor collectionDescriptor = new CollectionDescriptor();
+
+ collectionDescriptor.setFieldName(field.getName());
+
if (collectionAnnotation.jcrName() != null && ! collectionAnnotation.jcrName().equals(""))
{
collectionDescriptor.setJcrName(collectionAnnotation.jcrName());
}
else
{
- collectionDescriptor.setJcrName(fieldName);
+ collectionDescriptor.setJcrName(field.getName());
}
-
+
Node annotationNode = (Node) targetClass.getAnnotation(Node.class);
collectionDescriptor.setProxy(collectionAnnotation.proxy());
-
+
collectionDescriptor.setAutoInsert(collectionAnnotation.autoInsert());
collectionDescriptor.setAutoRetrieve(collectionAnnotation.autoRetrieve());
collectionDescriptor.setAutoUpdate(collectionAnnotation.autoUpdate());
- collectionDescriptor.setCollectionClassName(collectionClassName);
+ collectionDescriptor.setCollectionClassName(field.getName());
if (! collectionAnnotation.elementClassName().equals(Object.class))
{
collectionDescriptor.setElementClassName(collectionAnnotation.elementClassName().getName());
}
else
{
- collectionDescriptor.setElementClassName(targetClass.getName());
+
+// collectionDescriptor.setElementClassName(targetClass.getName());
+ Type type = field.getGenericType();
+ if (type instanceof ParameterizedType)
+ {
+ Type[] paramType = ((ParameterizedType) type).getActualTypeArguments();
+ //TODO : change this condition. No sure if it will be all the time true.
+ // If only one type argument, the attribute is certainly a collection
+ if (paramType.length == 1)
+ {
+ collectionDescriptor.setElementClassName(paramType[0].toString().replace("class ", ""));
+ }
+ // either, it is certainly a map
+ else
+ {
+ collectionDescriptor.setElementClassName(paramType[1].toString().replace("class ", ""));
+ }
+
+ }
+
}
if (! collectionAnnotation.collectionClassName().equals(Object.class))
{
collectionDescriptor.setCollectionClassName(collectionAnnotation.collectionClassName().getName());
}
-
+
collectionDescriptor.setCollectionConverter(collectionAnnotation.collectionConverter().getName());
if (annotationNode != null)
{
@@ -244,11 +271,11 @@
collectionDescriptor.setJcrProtected(collectionAnnotation.jcrProtected());
collectionDescriptor.setJcrOnParentVersion(collectionAnnotation.jcrOnParentVersion());
collectionDescriptor.setJcrMandatory(collectionAnnotation.jcrMandatory());
-
+
descriptor.addCollectionDescriptor(collectionDescriptor);
}
-
+
private void addBeanDescriptor(ClassDescriptor classDescriptor, String fieldName, Bean beanAnnotation) {
BeanDescriptor beanDescriptor = new BeanDescriptor();
beanDescriptor.setFieldName(fieldName);
@@ -260,8 +287,8 @@
{
beanDescriptor.setJcrName(fieldName);
}
-
- beanDescriptor.setProxy(beanAnnotation.proxy());
+
+ beanDescriptor.setProxy(beanAnnotation.proxy());
beanDescriptor.setConverter(beanAnnotation.converter().getName());
beanDescriptor.setAutoInsert(beanAnnotation.autoInsert());
beanDescriptor.setAutoRetrieve(beanAnnotation.autoRetrieve());
@@ -270,8 +297,8 @@
beanDescriptor.setJcrAutoCreated(beanAnnotation.jcrAutoCreated());
beanDescriptor.setJcrMandatory(beanAnnotation.jcrMandatory());
beanDescriptor.setJcrOnParentVersion(beanAnnotation.jcrOnParentVersion());
- beanDescriptor.setJcrProtected(beanAnnotation.jcrProtected());
- beanDescriptor.setJcrSameNameSiblings(beanAnnotation.jcrSameNameSiblings());
+ beanDescriptor.setJcrProtected(beanAnnotation.jcrProtected());
+ beanDescriptor.setJcrSameNameSiblings(beanAnnotation.jcrSameNameSiblings());
classDescriptor.addBeanDescriptor(beanDescriptor);
}
@@ -279,55 +306,55 @@
private void addFieldDescriptor(ClassDescriptor classDescriptor, String fieldName, Field fieldAnnotation)
{
-
- FieldDescriptor fieldDescriptor = new FieldDescriptor();
+
+ FieldDescriptor fieldDescriptor = new FieldDescriptor();
fieldDescriptor.setFieldName(fieldName);
if ((fieldAnnotation.jcrName() != null) && (!fieldAnnotation.jcrName().equals("")))
{
- fieldDescriptor.setJcrName(fieldAnnotation.jcrName());
+ fieldDescriptor.setJcrName(fieldAnnotation.jcrName());
}
else
{
- fieldDescriptor.setJcrName(fieldName);
+ fieldDescriptor.setJcrName(fieldName);
}
- fieldDescriptor.setId(fieldAnnotation.id());
+ fieldDescriptor.setId(fieldAnnotation.id());
fieldDescriptor.setPath(fieldAnnotation.path());
fieldDescriptor.setUuid(fieldAnnotation.uuid());
-
+
// It is not possible to set a null value into an annotation attribute.
// If the converter == Object.class, it should be considered as null
if (! fieldAnnotation.converter().equals(Object.class))
{
fieldDescriptor.setConverter(fieldAnnotation.converter().getName());
}
-
+
// It is not possible to set a null value into an annotation attribute.
// If the jcrDefaultValue value is an empty string => it should be considered as null
if ((fieldAnnotation.jcrDefaultValue() != null) && (!fieldAnnotation.jcrDefaultValue().equals("")))
{
fieldDescriptor.setJcrDefaultValue(fieldAnnotation.jcrDefaultValue());
}
-
+
// It is not possible to set a null value into an annotation attribute.
// If the jcrValueConstraints value is an empty string => it should be considered as null
if ((fieldAnnotation.jcrValueConstraints() != null) && (!fieldAnnotation.jcrValueConstraints().equals("")))
- {
+ {
fieldDescriptor.setJcrValueConstraints(fieldAnnotation.jcrValueConstraints());
}
-
+
// It is not possible to set a null value into an annotation attribute.
// If the jcrProperty value is an empty string => it should be considered as null
if ((fieldAnnotation.jcrType() != null) && (!fieldAnnotation.jcrType().equals("")))
{
fieldDescriptor.setJcrType(fieldAnnotation.jcrType());
}
-
+
fieldDescriptor.setJcrAutoCreated(fieldAnnotation.jcrAutoCreated());
fieldDescriptor.setJcrMandatory(fieldAnnotation.jcrMandatory());
fieldDescriptor.setJcrOnParentVersion(fieldAnnotation.jcrOnParentVersion());
fieldDescriptor.setJcrProtected(fieldAnnotation.jcrProtected());
fieldDescriptor.setJcrMultiple(fieldAnnotation.jcrMultiple());
-
+
//fieldDescriptor.setJcrType(value)
classDescriptor.addFieldDescriptor(fieldDescriptor);
}
Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationHashMapTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationHashMapTest.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationHashMapTest.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationHashMapTest.java Thu Apr 10 12:47:23 2008
@@ -16,6 +16,9 @@
*/
package org.apache.jackrabbit.ocm.manager.collectionconverter;
+import java.util.HashMap;
+import java.util.Map;
+
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -58,7 +61,7 @@
try
{
ObjectContentManager ocm = getObjectContentManager();
-
+
// --------------------------------------------------------------------------------
// Create and store an object graph in the repository with null hashmap
// --------------------------------------------------------------------------------
@@ -76,6 +79,7 @@
main = (Main) ocm.getObject( "/test");
assertTrue("Incorrect text", main.getText().equals("Main text"));
assertNull("HashMap is not null", main.getHashMap());
+ assertNull("Map is not null", main.getMap());
// --------------------------------------------------------------------------------
// Update an object graph in the repository
@@ -86,17 +90,22 @@
main.setText("Main text");
HashMapElement hashMapElement = new HashMapElement();
+ Map<String, Element> map = new HashMap<String, Element>();
+
Element e1 = new Element();
e1.setId("e1");
e1.setText("Element 1");
hashMapElement.addObject(e1);
+ map.put("e1", e1);
Element e2 = new Element();
e2.setId("e2");
e2.setText("Element 2");
hashMapElement.addObject(e2);
+ map.put("e2", e2);
main.setHashMap(hashMapElement);
+ main.setMap(map);
ocm.update(main);
ocm.save();
@@ -106,28 +115,37 @@
// --------------------------------------------------------------------------------
main = (Main) ocm.getObject( "/test");
assertNotNull("main.getHashMap() is null", main.getHashMap());
+ assertNotNull("main.getHashMap() is null", main.getMap());
assertTrue("Incorrect text", main.getText().equals("Main text"));
assertTrue("Incorrect para element", ((Element) main.getHashMap().get("e1")).getText().equals("Element 1"));
+ assertTrue("Incorrect para element", ((Element) main.getMap().get("e1")).getText().equals("Element 1"));
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
hashMapElement = new HashMapElement();
+ map = new HashMap<String, Element>();
+
e1 = new Element();
e1.setId("e1");
e1.setText("Element 1");
hashMapElement.addObject(e1);
+ map.put("e1", e1);
e2 = new Element();
e2.setId("e3");
e2.setText("Element 3");
hashMapElement.addObject(e2);
+ map.put("e3", e2);
Element e3 = new Element();
e3.setId("e4");
e3.setText("Element 4");
hashMapElement.addObject(e3);
+ map.put("e4", e3);
+
main.setHashMap(hashMapElement);
+ main.setMap(map);
ocm.update(main);
ocm.save();
@@ -138,7 +156,7 @@
assertNotNull("main.getElements() is null", main.getHashMap());
assertTrue("Incorrect text", main.getText().equals("Main text"));
assertTrue("Incorrect para element", ((Element) main.getHashMap().get("e4")).getText().equals("Element 4"));
-
+ assertTrue("Incorrect para element", main.getMap().get("e4").getText().equals("Element 4"));
}
catch (Exception e)
{
Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationResidualNodesCollectionConverterImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationResidualNodesCollectionConverterImplTest.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationResidualNodesCollectionConverterImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationResidualNodesCollectionConverterImplTest.java Thu Apr 10 12:47:23 2008
@@ -24,7 +24,7 @@
import org.apache.jackrabbit.ocm.AnnotationTestBase;
import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManagedHashMap;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableHashMap;
import org.apache.jackrabbit.ocm.testmodel.Paragraph;
import org.apache.jackrabbit.ocm.testmodel.Residual;
@@ -82,7 +82,7 @@
residual = new Residual.ResidualNodes();
residual.setPath("/test");
- ManagedHashMap map = new ManagedHashMap();
+ ManageableHashMap map = new ManageableHashMap();
map.put("value1", new Paragraph("Value1"));
map.put("value2", new Paragraph("Value2"));
map.put("value3", new Paragraph("Value3"));
@@ -104,7 +104,7 @@
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
- map = new ManagedHashMap();
+ map = new ManageableHashMap();
map.put("value11", new Paragraph("Value11"));
map.put("value12", new Paragraph("Value12"));
map.put("value13", new Paragraph("Value13"));
Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationResidualPropertiesCollectionConverterImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationResidualPropertiesCollectionConverterImplTest.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationResidualPropertiesCollectionConverterImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationResidualPropertiesCollectionConverterImplTest.java Thu Apr 10 12:47:23 2008
@@ -28,7 +28,7 @@
import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.DigesterTestBase;
import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManagedHashMap;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableHashMap;
import org.apache.jackrabbit.ocm.testmodel.Residual;
/**
@@ -86,7 +86,7 @@
residual = new Residual.ResidualProperties();
residual.setPath("/test");
- ManagedHashMap map = new ManagedHashMap();
+ ManageableHashMap map = new ManageableHashMap();
map.put("value1", "Value1");
map.put("value2", "Value2");
map.put("value3", "Value3");
@@ -112,7 +112,7 @@
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
- map = new ManagedHashMap();
+ map = new ManageableHashMap();
map.put("value11", "Value11");
map.put("value12", "Value12");
map.put("value13", "Value13");
Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterResidualNodesCollectionConverterImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterResidualNodesCollectionConverterImplTest.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterResidualNodesCollectionConverterImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterResidualNodesCollectionConverterImplTest.java Thu Apr 10 12:47:23 2008
@@ -24,7 +24,7 @@
import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.DigesterTestBase;
import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManagedHashMap;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableHashMap;
import org.apache.jackrabbit.ocm.testmodel.Paragraph;
import org.apache.jackrabbit.ocm.testmodel.Residual;
@@ -81,7 +81,7 @@
residual = new Residual.ResidualNodes();
residual.setPath("/test");
- ManagedHashMap map = new ManagedHashMap();
+ ManageableHashMap map = new ManageableHashMap();
map.put("value1", new Paragraph("Value1"));
map.put("value2", new Paragraph("Value2"));
map.put("value3", new Paragraph("Value3"));
@@ -103,7 +103,7 @@
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
- map = new ManagedHashMap();
+ map = new ManageableHashMap();
map.put("value11", new Paragraph("Value11"));
map.put("value12", new Paragraph("Value12"));
map.put("value13", new Paragraph("Value13"));
Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterResidualPropertiesCollectionConverterImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterResidualPropertiesCollectionConverterImplTest.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterResidualPropertiesCollectionConverterImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterResidualPropertiesCollectionConverterImplTest.java Thu Apr 10 12:47:23 2008
@@ -27,7 +27,7 @@
import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.DigesterTestBase;
import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManagedHashMap;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableHashMap;
import org.apache.jackrabbit.ocm.testmodel.Residual;
/**
@@ -86,7 +86,7 @@
residual = new Residual.ResidualProperties();
residual.setPath("/test");
- ManagedHashMap map = new ManagedHashMap();
+ ManageableHashMap map = new ManageableHashMap();
map.put("value1", "Value1");
map.put("value2", "Value2");
map.put("value3", "Value3");
@@ -112,7 +112,7 @@
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
- map = new ManagedHashMap();
+ map = new ManageableHashMap();
map.put("value11", "Value11");
map.put("value12", "Value12");
map.put("value13", "Value13");
Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/Residual.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/Residual.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/Residual.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/Residual.java Thu Apr 10 12:47:23 2008
@@ -16,7 +16,7 @@
*/
package org.apache.jackrabbit.ocm.testmodel;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManagedHashMap;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableHashMap;
import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ResidualNodesCollectionConverterImpl;
import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ResidualPropertiesCollectionConverterImpl;
import org.apache.jackrabbit.ocm.mapper.impl.annotation.Collection;
@@ -37,19 +37,19 @@
{
@Field(path=true) private String path;
- private ManagedHashMap elements;
+ private ManageableHashMap elements;
/**
* @return Returns the elements.
*/
- public ManagedHashMap getElements()
+ public ManageableHashMap getElements()
{
return elements;
}
/**
* @param elements The elements to set.
*/
- public void setElements(ManagedHashMap elements)
+ public void setElements(ManageableHashMap elements)
{
this.elements = elements;
}
@@ -58,8 +58,8 @@
@Node(extend=Residual.class) public static class ResidualProperties extends Residual
{
@Collection( jcrName="value*",elementClassName=String.class,collectionConverter=ResidualPropertiesCollectionConverterImpl.class,
- collectionClassName=ManagedHashMap.class)
- private ManagedHashMap elements;
+ collectionClassName=ManageableHashMap.class)
+ private ManageableHashMap elements;
}
@@ -68,8 +68,8 @@
{
@Collection( jcrName="value*",elementClassName=Object.class,collectionConverter=ResidualNodesCollectionConverterImpl.class,
- collectionClassName=ManagedHashMap.class)
- private ManagedHashMap elements;
+ collectionClassName=ManageableHashMap.class)
+ private ManageableHashMap elements;
}
Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/Element.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/Element.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/Element.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/Element.java Thu Apr 10 12:47:23 2008
@@ -28,7 +28,8 @@
@Node(jcrType="ocm:element", discriminator=false)
public class Element
{
- @Field(jcrName="ocm:id") private String id;
+ // an ID field can be used as a unique identifier (for exemple, it can be used as key in a Map)
+ @Field(jcrName="ocm:id", id=true) private String id;
@Field(jcrName="ocm:text") private String text;
Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/HashMapElement.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/HashMapElement.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/HashMapElement.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/HashMapElement.java Thu Apr 10 12:47:23 2008
@@ -50,7 +50,7 @@
public int getSize()
{
-
+
return this.size();
}
Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/Main.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/Main.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/Main.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/Main.java Thu Apr 10 12:47:23 2008
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.ocm.testmodel.collection;
+import java.util.Map;
+
import org.apache.jackrabbit.ocm.mapper.impl.annotation.Collection;
import org.apache.jackrabbit.ocm.mapper.impl.annotation.Field;
import org.apache.jackrabbit.ocm.mapper.impl.annotation.Node;
@@ -34,9 +36,12 @@
@Collection (elementClassName=Element.class, collectionClassName=HashMapElement.class)
private HashMapElement hashMap;
+ @Collection private Map<String, Element> map;
+
@Collection (elementClassName=Element.class, collectionClassName=ArrayListElement.class)
private ArrayListElement list;
+
public String getPath() {
return path;
}
@@ -62,7 +67,7 @@
{
return list;
}
-
+
public void setList(ArrayListElement list)
{
this.list = list;
@@ -81,6 +86,16 @@
{
this.text = text;
}
+
+ public Map<String, Element> getMap()
+ {
+ return map;
+ }
+
+ public void setMap(Map<String, Element> map)
+ {
+ this.map = map;
+ }
}