Return-Path: Delivered-To: apmail-incubator-bval-commits-archive@minotaur.apache.org Received: (qmail 58534 invoked from network); 23 Feb 2011 21:45:22 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 23 Feb 2011 21:45:22 -0000 Received: (qmail 15128 invoked by uid 500); 23 Feb 2011 21:45:22 -0000 Delivered-To: apmail-incubator-bval-commits-archive@incubator.apache.org Received: (qmail 15097 invoked by uid 500); 23 Feb 2011 21:45:22 -0000 Mailing-List: contact bval-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: bval-dev@incubator.apache.org Delivered-To: mailing list bval-commits@incubator.apache.org Received: (qmail 15090 invoked by uid 99); 23 Feb 2011 21:45:22 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 Feb 2011 21:45:22 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 Feb 2011 21:45:21 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 6BD7D23889E9; Wed, 23 Feb 2011 21:45:01 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1073958 - in /incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic: DynamicMetaGraphManagerImpl.java DynamicModelManager.java DynamicValidatorContext.java Date: Wed, 23 Feb 2011 21:45:01 -0000 To: bval-commits@incubator.apache.org From: mbenson@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110223214501.6BD7D23889E9@eris.apache.org> Author: mbenson Date: Wed Feb 23 21:45:01 2011 New Revision: 1073958 URL: http://svn.apache.org/viewvc?rev=1073958&view=rev Log: compute relationships only once for cached dynamic MetaBean results Modified: incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicModelManager.java incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorContext.java Modified: incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java URL: http://svn.apache.org/viewvc/incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java?rev=1073958&r1=1073957&r2=1073958&view=diff ============================================================================== --- incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java (original) +++ incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java Wed Feb 23 21:45:01 2011 @@ -16,6 +16,7 @@ */ package org.apache.bval.jsr303.dynamic; +import static org.apache.bval.jsr303.dynamic.DynamicModelManager.Features.COMPUTE_RELATIONSHIPS; import static org.apache.bval.jsr303.dynamic.DynamicModelManager.Features.DYNAMIC_CONSTRAINT_COLLECTION; import static org.apache.bval.jsr303.dynamic.DynamicModelManager.Features.META_CONTAINER; @@ -610,6 +611,10 @@ final class DynamicMetaGraphManagerImpl } } } + // mark as fresh result: + result.putFeature(COMPUTE_RELATIONSHIPS, true); + + // cache result MetaBean mostSpecific = toMerge.getLast(); if (mostSpecific instanceof CacheMeta) { @SuppressWarnings("unchecked") Modified: incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicModelManager.java URL: http://svn.apache.org/viewvc/incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicModelManager.java?rev=1073958&r1=1073957&r2=1073958&view=diff ============================================================================== --- incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicModelManager.java (original) +++ incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicModelManager.java Wed Feb 23 21:45:01 2011 @@ -65,6 +65,10 @@ public class DynamicModelManager { /** meta-container key */ public static final String META_CONTAINER = "metaContainer"; + /** + * Dynamic result MetaBean feature indicating whether relationships have yet to be computed. + */ + public static final String COMPUTE_RELATIONSHIPS = "computeRelationships"; } /** static instance */ Modified: incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorContext.java URL: http://svn.apache.org/viewvc/incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorContext.java?rev=1073958&r1=1073957&r2=1073958&view=diff ============================================================================== --- incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorContext.java (original) +++ incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicValidatorContext.java Wed Feb 23 21:45:01 2011 @@ -16,6 +16,8 @@ */ package org.apache.bval.jsr303.dynamic; +import static org.apache.bval.jsr303.dynamic.DynamicModelManager.Features.COMPUTE_RELATIONSHIPS; + import java.lang.annotation.Annotation; import javax.validation.Validator; @@ -59,7 +61,13 @@ public class DynamicValidatorContext ext */ public MetaBean findForClass(final Class clazz) { MetaBean result = metaGraphManager.readOnly().getMetaBean(clazz); - computeRelationships(result); + boolean isDynamic = result.getFeatures().containsKey(COMPUTE_RELATIONSHIPS); + if (!isDynamic || result. getFeature(COMPUTE_RELATIONSHIPS)) { + computeRelationships(result); + if (isDynamic) { + result.putFeature(COMPUTE_RELATIONSHIPS, false); + } + } return result; }