public static Codec<BulkCommand> getCommandCodec() { return Framework.getService(CodecService.class).getCodec(DEFAULT_CODEC, BulkCommand.class); }
@Override public void start(ComponentContext context) { super.start(context); List<CodecDescriptor> descriptors = getDescriptors(XP_CODEC); for (CodecDescriptor descriptor : descriptors) { log.debug("Creating CodecFactory : {}", descriptor.klass::getSimpleName); try { CodecFactory factory = descriptor.klass.getDeclaredConstructor().newInstance(); factory.init(descriptor.options); codecFactories.put(descriptor.getId(), factory); } catch (ReflectiveOperationException e) { throw new IllegalArgumentException("Invalid class: " + getClass(), e); } } }
@Override public <T> Codec<T> getCodec(String codecName, Class<T> objectClass) { if (!codecFactories.containsKey(codecName)) { throw new IllegalArgumentException( String.format("Invalid codec name: %s, requested for class: %s", codecName, objectClass)); } // TODO codec are thread safe so we can use a cache codecName, objectClass -> codec return codecFactories.get(codecName).newCodec(objectClass); } }
public static Codec<BulkBucket> getBucketCodec() { return Framework.getService(CodecService.class).getCodec(DEFAULT_CODEC, BulkBucket.class); }
public static Codec<BulkStatus> getStatusCodec() { return Framework.getService(CodecService.class).getCodec(DEFAULT_CODEC, BulkStatus.class); }
public static Codec<DataBucket> getDataBucketCodec() { return Framework.getService(CodecService.class).getCodec(DEFAULT_CODEC, DataBucket.class); } }
protected Codec<Record> getCodec() { return Framework.getService(CodecService.class).getCodec(getCodecName(), Record.class); }
protected Settings getSettings(StreamProcessorDescriptor descriptor) { CodecService codecService = Framework.getService(CodecService.class); Codec<Record> actualCodec = descriptor.defaultCodec == null ? codecService.getCodec(DEFAULT_CODEC, Record.class) : codecService.getCodec(descriptor.defaultCodec, Record.class); Settings settings = new Settings(descriptor.defaultConcurrency, descriptor.defaultPartitions, actualCodec, descriptor.getDefaultPolicy()); descriptor.computations.forEach(comp -> settings.setConcurrency(comp.name, comp.concurrency)); descriptor.policies.forEach(policy -> settings.setPolicy(policy.name, descriptor.getPolicy(policy.name))); descriptor.streams.forEach(stream -> settings.setPartitions(stream.name, stream.partitions)); descriptor.streams.stream() .filter(stream -> Objects.nonNull(stream.codec)) .forEach(stream -> settings.setCodec(stream.name, codecService.getCodec(stream.codec, Record.class))); return settings; }
streamProcessor = new LogStreamProcessor(service.getLogManager(BULK_LOG_MANAGER_NAME)); CodecService codecService = Framework.getService(CodecService.class); Codec<Record> codec = codecService.getCodec(RECORD_CODEC, Record.class);
Framework.getService(CodecService.class).getCodec(RECORD_CODEC, Record.class)); logAppender.append(shardKey, Record.of(command.getId(), commandAsBytes)); return command.getId();