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

ch.sourcepond.maven.release.providers.DefaultMavenComponentSingletons Maven / Gradle / Ivy

/*Copyright (C) 2016 Roland Hauser, 
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.*/
package ch.sourcepond.maven.release.providers;

import java.util.Iterator;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;

import org.apache.maven.plugin.Mojo;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;

import ch.sourcepond.maven.release.PluginException;
import ch.sourcepond.maven.release.config.Configuration;
import ch.sourcepond.maven.release.config.ConfigurationAccessor;
import ch.sourcepond.maven.release.reactor.ReactorProjects;

@Named
@Singleton
final class DefaultMavenComponentSingletons implements MavenComponentSingletons {
	private final List initializables;
	private Log log;
	private MavenProject project;
	private ReactorProjects reactorProjects;
	private Configuration configuration;

	@Inject
	DefaultMavenComponentSingletons(final List pInitializables) {
		initializables = pInitializables;
	}

	@Override
	public Log getLog() {
		return log;
	}

	@Override
	public MavenProject getProject() {
		return project;
	}

	@Override
	public ReactorProjects getReactorProjects() {
		return reactorProjects;
	}

	@Override
	public Configuration getConfiguration() {
		return configuration;
	}

	private void setLog(final Log pLog) {
		log = pLog;
	}

	private void setRootProject(final MavenProject pProject) {
		project = pProject;
	}

	private void setReactorProjects(final List pReactorProjects) {
		reactorProjects = new ReactorProjects() {

			@Override
			public Iterator iterator() {
				return pReactorProjects.iterator();
			}
		};
	}

	private void setConfiguration(final Configuration pConfiguration) {
		configuration = pConfiguration;
	}

	@Override
	public void initialize(final Mojo pMojo, final MavenProject pProject, final List pReactorProjects)
			throws PluginException {
		setLog(pMojo.getLog());
		setRootProject(pProject);
		setReactorProjects(pReactorProjects);
		setConfiguration(new ConfigurationAccessor(pMojo));

		for (final Initializable initializable : initializables) {
			initializable.initialize();
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy