Before implementing a component logic and configuration, you need to specify the family and the category it belongs to, the component type and name, as well as its name and a few other generic parameters. This set of metadata, and more particularly the family, categories and component type, is mandatory to recognize and load the component to Talend Studio or Cloud applications.
Some of these parameters are handled at the project generation using the starter, but can still be accessed and updated later on.
Component family and categories
The family and category of a component is automatically written in the package-info.java
file of the component package, using the @Components
annotation. By default, these parameters are already configured in this file when you import your project in your IDE. Their value correspond to what was defined during the project definition with the starter.
Multiple components can share the same family and category value, but the family + name pair must be unique for the system.
A component can belong to one family only and to one or several categories. If not specified, the category defaults to Misc
.
The package-info.java
file also defines the component family icon, which is different from the component icon. You can learn how to customize this icon in this section.
Here is a sample package-info.java
:
@Components(name = "my_component_family", categories = "My Category")
package org.talend.sdk.component.sample;
import org.talend.sdk.component.api.component.Components;
Another example with an existing component:
@Components(name = "Salesforce", categories = {"Business", "Cloud"})
package org.talend.sdk.component.sample;
import org.talend.sdk.component.api.component.Components;
Component icon and version
Components can require metadata to be integrated in Talend Studio or Cloud platforms.
Metadata is set on the component class and belongs to the org.talend.sdk.component.api.component
package.
When you generate your project and import it in your IDE, icon and version both come with a default value.
-
@Icon: Sets an icon key used to represent the component. You can use a custom key with the
custom()
method but the icon may not be rendered properly. The icon defaults to Check.
Replace it with a custom icon, as described in this section. -
@Version: Sets the component version. 1 by default.
Learn how to manage different versions and migrations between your component versions in this section.
For example:
@Version(1)
@Icon(FILE_XML_O)
@PartitionMapper(name = "jaxbInput")
public class JaxbPartitionMapper implements Serializable {
// ...
}
Defining a custom icon for a component or component family
Every component family and component needs to have a representative icon.
You have to define a custom icon as follows:
-
For the component family the icon is defined in the
package-info.java
file. -
For the component itself, you need to declare the icon in the component class.
Custom icons must comply with the following requirements:
-
Icons must be stored in the
src/main/resources/icons
folder of the project. -
Icon file names need to match one of the following patterns:
IconName.svg
orIconName_icon32.png
. The latter will run in degraded mode in Talend Cloud. ReplaceIconName
by the name of your choice. -
The icon size for PNG must be 32x32. For SVG, the viewBox must be 16x16.
-
Icons must be squared, even for the SVG format.
@Icon(value = Icon.IconType.CUSTOM, custom = "IconName")
Note that SVG icons are not supported by Talend Studio and can cause the deployment of the component to fail. If you aim at deploying a custom component to Talend Studio, specify PNG icons or use the Maven (or Gradle) Ultimately, you can also remove SVG parameters from the |
Component extra metadatas
For any purpose, you can also add user defined metadatas to your component with the @Metadatas
annotation.
Example:
@Processor(name = "my_processor")
@Metadatas({
@Metadata(key = "user::value0", value = "myValue0"),
@Metadata(key = "user::value1", value = "myValue1")
})
public class MyProcessor {
}
You can also use a SPI implementing org.talend.sdk.component.spi.component.ComponentMetadataEnricher
.