blob: 5b097af169ccbf33a10eb471b709fc5de416d40f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package kamon
import kamon.util.DynamicAccess
import scala.collection.immutable
import scala.reflect.ClassTag
import scala.util.Try
/**
* Utilities for creating instances from fully qualified class names.
*/
trait ClassLoading {
@volatile private var _dynamicAccessClassLoader = this.getClass.getClassLoader
@volatile private var _dynamicAccess = new DynamicAccess(_dynamicAccessClassLoader)
def classLoader(): ClassLoader =
_dynamicAccessClassLoader
def changeClassLoader(classLoader: ClassLoader): Unit = synchronized {
_dynamicAccessClassLoader = classLoader
_dynamicAccess = new DynamicAccess(_dynamicAccessClassLoader)
}
def createInstance[T: ClassTag](fqcn: String, args: immutable.Seq[(Class[_], AnyRef)]): Try[T] =
_dynamicAccess.createInstanceFor(fqcn, args)
}
|