final JcrPropertyDefinition propertyDefinitionFor ( org . modeshape . jcr . value . Property property , Name primaryType , Set < Name > mixinTypes , NodeTypes nodeTypes ) throws ConstraintViolationException { // Figure out the JCR property type ... boolean single = property . isSingle ( ) ; boolean skipProtected = false ; JcrPropertyDefinition defn = findBestPropertyDefinition ( primaryType , mixinTypes , property , single , skipProtected , false , nodeTypes ) ; if ( defn != null ) return defn ; // See if there is a definition that has constraints that were violated ... defn = findBestPropertyDefinition ( primaryType , mixinTypes , property , single , skipProtected , true , nodeTypes ) ; String pName = readable ( property . getName ( ) ) ; String loc = location ( ) ; if ( defn != null ) { I18n msg = JcrI18n . propertyNoLongerSatisfiesConstraints ; throw new ConstraintViolationException ( msg . text ( pName , loc , defn . getName ( ) , defn . getDeclaringNodeType ( ) . getName ( ) ) ) ; } CachedNode node = sessionCache ( ) . getNode ( key ) ; String ptype = readable ( node . getPrimaryType ( sessionCache ( ) ) ) ; String mixins = readable ( node . getMixinTypes ( sessionCache ( ) ) ) ; String pstr = property . getString ( session . namespaces ( ) ) ; throw new ConstraintViolationException ( JcrI18n . propertyNoLongerHasValidDefinition . text ( pstr , loc , ptype , mixins ) ) ; }
Find the property definition for the property given this node s primary type and mixin types .