package org.jboss.resteasy.utils;
import org.jboss.resteasy.utils.maven.MavenUtil;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* Base util class for RESTEasy spring related testing.
*/
public class TestUtilSpring {
private static String defaultSpringVersion = "4.2.4.RELEASE";
//protected static Logger logger;
/**
* Read system proprty
*
* @param name of the property
* @param defaultValue which will be used if system property name is not defined
* @return property value
*/
private static String readSystemProperty(String name, String defaultValue) {
String value = System.getProperty(name);
return (value == null) ? defaultValue : value;
}
/**
* Get spring version
*
* @return Spring version.
*/
private static String getSpringVersion() {
return readSystemProperty("version.org.springframework", defaultSpringVersion);
}
/**
* Get Spring dependencies for specified spring version
*
* @param springVersion
* @return Spring libraries
*/
private static File[] resolveSpringDependencies(String springVersion) {
MavenUtil mavenUtil;
mavenUtil = MavenUtil.create(true);
List<File> runtimeDependencies = new ArrayList<>();
try {
runtimeDependencies.add(mavenUtil.createMavenGavFile("org.springframework:spring-core:" + springVersion));
runtimeDependencies.add(mavenUtil.createMavenGavFile("org.springframework:spring-web:" + springVersion));
runtimeDependencies.add(mavenUtil.createMavenGavFile("org.springframework:spring-webmvc:" + springVersion));
runtimeDependencies.add(mavenUtil.createMavenGavFile("org.springframework:spring-context:" + springVersion));
runtimeDependencies.add(mavenUtil.createMavenGavFile("org.springframework:spring-expression:" + springVersion));
runtimeDependencies.add(mavenUtil.createMavenGavFile("org.springframework:spring-beans:" + springVersion));
runtimeDependencies.add(mavenUtil.createMavenGavFile("org.springframework:spring-aop:" + springVersion));
} catch (Exception e) {
throw new RuntimeException("Unable to get artifacts from maven via Aether library", e);
}
File[] dependencies = runtimeDependencies.toArray(new File[]{});
return dependencies;
}
/**
* Get specified single dependency
*
* @param dependency
* @return Dependency gav
*/
private static File resolveDependency(String dependency) {
MavenUtil mavenUtil;
mavenUtil = MavenUtil.create(true);
File mavenGav;
try {
mavenGav = mavenUtil.createMavenGavFile(dependency);
} catch (Exception e) {
throw new RuntimeException("Unable to get artifacts from maven via Aether library", e);
}
return mavenGav;
}
/**
* Adds Spring libraries and its dependencies into webarchove
*
* @param archive
*/
public static void addSpringLibraries(WebArchive archive) {
archive.addAsLibraries(resolveSpringDependencies(getSpringVersion()));
}
/**
* Adds additional dependency needed for Spring tests. Specified by parameter in the format 'groupId:artifactId:version'
*
* @param archive
* @param dependency
*/
public static void addOtherLibrary(WebArchive archive, String dependency) {
archive.addAsLibrary(resolveDependency(dependency));
}
}