Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 42356 invoked from network); 13 May 2007 21:08:45 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 13 May 2007 21:08:45 -0000 Received: (qmail 95800 invoked by uid 500); 13 May 2007 21:08:51 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 95714 invoked by uid 500); 13 May 2007 21:08:51 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 95702 invoked by uid 99); 13 May 2007 21:08:51 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 13 May 2007 14:08:51 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 13 May 2007 14:08:44 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 34C041A9838; Sun, 13 May 2007 14:08:24 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r537659 - /jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/persistence/collectionconverter/impl/ResidualPropertiesCollectionConverterImpl.java Date: Sun, 13 May 2007 21:08:24 -0000 To: commits@jackrabbit.apache.org From: clombart@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070513210824.34C041A9838@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: clombart Date: Sun May 13 14:08:23 2007 New Revision: 537659 URL: http://svn.apache.org/viewvc?view=rev&rev=537659 Log: Patch apply for JCR-866 Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/persistence/collectionconverter/impl/ResidualPropertiesCollectionConverterImpl.java Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/persistence/collectionconverter/impl/ResidualPropertiesCollectionConverterImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/persistence/collectionconverter/impl/ResidualPropertiesCollectionConverterImpl.java?view=diff&rev=537659&r1=537658&r2=537659 ============================================================================== --- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/persistence/collectionconverter/impl/ResidualPropertiesCollectionConverterImpl.java (original) +++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/persistence/collectionconverter/impl/ResidualPropertiesCollectionConverterImpl.java Sun May 13 14:08:23 2007 @@ -99,9 +99,7 @@ } ManageableCollection collection = ManageableCollectionUtil.getManageableCollection(collectionFieldClass); - String elementClassName = collectionDescriptor.getElementClassName(); - Class elementClass = ReflectionUtils.forName(elementClassName); - AtomicTypeConverter atomicTypeConverter = (AtomicTypeConverter) atomicTypeConverters.get(elementClass); + AtomicTypeConverter atomicTypeConverter = getAtomicTypeConverter(collectionDescriptor); while (pi.hasNext()) { Property prop = pi.nextProperty(); @@ -172,6 +170,8 @@ } } + AtomicTypeConverter atomicTypeConverter = getAtomicTypeConverter(collectionDescriptor); + try { Map map = (Map) collection; ValueFactory valueFactory = session.getValueFactory(); @@ -193,14 +193,12 @@ int i = 0; for (Iterator vi = valueList.iterator(); vi.hasNext();) { value = vi.next(); - AtomicTypeConverter atomicTypeConverter = (AtomicTypeConverter) atomicTypeConverters.get(value.getClass()); jcrValues[i++] = atomicTypeConverter.getValue( valueFactory, value); } parentNode.setProperty(name, jcrValues); } else { // single value - AtomicTypeConverter atomicTypeConverter = (AtomicTypeConverter) atomicTypeConverters.get(value.getClass()); Value jcrValue = atomicTypeConverter.getValue(valueFactory, value); parentNode.setProperty(name, jcrValue); @@ -211,5 +209,31 @@ + collectionDescriptor.getFieldName() + " of class " + collectionDescriptor.getClassDescriptor().getClassName(), vfe); } + } + + /** + * Returns the AtomicTypeConverter for the element class of the described + * collection. If no such converter can be found a PersistenceException + * is thrown. + * + * @param collectionDescriptor The descriptor of the collection for whose + * elements an AtomicTypeConverter is requested. + * + * @return The AtomicTypeConverter for the elements of the collection + * + * @throws PersistenceException if no such type converter is registered + */ + private AtomicTypeConverter getAtomicTypeConverter(CollectionDescriptor collectionDescriptor) { + String elementClassName = collectionDescriptor.getElementClassName(); + Class elementClass = ReflectionUtils.forName(elementClassName); + AtomicTypeConverter atc = (AtomicTypeConverter) atomicTypeConverters.get(elementClass); + if (atc != null) { + return atc; + } + + throw new PersistenceException( + "Cannot get AtomicTypeConverter for element class " + + elementClassName + " of class " + + collectionDescriptor.getClassDescriptor().getClassName()); } }