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/21 23:41:05 UTC
svn commit: r650283 [1/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...
Author: clombart
Date: Mon Apr 21 14:40:54 2008
New Revision: 650283
URL: http://svn.apache.org/viewvc?rev=650283&view=rev
Log:
Fix for JCR-1325 and review support for Collection & Map.
The mapping definition can be simplified with parameterized collections and maps. In this case the ElementClass setting is not necessary.
Added:
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableCollectionImpl.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableMapImpl.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/repository/RelfectionUtilTest.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/CustomList.java
Removed:
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableArrayList.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableHashMap.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableSet.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableVector.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/persistence/
Modified:
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjects.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjectsUtil.java
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/ResidualNodesCollectionConverterImpl.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ResidualPropertiesCollectionConverterImpl.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/CollectionLazyLoader.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ProxyManagerImpl.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/reflection/ReflectionUtils.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationArrayListTest.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationHashMapTest.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationResidualNodesCollectionConverterImplTest.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationResidualPropertiesCollectionConverterImplTest.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterArrayListTest.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterHashMapTest.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterResidualNodesCollectionConverterImplTest.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterResidualPropertiesCollectionConverterImplTest.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/Residual.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/ArrayListElement.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/HashMapElement.java
jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/Main.java
jackrabbit/trunk/jackrabbit-ocm/src/test/test-config/jcrmapping.xml
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjects.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjects.java?rev=650283&r1=650282&r2=650283&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjects.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjects.java Mon Apr 21 14:40:54 2008
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.ocm.manager.collectionconverter;
+import java.util.Collection;
import java.util.Iterator;
/**
@@ -36,6 +37,11 @@
* @return The ManageableCollection size
*/
public int getSize();
+
+ /**
+ * @return The objects managed by the underlying Collection or Map
+ */
+ public Object getObjects();
}
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjectsUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjectsUtil.java?rev=650283&r1=650282&r2=650283&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjectsUtil.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjectsUtil.java Mon Apr 21 14:40:54 2008
@@ -17,20 +17,12 @@
package org.apache.jackrabbit.ocm.manager.collectionconverter;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
import java.util.Map;
-import java.util.Set;
-import java.util.Vector;
import org.apache.jackrabbit.ocm.exception.JcrMappingException;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableArrayList;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableSet;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableVector;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableHashMap;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableCollectionImpl;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableMapImpl;
import org.apache.jackrabbit.ocm.reflection.ReflectionUtils;
/**
@@ -67,29 +59,33 @@
public static ManageableObjects getManageableObjects(Class manageableObjectsClass) {
try {
- if (manageableObjectsClass.equals(ArrayList.class)) {
- return new ManageableArrayList();
- }
-
- if (manageableObjectsClass.equals(Vector.class)) {
- return new ManageableVector();
- }
+ // if the class is an interface, try to find the default class implementation
+ if (manageableObjectsClass.isInterface())
+ {
+
+ Class defaultImplementation = ReflectionUtils.getDefaultImplementation(manageableObjectsClass);
+ if (manageableObjectsClass == null)
+ {
+ new JcrMappingException("No default implementation for the interface " + manageableObjectsClass);
+ }
+ else
+ {
+ manageableObjectsClass = defaultImplementation;
+ }
+ }
+
+ //if the class is implementing the Collection interface
+ if (ReflectionUtils.implementsInterface(manageableObjectsClass, Collection.class))
+ {
+ return new ManageableCollectionImpl((Collection) ReflectionUtils.newInstance(manageableObjectsClass));
+ }
+
+ //if the class is implementing the Map interface
+ if (ReflectionUtils.implementsInterface(manageableObjectsClass, Map.class))
+ {
+ return new ManageableMapImpl((Map) ReflectionUtils.newInstance(manageableObjectsClass));
+ }
- if (manageableObjectsClass.equals(HashSet.class)) {
- return new ManageableSet();
- }
-
- if (manageableObjectsClass.equals(Collection.class) || manageableObjectsClass.equals(List.class)) {
- return new ManageableArrayList();
- }
-
- if (manageableObjectsClass.equals(Set.class)) {
- return new ManageableSet();
- }
-
- if (manageableObjectsClass.equals(Map.class) || manageableObjectsClass.equals(HashMap.class)) {
- return new ManageableHashMap();
- }
Object manageableObjects = manageableObjectsClass.newInstance();
if (!(manageableObjects instanceof ManageableObjects)) {
@@ -123,39 +119,19 @@
return (ManageableObjects) object;
}
- if (object.getClass().equals(ArrayList.class)) {
- ManageableArrayList manageableArrayList = new ManageableArrayList();
- manageableArrayList.addAll((Collection) object);
- return manageableArrayList;
- }
+ //if the class is implementing the Collection interface
+ if (ReflectionUtils.implementsInterface(object.getClass(), Collection.class))
+ {
+ return new ManageableCollectionImpl((Collection) object);
+ }
+
+ //if the class is implementing the Map interface
+ if (ReflectionUtils.implementsInterface(object.getClass(), Map.class))
+ {
+ return new ManageableMapImpl((Map) object);
+ }
- if (object.getClass().equals(Vector.class)) {
- ManageableVector manageableVector = new ManageableVector();
- manageableVector.addAll((Collection) object);
-
- return manageableVector;
- }
-
- if (object.getClass().equals(HashSet.class)) {
- return new ManageableSet((Set) object);
- }
-
- if (object.getClass().equals(Collection.class)
- || object.getClass().equals(List.class)) {
- ManageableArrayList manageableArrayList = new ManageableArrayList();
- manageableArrayList.addAll((Collection) object);
-
- return manageableArrayList;
- }
- if (object.getClass().equals(Set.class)) {
- return new ManageableSet((Set) object);
- }
-
- if (object.getClass().equals(Map.class)
- || object.getClass().equals(HashMap.class) ){
- return new ManageableHashMap((Map)object);
- }
}
catch (Exception e) {
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=650283&r1=650282&r2=650283&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 Mon Apr 21 14:40:54 2008
@@ -242,7 +242,7 @@
{
throw new JcrMappingException("Impossible to use a map for the field : "
+ collectionDescriptor.getFieldName()
- + "in the class : " + collectionDescriptor.getCollectionClassName()
+ + " in the class : " + collectionDescriptor.getCollectionClassName()
+ ". The element objects have no id field (check their OCM mapping).");
}
Object elementId = ReflectionUtils.getNestedProperty(item,
Added: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableCollectionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableCollectionImpl.java?rev=650283&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableCollectionImpl.java (added)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableCollectionImpl.java Mon Apr 21 14:40:54 2008
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+package org.apache.jackrabbit.ocm.manager.collectionconverter.impl;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
+
+/**
+ *
+ * {@link ManageableCollection} ArrayList implementation
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
+ *
+ */
+public class ManageableCollectionImpl implements ManageableCollection
+{
+
+ private Collection collection;
+
+ public ManageableCollectionImpl(Collection collection) {
+ this.collection = collection;
+ }
+
+ /**
+ *
+ * @see org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection#addObject(java.lang.Object)
+ */
+ public void addObject(Object object)
+ {
+ collection.add(object);
+
+ }
+
+ /**
+ *
+ * @see org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection#getIterator()
+ */
+ public Iterator getIterator()
+ {
+ return collection.iterator();
+ }
+
+ /**
+ *
+ * @see org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection#getSize()
+ */
+ public int getSize()
+ {
+
+ return collection.size();
+ }
+
+ public Collection getObjects() {
+
+ return collection;
+ }
+
+
+
+}
Added: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableMapImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableMapImpl.java?rev=650283&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableMapImpl.java (added)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableMapImpl.java Mon Apr 21 14:40:54 2008
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+package org.apache.jackrabbit.ocm.manager.collectionconverter.impl;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableMap;
+
+/**
+ *
+ * {@link ManageableCollection} ArrayList implementation
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
+ *
+ */
+public class ManageableMapImpl implements ManageableMap
+{
+
+ private Map map;
+
+
+ public ManageableMapImpl(Map map) {
+ super();
+ this.map = map;
+ }
+
+ /**
+ *
+ * @see org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection#addObject(java.lang.Object)
+ */
+ public void addObject(Object key, Object object)
+ {
+ map.put(key, object);
+
+ }
+
+ /**
+ *
+ * @see org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection#getIterator()
+ */
+ public Iterator getIterator()
+ {
+ return map.values().iterator();
+ }
+
+ /**
+ *
+ * @see org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection#getSize()
+ */
+ public int getSize()
+ {
+
+ return map.size();
+ }
+
+
+ public Map getObjects() {
+
+ return map;
+ }
+
+
+
+}
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ResidualNodesCollectionConverterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ResidualNodesCollectionConverterImpl.java?rev=650283&r1=650282&r2=650283&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ResidualNodesCollectionConverterImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ResidualNodesCollectionConverterImpl.java Mon Apr 21 14:40:54 2008
@@ -69,11 +69,11 @@
CollectionDescriptor collectionDescriptor,
ManageableObjects objects) {
- if (!(objects instanceof Map)) {
+ if (!(objects instanceof ManageableMap)) {
return;
}
- Map map = (Map) objects;
+ Map map = (Map) objects.getObjects();
for (Iterator ei=map.entrySet().iterator(); ei.hasNext(); ) {
Map.Entry entry = (Map.Entry) ei.next();
String name = String.valueOf(entry.getKey());
@@ -90,14 +90,14 @@
ManageableObjects objects) throws RepositoryException {
String jcrName = getCollectionJcrName(collectionDescriptor);
- if (!(objects instanceof Map)) {
+ if (!(objects instanceof ManageableMap)) {
for (NodeIterator ni=parentNode.getNodes(jcrName); ni.hasNext(); ) {
ni.nextNode().remove();
}
return;
}
- Map map = (Map) objects;
+ Map map = (Map) objects.getObjects();
Set updatedItems = new HashSet();
for (Iterator ei=map.entrySet().iterator(); ei.hasNext(); ) {
Map.Entry entry = (Map.Entry) ei.next();
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ResidualPropertiesCollectionConverterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ResidualPropertiesCollectionConverterImpl.java?rev=650283&r1=650282&r2=650283&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ResidualPropertiesCollectionConverterImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ResidualPropertiesCollectionConverterImpl.java Mon Apr 21 14:40:54 2008
@@ -162,7 +162,7 @@
String jcrName = getCollectionJcrName(collectionDescriptor);
// can only persist maps, not general collections
- if (!(objects instanceof Map)) {
+ if (!(objects instanceof ManageableMap)) {
return;
}
@@ -179,7 +179,7 @@
AtomicTypeConverter atomicTypeConverter = getAtomicTypeConverter(collectionDescriptor);
try {
- Map map = (Map) objects;
+ Map map = (Map) objects.getObjects();
ValueFactory valueFactory = session.getValueFactory();
for (Iterator ei = map.entrySet().iterator(); ei.hasNext();) {
Map.Entry entry = (Map.Entry) ei.next();
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/CollectionLazyLoader.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/CollectionLazyLoader.java?rev=650283&r1=650282&r2=650283&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/CollectionLazyLoader.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/CollectionLazyLoader.java Mon Apr 21 14:40:54 2008
@@ -51,6 +51,6 @@
ManageableObjects objects = collectionConverter.getCollection(session, collectionParentNode, collectionDescriptor, collectionFieldClass);
- return objects;
+ return objects.getObjects();
}
}
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java?rev=650283&r1=650282&r2=650283&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java Mon Apr 21 14:40:54 2008
@@ -46,6 +46,8 @@
import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjectsUtil;
import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjects;
import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.DefaultCollectionConverterImpl;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableCollectionImpl;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableMapImpl;
import org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerUtil;
import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
import org.apache.jackrabbit.ocm.manager.objectconverter.ProxyManager;
@@ -703,14 +705,34 @@
Class collectionFieldClass = ReflectionUtils.getPropertyType(object, collectionDescriptor.getFieldName());
ManageableObjects objects = null;
if (collectionDescriptor.isProxy()) {
- objects = (ManageableCollection) proxyManager.createCollectionProxy(session, collectionConverter, parentNode,
+ Object proxy = proxyManager.createCollectionProxy(session, collectionConverter, parentNode,
collectionDescriptor, collectionFieldClass);
-
- } else {
+ ReflectionUtils.setNestedProperty(object, collectionDescriptor.getFieldName(), proxy);
+ }
+ else
+ {
objects = collectionConverter.getCollection(session, parentNode, collectionDescriptor, collectionFieldClass);
+ if (objects==null)
+ {
+ ReflectionUtils.setNestedProperty(object, collectionDescriptor.getFieldName(), null);
+ }
+ else
+ {
+ // TODO: find another for managing custom ManageableObjects classes
+ if ( ! objects.getClass().equals(ManageableCollectionImpl.class) &&
+ ! objects.getClass().equals(ManageableMapImpl.class))
+ {
+ ReflectionUtils.setNestedProperty(object, collectionDescriptor.getFieldName(), objects);
+ }
+ else
+ {
+ ReflectionUtils.setNestedProperty(object, collectionDescriptor.getFieldName(), objects.getObjects());
+ }
+ }
+
}
- ReflectionUtils.setNestedProperty(object, collectionDescriptor.getFieldName(), objects);
+
}
/**
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ProxyManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ProxyManagerImpl.java?rev=650283&r1=650282&r2=650283&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ProxyManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ProxyManagerImpl.java Mon Apr 21 14:40:54 2008
@@ -32,6 +32,7 @@
import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
import org.apache.jackrabbit.ocm.manager.objectconverter.ProxyManager;
import org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor;
+import org.apache.jackrabbit.ocm.reflection.ReflectionUtils;
public class ProxyManagerImpl implements ProxyManager
{
@@ -70,9 +71,9 @@
return null;
}
- ManageableObjects manageableCollection = ManageableObjectsUtil.getManageableObjects(collectionFieldClass);
+ //ManageableObjects manageableCollection = ManageableObjectsUtil.getManageableObjects(collectionFieldClass);
LazyLoader loader = new CollectionLazyLoader(collectionConverter, session, parentNode, collectionDescriptor, collectionFieldClass);
- return Enhancer.create(manageableCollection.getClass(), loader);
+ return Enhancer.create(collectionFieldClass, loader);
}
}
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=650283&r1=650282&r2=650283&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 Mon Apr 21 14:40:54 2008
@@ -171,11 +171,12 @@
private void addDescriptorsFromGetters(MappingDescriptor mappingDescriptor, ClassDescriptor classDescriptor, Class clazz) {
BeanInfo beanInfo;
+ String fieldName = "";
try {
beanInfo = Introspector.getBeanInfo(clazz);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
-
+ fieldName = propertyDescriptor.getName();
// Check if there is an Field annotation
Field fieldAnnotation = propertyDescriptor.getReadMethod().getAnnotation(Field.class);
if (fieldAnnotation != null) {
@@ -198,7 +199,9 @@
}
}
} catch (Exception e) {
- throw new InitMapperException("Impossible to read the mapping descriptor from the getter", e);
+ throw new InitMapperException("Impossible to read the mapping descriptor from the getter for class : " +
+ clazz.toString() +
+ (fieldName == null ? "" : " for field : " + fieldName), e);
}
}
@@ -227,33 +230,14 @@
collectionDescriptor.setAutoInsert(collectionAnnotation.autoInsert());
collectionDescriptor.setAutoRetrieve(collectionAnnotation.autoRetrieve());
collectionDescriptor.setAutoUpdate(collectionAnnotation.autoUpdate());
- collectionDescriptor.setCollectionClassName(field.getName());
+ collectionDescriptor.setCollectionClassName(field.getType().getName());
if (! collectionAnnotation.elementClassName().equals(Object.class))
{
collectionDescriptor.setElementClassName(collectionAnnotation.elementClassName().getName());
}
else
{
-
-// 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 ", ""));
- }
-
- }
-
+ setElementClassName(collectionDescriptor, field.getGenericType());
}
if (! collectionAnnotation.collectionClassName().equals(Object.class))
@@ -274,6 +258,36 @@
descriptor.addCollectionDescriptor(collectionDescriptor);
+ }
+
+
+
+ private void setElementClassName(CollectionDescriptor collectionDescriptor, Type type) {
+ 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 object 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 ", ""));
+ }
+
+ }
+ else
+ {
+ Type ancestorType = ((Class)type).getGenericSuperclass();
+ if ( ancestorType!= null)
+ {
+ setElementClassName(collectionDescriptor,ancestorType);
+ }
+ }
}
private void addBeanDescriptor(ClassDescriptor classDescriptor, String fieldName, Bean beanAnnotation) {
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/reflection/ReflectionUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/reflection/ReflectionUtils.java?rev=650283&r1=650282&r2=650283&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/reflection/ReflectionUtils.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/reflection/ReflectionUtils.java Mon Apr 21 14:40:54 2008
@@ -17,6 +17,13 @@
package org.apache.jackrabbit.ocm.reflection;
import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
import net.sf.cglib.proxy.Enhancer;
@@ -35,6 +42,18 @@
// default the class loader to the load of this class
private static ClassLoader classLoader = ReflectionUtils.class.getClassLoader();
+ // key = interface class, value = default implementation for the interface
+ // TODO : inject this map when the object content manager is initialized
+ private static HashMap<Class, Class> defaultImplementation;
+
+ static {
+ defaultImplementation = new HashMap<Class, Class>();
+ defaultImplementation.put(Collection.class, ArrayList.class);
+ defaultImplementation.put(List.class, ArrayList.class);
+ defaultImplementation.put(Map.class, HashMap.class);
+ defaultImplementation.put(SortedMap.class, TreeMap.class);
+
+ }
/**
* Sets the class loader to use in the {@link #forName(String)} method to
* load classes.
@@ -167,8 +186,8 @@
}
public static boolean isProxy(Class beanClass)
- {
- return Enhancer.isEnhanced(beanClass);
+ {
+ return Enhancer.isEnhanced(beanClass);
}
public static Class getBeanClass(Object bean)
@@ -181,5 +200,48 @@
}
return beanClass;
}
+
+
+ /**
+ * Check if an class is implementing an specific interface.
+ *
+ * @param clazz
+ * @param interfaceClass
+ * @return true if the class is implementing the interface otherwise false
+ */
+ public static boolean implementsInterface( Class clazz, Class interfaceClass ) {
+
+ // Try to find the interface class in the interfaces list
+ if (clazz.getInterfaces() != null )
+ {
+ for ( Class foundInterface : clazz.getInterfaces() ) {
+ if ( foundInterface == interfaceClass ) {
+ return true;
+ }
+ return implementsInterface(foundInterface, interfaceClass) ;
+ }
+ }
+ // Try to find from the ancestors
+ if (clazz.getSuperclass() != null)
+ {
+ return implementsInterface(clazz.getSuperclass(), interfaceClass);
+ }
+
+ return false;
+ }
+
+ /**
+ * Get the default implementation for an interface
+ * @param clazz The interface clazz
+ * @return The class matching to the interface default interface
+ */
+ public static Class getDefaultImplementation(Class clazz)
+ {
+ if (! clazz.isInterface())
+ throw new JcrMappingException(clazz + " is not an interface");
+
+ return defaultImplementation.get(clazz);
+ }
+
}
Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationArrayListTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationArrayListTest.java?rev=650283&r1=650282&r2=650283&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationArrayListTest.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationArrayListTest.java Mon Apr 21 14:40:54 2008
@@ -17,6 +17,8 @@
package org.apache.jackrabbit.ocm.manager.collectionconverter;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -27,6 +29,7 @@
import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
import org.apache.jackrabbit.ocm.testmodel.collection.ArrayListElement;
+import org.apache.jackrabbit.ocm.testmodel.collection.CustomList;
import org.apache.jackrabbit.ocm.testmodel.collection.Element;
import org.apache.jackrabbit.ocm.testmodel.collection.Main;
@@ -58,7 +61,7 @@
try
{
ObjectContentManager ocm = getObjectContentManager();
-
+
// --------------------------------------------------------------------------------
// Create and store an object graph in the repository
@@ -76,25 +79,40 @@
// Get the object
// --------------------------------------------------------------------------------
main = (Main) ocm.getObject( "/test");
- ArrayList arrayList = main.getList();
- assertNull("main.getList is not null", arrayList );
+ ArrayListElement arrayListElement = main.getArrayListElement();
+ List<Element> list = main.getList();
+ CustomList customList = main.getCustomList();
+
+ assertNull("main.getArrayListElement is not null", arrayListElement );
+ assertNull("main.getList is not null", list );
+ assertNull("main.getCustomList is not null", customList );
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
- ArrayListElement arrayListElement = new ArrayListElement();
+ arrayListElement = new ArrayListElement();
+ list = new ArrayList<Element>();
+ customList = new CustomList();
+
Element e1 = new Element();
e1.setId("e1");
e1.setText("Element 1");
- arrayListElement.add(e1);
+ arrayListElement.addObject(e1);
+ list.add(e1);
+ customList.add(e1);
Element e2 = new Element();
e2.setId("e2");
e2.setText("Element 2");
- arrayListElement.add(e2);
+ arrayListElement.addObject(e2);
+ list.add(e2);
+ customList.add(e2);
+
+ main.setArrayListElement(arrayListElement);
+ main.setList(list);
+ main.setCustomList(customList);
- main.setList(arrayListElement);
ocm.update(main);
ocm.save();
@@ -102,31 +120,49 @@
// Get the object
// --------------------------------------------------------------------------------
main = (Main) ocm.getObject( "/test");
- arrayList = main.getList();
- assertNotNull("main.getList is null", arrayList );
- Element[] elements = (Element[]) arrayList.toArray(new Element[arrayList.size()]);
+ arrayListElement = main.getArrayListElement();
+ list = main.getList();
+ assertNotNull("main.getArrayListElemnt is null", arrayListElement );
+ assertNotNull("main.getList is null", list );
+ assertNotNull("main.getCustomeList is null", customList );
+ Collection<Element> objects = (Collection<Element>) arrayListElement.getObjects();
+ Element[] elements = (Element[]) objects.toArray(new Element[objects.size()]);
assertTrue("Incorrect para element", elements[0].getText().equals("Element 1"));
+ assertTrue("Incorrect para element", list.get(0).getText().equals("Element 1"));
+ assertTrue("Incorrect para element", customList.get(0).getText().equals("Element 1"));
+
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
arrayListElement = new ArrayListElement();
+ list = new ArrayList<Element>();
+ customList = new CustomList();
+
e1 = new Element();
e1.setId("e1");
e1.setText("Element 1");
- arrayListElement.add(e1);
+ arrayListElement.addObject(e1);
+ list.add(e1);
+ customList.add(e1);
e2 = new Element();
e2.setId("e3");
e2.setText("Element 3");
- arrayListElement.add(e2);
+ arrayListElement.addObject(e2);
+ list.add(e2);
+ customList.add(e2);
Element e3 = new Element();
e3.setId("e4");
e3.setText("Element 4");
- arrayListElement.add(e3);
-
- main.setList(arrayListElement);
+ arrayListElement.addObject(e3);
+ list.add(e3);
+ customList.add(e3);
+
+ main.setArrayListElement(arrayListElement);
+ main.setList(list);
+ main.setCustomList(customList);
ocm.update(main);
ocm.save();
@@ -135,11 +171,15 @@
// Get the object
// --------------------------------------------------------------------------------
main = (Main) ocm.getObject( "/test");
- arrayList = main.getList();
- assertNotNull("main.getList() is null", arrayList );
- elements = (Element[]) arrayList.toArray(new Element[arrayList.size()]);
+ arrayListElement = main.getArrayListElement();
+ list = main.getList();
+ assertNotNull("main.getArrayListElement() is null", arrayListElement );
+ assertNotNull("main.getList() is null", list );
+ objects = (Collection<Element>) arrayListElement.getObjects();
+ elements = (Element[]) objects.toArray(new Element[objects.size()]);
assertTrue("Incorrect element", elements[2].getText().equals("Element 4"));
-
+ assertTrue("Incorrect element", list.get(2).getText().equals("Element 4"));
+ assertTrue("Incorrect element", customList.get(2).getText().equals("Element 4"));
}
catch (Exception e)
{
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=650283&r1=650282&r2=650283&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 Mon Apr 21 14:40:54 2008
@@ -78,7 +78,7 @@
// --------------------------------------------------------------------------------
main = (Main) ocm.getObject( "/test");
assertTrue("Incorrect text", main.getText().equals("Main text"));
- assertNull("HashMap is not null", main.getHashMap());
+ assertNull("HashMap is not null", main.getHashMapElement());
assertNull("Map is not null", main.getMap());
// --------------------------------------------------------------------------------
@@ -104,7 +104,7 @@
hashMapElement.addObject(e2);
map.put("e2", e2);
- main.setHashMap(hashMapElement);
+ main.setHashMapElement(hashMapElement);
main.setMap(map);
ocm.update(main);
@@ -114,11 +114,12 @@
// Get the object
// --------------------------------------------------------------------------------
main = (Main) ocm.getObject( "/test");
- assertNotNull("main.getHashMap() is null", main.getHashMap());
+ assertNotNull("main.getHashMap() is null", main.getHashMapElement());
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"));
+ map = (Map) main.getHashMapElement().getObjects();
+ assertTrue("Incorrect para element", ((Element) map.get("e1")).getText().equals("Element 1"));
+ assertTrue("Incorrect para element", ((Element) map.get("e1")).getText().equals("Element 1"));
// --------------------------------------------------------------------------------
// Update the object
@@ -144,7 +145,7 @@
hashMapElement.addObject(e3);
map.put("e4", e3);
- main.setHashMap(hashMapElement);
+ main.setHashMapElement(hashMapElement);
main.setMap(map);
ocm.update(main);
@@ -153,9 +154,10 @@
// --------------------------------------------------------------------------------
// Get the object
// --------------------------------------------------------------------------------
- assertNotNull("main.getElements() is null", main.getHashMap());
+ assertNotNull("main.getElements() is null", main.getHashMapElement());
assertTrue("Incorrect text", main.getText().equals("Main text"));
- assertTrue("Incorrect para element", ((Element) main.getHashMap().get("e4")).getText().equals("Element 4"));
+ map = (Map) main.getHashMapElement().getObjects();
+ assertTrue("Incorrect para element", ((Element) map.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=650283&r1=650282&r2=650283&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 Mon Apr 21 14:40:54 2008
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.ocm.manager.collectionconverter;
+import java.util.HashMap;
+
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -24,7 +26,6 @@
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.ManageableHashMap;
import org.apache.jackrabbit.ocm.testmodel.Paragraph;
import org.apache.jackrabbit.ocm.testmodel.Residual;
@@ -82,7 +83,7 @@
residual = new Residual.ResidualNodes();
residual.setPath("/test");
- ManageableHashMap map = new ManageableHashMap();
+ HashMap<String, Paragraph> map = new HashMap<String, Paragraph>();
map.put("value1", new Paragraph("Value1"));
map.put("value2", new Paragraph("Value2"));
map.put("value3", new Paragraph("Value3"));
@@ -104,7 +105,7 @@
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
- map = new ManageableHashMap();
+ map = new HashMap<String, Paragraph>();
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=650283&r1=650282&r2=650283&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 Mon Apr 21 14:40:54 2008
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.ocm.manager.collectionconverter;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
import junit.framework.Test;
@@ -26,9 +27,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.jackrabbit.ocm.AnnotationTestBase;
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.ManageableHashMap;
import org.apache.jackrabbit.ocm.testmodel.Residual;
/**
@@ -86,7 +85,7 @@
residual = new Residual.ResidualProperties();
residual.setPath("/test");
- ManageableHashMap map = new ManageableHashMap();
+ HashMap<String, Object> map = new HashMap<String, Object>();
map.put("value1", "Value1");
map.put("value2", "Value2");
map.put("value3", "Value3");
@@ -112,7 +111,7 @@
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
- map = new ManageableHashMap();
+ map = new HashMap<String, Object>();
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/DigesterArrayListTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterArrayListTest.java?rev=650283&r1=650282&r2=650283&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterArrayListTest.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterArrayListTest.java Mon Apr 21 14:40:54 2008
@@ -17,14 +17,16 @@
package org.apache.jackrabbit.ocm.manager.collectionconverter;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.DigesterTestBase;
+import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
import org.apache.jackrabbit.ocm.testmodel.collection.ArrayListElement;
import org.apache.jackrabbit.ocm.testmodel.collection.Element;
@@ -57,7 +59,7 @@
try
{
ObjectContentManager ocm = getObjectContentManager();
-
+
// --------------------------------------------------------------------------------
// Create and store an object graph in the repository
@@ -75,25 +77,32 @@
// Get the object
// --------------------------------------------------------------------------------
main = (Main) ocm.getObject( "/test");
- ArrayList arrayList = main.getList();
- assertNull("main.getList is not null", arrayList );
+ ArrayListElement arrayList = main.getArrayListElement();
+ List<Element> list = main.getList();
+ assertNull("main.getArrayListElement is not null", arrayList );
+ assertNull("main.getList is not null", list );
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
ArrayListElement arrayListElement = new ArrayListElement();
+ list = new ArrayList<Element>();
+
Element e1 = new Element();
e1.setId("e1");
e1.setText("Element 1");
- arrayListElement.add(e1);
+ arrayListElement.addObject(e1);
+ list.add(e1);
Element e2 = new Element();
e2.setId("e2");
e2.setText("Element 2");
- arrayListElement.add(e2);
+ arrayListElement.addObject(e2);
+ list.add(e2);
- main.setList(arrayListElement);
+ main.setArrayListElement(arrayListElement);
+ main.setList(list);
ocm.update(main);
ocm.save();
@@ -101,31 +110,42 @@
// Get the object
// --------------------------------------------------------------------------------
main = (Main) ocm.getObject( "/test");
- arrayList = main.getList();
- assertNotNull("main.getList is null", arrayList );
- Element[] elements = (Element[]) arrayList.toArray(new Element[arrayList.size()]);
+ arrayList = main.getArrayListElement();
+ list = main.getList();
+ assertNotNull("main.getArrayListElemnt is null", arrayList );
+ assertNotNull("main.getList is null", list );
+ Collection<Element> objects = (Collection<Element>) arrayList.getObjects();
+ Element[] elements = (Element[]) objects.toArray(new Element[objects.size()]);
assertTrue("Incorrect para element", elements[0].getText().equals("Element 1"));
+ assertTrue("Incorrect para element", list.get(0).getText().equals("Element 1"));
+
+
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
arrayListElement = new ArrayListElement();
+ list = new ArrayList<Element>();
e1 = new Element();
e1.setId("e1");
e1.setText("Element 1");
- arrayListElement.add(e1);
+ arrayListElement.addObject(e1);
+ list.add(e1);
e2 = new Element();
e2.setId("e3");
e2.setText("Element 3");
- arrayListElement.add(e2);
+ arrayListElement.addObject(e2);
+ list.add(e2);
Element e3 = new Element();
e3.setId("e4");
e3.setText("Element 4");
- arrayListElement.add(e3);
+ arrayListElement.addObject(e3);
+ list.add(e3);
- main.setList(arrayListElement);
+ main.setArrayListElement(arrayListElement);
+ main.setList(list);
ocm.update(main);
ocm.save();
@@ -134,11 +154,14 @@
// Get the object
// --------------------------------------------------------------------------------
main = (Main) ocm.getObject( "/test");
- arrayList = main.getList();
- assertNotNull("main.getList() is null", arrayList );
- elements = (Element[]) arrayList.toArray(new Element[arrayList.size()]);
+ arrayList = main.getArrayListElement();
+ list = main.getList();
+ assertNotNull("main.getArrayListElement() is null", arrayList );
+ assertNotNull("main.getList() is null", list );
+ objects = (Collection<Element>) arrayList.getObjects();
+ elements = (Element[]) objects.toArray(new Element[objects.size()]);
assertTrue("Incorrect element", elements[2].getText().equals("Element 4"));
-
+ assertTrue("Incorrect element", list.get(2).getText().equals("Element 4"));
}
catch (Exception e)
{
Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterHashMapTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterHashMapTest.java?rev=650283&r1=650282&r2=650283&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterHashMapTest.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterHashMapTest.java Mon Apr 21 14:40:54 2008
@@ -16,13 +16,15 @@
*/
package org.apache.jackrabbit.ocm.manager.collectionconverter;
+import java.util.Map;
+
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.DigesterTestBase;
+import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
import org.apache.jackrabbit.ocm.testmodel.collection.Element;
import org.apache.jackrabbit.ocm.testmodel.collection.HashMapElement;
@@ -58,7 +60,7 @@
try
{
ObjectContentManager ocm = getObjectContentManager();
-
+
// --------------------------------------------------------------------------------
// Create and store an object graph in the repository with null hashmap
// --------------------------------------------------------------------------------
@@ -75,7 +77,7 @@
// --------------------------------------------------------------------------------
main = (Main) ocm.getObject( "/test");
assertTrue("Incorrect text", main.getText().equals("Main text"));
- assertNull("HashMap is not null", main.getHashMap());
+ assertNull("HashMap is not null", main.getHashMapElement());
// --------------------------------------------------------------------------------
// Update an object graph in the repository
@@ -96,7 +98,7 @@
e2.setText("Element 2");
hashMapElement.addObject(e2);
- main.setHashMap(hashMapElement);
+ main.setHashMapElement(hashMapElement);
ocm.update(main);
ocm.save();
@@ -105,9 +107,10 @@
// Get the object
// --------------------------------------------------------------------------------
main = (Main) ocm.getObject( "/test");
- assertNotNull("main.getHashMap() is null", main.getHashMap());
+ assertNotNull("main.getHashMap() is null", main.getHashMapElement());
assertTrue("Incorrect text", main.getText().equals("Main text"));
- assertTrue("Incorrect para element", ((Element) main.getHashMap().get("e1")).getText().equals("Element 1"));
+ Map map = (Map) main.getHashMapElement().getObjects();
+ assertTrue("Incorrect para element", ((Element) map.get("e1")).getText().equals("Element 1"));
// --------------------------------------------------------------------------------
// Update the object
@@ -127,7 +130,7 @@
e3.setId("e4");
e3.setText("Element 4");
hashMapElement.addObject(e3);
- main.setHashMap(hashMapElement);
+ main.setHashMapElement(hashMapElement);
ocm.update(main);
ocm.save();
@@ -135,9 +138,10 @@
// --------------------------------------------------------------------------------
// Get the object
// --------------------------------------------------------------------------------
- assertNotNull("main.getElements() is null", main.getHashMap());
+ assertNotNull("main.getElements() is null", main.getHashMapElement());
assertTrue("Incorrect text", main.getText().equals("Main text"));
- assertTrue("Incorrect para element", ((Element) main.getHashMap().get("e4")).getText().equals("Element 4"));
+ map = (Map) main.getHashMapElement().getObjects();
+ assertTrue("Incorrect para element", ((Element) map.get("e4")).getText().equals("Element 4"));
}
catch (Exception e)
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=650283&r1=650282&r2=650283&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 Mon Apr 21 14:40:54 2008
@@ -16,15 +16,16 @@
*/
package org.apache.jackrabbit.ocm.manager.collectionconverter;
+import java.util.HashMap;
+
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.DigesterTestBase;
+import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
-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 +82,7 @@
residual = new Residual.ResidualNodes();
residual.setPath("/test");
- ManageableHashMap map = new ManageableHashMap();
+ HashMap<String,Paragraph> map = new HashMap<String,Paragraph>();
map.put("value1", new Paragraph("Value1"));
map.put("value2", new Paragraph("Value2"));
map.put("value3", new Paragraph("Value3"));
@@ -103,7 +104,7 @@
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
- map = new ManageableHashMap();
+ map = new HashMap<String,Paragraph>();
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=650283&r1=650282&r2=650283&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 Mon Apr 21 14:40:54 2008
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.ocm.manager.collectionconverter;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
import junit.framework.Test;
@@ -24,10 +25,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.DigesterTestBase;
+import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
-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");
- ManageableHashMap map = new ManageableHashMap();
+ HashMap<String, Object> map = new HashMap<String, Object>();
map.put("value1", "Value1");
map.put("value2", "Value2");
map.put("value3", "Value3");
@@ -112,7 +112,7 @@
// --------------------------------------------------------------------------------
// Update the object
// --------------------------------------------------------------------------------
- map = new ManageableHashMap();
+ map = new HashMap<String, Object>();
map.put("value11", "Value11");
map.put("value12", "Value12");
map.put("value13", "Value13");
Added: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/repository/RelfectionUtilTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/repository/RelfectionUtilTest.java?rev=650283&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/repository/RelfectionUtilTest.java (added)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/repository/RelfectionUtilTest.java Mon Apr 21 14:40:54 2008
@@ -0,0 +1,85 @@
+/*
+ * 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.
+ */
+package org.apache.jackrabbit.ocm.repository;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.SortedMap;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jackrabbit.ocm.reflection.ReflectionUtils;
+import org.apache.jackrabbit.ocm.testmodel.collection.CustomList;
+
+/** Testcase for ReflectionUtils.
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
+ */
+public class RelfectionUtilTest extends TestCase
+{
+ private final static Log log = LogFactory.getLog(RelfectionUtilTest.class);
+
+ /**
+ * <p>Defines the test case name for junit.</p>
+ * @param testName The test case name.
+ */
+ public RelfectionUtilTest(String testName)
+ {
+ super(testName);
+ }
+
+ /**
+ * @see junit.framework.TestCase#setUp()
+ */
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ }
+
+ /**
+ * @see junit.framework.TestCase#tearDown()
+ */
+ public void tearDown() throws Exception
+ {
+ super.tearDown();
+ }
+
+
+ /**
+ * Test for getRepository() and login
+ *
+ */
+ public void testimplementInterface()
+ {
+ assertTrue(ReflectionUtils.implementsInterface(List.class, Collection.class));
+ assertTrue(ReflectionUtils.implementsInterface(new ArrayList<String>().getClass(), Collection.class));
+ assertFalse(ReflectionUtils.implementsInterface(Map.class, Collection.class));
+ assertTrue(ReflectionUtils.implementsInterface(LinkedList.class, Collection.class));
+
+ assertTrue(ReflectionUtils.implementsInterface(HashMap.class, Map.class));
+ assertTrue(ReflectionUtils.implementsInterface(SortedMap.class, Map.class));
+ assertTrue(ReflectionUtils.implementsInterface(CustomList.class, Collection.class));
+ }
+
+}
\ No newline at end of file
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=650283&r1=650282&r2=650283&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 Mon Apr 21 14:40:54 2008
@@ -16,7 +16,8 @@
*/
package org.apache.jackrabbit.ocm.testmodel;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableHashMap;
+import java.util.Map;
+
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 +38,19 @@
{
@Field(path=true) private String path;
- private ManageableHashMap elements;
+ private Map elements;
/**
* @return Returns the elements.
*/
- public ManageableHashMap getElements()
+ public Map getElements()
{
return elements;
}
/**
* @param elements The elements to set.
*/
- public void setElements(ManageableHashMap elements)
+ public void setElements(Map elements)
{
this.elements = elements;
}
@@ -57,21 +58,20 @@
@Node(extend=Residual.class) public static class ResidualProperties extends Residual
{
- @Collection( jcrName="value*",elementClassName=String.class,collectionConverter=ResidualPropertiesCollectionConverterImpl.class,
- collectionClassName=ManageableHashMap.class)
- private ManageableHashMap elements;
+ @Collection( jcrName="value*",
+ collectionConverter=ResidualPropertiesCollectionConverterImpl.class)
+ private Map<String, String> elements;
}
@Node(extend=Residual.class) public static class ResidualNodes extends Residual
{
-
- @Collection( jcrName="value*",elementClassName=Object.class,collectionConverter=ResidualNodesCollectionConverterImpl.class,
- collectionClassName=ManageableHashMap.class)
- private ManageableHashMap elements;
-
+ @Collection( jcrName="value*",collectionConverter=ResidualNodesCollectionConverterImpl.class)
+ private Map<String, Object> elements;
+
+
}
protected Residual() {}
Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/ArrayListElement.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/ArrayListElement.java?rev=650283&r1=650282&r2=650283&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/ArrayListElement.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/ArrayListElement.java Mon Apr 21 14:40:54 2008
@@ -22,36 +22,42 @@
import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
/**
+ * No very useful class.
+ * This is just there to test custom ManageableCollection implementation
*
* @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
*
*/
-public class ArrayListElement extends ArrayList implements ManageableCollection
+public class ArrayListElement implements ManageableCollection
{
- /**
+ private ArrayList<Element> collection = new ArrayList<Element>();
+ /**
* @see org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection#addObject(java.lang.Object)
*/
public void addObject(Object object)
{
- if (object instanceof Element)
- {
- this.add(object);
- }
+ if (object instanceof Element)
+ collection.add((Element)object);
}
/**
* @see org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection#getIterator()
*/
- public Iterator getIterator()
+ public Iterator<Element> getIterator()
{
- return this.iterator();
+ return collection.iterator();
}
public int getSize()
{
-
- return this.size();
+
+ return collection.size();
+ }
+
+ public Object getObjects() {
+
+ return collection;
}
Added: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/CustomList.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/CustomList.java?rev=650283&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/CustomList.java (added)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/CustomList.java Mon Apr 21 14:40:54 2008
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+package org.apache.jackrabbit.ocm.testmodel.collection;
+
+import java.util.ArrayList;
+
+/**
+ * Don't read the code of this class :-)
+ * It just there to test a custom collection
+ */
+public class CustomList extends ArrayList<Element> {
+
+ public String getCustomString()
+ {
+ StringBuilder customString = new StringBuilder();
+ for (Element element : this)
+ {
+ customString.append(element.getText()).append(" ");
+ }
+ return customString.toString();
+ }
+}
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=650283&r1=650282&r2=650283&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 Mon Apr 21 14:40:54 2008
@@ -19,16 +19,19 @@
import java.util.HashMap;
import java.util.Iterator;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableMap;
/**
+ * No very useful class.
+ * This is just there to test custom ManageableMap implementation
*
* @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
*
*/
-public class HashMapElement extends HashMap implements ManageableCollection
+public class HashMapElement implements ManageableMap
{
+ private HashMap<String , Element> map = new HashMap<String, Element>();
/**
* @see org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection#addObject(java.lang.Object)
*/
@@ -36,7 +39,15 @@
{
if (object instanceof Element)
{
- this.put(((Element)object).getId(), object);
+ map.put(((Element)object).getId(), (Element)object);
+ }
+ }
+
+ public void addObject(Object key, Object object)
+ {
+ if (object instanceof Element)
+ {
+ map.put((String) key, (Element)object);
}
}
@@ -45,14 +56,18 @@
*/
public Iterator getIterator()
{
- return this.values().iterator();
+ return map.values().iterator();
}
public int getSize()
{
- return this.size();
+ return map.size();
}
+ public Object getObjects()
+ {
+ return map;
+ }
}
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=650283&r1=650282&r2=650283&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 Mon Apr 21 14:40:54 2008
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.ocm.testmodel.collection;
+import java.util.List;
import java.util.Map;
import org.apache.jackrabbit.ocm.mapper.impl.annotation.Collection;
@@ -32,14 +33,26 @@
public class Main
{
@Field(path=true) private String path;
+
@Field private String text;
- @Collection (elementClassName=Element.class, collectionClassName=HashMapElement.class)
- private HashMapElement hashMap;
+ @Collection (elementClassName=Element.class)
+ private HashMapElement hashMapElement;
@Collection private Map<String, Element> map;
- @Collection (elementClassName=Element.class, collectionClassName=ArrayListElement.class)
- private ArrayListElement list;
+
+ // 3 ways to implements a collection :
+
+ // inherit from ManageableCollection
+ @Collection (elementClassName=Element.class)
+ private ArrayListElement arrayListElement;
+
+ // standard collection with Type - no need to specify the elementClassName
+ @Collection private List<Element> list;
+
+ // Custom List
+ @Collection
+ private CustomList customList;
public String getPath() {
@@ -51,26 +64,26 @@
/**
* @return Returns the elements.
*/
- public HashMapElement getHashMap()
+ public HashMapElement getHashMapElement()
{
- return hashMap;
+ return hashMapElement;
}
/**
* @param elements The elements to set.
*/
- public void setHashMap(HashMapElement hashMap)
+ public void setHashMapElement(HashMapElement hashMap)
{
- this.hashMap = hashMap;
+ this.hashMapElement = hashMap;
}
- public ArrayListElement getList()
+ public ArrayListElement getArrayListElement()
{
- return list;
+ return arrayListElement;
}
- public void setList(ArrayListElement list)
+ public void setArrayListElement(ArrayListElement list)
{
- this.list = list;
+ this.arrayListElement = list;
}
/**
* @return Returns the text.
@@ -95,6 +108,19 @@
public void setMap(Map<String, Element> map)
{
this.map = map;
+ }
+
+ public List<Element> getList() {
+ return list;
+ }
+ public void setList(List<Element> list) {
+ this.list = list;
+ }
+ public CustomList getCustomList() {
+ return customList;
+ }
+ public void setCustomList(CustomList customList) {
+ this.customList = customList;
}