PM - Simple vs. Bundle - mixin removal handling
-----------------------------------------------
Key: JCR-1690
URL: https://issues.apache.org/jira/browse/JCR-1690
Project: Jackrabbit
Issue Type: Bug
Affects Versions: core 1.4.5
Reporter: Jan Haderka
Following code (assuming node had mixin mix:versionable before):
node.removeMixin("mix:versionable");
node.save();
leads to difference in stored data based on PM used.
If you perform the operation above and restart your repository
call to:
node.isMixinType("mix:versionable");
will return false after restart in both cases, but
doing:
hasMixin(node, "mix:versionable");
will return true when repository is using bundled PM. The hasMixin()
method just iterates over all values of jcr:mixinTypes property:
public static void hasMixin(Node node, String mixin) {
try {
Value[] vals = node.getProperty("jcr:mixinTypes").getValues();
for (int i = 0; i < vals.length; i++) {
log.debug(vals[i].getString());
if (mixin.equals(vals[i].getString())) {
return true;
}
}
} catch (PathNotFoundException e) {
// property not found == can't contain anything
return false;
}
return false;
}
I think the difference is caused by following code (JR 1.4.5) in
AbstractBundledPersistenceManager (which doesn't seem to have equivalent
in simple PM)
557 // skip primaryType pr mixinTypes properties
558 if (id.getName().equals(QName.JCR_PRIMARYTYPE)
559 || id.getName().equals(QName.JCR_MIXINTYPES)
560 || id.getName().equals(QName.JCR_UUID)) {
561 continue;
562 }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.