One Star

Problem refreshing a component in palette

Hello everybody,
Here is my problem :
1 I create a component in the component designer, I write some code, and I push into the palette. all right, it appears.
2 I use in a Job, all right, it works fine.
3 I modify my component in the designer, push again, all right, still in the palette
4 I run again my Job using this component, and, oh... doesn't take my changes...
5 I check the code generated by the job, indeed, no changes
6 I check the Java Code generated by the palette (Ctrl + Shift + R), it's ok, the code seems to be generated with my changes.
7 I close my job, reopen it, no modifications of my component, I close TOS and reopen TOS and my job, no changes too.
Any idea ?...
Thanks for your help !
13 REPLIES
Employee

Re: Problem refreshing a component in palette

Hello,
If you close your TOS, and reopen, you should have the last version of your component ! -> have you save your work ?
or any error during genarting of javajet ? Talend can keep the last java code of the job.

In Preference Have you set 2 folders, one for component designer, the other for talend palette , or only one ?
If you have set two folders it should work.
If you have set only one, i have some trouble too ! you can use CTRL+Shift+F3 to recompile palette ( and avoid to restart Talend )
No more idea.
One Star

Re: Problem refreshing a component in palette

Thanks for your speedy message ;-)
Well,
If I close, and reopen TOS, indeed, I should have the last version... but if the java code generated is ok, the code 'inserted' in the job is not the good one. And yes, I've saved my work.
In preferences, yes, I've one for the designer and another one for the palette.
So... no more idea...
But the problem is still there...
More precisely, I've made another test :
1 Delete of the 'begin' javajet
2 Push my component => palette refresh ok, no errors
3 In the component palette directory, the 'begin' javajet has been deleted => ok
4 When I close my Job and reopen it, Talend doesn't 'popup' me that component xxx has changed...
5 Indeed, the code still include the code present in 'begin' javajet...
How Talend does to detect a component has changed ?...
Any idea ?...
Employee

Re: Problem refreshing a component in palette

Hello,
My last ideas :
Have you try to run your job ?
Your javajet seems to be good, but talend can't generate the java code of your job, and it's always the last good java code witch is displayed
So the execution of the job fail, with a message like "error to generate code"
Have you change the family of your component between the two push component ?
- go to navigator view : .JETEEmiters /
scr/org/talend/designer/codegen/translators and delete old version.
runtime/org/talend/designer/codegen/translators delete old version too.
One Star

Re: Problem refreshing a component in palette

Well, indeed, I haven't try to run my job...
So I've just ran my job, and... well.
The java code have been generated without error, but my job 'failed', simply because it's not the 'modified code' that have been integrated in the generation...
And, when I've checked the code after the run, the code haven't changed...
'Snif...'
Thanks for your help... but still not working...
One Star

Re: Problem refreshing a component in palette

To answer to your edit,
I don't change the family of my component.
Another element in my manipulations of component, when I created my 'new' component, I reuse a component already existing, in the same category...
I've checked both directories, and... it's not the same content ?
In src/... I've all the files.
In runtime/... I've only the half : only files of the 'old' component are presents... the new component doesn't exist ?...
Employee

Re: Problem refreshing a component in palette

Hello,

Can you upload your component (zip) and export your testing job.
Witch is your TOS version ?
One Star

Re: Problem refreshing a component in palette

I've uploaded here :
https://www.srumip.fr/talend/
2 files, 1st = Job, 2nd = component
I use 4.0.2 r43696
Employee

Re: Problem refreshing a component in palette

Hello,
I have download your files, i can see java code from component !
I have make some code update
Sorry, I can't reproduce your issue.
One Star

Re: Problem refreshing a component in palette

aouch...
thanks for helping...
I think I'm gonna try to make another project and import all my Jobs & co.
One Star

Re: Problem refreshing a component in palette

Good evening,
sorry for revmping an old thread but...i've exactly the same problem!
every time i push a component into the palette, the begin javajet becomes empty!
i've deleted all relevant files in JETemitters, both src and runtime...
One Star

Re: Problem refreshing a component in palette

I'm having the problem too on 5.2.0r86684. Anyone got a solution?
One Star

Re: Problem refreshing a component in palette

up
still having the same issue about unwanted begin file truncation
anyone got a solution to this issue?
One Star

Re: Problem refreshing a component in palette

Same problem here with 5.5 - I created and used a component with only the main part. Then I added begin-file. No matter I publish, restart, delete job, create new job - the begin-file does not generate any code. I'm pretty sure the code of the begin file is no problem:
<%@ jet 
imports="
org.talend.core.model.process.INode 
    org.talend.core.model.process.ElementParameterParser
    org.talend.designer.codegen.config.CodeGeneratorArgument 
org.talend.core.model.metadata.IMetadataTable 
org.talend.core.model.metadata.IMetadataColumn
org.talend.core.model.metadata.types.JavaType
org.talend.core.model.process.IConnection
org.talend.core.model.process.IConnectionCategory
org.talend.core.model.metadata.types.JavaTypesManager
org.talend.core.model.utils.NodeUtil
java.util.List
java.util.Map
"
%>
<% 
    CodeGeneratorArgument codeGenArgument = (CodeGeneratorArgument) argument;
    INode node = (INode)codeGenArgument.getArgument();
    String cid = node.getUniqueName();
    String level = ElementParameterParser.getValue(node,"__LEVEL__");
%>
org.apache.log4j.Level level_<%=cid%> = org.apache.log4j.Level.INFO;
if(<%=level%>.equals("Info")) {
level_<%=cid%> = org.apache.log4j.Level.INFO;
} else if(<%=level%>.equals("Warn")) {
level_<%=cid%> = org.apache.log4j.Level.WARN;
} else if(<%=level%>.equals("Error")) {
level_<%=cid%> = org.apache.log4j.Level.ERROR;
} else if(<%=level%>.equals("Debug")) {
level_<%=cid%> = org.apache.log4j.Level.DEBUG;
}