<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Bandos&#039; Arcade &#187; JSF</title>
	<atom:link href="http://www.nuwanbando.com/tag/jsf/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nuwanbando.com</link>
	<description>&#34;It&#039;s not about how it is, but how I see it &#34; - Stranger Than Fiction</description>
	<lastBuildDate>Thu, 02 Feb 2012 08:52:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>JSF, Spring together with apache CXF</title>
		<link>http://www.nuwanbando.com/2009/01/jsf-spring-together-with-apache-cxf/</link>
		<comments>http://www.nuwanbando.com/2009/01/jsf-spring-together-with-apache-cxf/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 09:43:23 +0000</pubDate>
		<dc:creator>Nuwan Bandara</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CXF]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://www.nuwanbando.com/?p=113</guid>
		<description><![CDATA[Good tutorials and resources on Apache CXF How Tos are not easy to digg. I had to spend hours searching and reading to make my small application up and running, Integrating Spring with JSF was pretty straightforward, but when it comes to integrating those two with JSF i got stuck. So this post is about [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.nuwanbando.com%2F2009%2F01%2Fjsf-spring-together-with-apache-cxf%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.nuwanbando.com%2F2009%2F01%2Fjsf-spring-together-with-apache-cxf%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Good tutorials and resources on Apache CXF How Tos are not easy to digg. I had to spend hours searching and reading to make my small application up and running, Integrating Spring with JSF was pretty straightforward, but when it comes to integrating those two with JSF i got stuck.</p>
<p>So this post is about <strong>exposing a web service</strong> as a web project using <strong>JSF front end / Spring backed and CXF</strong> for service invocation</p>
<p>before starting I should mention few valuable resource around the net.</p>
<ul>
<li><a href="http://cwiki.apache.org/CXF20DOC/index.html" target="_blank">The CXF documentation (Hope it will be completed soon)</a></li>
<li><a href="http://wheelersoftware.com/articles/spring-cxf-consuming-web-services.html" target="_blank">Make Web Services Transparent with Spring 2.5 and Apache CXF 2.0 by Willie Wheeler</a></li>
<li><a href="http://www.ibm.com/developerworks/webservices/library/ws-pojo-springcxf/index.html?S_TACT=105AGX04&amp;S_CMP=EDU">Introduction to Web services creation using CXF and Spring by Rajeev Hathi and Naveen Balani</a></li>
<li><a href="http://www.netbeans.org/kb/60/websvc/client.html">Developing JAX-WS Web Service Clients &#8211; netbeans</a></li>
<li><a href="http://weblogs.java.net/blog/caroljmcdonald/archive/2007/09/sample_applicat_3.html" target="_blank">Sample Application using JAX-WS, JSF, Spring, and Java by Carol Mcdonal</a></li>
</ul>
<p>The web service u used was the publicly available spelling checker which is used in the <a href="http://www.netbeans.org/kb/60/websvc/client.html">netbeans tutorial.</a></p>
<p><strong>The Step by step guide as follows &gt;&gt;</strong></p>
<p><strong>Step 1 : </strong></p>
<p>Create the classes from the WSDL you can use netbeans for this task or WSDL2JAVA command (wsdl2java [URL]) in the shell.</p>
<p><span id="more-113"></span></p>
<p><strong>Step2 :</strong></p>
<p>Put the generated classes to your WEB-INF/classes directory and simply write a java class to bind to the JSF front and to expose the web service. I was too lazy to iterate the whole list when showing the incorrect words. so please bare with me <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Example :</p>
<blockquote><p>package demo;</p>
<p>import com.cdyne.ws.CheckSoap;<br />
import com.cdyne.ws.Words;<br />
import java.util.List;</p>
<p>public class SpellChecker {</p>
<p>private CheckSoap service;<br />
private String textArea;<br />
private String wrongWord;</p>
<p>public void setWrongWord(String wrongWord) {<br />
this.wrongWord = wrongWord;<br />
}</p>
<p>public String getWrongWord() {<br />
return wrongWord;<br />
}</p>
<p>public void setTextArea(String textArea) {<br />
this.textArea = textArea;<br />
}</p>
<p>public String getTextArea() {<br />
return textArea;<br />
}</p>
<p>//the spring context sets the service using cxf dynamic proxy</p>
<p><strong>public void setService(CheckSoap service) {<br />
this.service = service;<br />
}</strong></p>
<p>public void checkSpelling() {<br />
try{<br />
System.out.println(&#8220;Checking spelli&#8230;&#8221;);<br />
com.cdyne.ws.DocumentSummary doc = service.checkTextBody(textArea, &#8220;&#8221;);<br />
List allwrongwords = doc.getMisspelledWord();<br />
wrongWord = ((Words) allwrongwords.get(0)).getWord();<br />
}catch (Exception e){<br />
e.printStackTrace();<br />
}</p>
<p>}</p>
<p>}</p></blockquote>
<p><strong>Step 3:</strong></p>
<p>Write a small JSF form to display and for use inputs,</p>
<p>Some thing like,</p>
<blockquote><p>&lt;h:form id=&#8221;spellingForm&#8221;&gt;<br />
&lt;h:outputLabel id=&#8221;label1&#8243; value=&#8221;ENTER you text : &#8221; /&gt;<br />
&lt;br /&gt;<br />
&lt;h:inputTextarea id=&#8221;textarea1&#8243; value=&#8221;#{spellingBean.textArea}&#8221; /&gt;<br />
&lt;br /&gt;<br />
&lt;h:commandButton id=&#8221;cmd1&#8243; value=&#8221;check&#8221; action=&#8221;#{spellingBean.checkSpelling}&#8221; /&gt;<br />
&lt;br /&gt;<br />
&lt;h:outputLabel id=&#8221;lab2&#8243; value=&#8221;The misspelled word is : &#8221; /&gt;<br />
&lt;h:outputText id=&#8221;text2&#8243; value=&#8221;#{spellingBean.wrongWord}&#8221; /&gt;<br />
&lt;/h:form&gt;</p></blockquote>
<p><strong>Step 4:</strong></p>
<p>Here comes the good stuff <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Write a Spring Context file for me it was spellapp-servlet.xml</p>
<blockquote><p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br />
&lt;beans xmlns=&#8221;http://www.springframework.org/schema/beans&#8221;<br />
xmlns:xsi=&#8221;http://www.w3.org/2001/XMLSchema-instance&#8221;<br />
xmlns:context=&#8221;http://www.springframework.org/schema/context&#8221;<br />
xsi:schemaLocation=&#8221;http://www.springframework.org/schema/beans</p>
<p>http://www.springframework.org/schema/beans/spring-beans-2.5.xsd</p>
<p>http://www.springframework.org/schema/context</p>
<p>http://www.springframework.org/schema/context/spring-context-2.5.xsd&#8221;&gt;</p>
<p><strong>&lt;bean id=&#8221;client&#8221; class=&#8221;com.cdyne.ws.CheckSoap&#8221;<br />
factory-bean=&#8221;clientFactory&#8221; factory-method=&#8221;create&#8221;/&gt;</strong></p>
<p><strong>&lt;bean id=&#8221;clientFactory&#8221; class=&#8221;org.apache.cxf.jaxws.JaxWsProxyFactoryBean&#8221;&gt;<br />
&lt;property name=&#8221;serviceClass&#8221; value=&#8221;com.cdyne.ws.CheckSoap&#8221;/&gt;<br />
&lt;property name=&#8221;address&#8221; value=&#8221;http://ws.cdyne.com/SpellChecker/check.asmx?WSDL&#8221;/&gt;<br />
&lt;/bean&gt;</strong></p>
<p>&lt;/beans&gt;</p></blockquote>
<p><strong>Step 5: </strong></p>
<p>The Faces config (faces-config.xml)</p>
<blockquote><p>&lt;faces-config version=&#8221;1.2&#8243;<br />
xmlns=&#8221;http://java.sun.com/xml/ns/javaee&#8221;<br />
xmlns:xsi=&#8221;http://www.w3.org/2001/XMLSchema-instance&#8221;<br />
xsi:schemaLocation=&#8221;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd&#8221;&gt;<br />
&lt;application&gt;<br />
&lt;variable-resolver&gt;org.springframework.web.jsf.DelegatingVariableResolver&lt;/variable-resolver&gt;<br />
&lt;/application&gt;</p>
<p>&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;spellingBean&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
demo.SpellChecker<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
<strong>&lt;managed-property&gt;<br />
&lt;property-name&gt;service&lt;/property-name&gt;<br />
&lt;value&gt;#{client}&lt;/value&gt;<br />
&lt;/managed-property&gt;</strong></p>
<p>&lt;/managed-bean&gt;</p>
<p>&lt;/faces-config&gt;</p></blockquote>
<p><strong>Step 6:</strong></p>
<p>The web.xml</p>
<blockquote><p>&lt;web-app version=&#8221;2.5&#8243; xmlns=&#8221;http://java.sun.com/xml/ns/javaee&#8221; xmlns:xsi=&#8221;http://www.w3.org/2001/XMLSchema-instance&#8221; xsi:schemaLocation=&#8221;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&#8221;&gt;<br />
&lt;!&#8211; Spring Application Context configuration &#8211;&gt;<br />
<strong>&lt;context-param&gt;<br />
&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<br />
&lt;param-value&gt;</strong><br />
<strong>/WEB-INF/spellapp-servlet.xml<br />
&lt;/param-value&gt;</strong><br />
&lt;/context-param&gt;<br />
&lt;context-param&gt;<br />
&lt;param-name&gt;javax.faces.CONFIG_FILES&lt;/param-name&gt;<br />
&lt;param-value&gt;/WEB-INF/faces-config.xml&lt;/param-value&gt;<br />
&lt;/context-param&gt;</p>
<p>&lt;context-param&gt;<br />
&lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;<br />
&lt;param-value&gt;server&lt;/param-value&gt;<br />
&lt;/context-param&gt;<br />
&lt;listener&gt;<br />
<strong>&lt;listener-class&gt;<br />
org.springframework.web.context.request.RequestContextListener<br />
&lt;/listener-class&gt;</strong><br />
&lt;/listener&gt;<br />
&lt;context-param&gt;<br />
&lt;param-name&gt;com.sun.faces.verifyObjects&lt;/param-name&gt;<br />
&lt;param-value&gt;false&lt;/param-value&gt;<br />
&lt;/context-param&gt;<br />
&lt;context-param&gt;<br />
&lt;param-name&gt;com.sun.faces.validateXml&lt;/param-name&gt;<br />
&lt;param-value&gt;true&lt;/param-value&gt;<br />
&lt;/context-param&gt;<br />
<strong>&lt;listener&gt;<br />
&lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;<br />
&lt;/listener&gt;</strong><br />
&lt;servlet&gt;<br />
&lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt;<br />
&lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;<br />
&lt;load-on-startup&gt;3&lt;/load-on-startup&gt;<br />
&lt;/servlet&gt;<br />
&lt;servlet&gt;<br />
&lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;<br />
&lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;<br />
&lt;load-on-startup&gt;2&lt;/load-on-startup&gt;<br />
&lt;/servlet&gt;<br />
&lt;servlet-mapping&gt;<br />
&lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt;<br />
&lt;url-pattern&gt;*.htm&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;<br />
&lt;servlet-mapping&gt;<br />
&lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;<br />
&lt;url-pattern&gt;/faces/*&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;<br />
&lt;session-config&gt;<br />
&lt;session-timeout&gt;<br />
30<br />
&lt;/session-timeout&gt;<br />
&lt;/session-config&gt;<br />
&lt;welcome-file-list&gt;<br />
&lt;welcome-file&gt;redirect.jsp&lt;/welcome-file&gt;<br />
&lt;/welcome-file-list&gt;<br />
&lt;/web-app&gt;<br />
<strong><br />
</strong></p></blockquote>
<p><strong>Step 7:</strong></p>
<p>That&#8217;s It Build it deploy it. Have fun <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuwanbando.com/2009/01/jsf-spring-together-with-apache-cxf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Select Many Problem : JSF</title>
		<link>http://www.nuwanbando.com/2008/02/select-many-problem-jsf/</link>
		<comments>http://www.nuwanbando.com/2008/02/select-many-problem-jsf/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 09:59:06 +0000</pubDate>
		<dc:creator>Nuwan Bandara</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Designing & Development]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://nuwanbando.com/?p=76</guid>
		<description><![CDATA[After few days, got some time to write a post&#8230; well as i promised in my earlier post.. I thought of writing about the Annoying problem anybody will face while using selectMany component in JSF. At 1st with out any experience what any one would do is writing both assessor and mutator methods to return [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F02%2Fselect-many-problem-jsf%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F02%2Fselect-many-problem-jsf%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>After few days, got some time to write a post&#8230; well as i promised in my earlier post.. I thought of writing about the Annoying problem anybody will face while using selectMany component in JSF.</p>
<p>At 1st with out any experience what any one would do is writing both assessor and mutator methods to return and set A LIST of selected objects. some thing like</p>
<blockquote><p>private List&lt;myClass&gt; selectList;</p>
<p>public List&lt;myClass&gt; getSelectList() {<br />
return selectList;<br />
}</p>
<p>public void setSelectList(List&lt;myClass&gt; selectList) {<br />
this.selectList =  selectList;<br />
}</p></blockquote>
<p>Even though this is the straight forward way, For some reason JSF implementation does not support it. In many places over the NET and in JSF forums, people have advised to use String Arrays, Saying you cannot use Java Collections in this scenario.</p>
<p>But Use of String Arrays are very much annoying and makes your work very messy. After some testing and trying I found this work around to take the selected objects as it is, not just the label string, Its pretty simple. Instead of using String arrays, Just use an array of your own class. Something like this</p>
<blockquote><p>private myClass[] selectList;</p>
<p>public myClass[] getSelectList() {<br />
return selectList;<br />
}</p>
<p>public void setSelectList(myClass[] selectList) {<br />
this.selectList =  selectList;<br />
}</p></blockquote>
<p>Of-cause you have to use a converter in this case but not difference out there its just a normal converter for your class. So hope this tip will help</p>
<p>cheers !!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuwanbando.com/2008/02/select-many-problem-jsf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Validation Error: Value is not valid&#8221; famous validation error, when using custom converters in JSF.</title>
		<link>http://www.nuwanbando.com/2008/01/validation-error-value-is-not-valid-famous-validation-error-when-using-custom-converters-in-jsf/</link>
		<comments>http://www.nuwanbando.com/2008/01/validation-error-value-is-not-valid-famous-validation-error-when-using-custom-converters-in-jsf/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 09:27:15 +0000</pubDate>
		<dc:creator>Nuwan Bandara</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Designing & Development]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://nuwanbando.com/?p=75</guid>
		<description><![CDATA[This is one problem i faced when i worked with select-many and select-one menus in Java Server Faces. For any one who have worked with JSF knows that you have to use custom converters in order to populate select-many and select-on menus with ur own data types. if i elaborate on this a little bit, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F01%2Fvalidation-error-value-is-not-valid-famous-validation-error-when-using-custom-converters-in-jsf%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F01%2Fvalidation-error-value-is-not-valid-famous-validation-error-when-using-custom-converters-in-jsf%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>This is one problem i faced when i worked with select-many and select-one menus in Java Server Faces. For any one who have worked with <span class="misspell" suggestions="SF,NSF,J'S">JSF</span> knows that you have to use custom converters in order to populate select-many and select-on menus with <span class="misspell" suggestions="Ur,Ir,UAR,Ru,U">ur</span> own data types.</p>
<p>if i elaborate on this a little bit, Select menus are not just there to show simple value-label pairs. you can give directly an object to its value and one of its fields as the label. for an example,</p>
<blockquote><p>public <span class="misspell" suggestions="Array List,Array-List,Aerialist,Realist,Arabist">ArrayList</span>&lt;<span class="misspell" suggestions="Select Item,Select-Item,Selected">SelectItem</span>&gt; <span class="misspell">getLandSelectList</span>() {<br />
if (<span class="misspell">landSelectList</span> != null) {<br />
return <span class="misspell">landSelectList</span>;<br />
}<br />
<span class="misspell">    landSelectList</span> = new <span class="misspell" suggestions="Array List,Array-List,Aerialist,Realist,Arabist">ArrayList</span>&lt;<span class="misspell" suggestions="Select Item,Select-Item,Selected">SelectItem</span>&gt;();<br />
List&lt;Land&gt; <span class="misspell" suggestions="land List,land-List,landless,landslid,Landsat">landList</span> = this.<span class="misspell">getLandList</span>();<br />
for (int i = 0; i &lt; <span class="misspell" suggestions="land List,land-List,landless,landslid,Landsat">landList</span>.size(); i++) {<br />
<span class="misspell">        landSelectList</span>.add(new <span class="misspell" suggestions="Select Item,Select-Item,Selected">SelectItem</span>(<span class="misspell" suggestions="land List,land-List,landless,landslid,Landsat">landList</span>.get(i), <span class="misspell" suggestions="land List,land-List,landless,landslid,Landsat">landList</span>.get(i)<br />
.<span class="misspell">getLandsName</span>_DE()));<br />
}<br />
return <span class="misspell">landSelectList</span>;<br />
}</p></blockquote>
<p>The returning Select list can be taken to a select one or a select many list box like..</p>
<blockquote><p>&lt;h:<span class="misspell" suggestions="selectmen,selectman">selectOneMenu</span> id=&#8221;<span class="misspell">listBoxLand</span>&#8221;<br />
value=&#8221;#{<span class="misspell">userManagerBean</span>.land}&#8221; required=&#8221;true&#8221;&gt;<br />
&lt;f:<span class="misspell" suggestions="select Items,select-Items">selectItems</span> value=&#8221;#{<span class="misspell">userManagerBean</span>.<span class="misspell">landSelectList</span>}&#8221; /&gt;<br />
&lt;/h:<span class="misspell" suggestions="selectmen,selectman">selectOneMenu</span>&gt;<br />
&lt;h:message for=&#8221;<span class="misspell">listBoxLand</span>&#8221; /&gt;</p></blockquote>
<p>This component will set the selected land object directly to the backing bean. If you used simple value(some text or the id) &#8211; label pair. you should again query for the object from the selected id and save in the backing bean. but in this way that extra trouble will be handled by <span class="misspell" suggestions="SF,NSF,J'S">JSF</span>.</p>
<p>The problem is if you do it just like this with out anything else.. you will get a wired validation error saying &#8220;<strong>Validation Error: Value is not valid</strong>&#8220;. This is where you start googling and debugging. Well after some hours of googling..(couldn&#8217;t do much debugging because this is a exception thrown by <span class="misspell" suggestions="SF,NSF,J'S">JSF</span> framework) and reading about 10 to 20 forums i found out that the object which is loaded and the object <span class="misspell" suggestions="which,witch,winch,wish,Mich">wich</span> was selected will be compared when setting to the backing bean. So if your object&#8217;s Class has not overridden the equals method this error message is shown.</p>
<p>So what you have to do is. if you are using your own data Objects for the select menus or in that case for any other <span class="misspell" suggestions="SF,NSF,J'S">JSF</span> tag where you will use converters. You have to override the Equals method. Probably do the comparison with the Id, or with some unique value in that data Object. That&#8217;s it.. The problem solved. In my case the equals methods looks like</p>
<blockquote><p>// overridden equals method<br />
public <span class="misspell" suggestions="Boolean,boo lean,boo-lean,Boleyn,Boole">boolean</span> equals(Object obj) {<br />
if (!(obj <span class="misspell" suggestions="instance of,instance-of,instanced,instance,instances">instanceof</span> Land)) {<br />
return false;<br />
}<br />
Land land = (Land) obj;</p>
<p>return (this.id == land.id);</p>
<p>}</p></blockquote>
<p>Yeah hope this will be useful to some one.. !! I will write another post on how to use Java Collections when working with Select-Many menus.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuwanbando.com/2008/01/validation-error-value-is-not-valid-famous-validation-error-when-using-custom-converters-in-jsf/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Joomla Hack! Automated Joomla user registration via JSF form</title>
		<link>http://www.nuwanbando.com/2008/01/joomla-hack-automated-joomla-user-registration-via-jsf-form/</link>
		<comments>http://www.nuwanbando.com/2008/01/joomla-hack-automated-joomla-user-registration-via-jsf-form/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 18:42:39 +0000</pubDate>
		<dc:creator>Nuwan Bandara</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Designing & Development]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://nuwanbando.com/?p=74</guid>
		<description><![CDATA[Well this post is some what continuation of my last post. What is the use of single sign on if you have to register in two different sites ? yeah this is the solution for that&#8230; What i wanted to do is, when a user registers in my java web application i wanted to register [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F01%2Fjoomla-hack-automated-joomla-user-registration-via-jsf-form%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F01%2Fjoomla-hack-automated-joomla-user-registration-via-jsf-form%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Well this post is some what continuation of my last post.<br />
What is the use of single sign on if you have to register in two different sites ? yeah this is the solution for that&#8230; What i wanted to do is, when a user registers in my java web application i wanted to register the same user in the <span class="misspell" suggestions="PHIP,PP,PH,HP,PHI">PHP</span> app. Since these two applications have different user data-tables (well in my project i cannot merge these tables or use one database. if that is your case just ignore this post.)</p>
<p>When a new user registers in my JAVA web app am taking that user form data and insert those to the <span class="misspell" suggestions="Jamal,Romola,Jammal,Joela,Kamila">joomla</span> database. <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (Yup I know.. What is there to blog about this ?)<br />
But what went wrong is <span class="misspell" suggestions="Jamal,Romola,Jammal,Joela,Kamila">joomla</span> use some extra data from 2 other different tables other than <span class="misspell" suggestions="Jo's,Jose,Josi,Josy,joys">jos</span>_users (in joomla database).</p>
<p>those tables are <span style="font-style: italic" class="misspell" suggestions="Jo's,Jose,Josi,Josy,joys">jos</span><span style="font-style: italic">_core_</span><span style="font-style: italic" class="misspell" suggestions="ACLU,Cal,cal,AC,AL">acl</span><span style="font-style: italic">_</span><span style="font-style: italic" class="misspell" suggestions="Ari,Ario,Afro,Aron,Argo">aro</span><span style="font-style: italic"> </span>and <span style="font-style: italic; font-weight: bold" class="misspell" suggestions="Jo's,Jose,Josi,Josy,joys">jos</span><span style="font-style: italic; font-weight: bold">_core_</span><span style="font-style: italic; font-weight: bold" class="misspell" suggestions="ACLU,Cal,cal,AC,AL">acl</span><span style="font-style: italic; font-weight: bold">_groups_</span><span style="font-style: italic; font-weight: bold" class="misspell" suggestions="Ari,Ario,Afro,Aron,Argo">aro</span><span style="font-style: italic; font-weight: bold">_map</span> so when you are inserting the data to the <span style="font-style: italic" id="bad_word" class="misspell" suggestions="Jo's,Jose,Josi,Josy,joys">jos</span><span style="font-style: italic">_users</span> table.. also save the data in to the other two tables as well.<br />
there are foreign key constrains over these tables. so</p>
<p>1- Insert the user to the <span class="misspell" suggestions="Jo's,Jose,Josi,Josy,joys">jos</span>_users<br />
2<span class="misspell" suggestions="ND,Nd,Ned,nod,MD"></span>- take the user id from a select query and insert that user to the <span class="misspell" suggestions="Jo's,Jose,Josi,Josy,joys">jos</span>_core_<span class="misspell" suggestions="ACLU,Cal,cal,AC,AL">acl</span>_<span class="misspell" suggestions="Ari,Ario,Afro,Aron,Argo">aro</span><br />
3- takes <span class="misspell" suggestions="Jo's,Jose,Josi,Josy,joys">jos</span>_core_<span class="misspell" suggestions="ACLU,Cal,cal,AC,AL">acl</span>_<span class="misspell" suggestions="Ari,Ario,Afro,Aron,Argo">aro</span> id from a select query and insert it in to the <span class="misspell" suggestions="Jo's,Jose,Josi,Josy,joys">jos</span>_core_<span class="misspell" suggestions="ACLU,Cal,cal,AC,AL">acl</span>_groups_<span class="misspell" suggestions="Ari,Ario,Afro,Aron,Argo">aro</span>_map</p>
<p>take a look at the three tables then you will realize what you should do.</p>
<p>The other task is password encryption. well <span class="misspell" suggestions="Jamal,Romola,Jammal,Joela,Kamila">Joomla</span> 1.5 uses <span class="misspell" suggestions="MD,Md,mad,med,mid">md</span>5 encryption mechanism to hash the passwords.  When a password is created, it is hashed with a 32 character salt that is appended to the end of the password string.  The password is stored as {TOTAL HASH}:{ORIGINAL SALT}.</p>
<p>you can see this method at <span class="misspell" suggestions="plug ins,plug-ins,polygons,plugs,plugging">plugins</span>/authentication/<span class="misspell" suggestions="Jamal,Romola,Jammal,Joela,Kamila">joomla</span>.<span class="misspell" suggestions="Phip,PP,pH,pp,HP">php</span> lines 80-116.</p>
<p>So what you have to do is take your password and make a {TOTAL HASH}:{ORIGINAL SALT} from it and save the created string. I found this information also in a <a href="http://forum.joomla.org/index.php?topic=207689.0;wap2" title="discussion forum" id="n.k5">discussion forum</a>. which had shown a java class to do this task.. so yeah it was quite useful..</p>
<p>so that&#8217;s all about behind the seen registration <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Have fun !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuwanbando.com/2008/01/joomla-hack-automated-joomla-user-registration-via-jsf-form/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Single Sign-On between Joomla (PHP) and a custom JSF / JSP login (JAVA)</title>
		<link>http://www.nuwanbando.com/2008/01/single-sign-on-between-joomla-php-and-a-custom-jsf-jsp-login-java/</link>
		<comments>http://www.nuwanbando.com/2008/01/single-sign-on-between-joomla-php-and-a-custom-jsf-jsp-login-java/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 15:08:15 +0000</pubDate>
		<dc:creator>Nuwan Bandara</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[LAMP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Designing & Development]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[TCP/UDP]]></category>

		<guid isPermaLink="false">http://nuwanbando.com/?p=72</guid>
		<description><![CDATA[Single sign-on (SSO) is a method of access control, that enables a user to authenticate once, and gain access to the resources of multiple software systems. Well in my case, the task i have given is to authenticate a user in a PHP and a JAVA (Web) system simultaneously. My PHP web application is the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F01%2Fsingle-sign-on-between-joomla-php-and-a-custom-jsf-jsp-login-java%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F01%2Fsingle-sign-on-between-joomla-php-and-a-custom-jsf-jsp-login-java%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><strong>Single sign-on</strong> (SSO) is a method of access control, that enables a user to authenticate once, and gain access to the resources of multiple software systems. Well in my case, the task i have given is to authenticate a user in a PHP and a JAVA (Web) system simultaneously.</p>
<p>My PHP web application is the well known Joomla CMS, and my JAVA web application is based on JSF and custom built. After some thinking and research I found several resources which are worth reading (<a href="http://www.josso.org/" title="JOSSO" id="kv-6">JOSSO</a>, <a href="http://www.imprivata.com/onesign_sso" title="One Sign" id="vwpy">OneSign</a> ), but i couldn&#8217;t take any help from them, mostly those SSO frameworks are complex ( yeah <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I couldn&#8217;t understand ) and aimed on a general pourpose and most of them are not for free.</p>
<p>So yeah I thought of doing some Hack to joomla and also make some changes in my Java web app&#8217;s authentication method. After talking with some of my geeky Friends (<a href="http://www.sandaru1.com/" title="Sandaruwan" id="who9">Sandaruwan</a> and Anjana). I came up with two approaches. both are involved in handling the cookies manually up to certain extent.</p>
<p>The 1st approach is (Which i didn&#8217;t try and had to give up due to the reason that I am using JSF as the web application framework) to log-in to the Joomla site and after loged in to Joomla create a random named temp file in the server  (possibly in /home/secrets with 777) with the user-name  (if a valid log in) and set a cookie using set_cookie(&#8220;name&#8221;,$filename) and direct to a jsp page to do the java side authentication.</p>
<p>in this JSP, page read the secret file name from the cookie and read the file from the http server in-order to take the username of the loged-in user. By passing this to the authentication method of the java web app, the java side also can be authenticated.</p>
<p>yup it is pretty simple, but i had to give it up mainly because I use JSF. if I do the user authentication in the above way in the java side. I cannot add the user object to the FacesContext which will be used by my other java side components. so even though i log in. later on in other jsf pages my loged user cannot be found. (Shortly my java login process is not happening according to the JSF implementation procedures.) and secondly i had to give up this method because my Project manger didn&#8217;t like the idea of saving temp files in the server. <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So the Second and the method which i have implemented is, automating the Joomla log-in process by making an http request to the http server from my JSF backing bean. and set the PHP cookie manually via Http Servlet response.</p>
<p>before i explain this method more broadly i have to mention about two nice tools which helped me to monitor the http requests and response.<br />
<a href="http://ws.apache.org/commons/tcpmon/" title="Apache TCP Monitor" id="belg">Apache TCP Monitor</a><br />
<a href="https://addons.mozilla.org/en-US/firefox/addon/3829" title="Live Http headers (FireFox ad-on)" id="vem7">Live Http headers (FireFox ad-on)</a></p>
<p><strong><u>Architecture</u></strong></p>
<p><img src="http://docs.google.com/File?id=ddv87v2p_21dpsn2kwh" style="width: 365px; height: 245px" /></p>
<p><span style="font-weight: bold">Implementation</span></p>
<p>There are two different scenarios.<br />
1. User can visit teh home page of the joomla site 1st and the PHP Cookie is already set.<br />
2. User visit the Java site PHP Cookie is not available.</p>
<p><span id="more-72"></span><span style="font-weight: bold"></span></p>
<p>Since anyhow we are using the java login form for the username and password in put. the Signing in for both sites will be done from the java side. (If its the PHP side same problem with the JSF session)</p>
<p>I created a link in the joomla home to the JSF login form. and made the joomla login form invisible to the user.</p>
<pre id="line123">&lt;<span class="start-tag">form</span><span class="attribute-name"> action</span>=<span class="attribute-value">"/joomla/index.php" </span><span class="attribute-name">method</span>=<span class="attribute-value">"post" </span><span class="attribute-name">name</span>=<span class="attribute-value">"login" </span><span class="attribute-name"></span></pre>
<pre id="line123"><span class="attribute-name">					id</span>=<span class="attribute-value">"form-login" </span>&gt;
    &lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name">name</span>=<span class="attribute-value">"option" </span><span class="attribute-name">value</span>=<span class="attribute-value">"com_user" </span><span class="error"><span class="attribute-name">/</span></span>&gt;
    &lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name">name</span>=<span class="attribute-value">"task" </span><span class="attribute-name">value</span>=<span class="attribute-value">"login" </span><span class="error"><span class="attribute-name">/</span></span>&gt;
    &lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name">name</span>=<span class="attribute-value">"return" </span><span class="attribute-name"></span></pre>
<pre id="line123"><span class="attribute-name">		value</span>=<span class="attribute-value">"aHR0cDovL2xvY2FsaG9zdC9qb29tbGEvaW5kZXgucGhw" </span><span class="error"><span class="attribute-name">/</span></span>&gt;
    &lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name"></span></pre>
<pre id="line123"><span class="attribute-name">		name</span>=<span class="attribute-value">"4c8b847e06d9cfc211c7c0547d8b0e82" </span><span class="attribute-name">value</span>=<span class="attribute-value">"1" </span><span class="error"><span class="attribute-name">/</span></span>&gt;
&lt;/<span class="end-tag">form</span>&gt;</pre>
<p>I removed the input text fields for username and password but kept the four hidden fields as shown above. it is very important to keep these hidden fields hence, when login, joomla is checking for these randomly generated (generated in the server and dynamically added to the form) values. to remove the visible input text fields you have to hack in to thejoomla template.<br />
Now there is no login form in the Joomla home (not invisible). Once you click the Login Link the user will be forward to a java (JSF) login form and asked to insert the username and password. these values are taken in to the Backing bean (Normal JSF procedure). and make the JAVA side authentication.</p>
<p>If the user is authenticated, what you have to do is make two UrlConnection to the HTTP server in order to authenticate Joomla. the 1st UrlConnection is to read the main page (or the page where joomla has its dynamically generated Login form)</p>
<p>you have to read four hidden fields in the form and take them to variables and create a request string, and make the 2nd request to the same page (Due to Joomla&#8217;s design pattern). you should not forget to send the cookie that you received with the 1st request. Once you did this you are authenticated in thephp side too. The next step is adding the cookie to the HttpServletResponce. (Make sure u set the path of the cookie.. I had to debug for hours forgetting that part <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
<p>The above mentioned is the 1st scenario if there are no cookies in the client side (if the user haven&#8217;t requested the home page ofjoomla). the 2nd scenario is if the user has a cookie, then when ur making the request u have to get the cookies from the HttpServletRequest and append it to the request header. Simply what you have to do is get all the cookies and append them. the rest of it is same.</p>
<p>So that&#8217;s it.. you&#8217;re authenticated in both web apps. With the post i will attach the Java Source code i used to do this task.</p>
<p><a href="http://nuwanbando.com/wp-content/uploads/2008/01/authjoomla.zip" title="Joomla Auth Source Code">Joomla Auth Source Code</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuwanbando.com/2008/01/single-sign-on-between-joomla-php-and-a-custom-jsf-jsp-login-java/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>JSF : Setting a custom message from a backing bean</title>
		<link>http://www.nuwanbando.com/2008/01/jfs-setting-a-custom-message-from-a-backing-bean/</link>
		<comments>http://www.nuwanbando.com/2008/01/jfs-setting-a-custom-message-from-a-backing-bean/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 17:29:22 +0000</pubDate>
		<dc:creator>Nuwan Bandara</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Designing & Development]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://nuwanbando.com/?p=71</guid>
		<description><![CDATA[So yeah !! I thought of writing something about JSF. Since am working with it for Nealy 3 months now. So how about custom message handling for starters !! JSF message tag is pretty useful in many places. for an example, for the use of validators. but what i wanted to write here is, not [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F01%2Fjfs-setting-a-custom-message-from-a-backing-bean%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F01%2Fjfs-setting-a-custom-message-from-a-backing-bean%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>So yeah !! I thought of writing something about JSF. Since am working with it for Nealy 3 months now.  So how about custom message handling for starters !! <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>JSF message tag is pretty useful in many places. for an example, for the use of validators. but what i wanted to write here is, not how a message is shown after validation.</p>
<p>Think after some database transaction you wanted to say &#8220;Transaction is successful or not successful&#8221; or in some random scenario if you wanted to show a message in anywhere in your web-page at anytime, you can do that from your backing bean with out much effort.</p>
<p>I will take the tomahawk fileupload tag as an example JSF tag. so in the JSP side it will look like<br />
<code></code></p>
<pre lang="html">

<h:outputlabel for="fileupload" value="File :"></h:outputlabel>
	<t:inputfileupload id="fileupload" accept="image/*" size="50">
               value="#{bbaBean.theFile}" storage="file"
               styleClass="fileUploadInput"
               required="true"&gt;
        </t:inputfileupload>
<h:message for="fileupload" showdetail="true">
               errorstyle="Color: red;"&gt;
</h:message>

<h:commandbutton value="Datei Hochladen">
                 action="#{bbaBean.uploadFile}" styleclass="linkbox"&gt;
</h:commandbutton></pre>
<p>And when the upload button is clicked the uploadFile method will be invoked in our backing bean. which will look like..<br />
<code></code></p>
<pre line="1" lang="java">
public String uploadFile throws IOException {

       FacesMessage messageErr =
               new FacesMessage(FacesMessage.SEVERITY_ERROR,
                     "ERROR : ",
                     "XML File you have uploaded is not compatible");

       FacesMessage messageSuc = new FacesMessage(
              "The XML File You have uploaded is successfully
                                           added to the Database");

       FacesContext fc = FacesContext.getCurrentInstance();

       try {
              //TODO: Transaction or logic....
               fc..addMessage("form1:fileupload", messageSuc);
       } catch(Exception e) {
               fc.addMessage("form1:fileupload", messageErr);
       }
}</pre>
<p>Simply that is it. So when an exception occurs your JSP page shows the custom error message. One other thing is you can set the message type too. if its and error message as i have shown make it&#8217;s SEVERITY to ERROR. and add an error style class for the tag. so your error message will be shown different than the other messages..</p>
<p>so yeah enjoy..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuwanbando.com/2008/01/jfs-setting-a-custom-message-from-a-backing-bean/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

