@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); } } }