All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.liferay.portal.template.BaseTemplateResourceLoader Maven / Gradle / Ivy

/**
 * 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.template;

import com.liferay.petra.string.StringBundler;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.template.TemplateException;
import com.liferay.portal.kernel.template.TemplateResource;
import com.liferay.portal.kernel.template.TemplateResourceCache;
import com.liferay.portal.kernel.template.TemplateResourceLoader;
import com.liferay.portal.kernel.util.Validator;

import java.util.Set;

/**
 * @author Tina Tian
 */
public abstract class BaseTemplateResourceLoader
	implements TemplateResourceLoader {

	@Override
	public void clearCache() {
		_templateResourceCache.clear();
	}

	@Override
	public void clearCache(String templateId) {
		_templateResourceCache.remove(templateId);
	}

	@Override
	public void destroy() {
	}

	@Override
	public String getName() {
		return _name;
	}

	@Override
	public TemplateResource getTemplateResource(String templateId) {
		if (!_templateResourceCache.isEnabled()) {
			return _loadFromParser(templateId);
		}

		TemplateResource templateResource =
			_templateResourceCache.getTemplateResource(templateId);

		if (templateResource ==
				BaseTemplateResourceCache.DUMMY_TEMPLATE_RESOURCE) {

			return null;
		}

		if (templateResource == null) {
			templateResource = _loadFromParser(templateId);

			_templateResourceCache.put(templateId, templateResource);
		}

		return templateResource;
	}

	@Override
	public boolean hasTemplateResource(String templateId) {
		TemplateResource templateResource = getTemplateResource(templateId);

		if (templateResource != null) {
			return true;
		}

		return false;
	}

	protected void init(
		String name, Set templateResourceParsers,
		TemplateResourceCache templateResourceCache) {

		if (Validator.isNull(name)) {
			throw new IllegalArgumentException(
				"Template resource loader name is null");
		}

		_name = name;

		_templateResourceParsers = templateResourceParsers;
		_templateResourceCache = templateResourceCache;
	}

	private TemplateResource _loadFromParser(String templateId) {
		for (TemplateResourceParser templateResourceParser :
				_templateResourceParsers) {

			try {
				if (!templateResourceParser.isTemplateResourceValid(
						templateId, getName())) {

					continue;
				}

				TemplateResource templateResource =
					templateResourceParser.getTemplateResource(templateId);

				if (templateResource != null) {
					return templateResource;
				}
			}
			catch (TemplateException templateException) {
				if (_log.isWarnEnabled()) {
					_log.warn(
						StringBundler.concat(
							"Unable to parse template ", templateId,
							" with parser ", templateResourceParser),
						templateException);
				}
			}
		}

		return null;
	}

	private static final Log _log = LogFactoryUtil.getLog(
		BaseTemplateResourceLoader.class);

	private String _name;
	private TemplateResourceCache _templateResourceCache;
	private Set _templateResourceParsers;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy