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 [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: Thu Apr 10 12:47:23 2008
New Revision: 646938
URL: http://svn.apache.org/viewvc?rev=646938&view=rev
Log:
- working on JCR-1339 : better support for Map. It is important to define an ID field in the class used for the Map elements. This ID will be used as a key in the map.
- Rename ManagedHashMap into ManageableHashMap in ordrer to follow the same naming convention.
- Now, it is not necessary to define the ElementClassName if the Collection or the Map are parametrized like List<MyClass>
Added:
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableMap.java
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
- copied, changed from r636881, jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableCollectionUtil.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableHashMap.java
- copied, changed from r636881, jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManagedHashMap.java
Removed:
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableCollectionUtil.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManagedHashMap.java
Modified:
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/CollectionConverter.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableCollection.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/AbstractCollectionConverterImpl.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/BeanReferenceCollectionConverterImpl.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/MultiValueCollectionConverterImpl.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/NTCollectionConverterImpl.java
jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ReferenceCollectionConverterImpl.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/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/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/Element.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
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/CollectionConverter.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/CollectionConverter.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/CollectionConverter.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/CollectionConverter.java Thu Apr 10 12:47:23 2008
@@ -23,7 +23,7 @@
import org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor;
/**
- * Convert any kind of {@link ManageableCollection} into severals JCR nodes.
+ * Convert any kind of {@link ManageableObjects} into severals JCR nodes.
*
* @author <a href="mailto:christophe.lombart@sword-technologies.com">Lombart Christophe </a>
*
@@ -32,44 +32,44 @@
{
/**
- * Insert/convert collection elements into some JCR nodes
+ * Insert/convert collection elements (a Collection or a Map) into some JCR nodes
* @param session The JCR session
* @param parentNode the node which will contains the collection element
* @param collectionDescriptor The collection descriptor
- * @param collection the collection to insert
+ * @param objects The objects to insert
*
* @throws ObjectContentManagerException when it is not possible to insert the collection
*
*/
public void insertCollection(Session session, Node parentNode,
- CollectionDescriptor collectionDescriptor, ManageableCollection collection) throws ObjectContentManagerException;
+ CollectionDescriptor collectionDescriptor, ManageableObjects objects) throws ObjectContentManagerException;
/**
- * Update collection elements already present in the JCR repository
+ * Update collection elements (a Collection or a Map) already present in the JCR repository
* @param session The JCR session
* @param parentNode the node which will contains the collection element
* @param collectionDescriptor The collection descriptor
- * @param collection the collection to update
+ * @param objects The objects to update
*
* @throws ObjectContentManagerException when it is not possible to update the collection
*/
public void updateCollection(Session session, Node parentNode,
- CollectionDescriptor collectionDescriptor, ManageableCollection collection) throws ObjectContentManagerException;
+ CollectionDescriptor collectionDescriptor, ManageableObjects objects) throws ObjectContentManagerException;
/**
- * Get a {@link ManageableCollection} from the JCR repository
+ * Get a {@link ManageableObjects} from the JCR repository
* @param session The JCR session
* @param parentNode the node which contains the collection element
* @param collectionDescriptor The collection descriptor
* @param collectionFieldClass The collection class to used (ArrayList, Vector, ..)
- * @return The collection populates with all elements found in the JCR repository
+ * @return The collection or a map populates with all elements found in the JCR repository
*
* @throws ObjectContentManagerException when it is not possible to retrieve the collection
*/
- public ManageableCollection getCollection(Session session, Node parentNode,
+ public ManageableObjects getCollection(Session session, Node parentNode,
CollectionDescriptor collectionDescriptor, Class collectionFieldClass) throws ObjectContentManagerException;
-
+
/**
* Check if the collection is null. This method is mainly used in the Proxy manager to return a null value or a proxy object
* Without proxy proxy, this method is never called.
@@ -82,7 +82,7 @@
*
*
* @throws ObjectContentManagerException when it is not possible to retrieve the collection
- */
+ */
public boolean isNull(Session session, Node parentNode,
CollectionDescriptor collectionDescriptor, Class collectionFieldClass) throws ObjectContentManagerException;
}
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableCollection.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableCollection.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableCollection.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableCollection.java Thu Apr 10 12:47:23 2008
@@ -16,32 +16,21 @@
*/
package org.apache.jackrabbit.ocm.manager.collectionconverter;
-import java.util.Iterator;
/**
- * Common interface used to persist any kind of Collection or Map.
+ * Common interface used to persist any kind of Collection.
*
*
* @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
*
*/
-public interface ManageableCollection
+public interface ManageableCollection extends ManageableObjects
{
/**
* Add an object into this ManageableCollection
* @param object the object to add
*/
public void addObject(Object object);
-
- /**
- * @return The ManageableCollection iterator
- */
- public Iterator getIterator();
-
- /**
- * @return The ManageableCollection size
- */
- public int getSize();
}
Added: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableMap.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableMap.java?rev=646938&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableMap.java (added)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableMap.java Thu Apr 10 12:47:23 2008
@@ -0,0 +1,37 @@
+/*
+ * 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;
+
+
+/**
+ * Common interface used to persist any kind of Map.
+ *
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
+ *
+ */
+public interface ManageableMap extends ManageableObjects
+{
+ /**
+ * Add an object into this ManageableMap
+ * @param key the object key
+ * @param object the object to add
+ */
+ public void addObject(Object key, Object object);
+
+
+}
Added: 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=646938&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjects.java (added)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjects.java Thu Apr 10 12:47:23 2008
@@ -0,0 +1,41 @@
+/*
+ * 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;
+
+import java.util.Iterator;
+
+/**
+ * Common interface used to persist any kind of Collection or Map.
+ *
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
+ *
+ */
+public interface ManageableObjects
+{
+ /**
+ * @return The ManageableCollection iterator
+ */
+ public Iterator getIterator();
+
+ /**
+ * @return The ManageableCollection size
+ */
+ public int getSize();
+
+
+}
Copied: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjectsUtil.java (from r636881, jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableCollectionUtil.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjectsUtil.java?p2=jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjectsUtil.java&p1=jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableCollectionUtil.java&r1=636881&r2=646938&rev=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableCollectionUtil.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ManageableObjectsUtil.java Thu Apr 10 12:47:23 2008
@@ -19,8 +19,10 @@
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;
@@ -28,93 +30,97 @@
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.reflection.ReflectionUtils;
/**
- * Utility class used to instantiate {@link ManageableCollection}
+ * Utility class used to instantiate {@link ManageableObjects}
+ * A ManageableObjects is a Collection or a Map
*
* @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
*
*/
-public class ManageableCollectionUtil {
+public class ManageableObjectsUtil {
/**
- * Instantiate a new {@link ManageableCollection}
- * @param manageableCollectionClassName The manageable collection class name
- * @return an emtpy created {@link ManageableCollection}
+ * Instantiate a new {@link ManageableObjects}
+ * @param manageableObjectsClassName The manageable objects class name
+ * @return an emtpy created {@link ManageableObjects}
*/
- public static ManageableCollection getManageableCollection(String manageableCollectionClassName) {
+ public static ManageableObjects getManageableObjects(String manageableObjectsClassName) {
try {
- return (ManageableCollection) ReflectionUtils.newInstance(manageableCollectionClassName);
+ return (ManageableObjects) ReflectionUtils.newInstance(manageableObjectsClassName);
}
catch (Exception e) {
throw new JcrMappingException("Cannot create manageable collection : "
- + manageableCollectionClassName,
+ + manageableObjectsClassName,
e);
}
}
/**
- * Instantiate a new {@link ManageableCollection}
- * @param collectionClass the collection class name
+ * Instantiate a new {@link ManageableObjects}
+ * @param manageableObjectsClass the collection class name
* @return an emtpy created {@link ManageableCollection}
*/
- public static ManageableCollection getManageableCollection(Class collectionClass) {
+ public static ManageableObjects getManageableObjects(Class manageableObjectsClass) {
try {
- if (collectionClass.equals(ArrayList.class)) {
+ if (manageableObjectsClass.equals(ArrayList.class)) {
return new ManageableArrayList();
}
- if (collectionClass.equals(Vector.class)) {
+ if (manageableObjectsClass.equals(Vector.class)) {
return new ManageableVector();
}
- if (collectionClass.equals(HashSet.class)) {
+ if (manageableObjectsClass.equals(HashSet.class)) {
return new ManageableSet();
}
- if (collectionClass.equals(Collection.class) || collectionClass.equals(List.class)) {
+ if (manageableObjectsClass.equals(Collection.class) || manageableObjectsClass.equals(List.class)) {
return new ManageableArrayList();
}
- if (collectionClass.equals(Set.class)) {
+ if (manageableObjectsClass.equals(Set.class)) {
return new ManageableSet();
}
- Object collection = collectionClass.newInstance();
- if (!(collection instanceof ManageableCollection)) {
+ if (manageableObjectsClass.equals(Map.class) || manageableObjectsClass.equals(HashMap.class)) {
+ return new ManageableHashMap();
+ }
+
+ Object manageableObjects = manageableObjectsClass.newInstance();
+ if (!(manageableObjects instanceof ManageableObjects)) {
throw new JcrMappingException("Unsupported collection type :"
- + collectionClass.getName());
+ + manageableObjectsClass.getName());
}
else {
- return (ManageableCollection) collection;
+ return (ManageableObjects) manageableObjects;
}
}
catch (Exception e) {
- throw new JcrMappingException("Cannot create manageable collection", e);
+ throw new JcrMappingException("Cannot create manageable objects (Collection or Map)", e);
}
}
/**
- * Convert a java Collection object into a {@link ManageableCollection}.
- * Until now, only the following class are supported :
- * Collection, List, ArrayList, Vector
+ * Convert a java Collection or a Map into a {@link ManageableObjects}.
*
- * If you need a Map, you have to write your own {@link ManageableCollection}.
- * @param object the java collection or Map
- * @return The converted {@link ManageableCollection}
+ * The elements of a Map should have an ID field (see the field descriptor definition).
+ * @param object the collection or the Map objet
+ * @return The converted {@link ManageableObjects}
*
*/
- public static ManageableCollection getManageableCollection(Object object) {
+ public static ManageableObjects getManageableObjects(Object object) {
try {
if (object == null) {
return null;
}
- if (object instanceof ManageableCollection) {
- return (ManageableCollection) object;
+ if (object instanceof ManageableObjects) {
+ return (ManageableObjects) object;
}
if (object.getClass().equals(ArrayList.class)) {
@@ -145,6 +151,12 @@
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) {
throw new JcrMappingException("Impossible to create the manageable collection", e);
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/AbstractCollectionConverterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/AbstractCollectionConverterImpl.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/AbstractCollectionConverterImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/AbstractCollectionConverterImpl.java Thu Apr 10 12:47:23 2008
@@ -30,7 +30,7 @@
import org.apache.jackrabbit.ocm.exception.JcrMappingException;
import org.apache.jackrabbit.ocm.exception.ObjectContentManagerException;
import org.apache.jackrabbit.ocm.manager.collectionconverter.CollectionConverter;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjects;
import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
import org.apache.jackrabbit.ocm.mapper.Mapper;
import org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor;
@@ -60,12 +60,12 @@
}
protected abstract void doInsertCollection(Session session, Node parentNode, CollectionDescriptor descriptor,
- ManageableCollection collection) throws RepositoryException;
+ ManageableObjects objects) throws RepositoryException;
protected abstract void doUpdateCollection(Session session, Node parentNode, CollectionDescriptor descriptor,
- ManageableCollection collection) throws RepositoryException;
+ ManageableObjects objects) throws RepositoryException;
- protected abstract ManageableCollection doGetCollection(Session session, Node parentNode,
+ protected abstract ManageableObjects doGetCollection(Session session, Node parentNode,
CollectionDescriptor collectionDescriptor, Class collectionFieldClass) throws RepositoryException;
protected abstract boolean doIsNull(Session session, Node parentNode, CollectionDescriptor collectionDescriptor,
@@ -75,9 +75,9 @@
* @see org.apache.jackrabbit.ocm.manager.collectionconverter.CollectionConverter#insertCollection(javax.jcr.Session, javax.jcr.Node, org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor, org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection)
*/
public void insertCollection(Session session, Node parentNode, CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) {
+ ManageableObjects objects) {
try {
- doInsertCollection(session, parentNode, collectionDescriptor, collection);
+ doInsertCollection(session, parentNode, collectionDescriptor, objects);
} catch (ItemExistsException iee) {
throw new ObjectContentManagerException("Cannot insert collection field : " + collectionDescriptor.getFieldName()
+ " of class " + collectionDescriptor.getClassDescriptor().getClassName() + ". An item already exists.", iee);
@@ -105,10 +105,10 @@
* @see org.apache.jackrabbit.ocm.manager.collectionconverter.CollectionConverter#updateCollection(javax.jcr.Session, javax.jcr.Node, org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor, org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection)
*/
public void updateCollection(Session session, Node parentNode, CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) {
+ ManageableObjects objects) {
try {
- doUpdateCollection(session, parentNode, collectionDescriptor, collection);
+ doUpdateCollection(session, parentNode, collectionDescriptor, objects);
} catch (VersionException ve) {
throw new ObjectContentManagerException("Cannot insert collection field : " + collectionDescriptor.getFieldName()
+ " of class " + collectionDescriptor.getClassDescriptor().getClassName(), ve);
@@ -128,7 +128,7 @@
/**
* @see org.apache.jackrabbit.ocm.manager.collectionconverter.CollectionConverter#getCollection(javax.jcr.Session, javax.jcr.Node, org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor, java.lang.Class)
*/
- public ManageableCollection getCollection(Session session, Node parentNode, CollectionDescriptor collectionDescriptor,
+ public ManageableObjects getCollection(Session session, Node parentNode, CollectionDescriptor collectionDescriptor,
Class collectionFieldClass) {
try {
return doGetCollection(session, parentNode, collectionDescriptor, collectionFieldClass);
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/BeanReferenceCollectionConverterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/BeanReferenceCollectionConverterImpl.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/BeanReferenceCollectionConverterImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/BeanReferenceCollectionConverterImpl.java Thu Apr 10 12:47:23 2008
@@ -36,7 +36,8 @@
import org.apache.jackrabbit.ocm.exception.JcrMappingException;
import org.apache.jackrabbit.ocm.exception.ObjectContentManagerException;
import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollectionUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjectsUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjects;
import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
import org.apache.jackrabbit.ocm.mapper.Mapper;
import org.apache.jackrabbit.ocm.mapper.model.ClassDescriptor;
@@ -73,8 +74,8 @@
protected void doInsertCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) throws RepositoryException {
- addUuidProperties(session, parentNode, collectionDescriptor, collection);
+ ManageableObjects objects) throws RepositoryException {
+ addUuidProperties(session, parentNode, collectionDescriptor, objects);
}
@@ -85,7 +86,7 @@
protected void doUpdateCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) throws RepositoryException
+ ManageableObjects objects) throws RepositoryException
{
String jcrName = getCollectionJcrName(collectionDescriptor);
@@ -94,18 +95,18 @@
parentNode.setProperty(jcrName, (Value[]) null);
}
- if (collection == null) {
+ if (objects == null) {
return;
}
- addUuidProperties(session, parentNode, collectionDescriptor, collection);
+ addUuidProperties(session, parentNode, collectionDescriptor, objects);
}
/**
* @see AbstractCollectionConverterImpl#doGetCollection(Session, Node, CollectionDescriptor, Class)
*/
- protected ManageableCollection doGetCollection(Session session,
+ protected ManageableObjects doGetCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
Class collectionFieldClass) throws RepositoryException {
@@ -117,16 +118,26 @@
Property property = parentNode.getProperty(jcrName);
Value[] values = property.getValues();
- ManageableCollection collection = ManageableCollectionUtil.getManageableCollection(collectionFieldClass);
+ ManageableObjects objects = ManageableObjectsUtil.getManageableObjects(collectionFieldClass);
+
+ // For collection of bean references, only Collections are supported
+ if (! (objects instanceof ManageableCollection))
+ {
+
+ throw new JcrMappingException("Impossible to retrieve the attribute "
+ + collectionDescriptor.getFieldName() + " in the class "
+ + collectionDescriptor.getClassDescriptor().getClassName()
+ + " because it is not a collection");
+ }
for (int i = 0; i < values.length; i++) {
String uuid = values[i].getString();
- String path = session.getNodeByUUID(uuid).getPath();
+ String path = session.getNodeByUUID(uuid).getPath();
Object object = objectConverter.getObject(session, path);
- collection.addObject(object);
+ ((ManageableCollection) objects).addObject(object);
}
- return collection;
+ return objects;
}
catch(Exception e) {
throw new ObjectContentManagerException("Cannot get the collection field : "
@@ -144,17 +155,20 @@
return ! parentNode.hasProperty(jcrName);
}
- private void addUuidProperties(Session session, Node parentNode, CollectionDescriptor collectionDescriptor, ManageableCollection collection) throws UnsupportedRepositoryOperationException, RepositoryException, VersionException, LockException, ConstraintViolationException {
+ private void addUuidProperties(Session session, Node parentNode,
+ CollectionDescriptor collectionDescriptor,
+ ManageableObjects objects)
+ throws UnsupportedRepositoryOperationException, RepositoryException, VersionException, LockException, ConstraintViolationException {
try {
- if (collection == null) {
+ if (objects == null) {
return;
}
String jcrName = getCollectionJcrName(collectionDescriptor);
- Value[] values = new Value[collection.getSize()];
+ Value[] values = new Value[objects.getSize()];
ValueFactory valueFactory = session.getValueFactory();
- Iterator collectionIterator = collection.getIterator();
- for (int i = 0; i < collection.getSize(); i++) {
+ Iterator collectionIterator = objects.getIterator();
+ for (int i = 0; i < objects.getSize(); i++) {
Object object = collectionIterator.next();
if (object != null)
{
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=646938&r1=646937&r2=646938&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 Thu Apr 10 12:47:23 2008
@@ -31,7 +31,9 @@
import org.apache.jackrabbit.ocm.exception.JcrMappingException;
import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollectionUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjectsUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableMap;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjects;
import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
import org.apache.jackrabbit.ocm.mapper.Mapper;
import org.apache.jackrabbit.ocm.mapper.model.ClassDescriptor;
@@ -91,8 +93,8 @@
protected void doInsertCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) throws RepositoryException {
- if (collection == null) {
+ ManageableObjects objects) throws RepositoryException {
+ if (objects == null) {
return;
}
@@ -108,7 +110,7 @@
ClassDescriptor elementClassDescriptor = mapper.getClassDescriptorByClass( ReflectionUtils.forName(collectionDescriptor.getElementClassName()));
- Iterator collectionIterator = collection.getIterator();
+ Iterator collectionIterator = objects.getIterator();
while (collectionIterator.hasNext()) {
Object item = collectionIterator.next();
String elementJcrName = null;
@@ -134,12 +136,12 @@
protected void doUpdateCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) throws RepositoryException {
+ ManageableObjects objects) throws RepositoryException {
String jcrName = getCollectionJcrName(collectionDescriptor);
boolean hasNode = parentNode.hasNode(jcrName);
// If the new value for the collection is null, drop the node matching to the collection
- if (collection == null)
+ if (objects == null)
{
if (hasNode)
{
@@ -151,12 +153,12 @@
// If there is not yet a node matching to the collection, insert the collection
if (! hasNode)
{
- this.doInsertCollection(session, parentNode, collectionDescriptor, collection);
+ this.doInsertCollection(session, parentNode, collectionDescriptor, objects);
return;
}
// update process
-
+
ClassDescriptor elementClassDescriptor = mapper.getClassDescriptorByClass( ReflectionUtils.forName(collectionDescriptor.getElementClassName()));
Node collectionNode = parentNode.getNode(jcrName);
// If the collection elements have not an id, it is not possible to find the matching JCR nodes => delete the complete collection
@@ -165,7 +167,7 @@
collectionNode = parentNode.addNode(jcrName);
}
- Iterator collectionIterator = collection.getIterator();
+ Iterator collectionIterator = objects.getIterator();
Map updatedItems = new HashMap();
while (collectionIterator.hasNext()) {
@@ -214,7 +216,7 @@
/**
* @see AbstractCollectionConverterImpl#doGetCollection(Session, Node, CollectionDescriptor, Class)
*/
- protected ManageableCollection doGetCollection(Session session,
+ protected ManageableObjects doGetCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
Class collectionFieldClass) throws RepositoryException {
@@ -224,7 +226,7 @@
return null;
}
- ManageableCollection collection = ManageableCollectionUtil.getManageableCollection(collectionFieldClass);
+ ManageableObjects objects = ManageableObjectsUtil.getManageableObjects(collectionFieldClass);
Node collectionNode = parentNode.getNode(jcrName);
NodeIterator children = collectionNode.getNodes();
Class elementClass = ReflectionUtils.forName(collectionDescriptor.getElementClassName());
@@ -232,10 +234,24 @@
while (children.hasNext()) {
Node itemNode = children.nextNode();
Object item = objectConverter.getObject(session, elementClass, itemNode.getPath());
- collection.addObject(item);
+ if ( objects instanceof ManageableCollection)
+ ((ManageableCollection)objects).addObject(item);
+ else {
+ ClassDescriptor elementClassDescriptor = mapper.getClassDescriptorByClass(elementClass);
+ if (!elementClassDescriptor.hasIdField())
+ {
+ throw new JcrMappingException("Impossible to use a map for the field : "
+ + collectionDescriptor.getFieldName()
+ + "in the class : " + collectionDescriptor.getCollectionClassName()
+ + ". The element objects have no id field (check their OCM mapping).");
+ }
+ Object elementId = ReflectionUtils.getNestedProperty(item,
+ elementClassDescriptor.getIdFieldDescriptor().getFieldName());
+ ((ManageableMap) objects).addObject(elementId, item);
+ }
}
- return collection;
+ return objects;
}
/**
Copied: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableHashMap.java (from r636881, jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManagedHashMap.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableHashMap.java?p2=jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableHashMap.java&p1=jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManagedHashMap.java&r1=636881&r2=646938&rev=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManagedHashMap.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ManageableHashMap.java Thu Apr 10 12:47:23 2008
@@ -21,32 +21,33 @@
import java.util.Map;
import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableMap;
/**
* The <code>ManagedHashMap</code> class provides Map support to JCR Mapping
*
* @author <a href="mailto:fmeschbe[at]apache[dot]com">Felix Meschberger</a>
*/
-public class ManagedHashMap extends HashMap implements ManageableCollection {
+public class ManageableHashMap extends HashMap implements ManageableMap {
- public ManagedHashMap() {
+ public ManageableHashMap() {
}
- public ManagedHashMap(int initialCapacity) {
+ public ManageableHashMap(int initialCapacity) {
super(initialCapacity);
}
- public ManagedHashMap(Map m) {
+ public ManageableHashMap(Map m) {
super(m);
}
- public ManagedHashMap(int initialCapacity, float loadFactor) {
+ public ManageableHashMap(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor);
}
- public void addObject(Object object) {
- put(object, object);
+ public void addObject(Object key, Object object) {
+ put(key, object);
}
public Iterator getIterator() {
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/MultiValueCollectionConverterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/MultiValueCollectionConverterImpl.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/MultiValueCollectionConverterImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/MultiValueCollectionConverterImpl.java Thu Apr 10 12:47:23 2008
@@ -29,10 +29,12 @@
import javax.jcr.ValueFactory;
import javax.jcr.ValueFormatException;
+import org.apache.jackrabbit.ocm.exception.JcrMappingException;
import org.apache.jackrabbit.ocm.exception.ObjectContentManagerException;
import org.apache.jackrabbit.ocm.manager.atomictypeconverter.AtomicTypeConverter;
import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollectionUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjectsUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjects;
import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
import org.apache.jackrabbit.ocm.mapper.Mapper;
import org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor;
@@ -68,17 +70,17 @@
protected void doInsertCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) throws RepositoryException {
+ ManageableObjects objects) throws RepositoryException {
try {
- if (collection == null) {
+ if (objects == null) {
return;
}
String jcrName = getCollectionJcrName(collectionDescriptor);
- Value[] values = new Value[collection.getSize()];
+ Value[] values = new Value[objects.getSize()];
ValueFactory valueFactory = session.getValueFactory();
- Iterator collectionIterator = collection.getIterator();
- for (int i = 0; i < collection.getSize(); i++) {
+ Iterator collectionIterator = objects.getIterator();
+ for (int i = 0; i < objects.getSize(); i++) {
Object fieldValue = collectionIterator.next();
AtomicTypeConverter atomicTypeConverter = (AtomicTypeConverter) atomicTypeConverters
.get(fieldValue.getClass());
@@ -102,7 +104,7 @@
protected void doUpdateCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) throws RepositoryException {
+ ManageableObjects objects) throws RepositoryException {
String jcrName = getCollectionJcrName(collectionDescriptor);
// Delete existing values
@@ -110,16 +112,16 @@
parentNode.setProperty(jcrName, (Value[]) null);
}
- if (collection == null) {
+ if (objects == null) {
return;
}
// Add all collection element into an Value array
- Value[] values = new Value[collection.getSize()];
+ Value[] values = new Value[objects.getSize()];
ValueFactory valueFactory = session.getValueFactory();
int i = 0;
- for (Iterator collectionIterator = collection.getIterator(); collectionIterator.hasNext(); i++) {
+ for (Iterator collectionIterator = objects.getIterator(); collectionIterator.hasNext(); i++) {
Object fieldValue = collectionIterator.next();
AtomicTypeConverter atomicTypeConverter = (AtomicTypeConverter) atomicTypeConverters
.get(fieldValue.getClass());
@@ -132,7 +134,7 @@
/**
* @see AbstractCollectionConverterImpl#doGetCollection(Session, Node, CollectionDescriptor, Class)
*/
- protected ManageableCollection doGetCollection(Session session,
+ protected ManageableObjects doGetCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
Class collectionFieldClass) throws RepositoryException {
@@ -144,16 +146,27 @@
Property property = parentNode.getProperty(jcrName);
Value[] values = property.getValues();
- ManageableCollection collection = ManageableCollectionUtil.getManageableCollection(collectionFieldClass);
+ ManageableObjects objects = ManageableObjectsUtil.getManageableObjects(collectionFieldClass);
String elementClassName = collectionDescriptor.getElementClassName();
Class elementClass = ReflectionUtils.forName(elementClassName);
+ // For multi value collections, only Collections are supported
+ if (! (objects instanceof ManageableCollection))
+ {
+
+ throw new JcrMappingException("Impossible to retrieve the attribute "
+ + collectionDescriptor.getFieldName() + " in the class "
+ + collectionDescriptor.getClassDescriptor().getClassName()
+ + " because it is not a collection");
+ }
+
for (int i = 0; i < values.length; i++) {
AtomicTypeConverter atomicTypeConverter = (AtomicTypeConverter) atomicTypeConverters
.get(elementClass);
- collection.addObject(atomicTypeConverter.getObject(values[i]));
+
+ ((ManageableCollection) objects).addObject(atomicTypeConverter.getObject(values[i]));
}
- return collection;
+ return objects;
}
catch(ValueFormatException vfe) {
throw new ObjectContentManagerException("Cannot get the collection field : "
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/NTCollectionConverterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/NTCollectionConverterImpl.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/NTCollectionConverterImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/NTCollectionConverterImpl.java Thu Apr 10 12:47:23 2008
@@ -38,8 +38,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.jackrabbit.ocm.exception.JcrMappingException;
import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollectionUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjectsUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableMap;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjects;
import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
import org.apache.jackrabbit.ocm.mapper.Mapper;
import org.apache.jackrabbit.ocm.mapper.model.ClassDescriptor;
@@ -107,14 +110,14 @@
protected void doInsertCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) {
- if (collection == null) {
+ ManageableObjects objects) {
+ if (objects == null) {
return;
}
ClassDescriptor elementClassDescriptor = mapper.getClassDescriptorByClass( ReflectionUtils.forName(collectionDescriptor.getElementClassName()));
- Iterator collectionIterator = collection.getIterator();
+ Iterator collectionIterator = objects.getIterator();
while (collectionIterator.hasNext()) {
Object item = collectionIterator.next();
String elementJcrName = null;
@@ -139,22 +142,22 @@
protected void doUpdateCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) throws RepositoryException {
+ ManageableObjects objects) throws RepositoryException {
ClassDescriptor elementClassDescriptor = mapper.getClassDescriptorByClass(
ReflectionUtils.forName(collectionDescriptor.getElementClassName()));
- if (collection == null || !elementClassDescriptor.hasIdField()) {
+ if (objects == null || !elementClassDescriptor.hasIdField()) {
this.deleteCollectionItems(session,
parentNode,
elementClassDescriptor.getJcrType());
}
- if (collection == null) {
+ if (objects == null) {
return;
}
- Iterator collectionIterator = collection.getIterator();
+ Iterator collectionIterator = objects.getIterator();
Map updatedItems = new HashMap();
while (collectionIterator.hasNext()) {
Object item = collectionIterator.next();
@@ -201,12 +204,12 @@
/**
* @see org.apache.jackrabbit.ocm.manager.collectionconverter.CollectionConverter#getCollection(javax.jcr.Session, javax.jcr.Node, org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor, java.lang.Class)
*/
- protected ManageableCollection doGetCollection(Session session,
+ protected ManageableObjects doGetCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
Class collectionFieldClass) throws RepositoryException {
ClassDescriptor elementClassDescriptor = mapper.getClassDescriptorByClass( ReflectionUtils.forName(collectionDescriptor.getElementClassName()));
- ManageableCollection collection = ManageableCollectionUtil.getManageableCollection(collectionFieldClass);
+ ManageableObjects objects = ManageableObjectsUtil.getManageableObjects(collectionFieldClass);
NodeIterator nodes = this.getCollectionNodes(session, parentNode, elementClassDescriptor.getJcrType());
@@ -219,10 +222,25 @@
Node itemNode = (Node) nodes.next();
log.debug("Collection node found : " + itemNode.getPath());
Object item = objectConverter.getObject(session, itemNode.getPath());
- collection.addObject(item);
+ mapper.getClassDescriptorByClass(item.getClass());
+ if ( objects instanceof ManageableCollection)
+ ((ManageableCollection)objects).addObject(item);
+ else {
+ if (!elementClassDescriptor.hasIdField())
+ {
+ throw new JcrMappingException("Impossible to use a map for the field : "
+ + collectionDescriptor.getFieldName()
+ + "in the class : " + collectionDescriptor.getCollectionClassName()
+ + ". The element objects have no id field (check their OCM mapping)");
+ }
+ Object elementId = ReflectionUtils.getNestedProperty(item,
+ elementClassDescriptor.getIdFieldDescriptor().getFieldName());
+ ((ManageableMap) objects).addObject(elementId, item);
+ }
+
}
- return collection;
+ return objects;
}
/**
@@ -238,7 +256,7 @@
String elementClassName = collectionDescriptor.getElementClassName();
ClassDescriptor elementClassDescriptor = mapper.getClassDescriptorByClass(ReflectionUtils.forName(elementClassName));
- QueryResult queryResult = getQuery(session, parentNode, elementClassDescriptor.getJcrType());
+ QueryResult queryResult = getQuery(session, parentNode, elementClassDescriptor.getJcrType());
return queryResult.getNodes().getSize() == 0;
}
@@ -270,9 +288,9 @@
}
-
+
private QueryResult getQuery(Session session, Node parentNode, String jcrNodeType) throws RepositoryException, InvalidQueryException {
- String jcrExpression= "";
+ String jcrExpression= "";
if (!parentNode.getPath().startsWith("/jcr:system/jcr:versionStorage"))
{
jcrExpression = "SELECT * FROM " + jcrNodeType + " WHERE jcr:path LIKE '" + parentNode.getPath()
@@ -280,12 +298,12 @@
}
else
{
-
+
jcrExpression = "SELECT * FROM nt:frozenNode" + " WHERE jcr:path LIKE '" + parentNode.getPath() + "/%'"
+ " AND NOT jcr:path LIKE '" + parentNode.getPath() + "/%/%'"
+ " AND jcr:frozenPrimaryType = '" + jcrNodeType + "'";
-
+
}
Query jcrQuery = session.getWorkspace().getQueryManager().createQuery(jcrExpression, javax.jcr.query.Query.SQL);
QueryResult queryResult = jcrQuery.execute();
Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ReferenceCollectionConverterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ReferenceCollectionConverterImpl.java?rev=646938&r1=646937&r2=646938&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ReferenceCollectionConverterImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/ReferenceCollectionConverterImpl.java Thu Apr 10 12:47:23 2008
@@ -36,7 +36,8 @@
import org.apache.jackrabbit.ocm.exception.ObjectContentManagerException;
import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollectionUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjectsUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjects;
import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
import org.apache.jackrabbit.ocm.mapper.Mapper;
import org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor;
@@ -69,8 +70,8 @@
protected void doInsertCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) throws RepositoryException {
- addUuidProperties(session, parentNode, collectionDescriptor, collection);
+ ManageableObjects objects) throws RepositoryException {
+ addUuidProperties(session, parentNode, collectionDescriptor, objects);
}
/**
@@ -80,7 +81,7 @@
protected void doUpdateCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) throws RepositoryException {
+ ManageableObjects objects) throws RepositoryException {
String jcrName = getCollectionJcrName(collectionDescriptor);
// Delete existing values
@@ -88,17 +89,18 @@
parentNode.setProperty(jcrName, (Value[]) null);
}
- if (collection == null) {
+ if (objects == null) {
return;
}
- addUuidProperties(session, parentNode, collectionDescriptor, collection); }
+ addUuidProperties(session, parentNode, collectionDescriptor, objects);
+ }
/**
* @see AbstractCollectionConverterImpl#doGetCollection(Session, Node, CollectionDescriptor, Class)
*/
- protected ManageableCollection doGetCollection(Session session,
+ protected ManageableObjects doGetCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
Class collectionFieldClass) throws RepositoryException {
@@ -110,13 +112,17 @@
Property property = parentNode.getProperty(jcrName);
Value[] values = property.getValues();
- ManageableCollection collection = ManageableCollectionUtil.getManageableCollection(collectionFieldClass);
+ ManageableObjects objects = ManageableObjectsUtil.getManageableObjects(collectionFieldClass);
for (int i = 0; i < values.length; i++) {
- collection.addObject(values[i].getString());
+ if (objects instanceof ManageableCollection)
+ ((ManageableCollection)objects).addObject(values[i].getString());
+ else
+ throw new ObjectContentManagerException(
+ "Unsupported data type in ReferenceCollectionConverter : " + objects.getClass().getName());
}
- return collection;
+ return objects;
}
catch(ValueFormatException vfe) {
throw new ObjectContentManagerException("Cannot get the collection field : "
@@ -141,17 +147,19 @@
return false;
}
- private void addUuidProperties(Session session, Node parentNode, CollectionDescriptor collectionDescriptor, ManageableCollection collection) throws UnsupportedRepositoryOperationException, RepositoryException, VersionException, LockException, ConstraintViolationException {
+ private void addUuidProperties(Session session, Node parentNode,
+ CollectionDescriptor collectionDescriptor, ManageableObjects objects)
+ throws UnsupportedRepositoryOperationException, RepositoryException, VersionException, LockException, ConstraintViolationException {
try {
- if (collection == null) {
+ if (objects == null) {
return;
}
String jcrName = getCollectionJcrName(collectionDescriptor);
- Value[] values = new Value[collection.getSize()];
+ Value[] values = new Value[objects.getSize()];
ValueFactory valueFactory = session.getValueFactory();
- Iterator collectionIterator = collection.getIterator();
- for (int i = 0; i < collection.getSize(); i++) {
+ Iterator collectionIterator = objects.getIterator();
+ for (int i = 0; i < objects.getSize(); i++) {
String uuid = (String) collectionIterator.next();
values[i] = valueFactory.createValue(uuid, PropertyType.REFERENCE);
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=646938&r1=646937&r2=646938&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 Thu Apr 10 12:47:23 2008
@@ -31,7 +31,9 @@
import org.apache.jackrabbit.ocm.exception.ObjectContentManagerException;
import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollectionUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjectsUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableMap;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjects;
import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
import org.apache.jackrabbit.ocm.mapper.Mapper;
import org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor;
@@ -65,13 +67,13 @@
*/
protected void doInsertCollection(Session session, Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) {
+ ManageableObjects objects) {
- if (!(collection instanceof Map)) {
+ if (!(objects instanceof Map)) {
return;
}
- Map map = (Map) collection;
+ Map map = (Map) objects;
for (Iterator ei=map.entrySet().iterator(); ei.hasNext(); ) {
Map.Entry entry = (Map.Entry) ei.next();
String name = String.valueOf(entry.getKey());
@@ -85,17 +87,17 @@
*/
protected void doUpdateCollection(Session session, Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) throws RepositoryException {
+ ManageableObjects objects) throws RepositoryException {
String jcrName = getCollectionJcrName(collectionDescriptor);
- if (!(collection instanceof Map)) {
+ if (!(objects instanceof Map)) {
for (NodeIterator ni=parentNode.getNodes(jcrName); ni.hasNext(); ) {
ni.nextNode().remove();
}
return;
}
- Map map = (Map) collection;
+ Map map = (Map) objects;
Set updatedItems = new HashSet();
for (Iterator ei=map.entrySet().iterator(); ei.hasNext(); ) {
Map.Entry entry = (Map.Entry) ei.next();
@@ -131,7 +133,7 @@
/**
* @see AbstractCollectionConverterImpl#doGetCollection(Session, Node, CollectionDescriptor, Class)
*/
- protected ManageableCollection doGetCollection(Session session,
+ protected ManageableObjects doGetCollection(Session session,
Node parentNode, CollectionDescriptor collectionDescriptor,
Class collectionFieldClass) throws RepositoryException {
@@ -142,7 +144,7 @@
return null;
}
- ManageableCollection collection = ManageableCollectionUtil.getManageableCollection(collectionFieldClass);
+ ManageableObjects objects = ManageableObjectsUtil.getManageableObjects(collectionFieldClass);
while (ni.hasNext()) {
Node node = ni.nextNode();
@@ -152,15 +154,22 @@
}
Object item = objectConverter.getObject(session, node.getPath());
- if (collection instanceof Map) {
+ if (objects instanceof Map) {
String name = node.getName();
- ((Map) collection).put(name, item);
- } else {
- collection.addObject(item);
+ ((Map) objects).put(name, item);
+ }
+ else {
+ if (objects instanceof ManageableCollection)
+ ((ManageableCollection)objects).addObject(item);
+ else
+ {
+ String name = node.getName();
+ ((ManageableMap)objects).addObject(name, item);
+ }
}
}
+ return objects;
- return collection;
} catch (ValueFormatException vfe) {
throw new ObjectContentManagerException("Cannot get the collection field : "
+ collectionDescriptor.getFieldName() + "for class "
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=646938&r1=646937&r2=646938&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 Thu Apr 10 12:47:23 2008
@@ -33,7 +33,9 @@
import org.apache.jackrabbit.ocm.exception.ObjectContentManagerException;
import org.apache.jackrabbit.ocm.manager.atomictypeconverter.AtomicTypeConverter;
import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollectionUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjectsUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableMap;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjects;
import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
import org.apache.jackrabbit.ocm.mapper.Mapper;
import org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor;
@@ -67,9 +69,9 @@
*/
protected void doInsertCollection(Session session, Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) throws RepositoryException {
+ ManageableObjects objects) throws RepositoryException {
internalSetProperties(session, parentNode, collectionDescriptor,
- collection, false);
+ objects, false);
}
/**
@@ -78,15 +80,15 @@
*/
protected void doUpdateCollection(Session session, Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection) throws RepositoryException {
+ ManageableObjects objects) throws RepositoryException {
internalSetProperties(session, parentNode, collectionDescriptor,
- collection, true);
+ objects, true);
}
/**
* @see AbstractCollectionConverterImpl#doGetCollection(Session, Node, CollectionDescriptor, Class)
*/
- protected ManageableCollection doGetCollection(Session session,
+ protected ManageableObjects doGetCollection(Session session,
Node parentNode, CollectionDescriptor collectionDescriptor,
Class collectionFieldClass) throws RepositoryException {
try {
@@ -96,7 +98,7 @@
return null;
}
- ManageableCollection collection = ManageableCollectionUtil.getManageableCollection(collectionFieldClass);
+ ManageableObjects objects = ManageableObjectsUtil.getManageableObjects(collectionFieldClass);
AtomicTypeConverter atomicTypeConverter = getAtomicTypeConverter(collectionDescriptor);
while (pi.hasNext()) {
@@ -120,15 +122,21 @@
value = atomicTypeConverter.getObject(prop.getValue());
}
- if (collection instanceof Map) {
+ if (objects instanceof Map) {
String name = prop.getName();
- ((Map) collection).put(name, value);
+ ((Map) objects).put(name, value);
} else {
- collection.addObject(value);
+ if (objects instanceof ManageableCollection)
+ ((ManageableCollection)objects).addObject(value);
+ else
+ {
+ String name = prop.getName();
+ ((ManageableMap)objects).addObject(name, value);
+ }
}
}
- return collection;
+ return objects;
} catch (ValueFormatException vfe) {
throw new ObjectContentManagerException("Cannot get the collection field : "
+ collectionDescriptor.getFieldName() + "for class "
@@ -148,13 +156,13 @@
private void internalSetProperties(Session session, Node parentNode,
CollectionDescriptor collectionDescriptor,
- ManageableCollection collection, boolean removeExisting)
+ ManageableObjects objects, boolean removeExisting)
throws RepositoryException {
String jcrName = getCollectionJcrName(collectionDescriptor);
// can only persist maps, not general collections
- if (!(collection instanceof Map)) {
+ if (!(objects instanceof Map)) {
return;
}
@@ -171,7 +179,7 @@
AtomicTypeConverter atomicTypeConverter = getAtomicTypeConverter(collectionDescriptor);
try {
- Map map = (Map) collection;
+ Map map = (Map) objects;
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=646938&r1=646937&r2=646938&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 Thu Apr 10 12:47:23 2008
@@ -25,7 +25,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jackrabbit.ocm.manager.collectionconverter.CollectionConverter;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjects;
import org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor;
public class CollectionLazyLoader implements LazyLoader {
@@ -37,7 +37,7 @@
private Node collectionParentNode;
private CollectionDescriptor collectionDescriptor;
private Class collectionFieldClass;
-
+
public CollectionLazyLoader(CollectionConverter collectionConverter, Session session, Node parentNode,
CollectionDescriptor collectionDescriptor, Class collectionFieldClass ) {
this.collectionConverter = collectionConverter;
@@ -48,9 +48,9 @@
}
public Object loadObject() {
-
-
- ManageableCollection collection = collectionConverter.getCollection(session, collectionParentNode, collectionDescriptor, collectionFieldClass);
- return collection;
+
+
+ ManageableObjects objects = collectionConverter.getCollection(session, collectionParentNode, collectionDescriptor, collectionFieldClass);
+ return objects;
}
}
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=646938&r1=646937&r2=646938&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 Thu Apr 10 12:47:23 2008
@@ -43,7 +43,8 @@
import org.apache.jackrabbit.ocm.manager.cache.impl.RequestObjectCacheImpl;
import org.apache.jackrabbit.ocm.manager.collectionconverter.CollectionConverter;
import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollectionUtil;
+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.impl.ObjectContentManagerUtil;
import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
@@ -227,13 +228,13 @@
throws NoSuchNodeTypeException, VersionException,
ConstraintViolationException, LockException, RepositoryException,
ValueFormatException {
-
+
try {
objectNode.setProperty(ManagerConstant.DISCRIMINATOR_CLASS_NAME_PROPERTY,
ReflectionUtils.getBeanClass(object).getName());
-
+
} catch (Exception e) {
- // if it is not possible to add the CLASS_NAME_PROPERTY due to strong constraints in the
+ // if it is not possible to add the CLASS_NAME_PROPERTY due to strong constraints in the
// node type definition, try to add the Discriminator node type.
String mixinTypeName;
mixinTypeName = ManagerConstant.DISCRIMINATOR_NODE_TYPE;
@@ -241,7 +242,7 @@
objectNode.setProperty(ManagerConstant.DISCRIMINATOR_CLASS_NAME_PROPERTY,
ReflectionUtils.getBeanClass(object).getName());
}
-
+
}
/**
@@ -420,8 +421,8 @@
simpleFieldsHelp.retrieveSimpleFields(session, classDescriptor, node, object);
retrieveBeanFields(session, classDescriptor, node, path, object, false);
- retrieveCollectionFields(session, classDescriptor, node, object, false);
-
+ retrieveCollectionFields(session, classDescriptor, node, object, false);
+
return object;
} catch (PathNotFoundException pnfe) {
// HINT should never get here
@@ -700,16 +701,16 @@
CollectionConverter collectionConverter = this.getCollectionConverter(session, collectionDescriptor);
Class collectionFieldClass = ReflectionUtils.getPropertyType(object, collectionDescriptor.getFieldName());
- ManageableCollection collection = null;
+ ManageableObjects objects = null;
if (collectionDescriptor.isProxy()) {
- collection = (ManageableCollection) proxyManager.createCollectionProxy(session, collectionConverter, parentNode,
+ objects = (ManageableCollection) proxyManager.createCollectionProxy(session, collectionConverter, parentNode,
collectionDescriptor, collectionFieldClass);
} else {
- collection = collectionConverter.getCollection(session, parentNode, collectionDescriptor, collectionFieldClass);
+ objects = collectionConverter.getCollection(session, parentNode, collectionDescriptor, collectionFieldClass);
}
- ReflectionUtils.setNestedProperty(object, collectionDescriptor.getFieldName(), collection);
+ ReflectionUtils.setNestedProperty(object, collectionDescriptor.getFieldName(), objects);
}
/**
@@ -801,7 +802,7 @@
CollectionConverter collectionConverter = this.getCollectionConverter(session, collectionDescriptor);
Object collection = ReflectionUtils.getNestedProperty(object, collectionDescriptor.getFieldName());
- ManageableCollection manageableCollection = ManageableCollectionUtil.getManageableCollection(collection);
+ ManageableObjects manageableCollection = ManageableObjectsUtil.getManageableObjects(collection);
collectionConverter.insertCollection(session, objectNode, collectionDescriptor, manageableCollection);
}
@@ -818,7 +819,7 @@
CollectionConverter collectionConverter = this.getCollectionConverter(session, collectionDescriptor);
Object collection = ReflectionUtils.getNestedProperty(object, collectionDescriptor.getFieldName());
- ManageableCollection manageableCollection = ManageableCollectionUtil.getManageableCollection(collection);
+ ManageableObjects manageableCollection = ManageableObjectsUtil.getManageableObjects(collection);
collectionConverter.updateCollection(session, objectNode, collectionDescriptor, manageableCollection);
}
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=646938&r1=646937&r2=646938&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 Thu Apr 10 12:47:23 2008
@@ -27,8 +27,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jackrabbit.ocm.manager.collectionconverter.CollectionConverter;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollection;
-import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableCollectionUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjectsUtil;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.ManageableObjects;
import org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
import org.apache.jackrabbit.ocm.manager.objectconverter.ProxyManager;
import org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor;
@@ -37,8 +37,8 @@
{
private final static Log log = LogFactory.getLog(ProxyManagerImpl.class);
-
-
+
+
/**
*
@@ -46,7 +46,7 @@
*/
public Object createBeanProxy(Session session, ObjectConverter objectConverter, Class beanClass, String path)
{
-
+
try {
if (!session.itemExists(path)) {
return null;
@@ -54,8 +54,8 @@
} catch (RepositoryException e) {
throw new org.apache.jackrabbit.ocm.exception.RepositoryException("Impossible to check,if the object exits on " + path, e);
}
-
- LazyLoader loader = new BeanLazyLoader(objectConverter, session, beanClass, path) ;
+
+ LazyLoader loader = new BeanLazyLoader(objectConverter, session, beanClass, path) ;
return Enhancer.create(beanClass, loader);
}
@@ -64,15 +64,15 @@
* @see org.apache.jackrabbit.ocm.manager.objectconverter.ProxyManager#createCollectionProxy(javax.jcr.Session, org.apache.jackrabbit.ocm.manager.collectionconverter.CollectionConverter, javax.jcr.Node, org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor, java.lang.Class)
*/
public Object createCollectionProxy(Session session, CollectionConverter collectionConverter, Node parentNode, CollectionDescriptor collectionDescriptor, Class collectionFieldClass)
- {
-
+ {
+
if (collectionConverter.isNull(session, parentNode, collectionDescriptor, collectionFieldClass)) {
return null;
}
-
- ManageableCollection manageableCollection = ManageableCollectionUtil.getManageableCollection(collectionFieldClass);
-
+
+ ManageableObjects manageableCollection = ManageableObjectsUtil.getManageableObjects(collectionFieldClass);
+
LazyLoader loader = new CollectionLazyLoader(collectionConverter, session, parentNode, collectionDescriptor, collectionFieldClass);
return Enhancer.create(manageableCollection.getClass(), loader);
- }
+ }
}