![JAR search and dependency download from the Maven repository](/logo.png)
org.echocat.jomon.spring.application.XmlBasedApplicationContextRequirement Maven / Gradle / Ivy
/*****************************************************************************************
* *** BEGIN LICENSE BLOCK *****
*
* Version: MPL 2.0
*
* echocat Jomon, Copyright (c) 2012-2015 echocat
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* *** END LICENSE BLOCK *****
****************************************************************************************/
package org.echocat.jomon.spring.application;
import org.echocat.jomon.spring.application.ApplicationContextRequirement.Support;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import javax.annotation.Nonnull;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static org.echocat.jomon.runtime.CollectionUtils.addAll;
import static org.echocat.jomon.runtime.CollectionUtils.asImmutableList;
public class XmlBasedApplicationContextRequirement extends Support {
@Nonnull
public static XmlBasedApplicationContextRequirement applicationContextFor(@Nonnull Resource... resources) {
return applicationContext().withConfigurations(resources);
}
@Nonnull
public static XmlBasedApplicationContextRequirement applicationContextFor(@Nonnull File... files) {
return applicationContext().withConfigurations(files);
}
@Nonnull
public static XmlBasedApplicationContextRequirement applicationContextFor(@Nonnull URL... files) {
return applicationContext().withConfigurations(files);
}
@Nonnull
public static XmlBasedApplicationContextRequirement applicationContextFor(@Nonnull Class> relation, @Nonnull String file) {
return applicationContext().withConfiguration(relation, file);
}
@Nonnull
public static XmlBasedApplicationContextRequirement applicationContextFor(@Nonnull ClassLoader classLoader, @Nonnull String file) {
return applicationContext().withConfiguration(classLoader, file);
}
@Nonnull
private static XmlBasedApplicationContextRequirement applicationContext() {
return new XmlBasedApplicationContextRequirement();
}
@Nonnull
private final List _configurationFiles = new ArrayList<>();
@Nonnull
public XmlBasedApplicationContextRequirement withConfiguration(@Nonnull Resource resource) {
return withConfigurations(resource);
}
@Nonnull
public XmlBasedApplicationContextRequirement withConfigurations(@Nonnull Resource... resources) {
addAll(_configurationFiles, resources);
return this;
}
@Nonnull
public XmlBasedApplicationContextRequirement withConfigurations(@Nonnull File... files) {
for (final File file : files) {
_configurationFiles.add(new FileSystemResource(file));
}
return this;
}
@Nonnull
public XmlBasedApplicationContextRequirement withConfiguration(@Nonnull File file) {
return withConfigurations(file);
}
@Nonnull
public XmlBasedApplicationContextRequirement withConfigurations(@Nonnull URL... files) {
for (final URL file : files) {
_configurationFiles.add(new UrlResource(file));
}
return this;
}
@Nonnull
public XmlBasedApplicationContextRequirement withConfiguration(@Nonnull Class> relation, @Nonnull String file) {
_configurationFiles.add(new ClassPathResource(relation.getPackage().getName().replace('.', '/') + "/" + file, relation));
return this;
}
@Nonnull
public XmlBasedApplicationContextRequirement withConfiguration(@Nonnull ClassLoader classLoader, @Nonnull String file) {
_configurationFiles.add(new ClassPathResource(file, classLoader));
return this;
}
@Nonnull
public Collection getConfigurationFiles() {
return asImmutableList(_configurationFiles);
}
@Override
@Nonnull
public XmlBasedApplicationContextRequirement withClassLoader(@Nonnull ClassLoader classLoader) {
setClassLoader(classLoader);
return this;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy