protected void updateMixins()

in src/main/java/org/apache/sling/servlets/post/impl/operations/AbstractCreateOperation.java [194:219]


    protected void updateMixins(final ResourceResolver resolver,
                    final String path,
                    final Map<String, RequestProperty> reqProperties,
                    final List<Modification> changes,
                    final VersioningConfiguration versioningConfiguration)
    throws PersistenceException {
        final String[] mixins = getMixinTypes(reqProperties, path);
        if (mixins != null) {

            final Resource rsrc = resolver.getResource(path);
            final ModifiableValueMap mvm = rsrc.adaptTo(ModifiableValueMap.class);
            if ( mvm != null ) {
                this.jcrSupport.checkoutIfNecessary(rsrc, changes, versioningConfiguration);
                mvm.put(JcrConstants.JCR_MIXINTYPES, mixins);

                for(final String mixin : mixins) {
                    // this is a bit of a cheat; there isn't a formal checkout, but assigning
                    // the mix:versionable mixin does an implicit checkout
                    if (mixin.equals(JcrConstants.MIX_VERSIONABLE) &&
                            versioningConfiguration.isCheckinOnNewVersionableNode()) {
                        changes.add(Modification.onCheckout(path));
                    }
                }
            }
        }
    }