private void sendEvent0(Object target, Context appContext, Method method, Object[] arguments) {
final SendEvent analyticsAnnotation = method.getAnnotation(SendEvent.class);
final Tracker tracker = trackerFrom(appContext, analyticsAnnotation.trackerName());
if (tracker == null) {
return;
}
final HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder();
try {
final FieldBuilder<String> categoryBuilder = createStringFieldBuilder(analyticsAnnotation.categoryBuilder());
final String category = categoryBuilder.build(Fields.CATEGORY, analyticsAnnotation.category(), target, method, arguments);
builder.setCategory(category);
final FieldBuilder<String> actionBuilder = createStringFieldBuilder(analyticsAnnotation.actionBuilder());
final String action = actionBuilder.build(Fields.ACTION, analyticsAnnotation.action(), target, method, arguments);
builder.setAction(action);
final FieldBuilder<String> labelBuilder = createStringFieldBuilder(analyticsAnnotation.labelBuilder());
final String label = labelBuilder.build(Fields.LABEL, analyticsAnnotation.label(), target, method, arguments);
if (!TextUtils.isEmpty(label)) {
builder.setLabel(label);
}
final FieldBuilder<Long> valueBuilder = createLongFieldBuilder(analyticsAnnotation.valueBuilder());
final Long value = valueBuilder.build(Fields.VALUE, analyticsAnnotation.value(), target, method, arguments);
if (value != null) {
builder.setValue(value);
}
HitInterceptor hitInterceptor = hitInterceptorFrom(appContext, analyticsAnnotation.trackerName());
hitInterceptor.onEvent(new EventBuilderDelegate(builder));
} finally {
tracker.send(builder.build());
}
}