public static EndpointCaller initializeEndpointCaller ( Properties properties ) { EndpointCaller ec ; try { LOG . debug ( "Initializing endpoint caller. Checking whether '{}' is in classpath." , TRACING_ENDPOINT_CALLER_CLASSNAME ) ; Class < ? > tracingEndpointCallerClass = Class . forName ( TRACING_ENDPOINT_CALLER_CLASSNAME ) ; Constructor < ? > tracingEndpointCallerConstructor = tracingEndpointCallerClass . getConstructor ( Properties . class ) ; ec = ( EndpointCaller ) tracingEndpointCallerConstructor . newInstance ( properties ) ; LOG . debug ( "Using '{}' instance as endpoint caller object." , TRACING_ENDPOINT_CALLER_CLASSNAME ) ; } catch ( Exception e ) { ec = new BasicEndpointCaller ( properties ) ; LOG . debug ( "Using '{}' instance as endpoint caller object." , BasicEndpointCaller . class . getName ( ) ) ; } return ec ; }
If the TracingEndpointCaller class is in a classpath - use it otherwise use BasicEndpointCaller .