@Override Map<String, ? extends ComponentFamilyMeta.BaseMeta> findMeta(final ComponentFamilyMeta family) { return family.getPartitionMappers(); } },
private <T> ComponentFamilyMeta.BaseMeta<? extends Lifecycle> findMeta(final Class<T> componentType) { return asManager() .find(c -> c.get(ContainerComponentRegistry.class).getComponents().values().stream()) .flatMap(f -> Stream .concat(f.getProcessors().values().stream(), f.getPartitionMappers().values().stream())) .filter(m -> m.getType().getName().equals(componentType.getName())) .findFirst() .orElseThrow(() -> new IllegalArgumentException("No component " + componentType)); }
public Optional<Mapper> findMapper(final String plugin, final String name, final int version, final Map<String, String> configuration) { return find(pluginContainer -> Stream .of(pluginContainer .get(ContainerComponentRegistry.class) .getComponents() .get(container.buildAutoIdFromName(plugin)))) .filter(Objects::nonNull) .map(component -> ofNullable(component.getPartitionMappers().get(name)) .map(mapper -> mapper .getInstantiator() .apply(configuration == null ? null : mapper.getMigrationHandler().migrate(version, configuration))) .map(Mapper.class::cast)) .findFirst() .flatMap(identity()); }
.stream() .flatMap(c -> Stream .concat(c.getPartitionMappers().values().stream(), c.getProcessors().values().stream())) .peek(componentDao::createOrUpdate) .map(ComponentFamilyMeta.BaseMeta::getId)
@Override protected void doExecute() throws MojoExecutionException, MojoFailureException { if (!classes.exists()) { throw new MojoExecutionException("No " + classes); } try (final ComponentManager manager = new ComponentManager(repository, "TALEND-INF/dependencies.txt", "org.talend.sdk.component:type=component,value=%s") { { addPlugin(artifactId, classes.getAbsolutePath()); } }) { final Container container = manager.findPlugin(artifactId).get(); final ContainerComponentRegistry registry = container.get(ContainerComponentRegistry.class); registry.getComponents().values().forEach(c -> { c .getPartitionMappers() .forEach((k, p) -> getLog().info("Found component " + c.getName() + "#" + p.getName())); c .getProcessors() .forEach((k, p) -> getLog().info("Found component " + c.getName() + "#" + p.getName())); }); doWork(manager, container, registry); } }
.stream() .map(familyMeta -> Stream .concat(familyMeta.getPartitionMappers().values().stream(), familyMeta.getProcessors().values().stream()) .flatMap(b -> b.getParameterMetas().stream())
.flatMap(component -> Stream .concat(component .getPartitionMappers() .values() .stream()
.stream() .flatMap(f -> Stream .concat(f.getPartitionMappers().values().stream(), f.getProcessors().values().stream())) .filter(c -> c.getId().equals(id))
.stream() .flatMap(family -> Stream .concat(family.getPartitionMappers().values().stream(), family.getProcessors().values().stream())) .forEach(meta -> {
.getPartitionMappers() .keySet() .stream() .anyMatch(k -> c.getPartitionMappers().keySet().contains(k))) { throw new IllegalArgumentException("Conflicting mappers in " + c); componentFamilyMeta.getPartitionMappers().putAll(c.getPartitionMappers());
.flatMap(c -> Stream .concat(c .getPartitionMappers() .values() .stream()
@Override public void onPartitionMapper(final Class<?> type, final PartitionMapper partitionMapper) { final Constructor<?> constructor = findConstructor(type); final List<ParameterMeta> parameterMetas = parameterModelService .buildParameterMetas(constructor, getPackage(type), new BaseParameterEnricher.Context( LocalConfiguration.class.cast(services.getServices().get(LocalConfiguration.class)))); final Function<Map<String, String>, Object[]> parameterFactory = createParametersFactory(plugin, constructor, services.getServices(), parameterMetas); final String name = of(partitionMapper.name()).filter(n -> !n.isEmpty()).orElseGet(type::getName); final ComponentFamilyMeta component = getOrCreateComponent(partitionMapper.family()); final Function<Map<String, String>, Mapper> instantiator = context.getOwningExtension() != null && context.getOwningExtension().supports(Mapper.class) ? config -> executeInContainer(plugin, () -> context .getOwningExtension() .convert(new ComponentInstanceImpl( doInvoke(constructor, parameterFactory.apply(config)), plugin, component.getName(), name), Mapper.class)) : config -> new PartitionMapperImpl(component.getName(), name, null, plugin, partitionMapper.infinite(), doInvoke(constructor, parameterFactory.apply(config))); component .getPartitionMappers() .put(name, new ComponentFamilyMeta.PartitionMapperMeta(component, name, findIcon(type), findVersion(type), type, parameterMetas, instantiator, migrationHandlerFactory.findMigrationHandler(parameterMetas, type, services), !context.isNoValidation())); }
@Override public void onEmitter(final Class<?> type, final Emitter emitter) { final Constructor<?> constructor = findConstructor(type); final List<ParameterMeta> parameterMetas = parameterModelService .buildParameterMetas(constructor, getPackage(type), new BaseParameterEnricher.Context( LocalConfiguration.class.cast(services.getServices().get(LocalConfiguration.class)))); final Function<Map<String, String>, Object[]> parameterFactory = createParametersFactory(plugin, constructor, services.getServices(), parameterMetas); final String name = of(emitter.name()).filter(n -> !n.isEmpty()).orElseGet(type::getName); final ComponentFamilyMeta component = getOrCreateComponent(emitter.family()); final Function<Map<String, String>, Mapper> instantiator = context.getOwningExtension() != null && context.getOwningExtension().supports(Mapper.class) ? config -> executeInContainer(plugin, () -> context .getOwningExtension() .convert(new ComponentInstanceImpl( doInvoke(constructor, parameterFactory.apply(config)), plugin, component.getName(), name), Mapper.class)) : config -> new LocalPartitionMapper(component.getName(), name, plugin, doInvoke(constructor, parameterFactory.apply(config))); component .getPartitionMappers() .put(name, new ComponentFamilyMeta.PartitionMapperMeta(component, name, findIcon(type), findVersion(type), type, parameterMetas, instantiator, migrationHandlerFactory.findMigrationHandler(parameterMetas, type, services), !context.isNoValidation())); }