apply plugin: 'io.spring.convention.spring-module'
apply plugin: 'nebula.facet'

facets {
	opensaml3Main {
		parentSourceSet = 'main'
	}
	opensaml4Main {
		parentSourceSet = 'main'
	}
	opensaml3Test {
		parentSourceSet = 'opensaml3Main'
	}
	opensaml4Test {
		parentSourceSet = 'opensaml4Main'
	}
}

sourceSets {
	opensaml3Test {
		compileClasspath += sourceSets.test.output
		runtimeClasspath += sourceSets.test.output
	}
	opensaml4Test {
		compileClasspath += sourceSets.test.output
		runtimeClasspath += sourceSets.test.output
	}
}

configurations {
	opensaml3TestImplementation.extendsFrom testImplementation
	opensaml4TestImplementation.extendsFrom testImplementation
	opensaml4MainImplementation {
		canBeConsumed = true
	}
}

compileOpensaml4MainJava {
	javaCompiler = javaToolchains.compilerFor {
		languageVersion = JavaLanguageVersion.of(11)
	}
	sourceCompatibility = '11'
	targetCompatibility = '11'
}

compileOpensaml4TestJava {
	javaCompiler = javaToolchains.compilerFor {
		languageVersion = JavaLanguageVersion.of(11)
	}
}

dependencies {
	management platform(project(":spring-security-dependencies"))
	api project(':spring-security-web')
	api "org.opensaml:opensaml-core"
	api "org.opensaml:opensaml-saml-api"
	api "org.opensaml:opensaml-saml-impl"
	opensaml4MainImplementation libs.org.opensaml4.opensaml.core
	opensaml4MainImplementation libs.org.opensaml4.opensaml.saml.api
	opensaml4MainImplementation libs.org.opensaml4.opensaml.saml.impl

	provided 'jakarta.servlet:jakarta.servlet-api'

	optional 'com.fasterxml.jackson.core:jackson-databind'

	testImplementation 'com.squareup.okhttp3:mockwebserver'
	testImplementation "org.assertj:assertj-core"
	testImplementation "org.skyscreamer:jsonassert"
	testImplementation "org.junit.jupiter:junit-jupiter-api"
	testImplementation "org.junit.jupiter:junit-jupiter-params"
	testImplementation "org.junit.jupiter:junit-jupiter-engine"
	testImplementation "org.mockito:mockito-core"
	testImplementation "org.mockito:mockito-inline"
	testImplementation "org.mockito:mockito-junit-jupiter"
	testImplementation "org.springframework:spring-test"
}

project.tasks.matching { t -> t.name == "jar"}.configureEach {
	duplicatesStrategy = DuplicatesStrategy.EXCLUDE
	from {
		compileOpensaml3MainJava
	}
	from {
		compileOpensaml4MainJava
	}
}

project.tasks.matching { t -> t.name == "sourcesJar"}.configureEach {
	from {
		sourceSets.opensaml3Main.allSource
	}
	from {
		sourceSets.opensaml4Main.allSource
	}
}


javadoc {
	source += sourceSets.opensaml3Main.allJava + sourceSets.opensaml4Main.allJava
}

opensaml3Test {
	useJUnitPlatform()
}

opensaml4Test {
	useJUnitPlatform()
}
