Return-Path: Delivered-To: apmail-incubator-cayenne-commits-archive@locus.apache.org Received: (qmail 78421 invoked from network); 7 Nov 2006 02:58:21 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 7 Nov 2006 02:58:21 -0000 Received: (qmail 49557 invoked by uid 500); 7 Nov 2006 02:58:32 -0000 Delivered-To: apmail-incubator-cayenne-commits-archive@incubator.apache.org Received: (qmail 49535 invoked by uid 500); 7 Nov 2006 02:58:32 -0000 Mailing-List: contact cayenne-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cayenne-dev@incubator.apache.org Delivered-To: mailing list cayenne-commits@incubator.apache.org Received: (qmail 49526 invoked by uid 99); 7 Nov 2006 02:58:32 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 06 Nov 2006 18:58:32 -0800 X-ASF-Spam-Status: No, hits=-9.4 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; Mon, 06 Nov 2006 18:58:20 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id D7C9E1A9846; Mon, 6 Nov 2006 18:57:53 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r471974 - /incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/remote/ClientChannel.java Date: Tue, 07 Nov 2006 02:57:53 -0000 To: cayenne-commits@incubator.apache.org From: aadamchik@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20061107025753.D7C9E1A9846@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: aadamchik Date: Mon Nov 6 18:57:53 2006 New Revision: 471974 URL: http://svn.apache.org/viewvc?view=rev&rev=471974 Log: CAY-703 Cache EntityResolver in the ClientChannel Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/remote/ClientChannel.java Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/remote/ClientChannel.java URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/remote/ClientChannel.java?view=diff&rev=471974&r1=471973&r2=471974 ============================================================================== --- incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/remote/ClientChannel.java (original) +++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/remote/ClientChannel.java Mon Nov 6 18:57:53 2006 @@ -52,6 +52,7 @@ protected ClientConnection connection; protected EventManager eventManager; + protected EntityResolver entityResolver; protected boolean channelEventsEnabled; EventBridge remoteChannelListener; @@ -95,7 +96,7 @@ setupRemoteChannelListener(); } catch (CayenneRuntimeException e) { - + } } } @@ -115,8 +116,6 @@ if (context != null) { - // **** notice using EntityResolver from the context, as this channel does not - // cache it... EntityResolver resolver = context.getEntityResolver(); QueryMetadata info = query.getMetaData(resolver); @@ -221,8 +220,23 @@ return replyDiff; } + /** + * Returns EntityResolver obtained from the server. On first access, this method sends + * a message to the server to retrieve the EntityResolver. On subsequent calls locally + * cached resolver is used. + */ public EntityResolver getEntityResolver() { - return (EntityResolver) send(new BootstrapMessage(), EntityResolver.class); + if (entityResolver == null) { + synchronized (this) { + if (entityResolver == null) { + entityResolver = (EntityResolver) send( + new BootstrapMessage(), + EntityResolver.class); + } + } + } + + return entityResolver; } /**