Return-Path: X-Original-To: apmail-directory-commits-archive@www.apache.org Delivered-To: apmail-directory-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 72A5D91E0 for ; Mon, 7 May 2012 07:53:53 +0000 (UTC) Received: (qmail 77648 invoked by uid 500); 7 May 2012 07:53:53 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 77525 invoked by uid 500); 7 May 2012 07:53:52 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 77130 invoked by uid 99); 7 May 2012 07:53:49 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 May 2012 07:53:49 +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; Mon, 07 May 2012 07:53:45 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 704AB2388B3A for ; Mon, 7 May 2012 07:53:24 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1334904 [3/3] - in /directory/apacheds/branches/apacheds-txns: core-api/src/main/java/org/apache/directory/server/core/api/ core-api/src/main/java/org/apache/directory/server/core/api/interceptor/ core-api/src/main/java/org/apache/director... Date: Mon, 07 May 2012 07:53:22 -0000 To: commits@directory.apache.org From: saya@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120507075324.704AB2388B3A@eris.apache.org> Modified: directory/apacheds/branches/apacheds-txns/interceptors/referral/src/main/java/org/apache/directory/server/core/referral/ReferralInterceptor.java URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-txns/interceptors/referral/src/main/java/org/apache/directory/server/core/referral/ReferralInterceptor.java?rev=1334904&r1=1334903&r2=1334904&view=diff ============================================================================== --- directory/apacheds/branches/apacheds-txns/interceptors/referral/src/main/java/org/apache/directory/server/core/referral/ReferralInterceptor.java (original) +++ directory/apacheds/branches/apacheds-txns/interceptors/referral/src/main/java/org/apache/directory/server/core/referral/ReferralInterceptor.java Mon May 7 07:53:21 2012 @@ -214,6 +214,15 @@ public class ReferralInterceptor extends Value subschemaSubentry = nexus.getRootDse( null ).get( SchemaConstants.SUBSCHEMA_SUBENTRY_AT ).get(); subschemaSubentryDn = directoryService.getDnFactory().create( subschemaSubentry.getString() ); } + + + /** + * {@inheritDoc} + */ + public void reinitLogicalData( DirectoryService directoryService ) throws LdapException + { + referralManager.reinitialize( directoryService ); + } /** @@ -250,11 +259,11 @@ public class ReferralInterceptor extends if ( isReferral ) { // We have to add it to the referralManager - referralManager.lockWrite(); - + + // Ensure logical data consistency + directoryService.getTxnManager().startLogicalDataChange(); + referralManager.addReferral( entry ); - - referralManager.unlock(); } } @@ -287,11 +296,11 @@ public class ReferralInterceptor extends if ( ( entry != null ) && isReferral( entry ) ) { // We have to remove it from the referralManager - referralManager.lockWrite(); + // Ensure logical data consistency + directoryService.getTxnManager().startLogicalDataChange(); + referralManager.removeReferral( entry ); - - referralManager.unlock(); } } @@ -329,15 +338,14 @@ public class ReferralInterceptor extends // TODO : entries should be locked until the operation is done on it. if ( newEntry != null ) { - referralManager.lockWrite(); - if ( referralManager.isReferral( newEntry.getDn() ) ) { + // Ensure logical data consistency + directoryService.getTxnManager().startLogicalDataChange(); + referralManager.removeReferral( modifyContext.getEntry() ); referralManager.addReferral( newEntry ); } - - referralManager.unlock(); } } @@ -357,12 +365,12 @@ public class ReferralInterceptor extends if ( isReferral ) { // Update the referralManager - referralManager.lockWrite(); + + // Ensure logical data consistency + directoryService.getTxnManager().startLogicalDataChange(); referralManager.addReferral( moveContext.getModifiedEntry() ); referralManager.removeReferral( moveContext.getOriginalEntry() ); - - referralManager.unlock(); } } @@ -382,12 +390,11 @@ public class ReferralInterceptor extends // Update the referralManager Entry newEntry = moveAndRenameContext.getModifiedEntry(); - referralManager.lockWrite(); - + // Ensure logical data consistency + directoryService.getTxnManager().startLogicalDataChange(); + referralManager.addReferral( newEntry ); referralManager.removeReferral( moveAndRenameContext.getOriginalEntry() ); - - referralManager.unlock(); } } @@ -411,12 +418,11 @@ public class ReferralInterceptor extends Entry newEntry = nexus.lookup( lookupContext ); - referralManager.lockWrite(); - + // Ensure logical data consistency + directoryService.getTxnManager().startLogicalDataChange(); + referralManager.addReferral( newEntry ); referralManager.removeReferral( ((ClonedServerEntry)renameContext.getEntry()).getOriginalEntry() ); - - referralManager.unlock(); } } } Modified: directory/apacheds/branches/apacheds-txns/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-txns/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java?rev=1334904&r1=1334903&r2=1334904&view=diff ============================================================================== --- directory/apacheds/branches/apacheds-txns/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java (original) +++ directory/apacheds/branches/apacheds-txns/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java Mon May 7 07:53:21 2012 @@ -193,8 +193,31 @@ public class SubentryInterceptor extends TRIGGER_EXECUTION_SUBENTRIES_AT }; - ssParser = new SubtreeSpecificationParser( schemaManager ); + ssParser = new SubtreeSpecificationParser( schemaManager ); + + // Init the sub entry cache + initializeSubEntryCache(); + } + + + /** + * {@inheritDoc} + */ + public void reinitLogicalData( DirectoryService directoryService ) throws LdapException + { + initializeSubEntryCache(); + } + + //------------------------------------------------------------------------------------------- + // Helper methods + //------------------------------------------------------------------------------------------- + + /** + * Initializes the subentry cache + */ + private void initializeSubEntryCache() throws LdapException + { // prepare to find all subentries in all namingContexts Set suffixes = nexus.listSuffixes(); ExprNode filter = new EqualityNode( OBJECT_CLASS_AT, new StringValue( @@ -265,13 +288,10 @@ public class SubentryInterceptor extends LOG.error( I18n.err( I18n.ERR_168 ), e ); } } - } + } } - - - //------------------------------------------------------------------------------------------- - // Helper methods - //------------------------------------------------------------------------------------------- + + /** * Return the list of AdministrativeRole for a subentry */ @@ -899,6 +919,7 @@ public class SubentryInterceptor extends * ---------------------------------------------------------------- */ setSubtreeSpecification( subentry, entry ); + directoryService.getTxnManager().startLogicalDataChange(); directoryService.getSubentryCache().addSubentry( dn, subentry ); // Now inject the subentry into the backend @@ -989,6 +1010,7 @@ public class SubentryInterceptor extends // We first remove the re if ( entry.contains( OBJECT_CLASS_AT, SchemaConstants.SUBENTRY_OC ) ) { + directoryService.getTxnManager().startLogicalDataChange(); Subentry removedSubentry = directoryService.getSubentryCache().getSubentry( dn ); /* ---------------------------------------------------------------- @@ -1072,6 +1094,7 @@ public class SubentryInterceptor extends // Check if we have a modified subentry attribute in a Subentry entry if ( containsSubentryOC && isSubtreeSpecificationModification ) { + directoryService.getTxnManager().startLogicalDataChange(); Subentry subentry = directoryService.getSubentryCache().removeSubentry( dn ); SubtreeSpecification ssOld = subentry.getSubtreeSpecification(); SubtreeSpecification ssNew; @@ -1249,6 +1272,7 @@ public class SubentryInterceptor extends // the new parent is an AP checkAdministrativeRole( moveContext, newSuperiorDn ); + directoryService.getTxnManager().startLogicalDataChange(); Subentry subentry = directoryService.getSubentryCache().removeSubentry( oldDn ); SubtreeSpecification ss = subentry.getSubtreeSpecification(); Dn apName = oldDn.getParent(); @@ -1352,6 +1376,7 @@ public class SubentryInterceptor extends if ( entry.contains( OBJECT_CLASS_AT, SchemaConstants.SUBENTRY_OC ) ) { + directoryService.getTxnManager().startLogicalDataChange(); Subentry subentry = directoryService.getSubentryCache().removeSubentry( oldDn ); SubtreeSpecification ss = subentry.getSubtreeSpecification(); Dn apName = oldDn.getParent(); @@ -1447,6 +1472,7 @@ public class SubentryInterceptor extends if ( entry.contains( OBJECT_CLASS_AT, SchemaConstants.SUBENTRY_OC ) ) { // @Todo To be reviewed !!! + directoryService.getTxnManager().startLogicalDataChange(); Subentry subentry = directoryService.getSubentryCache().removeSubentry( oldDn ); SubtreeSpecification ss = subentry.getSubtreeSpecification(); Dn apName = oldDn.getParent();