use of org.talend.sdk.component.runtime.input.Input in project component-runtime by Talend.
the class BeamComponentExtensionTest method assertMapper.
private void assertMapper(final Mapper mapper) {
assertNotNull(mapper);
mapper.start();
final Input input = mapper.create();
input.start();
assertEquals(new Sample("a"), input.next());
assertEquals(new Sample("b"), input.next());
assertNull(input.next());
input.stop();
mapper.stop();
}
use of org.talend.sdk.component.runtime.input.Input in project component-runtime by Talend.
the class ExecutionResource method read.
/**
* Read inputs from an instance of mapper. The number of returned records if enforced to be limited to 1000.
* The format is a JSON based format where each like is a json record.
*
* @param family the component family.
* @param component the component name.
* @param size the maximum number of records to read.
* @param configuration the component configuration as key/values.
*/
@POST
@Deprecated
@Produces("talend/stream")
@Path("read/{family}/{component}")
public void read(@Suspended final AsyncResponse response, @Context final Providers providers, @PathParam("family") final String family, @PathParam("component") final String component, @QueryParam("size") @DefaultValue("50") final long size, final Map<String, String> configuration) {
final long maxSize = Math.min(size, MAX_RECORDS);
response.setTimeoutHandler(asyncResponse -> log.warn("Timeout on dataset retrieval"));
response.setTimeout(appConfiguration.datasetRetrieverTimeout(), SECONDS);
executorService.submit(() -> {
final Optional<Mapper> mapperOptional = manager.findMapper(family, component, getConfigComponentVersion(configuration), configuration);
if (!mapperOptional.isPresent()) {
response.resume(new WebApplicationException(Response.status(BAD_REQUEST).entity(new ErrorPayload(COMPONENT_MISSING, "Didn't find the input component")).build()));
return;
}
final Mapper mapper = mapperOptional.get();
mapper.start();
try {
final Input input = mapper.create();
try {
input.start();
response.resume((StreamingOutput) output -> {
Object data;
int current = 0;
while (current++ < maxSize && (data = input.next()) != null) {
if (CharSequence.class.isInstance(data) || Number.class.isInstance(data) || Boolean.class.isInstance(data)) {
final PrimitiveWrapper wrapper = new PrimitiveWrapper();
wrapper.setValue(data);
data = wrapper;
}
inlineStreamingMapper.toJson(data, output);
output.write(EOL);
}
});
} finally {
input.stop();
}
} finally {
mapper.stop();
}
});
}
use of org.talend.sdk.component.runtime.input.Input in project component-runtime by Talend.
the class TaCoKitGuessSchema method guessInputComponentSchemaThroughResult.
private boolean guessInputComponentSchemaThroughResult() throws Exception {
final Mapper mapper = componentManager.findMapper(family, componentName, 1, configuration).orElseThrow(() -> new IllegalArgumentException("Can't find " + family + "#" + componentName));
if (JobStateAware.class.isInstance(mapper)) {
JobStateAware.class.cast(mapper).setState(new JobStateAware.State());
}
Input input = null;
try {
mapper.start();
final ChainedMapper chainedMapper = new ChainedMapper(mapper, mapper.split(mapper.assess()).iterator());
chainedMapper.start();
input = chainedMapper.create();
input.start();
Object rowObject = input.next();
if (rowObject == null) {
return false;
}
if (rowObject instanceof java.util.Map) {
return guessInputSchemaThroughResults(input, (java.util.Map) rowObject);
} else if (rowObject instanceof java.util.Collection) {
throw new Exception("Can't guess schema from a Collection");
} else {
return guessSchemaThroughResultClass(rowObject.getClass());
}
} finally {
if (input != null) {
try {
input.stop();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
try {
mapper.stop();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}
use of org.talend.sdk.component.runtime.input.Input in project component-runtime by Talend.
the class DIBatchSimulationTest method doClose.
private void doClose(final Map<String, Object> globalMap) {
final Mapper mapperMapper = Mapper.class.cast(globalMap.remove("mapperMapper"));
final Input inputMapper = Input.class.cast(globalMap.remove("inputMapper"));
try {
if (inputMapper != null) {
inputMapper.stop();
}
} catch (final RuntimeException re) {
fail(re.getMessage());
} finally {
try {
if (mapperMapper != null) {
mapperMapper.stop();
}
} catch (final RuntimeException re) {
fail(re.getMessage());
}
}
final AutoChunkProcessor processorProcessor = AutoChunkProcessor.class.cast(globalMap.remove("processorProcessor"));
try {
if (processorProcessor != null) {
processorProcessor.stop();
}
} catch (final RuntimeException re) {
fail(re.getMessage());
}
}
use of org.talend.sdk.component.runtime.input.Input in project component-runtime by Talend.
the class QueueMapperTest method execution.
@Test
void execution() {
final QueueMapper mapper = new QueueMapper("test", "test", "test", null);
try {
mapper.setState(new JobStateAware.State());
} catch (final NullPointerException npe) {
// not sexy but for the test it is ok
}
final Input input = mapper.create();
final LoopState lookup = LoopState.lookup(mapper.getStateId());
lookup.push(Json.createObjectBuilder().add("id", 1).build());
lookup.end();
assertEquals(1, JsonObject.class.cast(input.next()).getInt("id"));
assertNull(input.next());
}
Aggregations