mirror of
https://github.com/corda/corda.git
synced 2025-02-21 17:56:54 +00:00
Simplify registration
This commit is contained in:
parent
4f7ea8cd52
commit
a8f5e82bb7
@ -34,24 +34,18 @@ object CordappResolver {
|
|||||||
fun register(cordapp: Cordapp) {
|
fun register(cordapp: Cordapp) {
|
||||||
val existingClasses = cordappClasses.keys
|
val existingClasses = cordappClasses.keys
|
||||||
val classesToRegister = cordapp.cordappClasses.toSet()
|
val classesToRegister = cordapp.cordappClasses.toSet()
|
||||||
val alreadyRegisteredClasses = existingClasses.intersect(classesToRegister)
|
val notAlreadyRegisteredClasses = classesToRegister - existingClasses
|
||||||
val notAlreadyRegisteredClasses = classesToRegister - alreadyRegisteredClasses
|
val alreadyRegistered= HashMap(cordappClasses).apply { keys.retainAll(classesToRegister) }
|
||||||
|
|
||||||
notAlreadyRegisteredClasses.forEach { cordappClasses[it] = setOf(cordapp) }
|
notAlreadyRegisteredClasses.forEach { cordappClasses[it] = setOf(cordapp) }
|
||||||
|
|
||||||
val toRegister = cordappClasses.entries.asSequence()
|
for ((className, registeredCordapps) in alreadyRegistered) {
|
||||||
.filter { (className, _) -> className in alreadyRegisteredClasses}
|
if (registeredCordapps.any { it.jarHash == cordapp.jarHash }) continue
|
||||||
.filter { (_, registeredCordapps) -> registeredCordapps.none { it.jarHash == cordapp.jarHash } }
|
|
||||||
.map { (className, registeredCordapps) -> className to registeredCordapps + cordapp }
|
|
||||||
.toMap()
|
|
||||||
|
|
||||||
for (className in toRegister.keys) {
|
|
||||||
if (duplicateRegistrationFilter.shouldNotify(className, cordapp::class.java.classLoader)) {
|
if (duplicateRegistrationFilter.shouldNotify(className, cordapp::class.java.classLoader)) {
|
||||||
logger.warn("More than one CorDapp registered for $className.")
|
logger.warn("More than one CorDapp registered for $className.")
|
||||||
}
|
}
|
||||||
|
cordappClasses[className] = registeredCordapps + cordapp
|
||||||
}
|
}
|
||||||
|
|
||||||
cordappClasses.putAll(toRegister)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user