I have first use custom MDA code generation techniques in 2004, since then I'm searching for generic MDA code generation Framework and I think I found it.
The idea is that if you put a little more effort in the design phase(drawing more UML) this will boost your development a lot.
Plus the fact that most of web(j2ee) code is tedious and I can't see a reason why it can't be generated easily.
So here how I installed,configured and play with androMDA for 2 days completing their tutorial(can't wait to play with state chart diagrams for FrontEnd generation).
What is androMDA : Pack of build processes,templates and UML Profile with extended stereotypes and datatypes through XMI.
My bundle was: JDK 1.5, maven 1.0.2, androMDA-3.2, MagicDraw 9.5 (CE).
Problems:
- as 90% of the OSS-Free projects...there is exactly 1 way to make all this work(+ some obsolete tutorial sentences) - follow the steps zaelot like
- androMDA 3.2 misleading UML profile: it looks that 3.2 supports UML2... but no, androMDA 3.2 only works with UML1.4 and XMI 1.2 (both pretty old)
- UML Tools - ArgoUML (20 or 24) does not work at all with 3.2 UML profile, however MagicDraw 9.5 (community edition) works ok. Have in mind that most recent UML Tools doesn't support UML 1.4 and XMI 1.2 ( most of them : UML2, XMI 2.1 )
I like:
- it actually worked (yes many "Free" projects I've come across doesn't)
- can generate finders
- is not overhead to the overall development process(it can be hooked at design phase)
- can generate almost everything (currently I was able to generate servies,entities,hibernate xmls, value objects,web part)
- can generate complex FrontEnd (still to be verified - state chart diagram)
- pack everything nicely (into EAR of WAR)
- OSS (don't know if this is a plus but you can modify it)
- can be integrated into complex build process (of course)
- try to separate common,generated and potentially custom implemented sources
Tuesday, June 17, 2008
Thursday, June 12, 2008
Reach-IT for ECHA my last project

After 8 years of development it looks over(I'm joining IBM Bulgaria GPSG Department). My Last project was Reach-IT for ECHA(euro chemical agency) it is a overall chemical substance registration application that will help EU to manage chemical trade better. Maybe one of the very few projects that BPE (WLI) is not over-design and is the actual heart of the project. Plus additional code quality requirements that comes from Euro Commission makes this project demanding and interesting.
It is now alive :)
Wednesday, June 11, 2008
SVG Language Translation (SVGLT)
In one of my previous companies I've started a SVG Translation project that does automatic translation of electronic SVG schemes to different languages.
Step by step this evolve and soon could be considered self-sustainable product.
We keep developing it together.
SVG Translation has web interface sophisticated UI that can be customized for specific business needs plus very informative logging that will help user develop complex translation process. Some of the good logging features include:
- logging of terms that were not found in the db (so user can collect and translate them for later)
- files that lacks terms
- terms not found in the db and their languages(lang that miss translation)
- asynchronous translation process
- ability to handle multiple translation languages per once
- based fully on OSS and free software
- extendability
- hyphenation
- manipulates coordinates to avoid overlapping
Step by step this evolve and soon could be considered self-sustainable product.
We keep developing it together.
SVG Translation has web interface sophisticated UI that can be customized for specific business needs plus very informative logging that will help user develop complex translation process. Some of the good logging features include:
- logging of terms that were not found in the db (so user can collect and translate them for later)
- files that lacks terms
- terms not found in the db and their languages(lang that miss translation)
- asynchronous translation process
- ability to handle multiple translation languages per once
- based fully on OSS and free software
- extendability
- hyphenation
- manipulates coordinates to avoid overlapping
Friday, December 07, 2007
Testing JSF and Trinidad with JMeter
Problem: Testing JSF and Trinidad application with JMeter .
Why this is a problem: due numerous states that must be handled .
Thinks to remember during test creation: PEBKC (problem exist between keyboard and chair) - if something is not working it is always your fault. I lost almost due days in debugging due misspelled state variable!
Ok, now let's start .....(this might help to my previous colleagues from Reflective too):)
We start with usual recording technique won't get into details here: run jmeter proxy->set proxy to browser->browse
You can remove static resources if you want (must concentrate on dynamic content).
Identify dynamic items you need to handle:
1. Username/Pass
2. Usual dynamic data
(!)3. JSF State
(!)4. Trinidad components internal state
3. In order to propagate JSF state on each page a following Post Processor(RegEx Extractor):
someVariable
$1$
1
(This is for myFaces implementation it differs for various vendors.)
After you have extracted JSF State you must populate it with next POST.Do this for each page, keep in mind that JSF State is different on each page.
4. Trinidad state is generated on previous page(that links to the URL with something.faces?_afPfm=4b28da42). So the trick is to add one more Post Processor (RegEx to previous page):
trVariableState
something\.faces\?_afPfm=(.+?)"
$1$
1
Also make sure JSF state is always encoded in POST.
So that should be, I will review later if forgot something.
Why this is a problem: due numerous states that must be handled .
Thinks to remember during test creation: PEBKC (problem exist between keyboard and chair) - if something is not working it is always your fault. I lost almost due days in debugging due misspelled state variable!
Ok, now let's start .....(this might help to my previous colleagues from Reflective too):)
We start with usual recording technique won't get into details here: run jmeter proxy->set proxy to browser->browse
You can remove static resources if you want (must concentrate on dynamic content).
Identify dynamic items you need to handle:
1. Username/Pass
2. Usual dynamic data
(!)3. JSF State
(!)4. Trinidad components internal state
3. In order to propagate JSF state on each page a following Post Processor(RegEx Extractor):
someVariable
$1$
1
(This is for myFaces implementation it differs for various vendors.)
After you have extracted JSF State you must populate it with next POST.Do this for each page, keep in mind that JSF State is different on each page.
4. Trinidad state is generated on previous page(that links to the URL with something.faces?_afPfm=4b28da42). So the trick is to add one more Post Processor (RegEx to previous page):
trVariableState
something\.faces\?_afPfm=(.+?)"
$1$
1
Also make sure JSF state is always encoded in POST.
So that should be, I will review later if forgot something.
Saturday, June 03, 2006
xADL Extension for embedded systems
This was actually my master diploma thesis.
I've investigate most of the languages that are used for describing software architecture.
Problems:
Most of the languages are invented for particular problems(projects) and doesn't fit other problems, and has strange syntax, lack of tool and knowledge, lack of interoperability.
Embedded systems evolves in recent years most of the languages used to describe software architecture doesn't fit well to their requirements, because of that a language that is extensible should be picked(no need for coming up with a new language it is born dead). There are few good articles why UML is not good:
UML is not language for describing software architecture, but OOP design.
UML extensibility via extending meta model is not good enough, or if it is than the result will be no longer UML.
Using UML artifacts (diagrams) as architecture artifacts will bring more obfuscation.
The Solution:
Picked up language is called xADL which is based on XML Schema(extensibility).
It already contains some core functionality for describing connector and components. The initial request was for having language that is capable of describing non-functional architecture characteristics.
I will continue my post later...... have to find where my thesis is....... :)
I've investigate most of the languages that are used for describing software architecture.
Problems:
Most of the languages are invented for particular problems(projects) and doesn't fit other problems, and has strange syntax, lack of tool and knowledge, lack of interoperability.
Embedded systems evolves in recent years most of the languages used to describe software architecture doesn't fit well to their requirements, because of that a language that is extensible should be picked(no need for coming up with a new language it is born dead). There are few good articles why UML is not good:
UML is not language for describing software architecture, but OOP design.
UML extensibility via extending meta model is not good enough, or if it is than the result will be no longer UML.
Using UML artifacts (diagrams) as architecture artifacts will bring more obfuscation.
The Solution:
Picked up language is called xADL which is based on XML Schema(extensibility).
It already contains some core functionality for describing connector and components. The initial request was for having language that is capable of describing non-functional architecture characteristics.
I will continue my post later...... have to find where my thesis is....... :)
Friday, March 31, 2006
Why Oracle AS (9) shouldn't be used for J2EE development
1.Because it throws "MEANINGFUL" NullPointerException if your slsb ejb is incorrect.
2.All its errors are "MEANINGFUL"
3.Because its classLoader structure is "MEANINGFUL"
4.Because its threads loose their state in webapp rmi lookup, and "MEANINGFUL" throw NullPointerException on !!!!! home.create() (because it "CLEVERLY" discover that USER IS NULL in the current thread session, and tries to SHOW IT IN Exception)
5.Because such simple scenarios as : Separate EAR(war only) file lookup SLSB from separate ear IS ALMOST IMPOSSIBLE with OC4J.
6.Because even if it is POSSIBLE, this comes after hours of spell casting.
2.All its errors are "MEANINGFUL"
3.Because its classLoader structure is "MEANINGFUL"
4.Because its threads loose their state in webapp rmi lookup, and "MEANINGFUL" throw NullPointerException on !!!!! home.create() (because it "CLEVERLY" discover that USER IS NULL in the current thread session, and tries to SHOW IT IN Exception)
5.Because such simple scenarios as : Separate EAR(war only) file lookup SLSB from separate ear IS ALMOST IMPOSSIBLE with OC4J.
6.Because even if it is POSSIBLE, this comes after hours of spell casting.
Tuesday, November 01, 2005
Struts breake encoding(but not anymore)
Finally! After my previous fight with struts form of type multipart, that broke encoding, finally the heal is ready.
Struts 1.2.7 I was manage to upload file,and utf-8 text without broking the encoding of utf-8.
Use accessCharset or something like that, with the help of the String constructor that use charsets everything was ok.
Also if oracle is used NLS_LAN=.UTF8 should be set.
Struts 1.2.7 I was manage to upload file,and utf-8 text without broking the encoding of utf-8.
Use accessCharset or something like that, with the help of the String constructor that use charsets everything was ok.
Also if oracle is used NLS_LAN=.UTF8 should be set.
Subscribe to:
Posts (Atom)