/* * (C) Copyright 2015 Nuxeo SA (http://nuxeo.com/) and others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Contributors: */ package org.nuxeo.ecm.platform.rendition.service; import org.nuxeo.ecm.core.api.Blob; import org.nuxeo.ecm.core.api.DocumentModel; import org.nuxeo.ecm.platform.rendition.impl.StoredRendition; /** * The default @{link StoredRenditionManager} to Manage {@link StoredRendition}s on behalf of the * {@link RenditionService}. * * @since 8.1 */ public class DefaultStoredRenditionManager implements StoredRenditionManager { @Override public StoredRendition createStoredRendition(DocumentModel liveDocument, DocumentModel versionDocument, Blob renditionBlob, RenditionDefinition renditionDefinition) { RenditionCreator rc = new RenditionCreator(liveDocument, versionDocument, renditionBlob, renditionDefinition); rc.runUnrestricted(); DocumentModel storedDoc = rc.getDetachedRendition(); String sessionId = liveDocument.getCoreSession().getSessionId(); return toStoredRendition(storedDoc, renditionDefinition, sessionId); } @Override public StoredRendition findStoredRendition(DocumentModel sourceDocument, RenditionDefinition renditionDefinition) { RenditionFinder finder = new RenditionFinder(sourceDocument, renditionDefinition); finder.runUnrestricted(); DocumentModel storedDoc = finder.getStoredRendition(); String sessionId = sourceDocument.getCoreSession().getSessionId(); return toStoredRendition(storedDoc, renditionDefinition, sessionId); } /** * Wraps the re-attached stored document in a {@link StoredRendition}. * * @param storedDoc the stored document * @param def the rendition definition * @param sessionId the session id * @return the stored rendition */ protected StoredRendition toStoredRendition(DocumentModel storedDoc, RenditionDefinition def, String sessionId) { if (storedDoc == null) { return null; } // re-attach the detached doc storedDoc.attach(sessionId); return new StoredRendition(storedDoc, def); } }