/**
* 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.portal.repository.external;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.repository.BaseRepository;
import com.liferay.portal.kernel.repository.DocumentRepository;
import com.liferay.portal.kernel.repository.RepositoryConfiguration;
import com.liferay.portal.kernel.repository.RepositoryConfigurationBuilder;
import com.liferay.portal.kernel.repository.RepositoryFactory;
import com.liferay.portal.kernel.repository.capabilities.ProcessorCapability;
import com.liferay.portal.kernel.repository.registry.BaseRepositoryDefiner;
import com.liferay.portal.kernel.repository.registry.CapabilityRegistry;
import com.liferay.portal.kernel.repository.registry.RepositoryFactoryRegistry;
import com.liferay.portal.kernel.util.ResourceBundleLoader;
import com.liferay.portal.repository.capabilities.LiferayProcessorCapability;
import com.liferay.portal.repository.util.ExternalRepositoryFactoryUtil;
/**
* @author Adolfo PĂ©rez
*/
public class LegacyExternalRepositoryDefiner extends BaseRepositoryDefiner {
public LegacyExternalRepositoryDefiner(
String className, RepositoryFactory repositoryFactory,
ResourceBundleLoader resourceBundleLoader) {
_className = className;
_repositoryFactory = repositoryFactory;
_resourceBundleLoader = resourceBundleLoader;
}
@Override
public String getClassName() {
return _className;
}
@Override
public RepositoryConfiguration getRepositoryConfiguration() {
try {
if (_repositoryConfiguration != null) {
return _repositoryConfiguration;
}
BaseRepository baseRepository =
ExternalRepositoryFactoryUtil.getInstance(getClassName());
@SuppressWarnings("deprecation")
String[][] supportedParameters =
baseRepository.getSupportedParameters();
int size = 0;
if ((supportedParameters != null) &&
(supportedParameters[0] != null)) {
size = supportedParameters[0].length;
}
RepositoryConfigurationBuilder repositoryConfigurationBuilder =
new RepositoryConfigurationBuilder(_resourceBundleLoader);
for (int i = 0; i < size; i++) {
repositoryConfigurationBuilder.addParameter(
supportedParameters[0][i]);
}
_repositoryConfiguration = repositoryConfigurationBuilder.build();
return _repositoryConfiguration;
}
catch (Exception e) {
throw new SystemException(e);
}
}
@Override
public boolean isExternalRepository() {
return true;
}
@Override
public void registerCapabilities(
CapabilityRegistry<DocumentRepository> capabilityRegistry) {
capabilityRegistry.addSupportedCapability(
ProcessorCapability.class, _processorCapability);
}
@Override
public void registerRepositoryFactory(
RepositoryFactoryRegistry repositoryFactoryRegistry) {
repositoryFactoryRegistry.setRepositoryFactory(_repositoryFactory);
}
private final String _className;
private final LiferayProcessorCapability _processorCapability =
new LiferayProcessorCapability(
LiferayProcessorCapability.ResourceGenerationStrategy.
ALWAYS_GENERATE);
private RepositoryConfiguration _repositoryConfiguration;
private final RepositoryFactory _repositoryFactory;
private final ResourceBundleLoader _resourceBundleLoader;
}