use of org.talend.sdk.component.api.processor.ElementListener in project component-runtime by Talend.
the class FormatterProcessor method format.
@ElementListener
public void format(final JsonObject data, @Output("formatted") final OutputEmitter<JsonObject> formatted) {
if (data == null) {
return;
}
final JsonObjectBuilder builder = factory.createObjectBuilder();
if (lowerCase) {
data.keySet().forEach(k -> builder.add(k, data.getString(k).toLowerCase(Locale.ROOT)));
} else {
data.keySet().forEach(k -> builder.add(k, data.getString(k).toUpperCase(Locale.ROOT)));
}
formatted.emit(builder.build());
}
use of org.talend.sdk.component.api.processor.ElementListener in project component-runtime by Talend.
the class ModelVisitor method validateProcessor.
private void validateProcessor(final Class<?> input) {
final List<Method> producers = Stream.of(input.getMethods()).filter(m -> m.isAnnotationPresent(ElementListener.class)).collect(toList());
if (producers.size() != 1) {
throw new IllegalArgumentException(input + " must have a single @ElementListener method");
}
if (Stream.of(producers.get(0).getParameters()).filter(p -> {
if (p.isAnnotationPresent(Output.class)) {
if (!ParameterizedType.class.isInstance(p.getParameterizedType())) {
throw new IllegalArgumentException("@Output parameter must be of type OutputEmitter");
}
final ParameterizedType pt = ParameterizedType.class.cast(p.getParameterizedType());
if (OutputEmitter.class != pt.getRawType()) {
throw new IllegalArgumentException("@Output parameter must be of type OutputEmitter");
}
return false;
}
return true;
}).count() < 1) {
throw new IllegalArgumentException(input + " doesn't have the input parameter on its producer method");
}
Stream.of(input.getMethods()).filter(m -> m.isAnnotationPresent(BeforeGroup.class) || m.isAnnotationPresent(AfterGroup.class)).forEach(m -> {
if (m.getParameterCount() > 0) {
throw new IllegalArgumentException(m + " must not have any parameter");
}
});
}
use of org.talend.sdk.component.api.processor.ElementListener in project component-runtime by Talend.
the class FormatterProcessor method length.
@ElementListener
public void length(@Input("firstName") final JsonObject firstName, @Input("lastName") final JsonObject lastName, @Output("formatted-firstName") final OutputEmitter<JsonObject> lowerCase, @Output("formatted-lastName") final OutputEmitter<JsonObject> upperCase) {
final JsonObjectBuilder internal = factory.createObjectBuilder().add("key", (firstName == null ? lastName : firstName).getJsonObject("$$internal").getString("key"));
lowerCase.emit(firstName == null ? null : factory.createObjectBuilder().add("data", firstName.getString("data").toLowerCase(ROOT)).add("$$internal", internal).build());
upperCase.emit(lastName == null ? null : factory.createObjectBuilder().add("data", lastName.getString("data").toUpperCase(ROOT)).add("$$internal", internal).build());
}
use of org.talend.sdk.component.api.processor.ElementListener in project component-runtime by Talend.
the class ConcatProcessor method cat.
@ElementListener
public void cat(@Input("str1") final JsonObject str1, @Input("str2") final JsonObject str2, @Output final OutputEmitter<JsonObject> concat) {
if (str1 == null && str2 == null)
return;
final JsonObjectBuilder builder = factory.createObjectBuilder();
if (str1 != null) {
str1.keySet().forEach(k -> builder.add(k, str1.get(k)));
}
if (str2 != null) {
str2.keySet().forEach(k -> builder.add(k, str2.get(k)));
}
concat.emit(builder.build());
}
Aggregations