Introduced versioning in Connector for KafkaMappedConnector

This commit is contained in:
Petar Bozin 2017-03-06 16:45:47 +01:00
parent d291c22d2e
commit 38a46d6ede
4 changed files with 1545 additions and 7 deletions

View File

@ -43,8 +43,14 @@ Could consider a Map of ("resourceType" -> "provider") - this could tell us whic
initialise MongoDB etc. resourceType might be sub devided to allow for different account types coming from different internal APIs, MQs.
*/
object Connector extends SimpleInjector {
object Connector extends SimpleInjector {
import scala.reflect.runtime.universe._
def getObjectInstance(clsName: String):Connector = {
val mirror = runtimeMirror(getClass.getClassLoader)
val module = mirror.staticModule(clsName)
mirror.reflectModule(module).instance.asInstanceOf[Connector]
}
val connector = new Inject(buildOne _) {}
@ -54,8 +60,9 @@ object Connector extends SimpleInjector {
connectorProps match {
case "mapped" => LocalMappedConnector
case "mongodb" => LocalConnector
case "kafka" => KafkaMappedConnector
case "obpjvm" => ObpJvmMappedConnector
case "kafka" => KafkaMappedConnector
case matchKafkaVersion(version) => getObjectInstance(s"""code.bankconnectors.KafkaMappedConnector_v${version}""")
}
}

File diff suppressed because it is too large Load Diff

View File

@ -443,7 +443,7 @@ import net.liftweb.util.Helpers._
case Full(user) if (user.getProvider() != Props.get("hostname","")) =>
connector match {
case "kafka" if ( Props.getBool("kafka.user.authentication", false) &&
case Helper.matchAnyKafka() if ( Props.getBool("kafka.user.authentication", false) &&
! LoginAttempt.userIsLocked(username) ) =>
val userId = for { kafkaUser <- getUserFromConnector(username, password)
kafkaUserId <- tryo{kafkaUser.user} } yield {
@ -625,7 +625,7 @@ import net.liftweb.util.Helpers._
S.error(S.?("account.validation.error"))
// If not found locally, try to authenticate user via Kafka, if enabled in props
case Empty if (connector == "kafka" || connector == "obpjvm") &&
case Empty if (connector.startsWith("kafka") || connector == "obpjvm") &&
(Props.getBool("kafka.user.authentication", false) ||
Props.getBool("obpjvm.user.authentication", false)) =>
val preLoginState = capturePreLoginState()
@ -682,7 +682,7 @@ import net.liftweb.util.Helpers._
def testExternalPassword(usernameFromGui: Box[String], passwordFromGui: Box[String]): Box[Boolean] = {
if (connector == "kafka" || connector == "obpjvm") {
if (connector.startsWith("kafka") || connector == "obpjvm") {
val res = for {
username <- usernameFromGui
password <- passwordFromGui
@ -697,7 +697,7 @@ import net.liftweb.util.Helpers._
def externalUserHelper(name: String, password: String): Box[AuthUser] = {
if (connector == "kafka" || connector == "obpjvm") {
if (connector.startsWith("kafka") || connector == "obpjvm") {
for {
user <- getUserFromConnector(name, password)
u <- Users.users.vend.getUserByUserName(username)
@ -710,7 +710,7 @@ import net.liftweb.util.Helpers._
def registeredUserHelper(username: String) = {
if (connector == "kafka" || connector == "obpjvm") {
if (connector.startsWith("kafka") || connector == "obpjvm") {
for {
u <- Users.users.vend.getUserByUserName(username)
v <- tryo {Connector.connector.vend.updateUserAccountViews(u)}

View File

@ -155,4 +155,11 @@ object Helper{
validUrls.contains(extractCleanURL)
}
/**
* Used for version extraction from props string
*/
val matchKafkaVersion = "kafka_v([0-9a-zA-Z_]+)".r
val matchAnyKafka = "^kafka.*$".r
}