@@ -14,11 +14,11 @@ import java.util.function.Consumer
1414import java.util.function.Function
1515import java.util.function.Predicate
1616
17- abstract class SocketOwner <T >(val socketClass : Class <T >) {
17+ abstract class SocketOwner <T : Any >(val socketClass : Class <T >) {
1818 abstract fun metadata (plug : T ): Map <String , String >
1919
2020 fun asDescriptor (plug : T ) =
21- PlugDescriptor (plug!! ::class .java.name, socketClass.name, metadata(plug)).toJson()
21+ PlugDescriptor (plug::class .java.name, socketClass.name, metadata(plug)).toJson()
2222
2323 /* *
2424 * Instantiates the given plug. Already implemented by the default implementations [SingletonById]
@@ -39,7 +39,7 @@ abstract class SocketOwner<T>(val socketClass: Class<T>) {
3939
4040 protected abstract fun remove (plugDescriptor : PlugDescriptor )
4141
42- abstract class EphemeralByDescriptor <T , ParsedDescriptor >(socketClass : Class <T >) :
42+ abstract class EphemeralByDescriptor <T : Any , ParsedDescriptor >(socketClass : Class <T >) :
4343 SocketOwner <T >(socketClass) {
4444 private val descriptors = mutableMapOf<ParsedDescriptor , PlugDescriptor >()
4545 init {
@@ -51,13 +51,15 @@ abstract class SocketOwner<T>(val socketClass: Class<T>) {
5151
5252 protected abstract fun parse (plugDescriptor : PlugDescriptor ): ParsedDescriptor
5353
54- protected fun <R > computeAgainstDescriptors (compute : Function <Set <ParsedDescriptor >, R >): R {
54+ protected fun <R : Any > computeAgainstDescriptors (
55+ compute : Function <Set <ParsedDescriptor >, R >
56+ ): R {
5557 synchronized(this ) {
5658 return compute.apply (descriptors.keys)
5759 }
5860 }
5961
60- protected fun < R > forEachDescriptor (forEach : Consumer <ParsedDescriptor >) {
62+ protected fun forEachDescriptor (forEach : Consumer <ParsedDescriptor >) {
6163 synchronized(this ) { descriptors.keys.forEach(forEach) }
6264 }
6365
@@ -85,8 +87,7 @@ abstract class SocketOwner<T>(val socketClass: Class<T>) {
8587 predicateInstance : Predicate <T >
8688 ): T ? {
8789 synchronized(this ) {
88- return descriptors
89- .keys
90+ return descriptors.keys
9091 .filter { predicateDescriptor.test(it) }
9192 .sortedWith(order)
9293 .map { instantiatePlug(descriptors[it]!! ) }
@@ -120,7 +121,7 @@ abstract class SocketOwner<T>(val socketClass: Class<T>) {
120121 open fun removeHook (plugDescriptor : PlugDescriptor ) {}
121122 }
122123
123- abstract class SingletonById <T >(socketClass : Class <T >) : SocketOwner<T>(socketClass) {
124+ abstract class SingletonById <T : Any >(socketClass : Class <T >) : SocketOwner<T>(socketClass) {
124125 private val descriptorById = mutableMapOf<String , PlugDescriptor >()
125126 private val singletonById = mutableMapOf<String , T >()
126127 init {
@@ -179,7 +180,7 @@ abstract class SocketOwner<T>(val socketClass: Class<T>) {
179180 companion object {
180181 const val KEY_ID = " id"
181182
182- fun <T > metadataGeneratorFor (socketClass : Class <T >): Function <T , String > {
183+ fun <T : Any > metadataGeneratorFor (socketClass : Class <T >): Function <T , String > {
183184 var firstAttempt: Throwable ? = null
184185 try {
185186 val socketField = socketClass.getDeclaredField(" socket" )
@@ -204,22 +205,22 @@ abstract class SocketOwner<T>(val socketClass: Class<T>) {
204205 }
205206 }
206207
207- private fun <T > generatorForSocket (socket : SocketOwner <T >): Function <T , String > {
208+ private fun <T : Any > generatorForSocket (socket : SocketOwner <T >): Function <T , String > {
208209 return Function { plug ->
209210 try {
210211 socket.asDescriptor(plug)
211212 } catch (e: Exception ) {
212213 if (rootCause(e) is ClassNotFoundException ) {
213214 throw RuntimeException (
214215 " Unable to generate metadata for " +
215- plug!! ::class .java +
216+ plug::class .java +
216217 " , missing transitive dependency " +
217218 rootCause(e).message,
218219 e)
219220 } else {
220221 throw RuntimeException (
221222 " Unable to generate metadata for " +
222- plug!! ::class .java +
223+ plug::class .java +
223224 " , make sure that its metadata methods return simple constants: " +
224225 e.message,
225226 e)
0 commit comments