use of org.apache.storm.tuple.Fields in project storm by apache.
the class ByTopicRecordTranslator method cacheNCheckFields.
private void cacheNCheckFields(RecordTranslator<K, V> translator) {
for (String stream : translator.streams()) {
Fields fromTrans = translator.getFieldsFor(stream);
Fields cached = streamToFields.get(stream);
if (cached != null && !fromTrans.equals(cached)) {
throw new IllegalArgumentException("Stream " + stream + " currently has Fields of " + cached + " which is not the same as those being added in " + fromTrans);
}
if (cached == null) {
streamToFields.put(stream, fromTrans);
}
}
}
use of org.apache.storm.tuple.Fields in project storm by apache.
the class ByTopicRecordTranslatorTest method testTopicCollision.
@Test(expected = IllegalStateException.class)
public void testTopicCollision() {
ByTopicRecordTranslator<String, String> trans = new ByTopicRecordTranslator<>((r) -> new Values(r.key()), new Fields("key"));
trans.forTopic("foo", (r) -> new Values(r.value()), new Fields("value"), "foo1");
trans.forTopic("foo", (r) -> new Values(r.key(), r.value()), new Fields("key", "value"), "foo2");
}
use of org.apache.storm.tuple.Fields in project storm by apache.
the class ByTopicRecordTranslatorTest method testFieldCollision.
@Test(expected = IllegalArgumentException.class)
public void testFieldCollision() {
ByTopicRecordTranslator<String, String> trans = new ByTopicRecordTranslator<>((r) -> new Values(r.key()), new Fields("key"));
trans.forTopic("foo", (r) -> new Values(r.value()), new Fields("value"));
}
use of org.apache.storm.tuple.Fields in project storm by apache.
the class DefaultRecordTranslatorTest method testBasic.
@Test
public void testBasic() {
DefaultRecordTranslator<String, String> trans = new DefaultRecordTranslator<>();
assertEquals(Arrays.asList("default"), trans.streams());
assertEquals(new Fields("topic", "partition", "offset", "key", "value"), trans.getFieldsFor("default"));
ConsumerRecord<String, String> cr = new ConsumerRecord<>("TOPIC", 100, 100, "THE KEY", "THE VALUE");
assertEquals(Arrays.asList("TOPIC", 100, 100l, "THE KEY", "THE VALUE"), trans.apply(cr));
}
use of org.apache.storm.tuple.Fields in project storm by apache.
the class KafkaTridentSpoutManager method getFields.
Fields getFields() {
if (fields == null) {
RecordTranslator<K, V> translator = kafkaSpoutConfig.getTranslator();
Fields fs = null;
for (String stream : translator.streams()) {
if (fs == null) {
fs = translator.getFieldsFor(stream);
} else {
if (!fs.equals(translator.getFieldsFor(stream))) {
throw new IllegalArgumentException("Trident Spouts do not support multiple output Fields");
}
}
}
fields = fs;
}
LOG.debug("OutputFields = {}", fields);
return fields;
}
Aggregations