You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2007/08/08 17:31:25 UTC

svn commit: r563916 - /jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/ItemDefinitionProviderImpl.java

Author: reschke
Date: Wed Aug  8 08:31:24 2007
New Revision: 563916

URL: http://svn.apache.org/viewvc?view=rev&rev=563916
Log:
JCR-1056: improve ItemDefinitionProviderImpl.getMatchingPropdef to better handle multiple residuals of different types.

Modified:
    jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/ItemDefinitionProviderImpl.java

Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/ItemDefinitionProviderImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/ItemDefinitionProviderImpl.java?view=diff&rev=563916&r1=563915&r2=563916
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/ItemDefinitionProviderImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/ItemDefinitionProviderImpl.java Wed Aug  8 08:31:24 2007
@@ -358,9 +358,17 @@
                             if (match != null && throwWhenAmbiguous) {
                                 throw new ConstraintViolationException("ambiguous property definitions found: " + match + " vs " + pd);
                             }
-                          
-                            // found best possible match
-                            match = pd;
+
+                            if (match != null && match.getRequiredType() == PropertyType.STRING) {
+                                // If we already found a match, and that was of PropertyType.STRING,
+                                // then do not overwrite it. The whole reason there are multiple
+                                // potential matches is that the client did not specify the type,
+                                // thus obviously specified a String.
+                            }
+                            else {
+                                // found best possible match
+                                match = pd;
+                            }
                         } else {
                             if (match == null) {
                                 match = pd;