Jun 222011
 

Due to a recent project I started working on a talend component. This blog post is not about how to do this from scratch, I am quite sure that Talend provides enough tutorials about it, alternatively you can do it like me and just use existing components as reference and build your own one (work environments without internet access suck!)

Prior reading this You Should Have:

  • A basic understanding of Talend Data Integration solutions. 
  • A basic understanding how to develop and deploy Talend (Java) components.
  • Knowledge about maven, maven build plugins and ant builds.

My Environment is:

  • Mac OS 10.6.6 with Java 1.6
  • Eclipse 3.5.1 Java EE editon
  • Jaspersoft ETL 4.1.2 (aka Talend Open Studio 4.1.2)

 

Everything I describe applies for Jaspersoft ETL, Talend Open Studio and Talend Integration suite. The <Jaspersoft ETL workspace dir> is my local Talend repository folder – the Eclipse workspace folder of Jaspersoft ETL.

 

At The Beginning I found a few items to struggle with:

  • Project structure: 
    • src/main/template: contains all files which are patched during the build process such as the component registration file.
    • src/main/resources: contains all resources such as jet templates, icons, message properties
    • src/test/java: reference implementation of the functionality which shall be in the component
    • for the build (see below):
      • src/assembly, pom.xml for the maven build
      • build.xml for the ant wrapper.
  • Editing Template files: By default Eclipse handles *.javajet files as text files without code completion and syntax highlighting. If you download the m2t JET from http://download.eclipse.org/modeling/m2t/updates/releases/ an editor will be installed. Now go to Preferences > General > Editors > File Associations and add “*.javajet” as extension. Select it and click on the second Add.. button and select “JET-Java Emitter Templates Editor”. Click Ok. Reopen the javajet templates. 
  • To refresh the javajet templates in Talend without restarting it just hit Control+Shift+Function+F3 to re-initialize the code generation.
  • Dealing with JETorg.eclipse.emf.codegen.jet.JETException: The generated java files are in a specific folder. These files can help to understand what the compilation error caused. I linked the folder into my project
    ln -s <Jaspersoft ETL workspace dir>/.JETEmitters/src/org/talend/designer/codegen/translators/<family> ./gen-src
    ln -s <Jaspersoft ETL workspace dir>/.metadata/.log ./log.log
    The log file i monitor with tail on command line.  

The Build And The Component File

I setup maven to maintain the dependencies for my project as I don’t want to collect everything manually, I also want to be able to easily migrate to a later version. Now, as you might now, the component descriptor file requires a list of component specific imports. For obvious reasons I did not want to create this list manually, therefore I wrote a little ant script which wraps the maven build and patches the component descriptor.

The maven build file is responsible to collect all required files and bundle it as a single zip file. I used

  • the maven dependencies plugin to download all required jars into the target folder during prepare-package phase.
  • the maven assembly plugin for collecting all resources and bundling into a zip file during package phase.

The ant build is has only a few targets

  • a prepare target which triggers mvn clean prepare-package
  • a patch method which utilizes the (evil) antcontrib library to iterate over the jars and collect their names which are written in the required structure into the component file. 
  • a package target which triggers mvn package.

 

Popularity: 33% [?]

Tags: , , , , , , , ,
Apr 302011
 

 

No, <name>, I don’t believe that. - Nein, <name>, das glaube ich nicht.
No, <name>, it doesn’t work like that. - Nein, <name>, das funktioniert so nicht. 
No, <name>, you should think about this again. - Nein, <name>, darueber solltest Du noch mal nachdenken.
No, <name>, I doubt that. - Nein, <name>, das bezweifele ich. 
No, <name>, do you think I am stupid? – Nein, <name>, haeltst Du mich fuer bloed?

This small list got assembled on demand for my husband to be in preparation for one of his up-coming work meetings. Contributions are welcome :)

Popularity: 2% [?]

Tags: , , ,
Apr 302011
 

Jim planned to do some breakfast and asked me what I would like. I hadn’t had a boiled egg in ages, so I was asking him for a soft-boiled egg for me. As he – as a good cook as he is – doesn’t know how to cook these, the day started with Loriot, a German lesson and some facts about marriage which a freshly engaged couple would swear it will never happen to us…

Popularity: 2% [?]

Tags: , , ,
Apr 282011
 

As WordPress 3.1 supports excluding categories from the feed I wonder if anyone of you would be interested to have the weekly aggregation of feeds about shared / happened / twittered / foursquared items excluded from the feed. Just ping on twitter / via mail or comment if you want to keep or exclude this.

Cheers!

Popularity: 2% [?]

Tags: , , ,