Return-Path: X-Original-To: apmail-jackrabbit-commits-archive@www.apache.org Delivered-To: apmail-jackrabbit-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 4A1BA1058F for ; Mon, 30 Sep 2013 14:02:02 +0000 (UTC) Received: (qmail 70685 invoked by uid 500); 30 Sep 2013 14:02:01 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 70654 invoked by uid 500); 30 Sep 2013 14:02:01 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 70646 invoked by uid 99); 30 Sep 2013 14:02:00 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 30 Sep 2013 14:02:00 +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, 30 Sep 2013 14:01:58 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id EC8A0238883D; Mon, 30 Sep 2013 14:01:35 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1527572 - /jackrabbit/branches/2.6/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeRegistry.java Date: Mon, 30 Sep 2013 14:01:35 -0000 To: commits@jackrabbit.apache.org From: unico@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130930140135.EC8A0238883D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: unico Date: Mon Sep 30 14:01:35 2013 New Revision: 1527572 URL: http://svn.apache.org/r1527572 Log: JCR-3674 backport: ignore attempt to register node types that are already registered locally when the attempt originates from an external update Modified: jackrabbit/branches/2.6/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeRegistry.java Modified: jackrabbit/branches/2.6/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeRegistry.java URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.6/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeRegistry.java?rev=1527572&r1=1527571&r2=1527572&view=diff ============================================================================== --- jackrabbit/branches/2.6/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeRegistry.java (original) +++ jackrabbit/branches/2.6/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeRegistry.java Mon Sep 30 14:01:35 2013 @@ -237,7 +237,7 @@ public class NodeTypeRegistry implements synchronized (this) { // validate and register new node type definitions - internalRegister(ntDefs); + internalRegister(ntDefs, external); // persist new node type definitions for (QNodeTypeDefinition ntDef: ntDefs) { customNTDefs.add(ntDef); @@ -775,7 +775,7 @@ public class NodeTypeRegistry implements loadBuiltInNodeTypeDefs(builtInNTDefs); // register built-in node types - internalRegister(builtInNTDefs.all(), true); + internalRegister(builtInNTDefs.all(), false, true); } catch (InvalidNodeTypeDefException intde) { String error = "internal error: invalid built-in node type definition stored in " @@ -792,7 +792,7 @@ public class NodeTypeRegistry implements // validate & register custom node types try { - internalRegister(customNTDefs.all()); + internalRegister(customNTDefs.all(), false); } catch (InvalidNodeTypeDefException intde) { String error = "internal error: invalid custom node type definition stored in " @@ -1269,13 +1269,13 @@ public class NodeTypeRegistry implements * @throws RepositoryException if an error occurs * @see #registerNodeType */ - private void internalRegister(Collection ntDefs) + private void internalRegister(Collection ntDefs, boolean external) throws InvalidNodeTypeDefException, RepositoryException { - internalRegister(ntDefs, false); + internalRegister(ntDefs, external, false); } /** - * Same as {@link #internalRegister(java.util.Collection)} except for the + * Same as {@link #internalRegister(java.util.Collection, boolean)} except for the * additional lenient parameter which governs whether * validation can be lenient (e.g. for built-in node types) or has to be * strict (such as in the case of custom node types). This differentiation @@ -1284,7 +1284,7 @@ public class NodeTypeRegistry implements * that can be exposed in a property definition because it is * system-generated (such as jcr:primaryType in nt:base). */ - private void internalRegister(Collection ntDefs, boolean lenient) + private void internalRegister(Collection ntDefs, boolean external, boolean lenient) throws InvalidNodeTypeDefException, RepositoryException { // need a list/collection that can be modified @@ -1297,11 +1297,8 @@ public class NodeTypeRegistry implements // and do some preliminary checks for (QNodeTypeDefinition ntd : defs) { Name name = ntd.getName(); - if (name != null && tmpNTDefCache.containsKey(name)) { - String msg = name + " already exists"; - if (tmpNTDefCache.containsKey(name)) { - msg += " locally"; - } + if (!external && name != null && tmpNTDefCache.containsKey(name)) { + String msg = name + " already exists locally"; log.debug(msg); throw new InvalidNodeTypeDefException(msg); }