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

org.kuali.maven.plugins.spring.MavenPropertySourceContext Maven / Gradle / Ivy

package org.kuali.maven.plugins.spring;

import java.util.Collections;
import java.util.List;
import java.util.Properties;

import org.kuali.common.util.Assert;
import org.kuali.common.util.ListUtils;
import org.kuali.common.util.spring.service.SpringService;

public final class MavenPropertySourceContext {

	private final SpringService service;
	private final String location;
	private final Class config;
	private final String propertiesBeanName;
	private final Properties properties;
	private final List activeProfiles;
	private final List defaultProfiles;

	public SpringService getService() {
		return service;
	}

	public String getLocation() {
		return location;
	}

	public Class getConfig() {
		return config;
	}

	public String getPropertiesBeanName() {
		return propertiesBeanName;
	}

	public Properties getProperties() {
		return properties;
	}

	public List getActiveProfiles() {
		return activeProfiles;
	}

	public List getDefaultProfiles() {
		return defaultProfiles;
	}

	public static class Builder {

		// Required
		private final SpringService service;
		private final Properties properties;

		// Optional
		private String location;
		private Class config;

		private String propertiesBeanName = MavenConstants.DEFAULT_MAVEN_PROPERTIES_BEAN_NAME;
		private List activeProfiles = Collections. emptyList();
		private List defaultProfiles = Collections. emptyList();

		public Builder(SpringService service, Properties properties) {
			this.service = service;
			this.properties = properties;
		}

		public MavenPropertySourceContext build() {
			Assert.noNulls(service, properties, activeProfiles, defaultProfiles);
			Assert.noBlanks(propertiesBeanName);
			Assert.isFalse(location == null && config == null, "Either location or config are required");
			Assert.isTrue(location == null || config == null, "Cannot supply both location and config");
			this.activeProfiles = ListUtils.newImmutableArrayList(activeProfiles);
			this.defaultProfiles = ListUtils.newImmutableArrayList(defaultProfiles);
			return new MavenPropertySourceContext(this);
		}

		public Builder location(String location) {
			this.location = location;
			return this;
		}

		public Builder config(Class config) {
			this.config = config;
			return this;
		}

		public Builder propertiesBeanName(String propertiesBeanName) {
			this.propertiesBeanName = propertiesBeanName;
			return this;
		}

		public Builder activeProfiles(List activeProfiles) {
			this.activeProfiles = activeProfiles;
			return this;
		}

		public Builder defaultProfiles(List defaultProfiles) {
			this.defaultProfiles = defaultProfiles;
			return this;
		}

	}

	private MavenPropertySourceContext(Builder builder) {
		this.service = builder.service;
		this.location = builder.location;
		this.config = builder.config;
		this.propertiesBeanName = builder.propertiesBeanName;
		this.properties = builder.properties;
		this.activeProfiles = builder.activeProfiles;
		this.defaultProfiles = builder.defaultProfiles;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy