Skip to main content
Announcements
See what Drew Clarke has to say about the Qlik Talend Cloud launch! READ THE BLOG
cancel
Showing results for 
Search instead for 
Did you mean: 
FTB
Contributor
Contributor

How to use "injected" services ?

Hi, I am no Java expert but I want some help to make a custom component. It's a processor component.

I got some questions here :

How to use injected services ? I try to find how but can't find a real answer.

For example, I want to use the RecordBuilderFactory. I can't create an instance of it since it's a interface and also there is this recommandation :

" If you create the instances yourself, you cannot benefit from these features, nor from the memory optimization done by the runtime. Prefer reusing the framework instances over custom ones. "

So there may be already existing instances of them.

If I declare a variable and use a method, I got the NULL pointer exception.

What I really want to know is how to create a Record( using string or any other type for example). In the documentation, there is an example :

public Record createRecord() {

return factory.newRecordBuilder()

.withString("name", "Gary")

.withDateTime("date", ZonedDateTime.of(LocalDateTime.of(2011, 2,

6, 8, 0), ZoneId.of("UTC")))

.build();

}

There is no explanation on how to have the factory instance.

And there is this recommandation :

" Record is a Java interface but never implement it yourself to ensure

compatibility with the different Talend products. Follow the guidelines

below. " means I should not implement myself the interfaces.

Labels (4)
1 Solution

Accepted Solutions
undx
Creator
Creator

Hi @Fabrice Balan​ ,

You don't have to create services by hand, just use the annotation `@Service` ( https://github.com/Talend/component-runtime/blob/master/component-api/src/main/java/org/talend/sdk/component/api/service/Service.java ) .

Here's a sample usage : https://github.com/Talend/connectors-se/blob/master/couchbase/src/main/java/org/talend/components/couchbase/service/CouchbaseService.java#L79-L83

Hope that it will help...

 

Best regards.

 

 

View solution in original post

4 Replies
undx
Creator
Creator

Hi @Fabrice Balan​ ,

You don't have to create services by hand, just use the annotation `@Service` ( https://github.com/Talend/component-runtime/blob/master/component-api/src/main/java/org/talend/sdk/component/api/service/Service.java ) .

Here's a sample usage : https://github.com/Talend/connectors-se/blob/master/couchbase/src/main/java/org/talend/components/couchbase/service/CouchbaseService.java#L79-L83

Hope that it will help...

 

Best regards.

 

 

FTB
Contributor
Contributor
Author

Thanks for your answer.

 

Should I declare them in Service class ?

 

undx
Creator
Creator

Hi @Fabrice Balan​ ,

Not necessary but usually in your business logic modules.

best regards.

 

FTB
Contributor
Contributor
Author

Thank you