You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Jukka Zitting (JIRA)" <ji...@apache.org> on 2008/09/17 10:55:44 UTC

[jira] Updated: (JCR-1690) PM - Simple vs. Bundle - mixin removal handling

     [ https://issues.apache.org/jira/browse/JCR-1690?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jukka Zitting updated JCR-1690:
-------------------------------

    Fix Version/s:     (was: 1.5)

> 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.