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)); }
private ComponentId createMetaId(final Container container, final ComponentFamilyMeta.BaseMeta<Object> meta) { return new ComponentId(meta.getId(), meta.getParent().getId(), meta.getParent().getPlugin(), ofNullable(container.get(ComponentManager.OriginalId.class)) .map(ComponentManager.OriginalId::getValue) .orElse(container.getId()), meta.getParent().getName(), meta.getName()); }
BaseMeta(final ComponentFamilyMeta parent, final String name, final String icon, final int version, final Class<?> type, final List<ParameterMeta> parameterMetas, final MigrationHandler migrationHandler, final Function<Map<String, String>, T> instantiator, final boolean validated) { this.parent = parent; this.name = name; this.icon = icon; this.version = version; this.packageName = ofNullable(type.getPackage()).map(Package::getName).orElse(""); this.parameterMetas = parameterMetas; this.migrationHandler = migrationHandler; this.type = type; this.instantiator = instantiator; this.validated = validated; this.id = IdGenerator.get(parent.getPlugin(), parent.getName(), name); }
private ComponentFamilyMeta getOrCreateComponent(final String component) { final String comp = ofNullable(component).filter(s -> !s.isEmpty()).orElseGet(components::family); if (comp.isEmpty()) { throw new IllegalArgumentException("Missing component"); } return this.component == null || !component.equals(this.component.getName()) ? (this.component = new ComponentFamilyMeta(plugin, asList(components.categories()), findIcon(familyAnnotationElement), comp, Class.class.isInstance(familyAnnotationElement) ? getPackage(Class.class.cast(familyAnnotationElement)) : "")) : this.component; }
.stream() .map(familyMeta -> Stream .concat(familyMeta.getPartitionMappers().values().stream(), familyMeta.getProcessors().values().stream()) .flatMap(b -> b.getParameterMetas().stream()) .flatMap(this::flatten) .filter(RepositoryModelBuilder::isConfiguration) .map(p -> createConfig(familyMeta.getPlugin(), services, p, familyMeta.getName(), familyMeta.getIcon(), migrationHandlerFactory)) .collect(toMap(c -> c.getMeta().getJavaType(), identity(), (config1, config2) -> config1, LinkedHashMap::new)) .collect(() -> { final Family family = new Family(); family.setId(familyMeta.getId()); family.setMeta(familyMeta); return family;
@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); } }
.flatMap(c -> Stream .concat(c .getPartitionMappers() .values() .stream() .map(p -> new Component(p.getParent().getCategories(), p.getParent().getName(), p.getName(), .orElse(p.getName()), p.getIcon(), emptyList(), singletonList("MAIN"))), c.getProcessors().values().stream().map(p -> { final Method listener = p.getListener(); return new Component(p.getParent().getCategories(), p.getParent().getName(), p.getName(),
final Container container = ofNullable(componentDao.findById(id)) .map(meta -> manager .findPlugin(meta.getParent().getPlugin()) .orElseThrow(() -> new WebApplicationException(Response .status(NOT_FOUND) .entity(new ErrorPayload(ErrorDictionary.PLUGIN_MISSING, "No plugin '" + meta.getParent().getPlugin() + "'")) .build()))) .orElseThrow(() -> new WebApplicationException(Response .stream() .flatMap(f -> Stream .concat(f.getPartitionMappers().values().stream(), f.getProcessors().values().stream())) .filter(c -> c.getId().equals(id)) .findFirst()
@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())); }
final ClassLoader loader = container.getLoader(); final String icon = meta.getIcon(); final String familyIcon = meta.getParent().getIcon(); final IconResolver.Icon iconContent = iconResolver.resolve(container, icon); final IconResolver.Icon iconFamilyContent = iconResolver.resolve(container, familyIcon); final String familyDisplayName = meta.getParent().findBundle(loader, locale).displayName().orElse(meta.getParent().getName()); final List<String> categories = ofNullable(meta.getParent().getCategories()) .map(vals -> vals .stream() .map(this::normalizeCategory) .map(category -> category.replace("${family}", meta.getParent().getName())) // not .findBundle(loader, locale) .category(category) .orElseGet(() -> category .replace("/" + meta.getParent().getName() + "/", "/" + familyDisplayName + "/"))) .collect(toList())) .orElseGet(Collections::emptyList); return new ComponentIndex( new ComponentId(meta.getId(), meta.getParent().getId(), plugin, ofNullable(originalId).map(ComponentManager.OriginalId::getValue).orElse(plugin), meta.getParent().getName(), meta.getName()), meta.findBundle(loader, locale).displayName().orElse(meta.getName()), familyDisplayName, new Icon(icon, iconContent == null ? null : iconContent.getType(),
new ComponentInstanceImpl(doInvoke(constructor, parameterFactory.apply(config)), plugin, component.getName(), name), org.talend.sdk.component.runtime.output.Processor.class)) : config -> new ProcessorImpl(this.component.getName(), name, plugin, ofNullable(config) .map(it -> it doInvoke(constructor, parameterFactory.apply(config))); component .getProcessors() .put(name, new ComponentFamilyMeta.ProcessorMeta(component, name, findIcon(type), findVersion(type),
return null; })).filter(Objects::nonNull).map(meta -> { final Optional<Container> plugin = manager.findPlugin(meta.getParent().getPlugin()); if (!plugin.isPresent()) { errors .put(meta.getId(), new ErrorPayload(PLUGIN_MISSING, "No plugin '" + meta.getParent().getPlugin() + "'")); return null; componentDetail .setActions(actionsService .findActions(meta.getParent().getName(), container, locale, meta, meta.getParent().findBundle(container.getLoader(), locale)));
@Override Map<String, ? extends ComponentFamilyMeta.BaseMeta> findMeta(final ComponentFamilyMeta family) { return family.getPartitionMappers(); } },
@Override Map<String, ? extends ComponentFamilyMeta.BaseMeta> findMeta(final ComponentFamilyMeta family) { return family.getProcessors(); } };
.build(); final Optional<Container> plugin = manager.findPlugin(meta.getPlugin()); if (!plugin.isPresent()) { return Response .status(Response.Status.NOT_FOUND) .entity(new ErrorPayload(ErrorDictionary.PLUGIN_MISSING, "No plugin '" + meta.getPlugin() + "' for identifier: " + id)) .type(APPLICATION_JSON_TYPE) .build(); final IconResolver.Icon iconContent = iconResolver.resolve(plugin.get(), meta.getIcon()); if (iconContent == null) { return Response
.filter(f -> !f.getConfigs().isEmpty()) .flatMap(family -> { final FamilyBundle resourcesBundle = family.getMeta().findBundle(c.getLoader(), locale); final ConfigTypeNode node = new ConfigTypeNode(); node.setId(family.getId()); node.setName(family.getMeta().getName()); node.setDisplayName(resourcesBundle.displayName().orElse(family.getMeta().getName())); createNode(family.getId(), family.getMeta().getName(), family.getConfigs().stream(), resourcesBundle, c, locale, filter, lightPayload));
final Optional<Container> plugin = manager.findPlugin(meta.getParent().getPlugin()); if (!plugin.isPresent()) { return Response .status(Response.Status.NOT_FOUND) .entity(new ErrorPayload(ErrorDictionary.PLUGIN_MISSING, "No plugin '" + meta.getParent().getPlugin() + "' for identifier: " + id)) .type(APPLICATION_JSON_TYPE) .build();
public Set<ActionReference> getActionReference(final ComponentFamilyMeta.BaseMeta<Object> meta, final FamilyBundle familyBundle) { return getActionReference(toStream(meta.getParameterMetas()), meta.getParent().getName(), familyBundle); }
public String createOrUpdate(final ComponentFamilyMeta meta) { final String id = meta.getId(); data.put(id, meta); return id; }
registry.getComponents().computeIfAbsent(c.getName(), n -> c); if (componentFamilyMeta != c) { if (componentFamilyMeta .getProcessors() .keySet() .stream() .anyMatch(k -> c.getProcessors().keySet().contains(k))) { throw new IllegalArgumentException("Conflicting processors in " + c); .getPartitionMappers() .keySet() .stream() .anyMatch(k -> c.getPartitionMappers().keySet().contains(k))) { throw new IllegalArgumentException("Conflicting mappers in " + c); componentFamilyMeta.getProcessors().putAll(c.getProcessors()); componentFamilyMeta.getPartitionMappers().putAll(c.getPartitionMappers());