<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Unidev - Software Development</title>
	
	<link>http://blog.unidev.com</link>
	<description>News and Java Technology</description>
	<lastBuildDate>Wed, 07 Jul 2010 22:06:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Unidev" /><feedburner:info uri="unidev" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>Unidev</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>PHP – problem triying to conect with Informix on IIS</title>
		<link>http://feedproxy.google.com/~r/Unidev/~3/CM6MgPoEAKg/</link>
		<comments>http://blog.unidev.com/index.php/2010/07/07/php-problem-triying-to-conect-with-informix-on-iis/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 22:06:44 +0000</pubDate>
		<dc:creator>George Zheng</dc:creator>
				<category><![CDATA[General Technology]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Informix]]></category>

		<guid isPermaLink="false">http://blog.unidev.com/?p=249</guid>
		<description><![CDATA[I was working on a project which needs PHP talk to Informix database on Windows platform. After installed IBM Informix Client_SDK, included PHP extension php_ifx.dll, and use following command to connect to Informix:
$sync_link_id = ifx_connect($database, $username, $password);
I got following error:
[SQLSTATE=IX 000  SQLCODE=-25560]
If you check Informix document from IBM, you know Environment variable INFORMIXSERVER must [...]]]></description>
			<content:encoded><![CDATA[<p>I was working on a project which needs PHP talk to Informix database on Windows platform. After installed IBM Informix Client_SDK, included PHP extension php_ifx.dll, and use following command to connect to Informix:</p>
<p><em>$sync_link_id = ifx_connect($database, $username, $password);</em></p>
<p>I got following error:</p>
<p><strong>[SQLSTATE=IX 000  SQLCODE=-25560]</strong></p>
<p>If you check <a href="http://publib.boulder.ibm.com/infocenter/idshelp/v115/index.jsp"><span style="text-decoration: underline;">Informix document</span></a> from IBM, you know Environment variable INFORMIXSERVER must be set. We know how to set up environment variable on Unix and Apache, but the question is how to set it up for IIS?</p>
<p>People may first think this could be environment variable on Windows as well. But this is wrong. Informix client is using Registry KEY on Windows platform. Here is the path on a 64bit machine.</p>
<p><strong>HKEY_LOCAL_MACHINE\Software\Wow6432Node\Informix\Environment\</strong></p>
<p>Second, you should have your default server setup under KEY: </p>
<p><strong>HKEY_LOCAL_MACHINE\Software\Wow6432Node\Informix\SqlHosts\</strong></p>
<p>At here, you need to provide HOST, PROTOCOL and SERVICE, so php_ifx knows how to connect to your Informix server.</p>
<p>After set them up, PHP should be able to talk to Informix.</p>
<img src="http://feeds.feedburner.com/~r/Unidev/~4/CM6MgPoEAKg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.unidev.com/index.php/2010/07/07/php-problem-triying-to-conect-with-informix-on-iis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.unidev.com/index.php/2010/07/07/php-problem-triying-to-conect-with-informix-on-iis/</feedburner:origLink></item>
		<item>
		<title>Redirect to Error page in Wicket</title>
		<link>http://feedproxy.google.com/~r/Unidev/~3/heAvkoINgQU/</link>
		<comments>http://blog.unidev.com/index.php/2010/06/03/redirect-to-error-page-in-wicket/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 20:18:38 +0000</pubDate>
		<dc:creator>Dhanya James</dc:creator>
				<category><![CDATA[General Technology]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Wicket]]></category>

		<guid isPermaLink="false">http://blog.unidev.com/index.php/2010/06/03/redirect-to-error-page-in-wicket/</guid>
		<description><![CDATA[I was looking for a solution to redirect to an error page in wicket and found this class , RestartResponseAtInterceptPageException , causes wicket to interrupt current request processing and immediately redirect to an intercept page.
For example,
throw new RestartResponseAtInterceptPageException(new ErrorPage(&#8220;User does not have permission to view this screen&#8221;));
If you need to redirect to an intercept page [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking for a solution to redirect to an error page in wicket and found this class , RestartResponseAtInterceptPageException , causes wicket to interrupt current request processing and immediately redirect to an intercept page.</p>
<p>For example,<br />
throw new RestartResponseAtInterceptPageException(new ErrorPage(&#8220;User does not have permission to view this screen&#8221;));</p>
<p>If you need to redirect to an intercept page without interrupting the current request processing , call RedirectToInteceptPage(Page) instead.</p>
<p>-Dhanya</p>
<img src="http://feeds.feedburner.com/~r/Unidev/~4/heAvkoINgQU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.unidev.com/index.php/2010/06/03/redirect-to-error-page-in-wicket/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.unidev.com/index.php/2010/06/03/redirect-to-error-page-in-wicket/</feedburner:origLink></item>
		<item>
		<title>Change location of Wicket’s ajax debug link</title>
		<link>http://feedproxy.google.com/~r/Unidev/~3/aHJWfwyYDQg/</link>
		<comments>http://blog.unidev.com/index.php/2010/03/04/change-location-of-wickets-ajax-debug-link/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 22:39:21 +0000</pubDate>
		<dc:creator>Brian Bohl</dc:creator>
				<category><![CDATA[Custom Development]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.unidev.com/?p=224</guid>
		<description><![CDATA[I needed to move Wicket&#8217;s ajax debug link from the bottom right to the bottom left because it was covering some links.  The script below is how I accomplished it (uses jQuery).  The link uses absolute positioning so you can customize this to move it anywhere on the page.
    &#60;script type="text/javascript"&#62;
  [...]]]></description>
			<content:encoded><![CDATA[<p>I needed to move Wicket&#8217;s ajax debug link from the bottom right to the bottom left because it was covering some links.  The script below is how I accomplished it (uses jQuery).  The link uses absolute positioning so you can customize this to move it anywhere on the page.</p>
<pre>    &lt;script type="text/javascript"&gt;
        $(document).ready(function() {
            //
            // Moves the debug window to the left instead of the right.
            //
            // Needs to use setTimeout so that the wicket-ajax-debug.js
            // script has a chance to create the link
            //
            if(wicketAjaxDebugEnable)
            {
                setTimeout(function() {
                    $("#wicketDebugLink").css('left', '10px');
                }, 1000);
            }
        });
    &lt;/script&gt;</pre>
<img src="http://feeds.feedburner.com/~r/Unidev/~4/aHJWfwyYDQg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.unidev.com/index.php/2010/03/04/change-location-of-wickets-ajax-debug-link/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.unidev.com/index.php/2010/03/04/change-location-of-wickets-ajax-debug-link/</feedburner:origLink></item>
		<item>
		<title>Unidev Makes the List of St. Louis’ Best Employers</title>
		<link>http://feedproxy.google.com/~r/Unidev/~3/EMZcl4BZ1v4/</link>
		<comments>http://blog.unidev.com/index.php/2010/03/02/unidev-makes-the-list-of-st-louis-best-employers/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 20:35:44 +0000</pubDate>
		<dc:creator>lpesko</dc:creator>
				<category><![CDATA[About Unidev]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Best Company Culture]]></category>
		<category><![CDATA[Development jobs]]></category>
		<category><![CDATA[IT Staffing]]></category>
		<category><![CDATA[Software Design]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[St. Louis Top Employers]]></category>

		<guid isPermaLink="false">http://blog.unidev.com/?p=220</guid>
		<description><![CDATA[ 
Employees Credit Unidev with Best Company Culture in St. Louis Post Dispatch Contest
 
During the month of February, the St. Louis Post-Dispatch and STLtoday.com invited employees of St. Louis area businesses to vote for their company to make the St. Louis Top Employer’s list. Readers were given the opportunity to vote their employer in one of [...]]]></description>
			<content:encoded><![CDATA[<p><em><span style="font-size: small"></span><span style="font-family: Calibri;font-size: small"> </span></em></p>
<p align="center"><strong>Employees Credit Unidev with Best Company Culture in St. Louis Post Dispatch Contest</strong></p>
<p> </p>
<p>During the month of February, the St. Louis Post-Dispatch and <a href="http://www.stltoday.com/" target="_blank">STLtoday.com</a> invited employees of St. Louis area businesses to vote for their company to make the St. Louis Top Employer’s list. Readers were given the opportunity to vote their employer in one of the five categories: Best company culture, best commitment to diversity, best perks, best co-workers/team, and best benefits.</p>
<p>Out of 94,000 businesses in the St. Louis area, 72 companies were given the honor by its employees. <a href="http://www.unidev.com/" target="_blank">Unidev</a> was nominated for &#8220;<strong>Best Company Culture&#8221;</strong>, and was acknowledged in the Sunday February 28, issue of the St. Louis Post Dispatch on the front page of the &#8216;Jobs&#8217; section. In addition, Unidev was in the top five vote getters in the contest.</p>
<p align="center">Here is what some of the employees had to say about the company culture at Unidev:</p>
<p>&#8220;Unidev is truly a great place to work. The work environment promotes open communication, creativity and leadership among employees. Everyone is encouraged to contribute and new ideas are welcomed. Management and employees are treated the same, and everyone is part of the bigger picture.&#8221;</p>
<p>&#8220;The company culture at Unidev may be part of the reason a person joins the company, but it is a big part of the reason people stay with the company. The culture at Unidev is the perfect balance between a down-to-earth, family-oriented atmosphere and a strong, results-driven work environment. Due to Unidev&#8217;s commitment to corporate social responsibility and good, transparent governance, great customer service, a strong, long-term brand, and passionate employees and customers seems to naturally happen on its own. Especially in these tough times, it is amazing to be a part of a company who is constantly growing, adding new members from different expertise and really listens to and cares about the happiness and well-being of each individual employee and customer. I couldn&#8217;t imagine working anywhere else.&#8221;</p>
<p>&#8220;Unidev is a great place to work! It is a very laid back atmosphere to work in yet everyone has a very strong work ethic and works together to complete project and make the customers happy.&#8221;</p>
<p style="text-align: center">　Thanks to all of the employees at Unidev and <a href="http://www.thenetimpact.com/" target="_blank">The Net Impact </a>for making Unified Development Inc. a great company to work for!</p>
<img src="http://feeds.feedburner.com/~r/Unidev/~4/EMZcl4BZ1v4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.unidev.com/index.php/2010/03/02/unidev-makes-the-list-of-st-louis-best-employers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.unidev.com/index.php/2010/03/02/unidev-makes-the-list-of-st-louis-best-employers/</feedburner:origLink></item>
		<item>
		<title>Unidev – 20 years and Counting</title>
		<link>http://feedproxy.google.com/~r/Unidev/~3/Bstf4Vk8-tc/</link>
		<comments>http://blog.unidev.com/index.php/2010/02/01/unidev-20-years-and-counting/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 00:41:30 +0000</pubDate>
		<dc:creator>Greg Alexander</dc:creator>
				<category><![CDATA[About Unidev]]></category>
		<category><![CDATA[20 year anniversary]]></category>

		<guid isPermaLink="false">http://blog.unidev.com/?p=218</guid>
		<description><![CDATA[On January 1, 1990, Unidev was founded. Of course it was a lot different then. Initially we (the two of us) did custom development mostly in Clipper. About 6 months after we started, things started to pick up and we added another programmer. This was all on premises programming mostly for smaller companies. We saw [...]]]></description>
			<content:encoded><![CDATA[<p>On January 1, 1990, Unidev was founded. Of course it was a lot different then. Initially we (the two of us) did custom development mostly in Clipper. About 6 months after we started, things started to pick up and we added another programmer. This was all on premises programming mostly for smaller companies. We saw steady growth for the next year. In 1991, we got a pretty good sized project for a Fortune 1000 company. We were just in the right place at the right time on this one. There just were not that many shops specializing in PC development at that time. Through the 90s, the field consulting business grew nicely. Around 2001 with the end of Y2K, the .com bust and 9/11, business really slowed down. We shifted to doing more in house projects and have picked up a number of very strong customers with long term contracts. That business continues to show solid growth for us today. We&#8217;ll continue to adapt to the needs of our customers and I hope to be here another 20 years.</p>
<img src="http://feeds.feedburner.com/~r/Unidev/~4/Bstf4Vk8-tc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.unidev.com/index.php/2010/02/01/unidev-20-years-and-counting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.unidev.com/index.php/2010/02/01/unidev-20-years-and-counting/</feedburner:origLink></item>
		<item>
		<title>Unidev Seeks Implementation Partner for Global Web CMS</title>
		<link>http://feedproxy.google.com/~r/Unidev/~3/meAXFSaTXbo/</link>
		<comments>http://blog.unidev.com/index.php/2010/01/06/unidev-seeks-implementation-partner-for-global-web-cms/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 15:33:55 +0000</pubDate>
		<dc:creator>lpesko</dc:creator>
				<category><![CDATA[About Unidev]]></category>
		<category><![CDATA[Custom Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[.Net Software Development]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Microsoft Partner]]></category>
		<category><![CDATA[Micrsoft Gold Certified Partner]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Software Design]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[web content management system]]></category>

		<guid isPermaLink="false">http://blog.unidev.com/?p=209</guid>
		<description><![CDATA[        Looking to Microsoft Partner Network to Expand Opportunities in New Markets
Unidevannounces its search for Microsoft Partners in North America, Asia and Europe to implement their global web content management (CMS) system, Auctori™. As a 16 year Certified Microsoft Partner, we are looking to leverage the Microsoft Partner Channel Builder to deepen our services and solutions [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center">        <strong>Looking to Microsoft Partner Network to Expand Opportunities in New Markets</strong></p>
<p style="text-align: left"><a title="Software Development" href="http://www.unidev.com/" target="_blank">Unidev</a>announces its search for Microsoft Partners in North America, Asia and Europe to implement their global web content management (CMS) system, Auctori™. As a 16 year Certified Microsoft Partner, we are looking to leverage the <a title="Microsoft Partner Network " href="https://partner.microsoft.com/" target="_blank">Microsoft Partner Channel Builder </a>to deepen our services and solutions to more complex business opportunities, to provide a broader range of client services and to create business relationships with other partners whose skills complement our own.</p>
<p style="text-align: left">“The Microsoft Partner Channel Builder is one of the key sales enablement benefits of our Microsoft relationship, and is an excellent way to combine our expertise and resources. We are looking forward to connecting with industry partners to form new alliances and deliver the end-to-end solutions that address customers&#8217; business needs,” said Greg Alexander, CEO, Unidev. &#8220;This tool, with its two-way model, is making Microsoft Partner communications much easier.&#8221;</p>
<p style="text-align: left">Auctori, a .Net SaaS CMS Platform, was developed by Unidev for multi-national companies, and currently supports a number of European, North American and Asian sites. This system supports multi-lingual site management and site deployment. Auctori was built from the ground up in conjunction with a team of <a title="CMS built for SEO" href="http://www.auctori.com/features.aspx" target="_blank">search engine optimization (SEO) </a>specialist to implement best SEO practices. The next release of Auctori is scheduled for the first quarter of 2010, and will feature European and Asian hosting in addition to its current North American hosting, with all sites and platforms managed from a single console.</p>
<p style="text-align: left">For further information on <a title="Unidev" href="http://www.unidev.com/" target="_blank">Unidev</a> or <a title="Auctori" href="http://www.auctori.com/" target="_blank">Auctori</a>, contact Steve Thomas at 636-532-4424 or <a href="mailto:steve.thomas@unidev.com">steve.thomas@unidev.com</a>.</p>
<p style="text-align: center"><strong> </strong></p>
<p style="text-align: center"><strong>Read the full <a title="Unidev Press Release " href="http://www.prweb.com/releases/2010/01/prweb3408274.htm" target="_blank">press release</a></strong></p>
<p style="text-align: left"> </p>
<p style="text-align: left"> </p>
<img src="http://feeds.feedburner.com/~r/Unidev/~4/meAXFSaTXbo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.unidev.com/index.php/2010/01/06/unidev-seeks-implementation-partner-for-global-web-cms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.unidev.com/index.php/2010/01/06/unidev-seeks-implementation-partner-for-global-web-cms/</feedburner:origLink></item>
		<item>
		<title>Unidev WebSite Resources</title>
		<link>http://feedproxy.google.com/~r/Unidev/~3/0v8mC2qNlkQ/</link>
		<comments>http://blog.unidev.com/index.php/2010/01/04/unidev-website-resources/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 05:29:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[About Unidev]]></category>

		<guid isPermaLink="false">http://blog.unidev.com/?p=207</guid>
		<description><![CDATA[Unidev has a number of websites that you may find useful.
Blog.unidev.com - This blog which contains company information as well as Java and C++ technical help
www.unidev.com - The main unidev web site. It describes the various services, has job posts and technical help
www.thenetimpact.com - The main site for The Net Impact. This describes our web design and web [...]]]></description>
			<content:encoded><![CDATA[<p>Unidev has a number of websites that you may find useful.</p>
<p><a href="http://blog.unidev.com">Blog.unidev.com</a> - This blog which contains company information as well as Java and C++ technical help</p>
<p><a href="http://www.unidev.com">www.unidev.com</a> - The main unidev web site. It describes the various services, has job posts and technical help</p>
<p><a href="http://www.thenetimpact.com">www.thenetimpact.com</a> - The main site for The Net Impact. This describes our web design and web marketing offereings. This is our oldest site and is due to be replaced by a much improved version in the next 2 months. </p>
<p><a href="http://www.auctori.com">www.auctori.com</a> &#8211; The main site for the Auctori content management system. It describes the features and benefits of that product</p>
<p><a href="http://www.auctorilaw.com">www.auctorilaw.com</a> &#8211; The Law firm specific version of Auctori that was built with specific functions and capabilites for law firms.</p>
<p><a href="http://www.unidevtech.com">www.unidevtech.com</a> &#8211; A technical blog about .NET web development.</p>
<p><a href="http://blog.thenetimpact.com">blog.thenetimpact.com</a> &#8211; The main company blog for The Net Impact. It covers an array of web design and web marketing topics as well as company announcements. </p>
<p><a href="http://www.bestnetcms.com">www.bestnetcms.com</a> &#8211; This is our Auctori blog and covers various CMS related topics.</p>
<p><a href="http://www.searchengineoptimizationstlouis.com">www.searchengineoptimizationstlouis.com</a> &#8211; A blog covering search engine optimization and web marketing topics</p>
<p>Plus an array of Facebook pages, linkedin accounts, Youtube channels, flickr channels and Twitter accounts.</p>
<img src="http://feeds.feedburner.com/~r/Unidev/~4/0v8mC2qNlkQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.unidev.com/index.php/2010/01/04/unidev-website-resources/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.unidev.com/index.php/2010/01/04/unidev-website-resources/</feedburner:origLink></item>
		<item>
		<title>Unidev Update – 2010</title>
		<link>http://feedproxy.google.com/~r/Unidev/~3/vkcQYHe7FFM/</link>
		<comments>http://blog.unidev.com/index.php/2010/01/04/unidev-update-2010/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 05:08:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[About Unidev]]></category>

		<guid isPermaLink="false">http://blog.unidev.com/?p=205</guid>
		<description><![CDATA[2009 was a good year for Unified Development, Inc. (unidev) and The Net Impact and it looks like 2010 could be a great year. This is a big improvement over the previous couple of years where we saw a very real slow down in overall IT spending especially on the new development side. Our development [...]]]></description>
			<content:encoded><![CDATA[<p>2009 was a good year for Unified Development, Inc. (unidev) and The Net Impact and it looks like 2010 could be a great year. This is a big improvement over the previous couple of years where we saw a very real slow down in overall IT spending especially on the new development side. Our development revenues were up this year. We&#8217;ve been very fortunate that most of our customers continued to invest in IT during those years even as their revenues were down. We also saw strong growth in our marketing and web group which has grown from only a few people in 2006 to over 20 today.<br />
The big news for 2009 was the public launch of our Auctori line of enterprise content management systems. This uniquely architected SaaS solution was designed to integrate SEO best practices across the board as well as to be a true global web platform. It is already deployed in several law firms, cities, and global industrial products and medical supply companies. There are sites in over a dozen languages with more being added monthly.<br />
The other big news for 2009 was our headquarters move to the Dierbergs building in Chesterfield. The new larger office was designed by us to suit the very open, communicative and friendly environment we wanted. Dierbergs and their contractors did an amazing job on the buildout of the space. It far exceeded my expectations.<br />
2010 will bring a number of challenges and changes to our organization as I hope the economy begins its recovery. We made significant investments in training, software and management to continually improve the quality and speed of delivery of our services, products and processes. We feel we are well positioned to capture new business and really look forward to a great year. </p>
<p>Greg Alexander</p>
<img src="http://feeds.feedburner.com/~r/Unidev/~4/vkcQYHe7FFM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.unidev.com/index.php/2010/01/04/unidev-update-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.unidev.com/index.php/2010/01/04/unidev-update-2010/</feedburner:origLink></item>
		<item>
		<title>Wicket Ramblings</title>
		<link>http://feedproxy.google.com/~r/Unidev/~3/5zJoVcxTxuA/</link>
		<comments>http://blog.unidev.com/index.php/2009/11/20/wicket-ramblings/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 15:56:34 +0000</pubDate>
		<dc:creator>lpesko</dc:creator>
				<category><![CDATA[Custom Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[.Net Programming]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[it consulting]]></category>
		<category><![CDATA[java development]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[Wicket]]></category>

		<guid isPermaLink="false">http://blog.unidev.com/?p=195</guid>
		<description><![CDATA[Several months ago, I was assigned the task of developing a web application for a Fortune 500 company.  The specific purpose of the application was to allow certain transportation providers to submit claims directly, something they had previously been doing though e-mail.  Once submitted, a provider would then be notified with regards to status changes [...]]]></description>
			<content:encoded><![CDATA[<p>Several months ago, I was assigned the task of developing a <a title="Web Application Services" href="http://www.unidev.com/services/web-design-development.aspx" target="_blank">web application </a>for a Fortune 500 company.  The specific purpose of the application was to allow certain transportation providers to submit claims directly, something they had previously been doing though e-mail.  Once submitted, a provider would then be notified with regards to status changes in their claim as it made its way through the company’s revenue system.  A provider could then re-log back into the web application to review the particulars of that change.</p>
<p>What made the assignment notable from others was the fact this company had recently set architectural guidelines restricting new web application development to use only the <a title="Wicket " href="http://wicket.apache.org" target="_blank">Wicket </a>framework.  As some of you already know, Wicket is component based framework competing in the same space as JavaServer Faces (JSF) and Tapestry.  Having never worked with Tapestry before, I did have prior experience with JSF.  I had been on two previous projects using Apache’s <a href="http://myfaces.apache.org" target="_blank">MyFaces</a>, and by the end of my second project, I had some real reservations about recommending JSF as a web application framework.  If I had to sum it up at the time, JSF just seemed inconsistent when predicting how you would think it would behave.  There were occasions where if you did two similar things in different parts of your application, they wouldn’t necessarily behave similarly. One would be slightly off kilter, requiring you to make tweaks to your code that weren’t required in the other spot to get the same sort of operation.  I’ll be first to admit, this might have been in large part due to the third-party JSF components that were purchased for the latter project.  So it was with some apprehension that I started this project with yet another component based framework.</p>
<p>Now that I’m near the completion of that project, I’m happy to say that Wicket as a component based framework pretty much flat out works.  It may not be perfect, and I believe there aren’t any, but compared to some other offerings, it works.  So I thought I share a few top level concepts that I think are core to evaluating and understanding this framework.</p>
<p>But before I begin, learning a component based framework can be daunting, especially if your background is only one of the classical request-response frameworks, like Struts or Spring MVC.  It can represent a significant paradigm shift in how you solve the problems at hand.  So to help you in that process, I recommend reading the Manning’s publication ‘Wicket in Action’.  It’s authored by two of the framework’s committers, so without doubt you can consider them to be experts on the subject.  The material they present is done in such a manner so as to keep building on previous concepts, such that you never have the feeling you missed a turn somewhere.  By the end of the book you should have a reasonably good understanding of the framework to tackle a moderately complex web application, assuming of course you have previous experience.  I say moderately complex, because the book won’t explain how to use some of the more advanced Wicket components, like data grids and accordions that so many web applications are now expected to have.  That unfortunately, you’ll have to do that on your own – but hey, you gotta start somewhere.</p>
<p>Now on to some key observations.  When learning Wicket, the first thing you’re going to have to understand is <a title="models" href="http://wicket.apache.org/docs/1.4/org/apache/wicket/model/IModel.html" target="_blank">models</a>. Without understanding models, you’re never going to get anywhere.  Models are the glue between the components and the objects containing the information your app is expected to use.  Simply put, they are placeholders that you share with the component.  It allows you, the developer, to even change the data object with a different instance while keeping the component completely oblivious.  Wicket has several different models, but of all of them, knowing when to use the <a href="http://wicket.apache.org/docs/1.4/org/apache/wicket/model/LoadableDetachableModel.html" target="_blank">LoadableDetachableModel </a>is important.  Here’s why.</p>
<p>One of Wicket’s key features is its solution to one of the ‘Holy Grails’ of web applications – built-in support for the back button.  It does so by serializing each and every page, which basically means the components and the models they reference, to a Wicket abstraction called a <a href="http://wicket.apache.org/docs/1.4/org/apache/wicket/PageMap.html" target="_blank">PageMap</a>. PageMaps themselves can be written to disk, so as to limit the amount of HTTP session being used.  When you hit the back button all that you’re really doing is restoring that page’s state as previously captured in the PageMap.  Sounds expensive, but it’s not nearly as bad as it could be if you are using a LoadableDetachableModel.  What a LoadableDetachableModel will allow you to do is control what gets serialized.  So what if your model references an entity, which is typically a row in a database.  Then it makes sense that all you would want to do is serialize the primary key.  Why?  Well like most component based frameworks, Wicket has several distinct phases it goes through with each request – response cycle.  At the end of a response, Wicket will call the detach method on all components using a LoadableDetachableModel.  This will set your entity object in the model to null before things get serialized.  Then at the start of the next request, when the component requests the entity, it will get restored.  How?  Well the LoadableDetachableModel sees that the entity is still null, so it calls a method that you supplied called ‘load’.  Of course by now the primary key you had previously stored is already deserialized.  All you have to do is get the entity back from the database before Wicket does anything to it, like binding new values posted from the browser.  Pretty slick!</p>
<p>All web applications are expected to do <a href="http://en.wikipedia.org/wiki/Ajax_(programming)" target="_blank">Ajax </a>these days, and Wicket does not disappoint.  It has a well integrated Ajax framework that’s easy to use and easy to control.  It’s as simple as using an ‘Ajaxified’ component, or adding an Ajax behavior to a component that isn’t to initiate an Ajax request.   Then all you have to do is decide what components should be updated as a result of receiving the request.  Let me give an example.  In the web app I built for my client, there was need to allow the user to search for current and previous claims.  The business owners wanted to supply two distinct methods of searching, by allowing the user to either fill out one set of fields and search, or fill out the other set and search.  To make the user interface less confusing, I decided to use a dropdown with a simple description of each of the search methods.  I also encapsulated the fields associated with each of the searches into a <a href="http://wicket.apache.org/docs/1.4/org/apache/wicket/markup/html/panel/Panel.html" target="_blank">Panel</a>. A Panel is nothing more than a component that can act as a container for other components.  But more important is that you can also associate with the panel its own html fragment for displaying what’s in it, the search fields in this case.   And a Panel can also provide the necessary validation and business logic that may be required for those fields.  This really makes it nice when you want to reuse them throughout your application. But here’s how the rest of the design unfolds.</p>
<p>I used a <a href="http://wicket.apache.org/docs/1.4/org/apache/wicket/markup/html/form/DropDownChoice.html" target="_blank">DropDownChoice</a> component, and as you can probably already guess, it was used to represent my dropdown.  Because this component isn’t inherently ‘Ajaxified’, some are and some aren’t, I had to add an <a href="http://wicket.apache.org/docs/1.4/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior.html" target="_blank">AaxFormComponentUpdatingBehavior</a> to instruct the component to make an Ajax request with each ‘onchange’ event of the dropdown.  <a href="http://wicket.apache.org/docs/1.4/org/apache/wicket/behavior/IBehavior.html" target="_blank">Behaviors</a>, like models, is something else you will need to know.  They are often used to add new capabilities to a component – like Ajax.  Anyway when the search page is initially displayed, only one search panel is shown.  When the user doesn’t want that one, he makes a new selection in the dropdown.  This creates an Ajax request where it will be received back at the behavior’s handler on the server.  All I had to do at this point inside the handler was determine the new state of the dropdown, select the appropriate panel to be shown, and tell Wicket to render this one and not the other.  When it was all said and done, the panel swapping amounted to just a few lines of code.  All of the nitty-gritty update details and Ajax plumbing was handled by the framework.  Sweet!!</p>
<p>I have just one last thing I’d like to mention about Wicket, and that’s its excellent templating and page layout features.  What makes Wicket different is how you associate your page’s <a title="Java  Development Firm" href="http://www.unidev.com/" target="_blank">HTML</a> with the java code.  It’s through the class hierarchy.  So wherever you create a class to be used as the code for the page, you also create an HTML file in the same package with the same class name, but instead with a ‘html’ file extension.  So whenever your class gets instantiated by the framework, it also knows if there is an html file with same class name, then this is the HTML to be used.</p>
<p>Big deal, right?  Well read on a little further.  What the Wicket folks have cleverly done is not only load the html with this class, but any html associated with any of the classes up the hierarchy, basically allowing you to nest the html that is lower in the hierarchy into the html that is higher.  All through the use of the Wicket tags &lt;wicket:extend&gt; and &lt;wicket:child&gt;.  So how do you use this to your advantage?</p>
<p>Well like working with other web frameworks, you generally create a base class that serves as an extension point for the rest of your classes, and with Wicket <a href="http://wicket.apache.org/docs/1.4/org/apache/wicket/markup/html/WebPage.html" target="_blank">WebPage</a> it is no different.  But what you’ll want to do with this base class is also create an html file with the same name that defines the overall look and feel of your web pages.  It may display the application’s title at the top, maybe a place to put menus to the left, etc.  This page will basically act as your application’s template.  Any class that extends this base class and provides its own html can place it inside of this template.  Cool!  Gone are the days of all those nasty Tiles’ definitions.  As a matter of fact, throughout the entire development of my app did I ever once have to create a single XML file for Wicket!  I just followed the conventions and things worked.</p>
<p>If your thinking about venturing into the realm of component based frameworks and you have been searching around, please give Wicket some serious consideration.  It may not be easy at first, but I think once you get over the hump you’ll learn to appreciate what it can do for you.</p>
<p>By: Mark Raterman</p>
<img src="http://feeds.feedburner.com/~r/Unidev/~4/5zJoVcxTxuA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.unidev.com/index.php/2009/11/20/wicket-ramblings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.unidev.com/index.php/2009/11/20/wicket-ramblings/</feedburner:origLink></item>
		<item>
		<title>Bind XML message to Java objects using JiBX – JiBX binding tutorial</title>
		<link>http://feedproxy.google.com/~r/Unidev/~3/TByslV0S2QA/</link>
		<comments>http://blog.unidev.com/index.php/2009/11/16/bind-xml-message-to-java-objects-using-jibx-jibx-binding-tutorial/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 15:28:29 +0000</pubDate>
		<dc:creator>lpesko</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[java development]]></category>
		<category><![CDATA[JiBX]]></category>
		<category><![CDATA[Jibx Binding]]></category>
		<category><![CDATA[service oriented architecture]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://blog.unidev.com/?p=188</guid>
		<description><![CDATA[JiBX binding tutorial
 Companies are moving more and more towards service oriented architecture (SOA) and SOA services communicate with well formatted XML message. If you are working in an SOA Java environment one of your development goal is to bind XML message to Java objects. Jibx is a great open source tool for binding XML data [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><strong><strong>JiBX binding tutorial</strong></strong></p>
<p> Companies are moving more and more towards service oriented architecture (SOA) and SOA services communicate with well formatted XML message. If you are working in an SOA Java environment one of your development goal is to bind XML message to Java objects. Jibx is a great open source tool for binding XML data to Java objects. Two main components of Jibx are Binding compiler and Binding runtime. Binding Compiler use binding definition document to specify how<a title="Java  Development Firm" href="http://www.unidev.com/services/java-development.aspx" target="_blank"> Java </a>objects are converted to or from XML. Binding compiler can be linked to your Ant build script and executing the build script does bytecode enhancements on already compiled java classes. Enhanced class files generated by Binding Compiler user Binding Runtime to build objects from XML document and vice versa.</p>
<p> This is a code block from my ant build script that executes jibx binding compiler on complied java classes. Order-Request.xml and Order-Reply.xml are the binding definition documents  i have used for XML messages of a request reply messaging pattern.</p>
<p> &lt;path&gt;</p>
<p>&lt;pathelement location=&#8221;${basedir}/lib/lib/jibx-run.jar&#8221;/&gt;</p>
<p>&lt;pathelement location=&#8221;${basedir}/lib/jibx-bind.jar&#8221;/&gt;</p>
<p>&lt;/path&gt;</p>
<p>&lt;target depends=&#8221;compile&#8221; description=&#8221;Run Binding Compiler on compiled java class&#8221;&gt;</p>
<p>&lt;echo message=&#8221;Running binding compiler&#8230;&#8221;/&gt;</p>
<p>&lt;java classname=&#8221;org.jibx.binding.Compile&#8221; fork=&#8221;yes&#8221; classpathref=&#8221;binding-classpath&#8221; failonerror=&#8221;true&#8221;&gt;</p>
<p>&lt;classpath&gt;</p>
<p>&lt;pathelement location=&#8221;${project.classes.dir}&#8221;/&gt;</p>
<p> &lt;/classpath&gt;</p>
<p>&lt;arg value=&#8221;${project.classes.dir}/com/dj/bookorder/Order-Request.xml&#8221;/&gt;</p>
<p>&lt;arg value=&#8221;${project.classes.dir}/com/dj/bookorder/Order-Reply.xml&#8221;/&gt;      </p>
<p>&lt;/java&gt;</p>
<p>&lt;/target&gt;</p>
<p>Runtime uses <a title="jibx" href="http://jibx.sourceforge.net/index.html" target="_blank">Jibx Bindng</a>Factory to construct Marshalling and Unmarshalling contexts , which can be used to convert XML message to Java object or vice versa. Jibx BindingFactory is obtained by passing any of the classes defined by the mapping in your binding definition document using methods defined in the Jibx BindingDirectory class.</p>
<p> Unmarshalling example:</p>
<p> public BookOrder getUnMarshalledBookOrderRequest(String xmlMsg)throws Exception{</p>
<p>        BookOrder bookOrder = null;</p>
<p>        IBindingFactory bfact = BindingDirectory.getFactory(BookOrder.class);</p>
<p>        IUnmarshallingContext uctx = bfact.createUnmarshallingContext();</p>
<p>        Object obj = uctx.unmarshalDocument( new ByteArrayInputStream(xmlMsg.getBytes()), null);</p>
<p>        if(obj instanceof BookOrder)bookOrder =(BookOrder)obj;</p>
<p>        return bookOrder;</p>
<p>    }</p>
<p>Marshalling example:</p>
<p> public String getMarshalledBookOrderReply(Object obj)throws Exception{</p>
<p>        IBindingFactory bfact = BindingDirectory.getFactory(BookOrderReply.class);</p>
<p>        IMarshallingContext mctx = bfact.createMarshallingContext();</p>
<p>        StringWriter writer = new StringWriter();</p>
<p>        mctx.setOutput(writer);</p>
<p>        mctx.marshalDocument(obj);</p>
<p>        return writer.toString();</p>
<p>    }</p>
<p> <strong>Jibx Binding Definition:</strong> Jibx Binding definition document is the core part of using Jibx and let&#8217;s see how do we write binding definition document for the following XML.</p>
<p> &lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;</p>
<p>&lt;book-order&gt;</p>
<p>&lt;books&gt;</p>
<p>&lt;book&gt;</p>
<p>            &lt;isbn&gt;45127833211&lt;/isbn&gt;</p>
<p>            &lt;book-name&gt;Cooking for Dummies&lt;/book-name&gt;</p>
<p>            &lt;order-date&gt;20090912&lt;/order-date&gt;</p>
<p>            &lt;order-amount&gt;20.56&lt;/order-amount&gt;</p>
<p>            &lt;shipping-date&gt;20090922&lt;/shipping-date&gt;</p>
<p>            &lt;payment-type&gt;</p>
<p>                        &lt;card-payment&gt;</p>
<p>                                    &lt;auth-code&gt;98&lt;/auth-code&gt;</p>
<p>                                    &lt;expire-date&gt;20130925&lt;/expire-date&gt;</p>
<p>                        &lt;/card-payment&gt;</p>
<p>            &lt;/payment-type&gt;</p>
<p>            &lt;billing-address&gt;</p>
<p>                        &lt;address&gt;200 Links Dr&lt;/address&gt;</p>
<p>                &lt;city&gt;Dardenne Prairie&lt;/city&gt;</p>
<p>                &lt;state&gt;MO&lt;/state&gt;</p>
<p>            &lt;zip-code&gt;63368&lt;/zip-code&gt;</p>
<p>                &lt;country&gt;US&lt;/country&gt;</p>
<p>            &lt;/billing-address&gt;</p>
<p>&lt;/book&gt;</p>
<p>&lt;book&gt;</p>
<p>            &lt;isbn&gt;95127833211&lt;/isbn&gt;</p>
<p>            &lt;book-name&gt;Art for Dummies&lt;/book-name&gt;</p>
<p>            &lt;order-date&gt;20090912&lt;/order-date&gt;</p>
<p>            &lt;order-amount&gt;10.56&lt;/order-amount&gt;</p>
<p>            &lt;shipping-date&gt;20090922&lt;/shipping-date&gt;</p>
<p>            &lt;payment-type&gt;</p>
<p>                        &lt;check-payment&gt;</p>
<p>                                    &lt;check-number&gt;123456783621&lt;/check-number&gt;</p>
<p>                        &lt;/check-payment&gt;</p>
<p>            &lt;/payment-type&gt;</p>
<p>            &lt;billing-address&gt;</p>
<p>                        &lt;address&gt;200 Links Dr&lt;/address&gt;</p>
<p>                &lt;city&gt;Dardenne Prairie&lt;/city&gt;</p>
<p>                &lt;state&gt;MO&lt;/state&gt;</p>
<p>            &lt;zip-code&gt;63368&lt;/zip-code&gt;</p>
<p>                &lt;country&gt;US&lt;/country&gt;</p>
<p>            &lt;/billing-address&gt;</p>
<p>&lt;/book&gt;</p>
<p>&lt;/books&gt;</p>
<p>&lt;/book-order&gt;</p>
<p> Following is the binding definition I am using for the above XML. We will come to the elements in a while.</p>
<p> &lt;binding package=&#8221;com.dj.bookorder&#8221;&gt;</p>
<p>&lt;mapping&gt;</p>
<p>            &lt;collection field=&#8221;bookList&#8221; usage=&#8221;optional&#8221;&gt;</p>
<p>                        &lt;structure  flexible=&#8221;true&#8221; ordered=&#8221;false&#8221;&gt;</p>
<p>                                                &lt;value field=&#8221;isbn&#8221;/&gt;</p>
<p>                                                &lt;value field=&#8221;bookName&#8221;/&gt;</p>
<p>                                                &lt;value field=&#8221;orderDate&#8221; deserializer=&#8221;com.dj.bookorder.binding.util.JibxHelper.deserializeDate&#8221;/&gt;</p>
<p>                                                &lt;value field=&#8221;orderAmount&#8221;/&gt;</p>
<p>                                                &lt;value field=&#8221;shippingDate&#8221; deserializer=&#8221;com.dj.bookorder.binding.util.JibxHelper.deserializeDate&#8221;/&gt;</p>
<p>                                                &lt;structure field=&#8221;paymentType&#8221;/&gt;</p>
<p>                                                &lt;structure field=&#8221;billingAddress&#8221;/&gt;</p>
<p>                                    &lt;/structure&gt;</p>
<p>            &lt;/collection&gt;</p>
<p>&lt;/mapping&gt;</p>
<p> &lt;mapping choice=&#8221;true&#8221; ordered=&#8221;false&#8221;&gt;</p>
<p>            &lt;structure field=&#8221;cardPayment&#8221;  usage=&#8221;optional&#8221;/&gt;</p>
<p>            &lt;structure field=&#8221;checkPayment&#8221;  usage=&#8221;optional&#8221;/&gt;</p>
<p>&lt;/mapping&gt;</p>
<p> &lt;mapping&gt;</p>
<p>&lt;value field=&#8221;authCode&#8221; /&gt;</p>
<p>&lt;value field=&#8221;expireDate&#8221;  deserializer=&#8221;com.dj.bookorder.binding.util.JibxHelper.deserializeDate&#8221;/&gt;</p>
<p>&lt;/mapping&gt;</p>
<p> &lt;mapping&gt;</p>
<p>&lt;value field=&#8221;checkNumber&#8221; /&gt;</p>
<p>&lt;/mapping&gt;</p>
<p> &lt;mapping&gt;</p>
<p>&lt;value field=&#8221;address&#8221; /&gt;</p>
<p> &lt;value field=&#8221;city&#8221; /&gt;</p>
<p> &lt;value field=&#8221;state&#8221; /&gt;</p>
<p>&lt;value field=&#8221;zipCode&#8221; /</p>
<p>&lt;value field=&#8221;country&#8221; /&gt;</p>
<p>&lt;/mapping&gt;</p>
<p>&lt;/binding&gt;</p>
<p>Given below is the reply xml message and binding definition</p>
<p> Reply xml message:</p>
<p>&lt;book-order-reply&gt;&lt;process-date&gt;20091112&lt;/process-date&gt;&lt;/book-order-reply&gt;</p>
<p>Binding definition for reply message:</p>
<p>&lt;binding package=&#8221;com.dj.bookorder&#8221;&gt;</p>
<p>&lt;mapping&gt;</p>
<p>&lt;value  field=&#8221;orderProcessDate&#8221; serializer=&#8221;com.dj.bookorder.binding.util.JibxHelper.serializeDate&#8221;/&gt;</p>
<p>&lt;/mapping&gt;</p>
<p>&lt;/binding&gt;</p>
<p> Jibx binding definition  elements:</p>
<p>&lt;binding&gt; element: This element is the root of a binding definition document and defines characteristics of the whole definition document.</p>
<p>&lt;mapping&gt; element: Mapping element defines the binding used for every objects within the context.</p>
<p>&lt;collection&gt; element: Collection element defines binding for a Java collection. In the example XML &lt;book-order&gt; can have any number of &lt;book&gt; elements inside a &lt;books&gt; element. In the binding definition document &lt;books&gt; element is bound to a java collection bookList.</p>
<p>&lt;structure&gt; element: This element can take various forms. One is where the structure is an xml element which is linked to an object property of a containing  object. In the example binding definition document , structure billing Address is mapped to &lt;billing-address&gt; element which is bound to BillingAddress property of containing object Book. Another variation is where &lt;structure&gt; element is linked to an object of a  collection. In the example book structure is linked to Book object of books collection.</p>
<p> Custom serializer and deserializer:</p>
<p>For more control over JiBX binding behavior you can write custom serializer and deserializer code for conversion. Given below code gives you flexibility of converting a date to any date format you like public class JibxHelper.</p>
<p>{ public static Date deserializeDate (String value) throws ParseException</p>
<p>{  return new SimpleDateFormat(&#8220;yyyyMMdd&#8221;).parse(value);  </p>
<p>    } </p>
<p>public static String serializeDate(Date value) throws ParseException { </p>
<p>return new SimpleDateFormat(&#8220;yyyyMMdd&#8221;).format(value);  </p>
<p>    } </p>
<p>}</p>
<p> Here is an example implementation of Jibx marshalling and unmarshalling</p>
<p>  // getBookRequest() get xml String message &#8211; This can be from the SOAP request , JMS message or from a file in your hard disk</p>
<p>                String xmlMsg = getBookRequest();</p>
<p>            MessageUtil util = new MessageUtil();</p>
<p>                //      getUnMarshalledBookOrderRequest method defenition is given at the section titled &#8216;Unmarshalling example:&#8217; in this blog.</p>
<p>            BookOrder order = util.getUnMarshalledBookOrderRequest(xmlMsg);</p>
<p>            for(Iterator it=order.getBookList().iterator();it.hasNext();){</p>
<p>                System.out.println(((Book)it.next()).getBookName());</p>
<p>            }</p>
<p>            BookOrderReply orderReply = new BookOrderReply();</p>
<p>            orderReply.setOrderProcessDate(new Date());</p>
<p>                //      getMarshalledBookOrderReply method defenition is given at the section titled &#8216;Marshalling example:&#8217; in this blog.</p>
<p>            System.out.println(&#8220;Reply Message :&#8221;+util.getMarshalledBookOrderReply(orderReply));</p>
<p> Above example parse an XML string , convert to <a title="software development and consulting services " href="http://www.unidev.com/" target="_blank">Java </a>object , iterate through a collection and print Book name. Also convertes object to an XML string as well, which can be passed as the reply to incoming request message. Example generates the given below out put.</p>
<p>Cooking for Dummies</p>
<p>Art for Dummies</p>
<p>Reply Message :&lt;book-order-reply&gt;&lt;process-date&gt;20090917&lt;/process-date&gt;&lt;/book-order-reply&gt;</p>
<p>Given below is Java object defenition of BookOrder and Book classes used in this example.</p>
<p>public class BookOrder implements java.io.Serializable</p>
<p>{</p>
<p>private ArrayList bookList = new ArrayList();</p>
<p>    // To Do &#8211; Add setter and getter methods</p>
<p>}</p>
<p> public class Book implements java.io.Serializable</p>
<p>{</p>
<p> private String isbn;</p>
<p>private String bookName;</p>
<p>private BillingAddress billingAddress;</p>
<p>private Date orderDate;</p>
<p> private BigDecimal orderAmount;</p>
<p>private Date shippingDate;</p>
<p>private PaymentType paymentType;</p>
<p>// To Do &#8211; Add setter and getter methods</p>
<p>}</p>
<p><strong> Please refer </strong><a href="http://jibx.sourceforge.net/index.html"><strong>http://jibx.sourceforge.net/index.html</strong></a><strong> for more information on Jibx.</strong></p>
<img src="http://feeds.feedburner.com/~r/Unidev/~4/TByslV0S2QA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.unidev.com/index.php/2009/11/16/bind-xml-message-to-java-objects-using-jibx-jibx-binding-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.unidev.com/index.php/2009/11/16/bind-xml-message-to-java-objects-using-jibx-jibx-binding-tutorial/</feedburner:origLink></item>
	</channel>
</rss>
