public IInstrumentationApplier getInstrumentationApplier(ISensorAssignment<?> sensorAssignment, Environment environment) throws IllegalArgumentException {
Class<?> sensorAssigmentClass = sensorAssignment.getClass();
if (TimerMethodSensorAssignment.class.isAssignableFrom(sensorAssigmentClass)) {
return new TimerMethodSensorInstrumentationApplier((TimerMethodSensorAssignment) sensorAssignment, environment, registrationService);
} else if (InvocationStartMethodSensorAssignment.class.isAssignableFrom(sensorAssigmentClass)) {
return new InvocationStartMethodSensorInstrumentationApplier((InvocationStartMethodSensorAssignment) sensorAssignment, environment, registrationService);
} else if (ExceptionSensorAssignment.class.isAssignableFrom(sensorAssigmentClass)) {
return new ExceptionSensorInstrumentationApplier((ExceptionSensorAssignment) sensorAssignment, environment, registrationService);
} else if (SpecialMethodSensorAssignment.class.isAssignableFrom(sensorAssigmentClass)) {
return new SpecialInstrumentationApplier((SpecialMethodSensorAssignment) sensorAssignment, environment, registrationService);
} else if (MethodSensorAssignment.class.isAssignableFrom(sensorAssigmentClass)) {
return new MethodSensorInstrumentationApplier((MethodSensorAssignment) sensorAssignment, environment, registrationService);
}
throw new IllegalArgumentException("Instrumentation applier can be created. Assignment " + sensorAssignment + " is of unknow type.");
}