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

net.officefloor.woof.template.WoofTemplateExtensionLoader Maven / Gradle / Ivy

There is a newer version: 3.40.0
Show newest version
/*
 * OfficeFloor - http://www.officefloor.net
 * Copyright (C) 2005-2018 Daniel Sagenschneider
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program 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 Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see .
 */
package net.officefloor.woof.template;

import net.officefloor.compile.issues.CompilerIssues;
import net.officefloor.compile.properties.PropertyList;
import net.officefloor.compile.spi.office.OfficeArchitect;
import net.officefloor.configuration.ConfigurationContext;
import net.officefloor.frame.api.source.SourceContext;
import net.officefloor.frame.api.source.SourceProperties;
import net.officefloor.model.change.Change;
import net.officefloor.web.build.WebArchitect;
import net.officefloor.web.template.build.WebTemplate;
import net.officefloor.woof.model.woof.WoofChangeIssues;
import net.officefloor.woof.model.woof.WoofTemplateModel;

/**
 * Loads the extension from the {@link WoofTemplateExtensionSource}.
 * 
 * @author Daniel Sagenschneider
 */
public interface WoofTemplateExtensionLoader {

	/**
	 * Loads and returns the {@link PropertyList} from the
	 * {@link WoofTemplateExtensionSourceSpecification} for the
	 * {@link WoofTemplateExtensionSource}.
	 * 
	 * @param woofTemplateExtensionSourceClassName
	 *            {@link WoofTemplateExtensionSource} class name.
	 * @param classLoader
	 *            {@link ClassLoader} to use in loading the specification.
	 * @param issues
	 *            {@link CompilerIssues} to report any issues in attempting to
	 *            obtain the {@link PropertyList}.
	 * @return {@link PropertyList} of the
	 *         {@link WoofTemplateExtensionSourceProperty} instances of the
	 *         {@link WoofTemplateExtensionSourceSpecification} or
	 *         null if issue, which is reported to the
	 *         {@link CompilerIssues}.
	 */
	PropertyList loadSpecification(String woofTemplateExtensionSourceClassName, ClassLoader classLoader,
			CompilerIssues issues);

	/**
	 * Refactors the {@link WoofTemplateExtensionSource} for the
	 * {@link WoofTemplateModel}.
	 * 
	 * @param woofTemplateExtensionSourceClassName
	 *            {@link WoofTemplateExtensionSource} class name.
	 * @param oldUri
	 *            Old URI. May be null if adding
	 *            {@link WoofTemplateExtensionSource}.
	 * @param oldProperties
	 *            Old {@link SourceProperties}.
	 * @param newUri
	 *            New URI. May be null if removing the
	 *            {@link WoofTemplateExtensionSource}.
	 * @param newProperties
	 *            New {@link SourceProperties}.
	 * @param configurationContext
	 *            {@link ConfigurationContext}.
	 * @param sourceContext
	 *            {@link SourceContext}.
	 * @param issues
	 *            {@link WoofChangeIssues}.
	 * @return {@link Change} to refactor the
	 *         {@link WoofTemplateExtensionSource} for the
	 *         {@link WoofTemplateModel}.
	 */
	Change refactorTemplateExtension(String woofTemplateExtensionSourceClassName, String oldUri,
			SourceProperties oldProperties, String newUri, SourceProperties newProperties,
			ConfigurationContext configurationContext, SourceContext sourceContext, WoofChangeIssues issues);

	/**
	 * Extends the {@link WebTemplate} with the
	 * {@link WoofTemplateExtensionSource}.
	 * 
	 * @param extensionSource
	 *            {@link WoofTemplateExtensionSource}.
	 * @param properties
	 *            {@link PropertyList} to configure the
	 *            {@link WoofTemplateExtensionSource}.
	 * @param applicationPath
	 *            Application path to the {@link WebTemplate}.
	 * @param template
	 *            {@link WebTemplate} to be extended.
	 * @param officeArchitect
	 *            {@link OfficeArchitect}.
	 * @param webArchitect
	 *            {@link WebArchitect}.
	 * @param sourceContext
	 *            {@link SourceContext}.
	 * @throws WoofTemplateExtensionException
	 *             If fails to extend the {@link WebTemplate}.
	 */
	void extendTemplate(WoofTemplateExtensionSource extensionSource, PropertyList properties, String applicationPath,
			WebTemplate template, OfficeArchitect officeArchitect, WebArchitect webArchitect,
			SourceContext sourceContext) throws WoofTemplateExtensionException;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy