You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2007/08/27 16:59:33 UTC
svn commit: r570149 -
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
Author: stefan
Date: Mon Aug 27 07:59:33 2007
New Revision: 570149
URL: http://svn.apache.org/viewvc?rev=570149&view=rev
Log:
more lenient behavior of Node#addMixin if mixin is already present
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java?rev=570149&r1=570148&r2=570149&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java Mon Aug 27 07:59:33 2007
@@ -1039,9 +1039,11 @@
if (!mixin.isMixin()) {
throw new RepositoryException(mixinName + ": not a mixin node type");
}
+
NodeTypeImpl primaryType = ntMgr.getNodeType(primaryTypeName);
if (primaryType.isDerivedFrom(mixinName)) {
- throw new RepositoryException(mixinName + ": already contained in primary node type");
+ // new mixin is already included in primary type
+ return;
}
// build effective node type of mixin's & primary type in order to detect conflicts
@@ -1055,8 +1057,10 @@
// build effective node type representing primary type including existing mixin's
entExisting = ntReg.getEffectiveNodeType((QName[]) set.toArray(new QName[set.size()]));
if (entExisting.includesNodeType(mixinName)) {
- throw new RepositoryException(mixinName + ": already contained in mixin types");
+ // new mixin is already included in existing mixin type(s)
+ return;
}
+
// add new mixin
set.add(mixinName);
// try to build new effective node type (will throw in case of conflicts)