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 917DFF67D for ; Wed, 20 Mar 2013 14:27:22 +0000 (UTC) Received: (qmail 90172 invoked by uid 500); 20 Mar 2013 14:23:32 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 86656 invoked by uid 500); 20 Mar 2013 14:23:19 -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 78790 invoked by uid 99); 20 Mar 2013 14:18:03 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 20 Mar 2013 14:18:03 +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, 20 Mar 2013 14:18:00 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id C9BE82388962; Wed, 20 Mar 2013 14:17:38 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1458846 - in /directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model: schemachecker/SchemaChecker.java schemamanager/SchemaEditorSchemaLoader.java Date: Wed, 20 Mar 2013 14:17:38 -0000 To: commits@directory.apache.org From: pamarcelot@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130320141738.C9BE82388962@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: pamarcelot Date: Wed Mar 20 14:17:38 2013 New Revision: 1458846 URL: http://svn.apache.org/r1458846 Log: Fix for DIRSTUDIO-893 (ConcurrentModificationException thrown while deleting multiple schema elements). Modified: directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/schemachecker/SchemaChecker.java directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/schemamanager/SchemaEditorSchemaLoader.java Modified: directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/schemachecker/SchemaChecker.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/schemachecker/SchemaChecker.java?rev=1458846&r1=1458845&r2=1458846&view=diff ============================================================================== --- directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/schemachecker/SchemaChecker.java (original) +++ directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/schemachecker/SchemaChecker.java Wed Mar 20 14:17:38 2013 @@ -63,13 +63,16 @@ public class SchemaChecker private SchemaManager schemaManager; /** The errors map */ - private MultiMap errorsMap = new MultiValueMap();; + private MultiMap errorsMap = new MultiValueMap(); /** The warnings list */ private List warningsList = new ArrayList(); /** The warnings map */ - private MultiMap warningsMap = new MultiValueMap();; + private MultiMap warningsMap = new MultiValueMap(); + + /** The lock object used to synchronize accesses to the errors and warnings maps*/ + private static Object lock = new Object(); /** The 'listening to modifications' flag*/ private boolean listeningToModifications = false; @@ -261,7 +264,7 @@ public class SchemaChecker /** * Checks the whole schema. */ - private synchronized void recheckWholeSchema() + private void recheckWholeSchema() { Job job = new Job( "Checking Schema" ) { @@ -297,16 +300,19 @@ public class SchemaChecker /** * Updates the errors and warnings. */ - private void updateErrorsAndWarnings() + private synchronized void updateErrorsAndWarnings() { - // Errors - errorsMap.clear(); - indexErrors(); - - // Warnings - createWarnings(); - warningsMap.clear(); - indexWarnings(); + synchronized ( lock ) + { + // Errors + errorsMap.clear(); + indexErrors(); + + // Warnings + createWarnings(); + warningsMap.clear(); + indexWarnings(); + } } @@ -430,7 +436,10 @@ public class SchemaChecker */ public List getWarnings() { - return warningsList; + synchronized ( lock ) + { + return warningsList; + } } @@ -483,7 +492,10 @@ public class SchemaChecker */ public List getErrors( SchemaObject so ) { - return ( List ) errorsMap.get( so ); + synchronized ( lock ) + { + return ( List ) errorsMap.get( so ); + } } Modified: directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/schemamanager/SchemaEditorSchemaLoader.java URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/schemamanager/SchemaEditorSchemaLoader.java?rev=1458846&r1=1458845&r2=1458846&view=diff ============================================================================== --- directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/schemamanager/SchemaEditorSchemaLoader.java (original) +++ directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/schemamanager/SchemaEditorSchemaLoader.java Wed Mar 20 14:17:38 2013 @@ -115,11 +115,17 @@ public class SchemaEditorSchemaLoader ex { for ( Schema schema : schemas ) { - List matchingRules = project.getSchemaHandler().getSchema( schema.getSchemaName() ) - .getMatchingRules(); - for ( MatchingRule matchingRule : matchingRules ) + org.apache.directory.studio.schemaeditor.model.Schema schemaHandlerSchema = project.getSchemaHandler() + .getSchema( schema.getSchemaName() ); + + if ( schemaHandlerSchema != null ) { - matchingRuleList.add( SchemaEditorSchemaLoaderUtils.toEntry( matchingRule ) ); + List matchingRules = schemaHandlerSchema.getMatchingRules(); + + for ( MatchingRule matchingRule : matchingRules ) + { + matchingRuleList.add( SchemaEditorSchemaLoaderUtils.toEntry( matchingRule ) ); + } } } } @@ -139,11 +145,17 @@ public class SchemaEditorSchemaLoader ex { for ( Schema schema : schemas ) { - List syntaxes = project.getSchemaHandler().getSchema( schema.getSchemaName() ) - .getSyntaxes(); - for ( LdapSyntax syntax : syntaxes ) + org.apache.directory.studio.schemaeditor.model.Schema schemaHandlerSchema = project.getSchemaHandler() + .getSchema( schema.getSchemaName() ); + + if ( schemaHandlerSchema != null ) { - syntaxList.add( SchemaEditorSchemaLoaderUtils.toEntry( syntax ) ); + List syntaxes = schemaHandlerSchema.getSyntaxes(); + + for ( LdapSyntax syntax : syntaxes ) + { + syntaxList.add( SchemaEditorSchemaLoaderUtils.toEntry( syntax ) ); + } } } } @@ -163,11 +175,17 @@ public class SchemaEditorSchemaLoader ex { for ( Schema schema : schemas ) { - List attributeTypes = project.getSchemaHandler().getSchema( schema.getSchemaName() ) - .getAttributeTypes(); - for ( AttributeType attributeType : attributeTypes ) + org.apache.directory.studio.schemaeditor.model.Schema schemaHandlerSchema = project.getSchemaHandler() + .getSchema( schema.getSchemaName() ); + + if ( schemaHandlerSchema != null ) { - attributeTypeList.add( SchemaEditorSchemaLoaderUtils.toEntry( attributeType ) ); + List attributeTypes = schemaHandlerSchema.getAttributeTypes(); + + for ( AttributeType attributeType : attributeTypes ) + { + attributeTypeList.add( SchemaEditorSchemaLoaderUtils.toEntry( attributeType ) ); + } } } } @@ -223,11 +241,17 @@ public class SchemaEditorSchemaLoader ex { for ( Schema schema : schemas ) { - List objectClasses = project.getSchemaHandler().getSchema( schema.getSchemaName() ) - .getObjectClasses(); - for ( ObjectClass objectClass : objectClasses ) + org.apache.directory.studio.schemaeditor.model.Schema schemaHandlerSchema = project.getSchemaHandler() + .getSchema( schema.getSchemaName() ); + + if ( schemaHandlerSchema != null ) { - objectClassList.add( SchemaEditorSchemaLoaderUtils.toEntry( objectClass ) ); + List objectClasses = schemaHandlerSchema.getObjectClasses(); + + for ( ObjectClass objectClass : objectClasses ) + { + objectClassList.add( SchemaEditorSchemaLoaderUtils.toEntry( objectClass ) ); + } } } }