/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.document.library.repository.cmis.internal; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.repository.DocumentRepository; import com.liferay.portal.kernel.repository.capabilities.CommentCapability; import com.liferay.portal.kernel.repository.capabilities.PortalCapabilityLocator; import com.liferay.portal.kernel.repository.capabilities.ProcessorCapability; import com.liferay.portal.kernel.repository.model.FileEntry; import com.liferay.portal.kernel.repository.model.FileVersion; import com.liferay.portal.kernel.repository.registry.BaseRepositoryDefiner; import com.liferay.portal.kernel.repository.registry.CapabilityRegistry; import com.liferay.portal.kernel.util.CacheResourceBundleLoader; import com.liferay.portal.kernel.util.ClassResourceBundleLoader; import com.liferay.portal.kernel.util.ResourceBundleLoader; import com.liferay.portal.kernel.util.ResourceBundleUtil; import java.util.Locale; import java.util.ResourceBundle; import org.apache.chemistry.opencmis.client.api.Document; import org.osgi.service.component.annotations.Reference; /** * @author Adolfo PĂ©rez */ public abstract class BaseCMISRepositoryDefiner extends BaseRepositoryDefiner { @Override public String getRepositoryTypeLabel(Locale locale) { ResourceBundle resourceBundle = _resourceBundleLoader.loadResourceBundle(locale); return ResourceBundleUtil.getString( resourceBundle, _MODEL_RESOURCE_NAME_PREFIX + getClassName()); } @Override public void registerCapabilities( CapabilityRegistry<DocumentRepository> capabilityRegistry) { DocumentRepository documentRepository = capabilityRegistry.getTarget(); PortalCapabilityLocator portalCapabilityLocator = getPortalCapabilityLocator(); capabilityRegistry.addExportedCapability( CommentCapability.class, portalCapabilityLocator.getCommentCapability(documentRepository)); capabilityRegistry.addSupportedCapability( ProcessorCapability.class, new RefreshingProcessorCapability( portalCapabilityLocator.getProcessorCapability( documentRepository))); } protected PortalCapabilityLocator getPortalCapabilityLocator() { return _portalCapabilityLocator; } protected ResourceBundleLoader getResourceBundleLoader() { return _resourceBundleLoader; } @Reference(unbind = "-") protected void setPortalCapabilityLocator( PortalCapabilityLocator portalCapabilityLocator) { _portalCapabilityLocator = portalCapabilityLocator; } private static final String _MODEL_RESOURCE_NAME_PREFIX = "model.resource."; private PortalCapabilityLocator _portalCapabilityLocator; private final ResourceBundleLoader _resourceBundleLoader = new CacheResourceBundleLoader( new ClassResourceBundleLoader( "content.Language", BaseCMISRepositoryDefiner.class)); private static class RefreshingProcessorCapability implements ProcessorCapability { public RefreshingProcessorCapability( ProcessorCapability processorCapability) { _processorCapability = processorCapability; } @Override public void cleanUp(FileEntry fileEntry) throws PortalException { _refresh(fileEntry); _processorCapability.cleanUp(fileEntry); } @Override public void cleanUp(FileVersion fileVersion) throws PortalException { _refresh(fileVersion); _processorCapability.cleanUp(fileVersion); } @Override public void copy(FileEntry fileEntry, FileVersion fileVersion) throws PortalException { _refresh(fileEntry); _refresh(fileVersion); _processorCapability.copy(fileEntry, fileVersion); } @Override public void generateNew(FileEntry fileEntry) throws PortalException { _refresh(fileEntry); _processorCapability.generateNew(fileEntry); } private void _refresh(FileEntry fileEntry) { Document document = (Document)fileEntry.getModel(); document.refresh(); } private void _refresh(FileVersion fileVersion) throws PortalException { Document document = (Document)fileVersion.getModel(); document.refresh(); _refresh(fileVersion.getFileEntry()); } private final ProcessorCapability _processorCapability; } }