@ Override public < T > T getSPI ( Class < T > spiType , ClassLoader loader ) { T returnType = null ; // SPIs provided by framework, defaults can be overridden if ( DeploymentModelFactory . class . equals ( spiType ) ) { returnType = loadService ( spiType , DefaultDeploymentModelFactory . class , loader ) ; } else if ( EndpointMetricsFactory . class . equals ( spiType ) ) { returnType = loadService ( spiType , DefaultEndpointMetricsFactory . class , loader ) ; } else if ( LifecycleHandlerFactory . class . equals ( spiType ) ) { returnType = loadService ( spiType , DefaultLifecycleHandlerFactory . class , loader ) ; } else if ( SecurityAdaptorFactory . class . equals ( spiType ) ) { returnType = loadService ( spiType , DefaultSecurityAdapterFactory . class , loader ) ; } else if ( JMSEndpointResolver . class . equals ( spiType ) ) { returnType = loadService ( spiType , DefaultJMSEndpointResolver . class , loader ) ; } else { // SPI provided by either container or stack integration that has no default implementation returnType = ( T ) loadService ( spiType , null , loader ) ; } if ( returnType == null ) throw Messages . MESSAGES . failedToProvideSPI ( spiType ) ; return returnType ; }
Gets the specified SPI using the provided classloader