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; }
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); }
@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); } }
public Set<ActionReference> getActionReference(final ComponentFamilyMeta.BaseMeta<Object> meta, final FamilyBundle familyBundle) { return getActionReference(toStream(meta.getParameterMetas()), meta.getParent().getName(), familyBundle); }
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()); }
.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,
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));
@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())); }
registry.getComponents().computeIfAbsent(c.getName(), n -> c); if (componentFamilyMeta != c) { if (componentFamilyMeta
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 .category(category) .orElseGet(() -> category .replace("/" + meta.getParent().getName() + "/", "/" + familyDisplayName + "/"))) .collect(toList())) 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(),
@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())); }
componentDetail .setActions(actionsService .findActions(meta.getParent().getName(), container, locale, meta, meta.getParent().findBundle(container.getLoader(), locale)));