<?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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>cum grano salis — nobody likes a clever bastard</title>
	
	<link>http://datenschwanz.net</link>
	<description>science, technology, politics, and vitriol at the bleeding edge of the crinkum-crankum we call Internet. also, food.</description>
	<lastBuildDate>Thu, 08 Apr 2010 10:29:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/us/</creativeCommons:license>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/datenschwanznet" /><feedburner:info uri="datenschwanznet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>PrimeFaces and Spring Web Flow</title>
		<link>http://feedproxy.google.com/~r/datenschwanznet/~3/DH0fhcg8pgU/</link>
		<comments>http://datenschwanz.net/2010/04/08/primefaces-and-spring-web-flow/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 08:45:50 +0000</pubDate>
		<dc:creator>studmuffin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PrimeFaces]]></category>
		<category><![CDATA[Spring Web Flow]]></category>

		<guid isPermaLink="false">http://datenschwanz.net/?p=425</guid>
		<description><![CDATA[




I usually applaud PrimeFaces for its simplicity, ease of integration with other component kits, and its extensive collection of components. The documentation is pretty good, too, as long as you ignore the myriad typos and just plain wrong things. Recently, it almost officially got Spring Web Flow support in the 1.0.1 snapshot builds. (I had [...]]]></description>
			<content:encoded><![CDATA[<!-- Easy AdSense V2.82 -->
<!-- Post[count: 2] -->
<div class="ezAdsense adsense adsense-leadin" style="text-align:center;margin:12px;"><script type="text/javascript"><!--
google_ad_client = "pub-6651136519429825";
/* DS, top content, 468x60, created 11/25/09 */
google_ad_slot = "2784801780";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div><p>I usually applaud PrimeFaces for its simplicity, ease of integration with other component kits, and its extensive collection of components. The documentation is pretty good, too, as long as you ignore the myriad typos and just plain wrong things. Recently, it <a href="http://cagataycivici.wordpress.com/2010/03/21/integrating-primefaces-with-spring-webflow/">almost officially got Spring Web Flow support</a> in the 1.0.1 snapshot builds. (I had been running it with SWF already, but the 1.0.0 release broke that.) I assume that in the rush to get it up and running, there was an integration oversight, and that means that you can&#8217;t run SWF with PrimeFaces and another kit with AJAX components at the same time. That&#8217;s okay, because it&#8217;s an easy fix.</p>
<p><span id="more-425"></span><br />
Here is my updated version of the PrimeFacesAjaxHandler. If you compare it with what&#8217;s in the 1.0.1 snapshot, you&#8217;ll see that the main difference is that this can take a configurable delegate. (The @PostInitialize annotation basically triggers ApplicationListener&lt;ContextRefreshedEvent&gt; event handling, so you can reimplement it directly like that if you want, or use the old InitializingBean method.) The other difference is the possible bug in sendAjaxRedirect where it could shortcut the delegate if it&#8217;s the delegate&#8217;s AJAX request. I didn&#8217;t investigate, so maybe the original is actually okay.</p>
<pre class="brush: java; wrap-lines: false;">
/*
 * Copyright 2009-2010 Prime Technology.
 *
 * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.faces.primefaces;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.js.ajax.AjaxHandler;
import org.springframework.js.ajax.SpringJavascriptAjaxHandler;

import utils.spring.PostInitialize;

/**
 * PrimeFaces implementation of SpringJavascriptAjaxHandler Only used for Spring
 * WebFlow Integration
 */
public class PrimeFacesAjaxHandler
	implements AjaxHandler
{

	private AjaxHandler delegate;

	@PostInitialize
	public void init() {
		if (delegate == null) {
			delegate = new SpringJavascriptAjaxHandler();
		}
	}

	public boolean isAjaxRequest(HttpServletRequest req, HttpServletResponse resp) {
		return isPrimeFacesAjaxRequest(req) || delegate.isAjaxRequest(req, resp);
	}

	public void sendAjaxRedirect(String targetURL, HttpServletRequest req, HttpServletResponse resp, boolean popup)
		throws IOException
	{
		if (isPrimeFacesAjaxRequest(req)) {
			resp.sendRedirect(targetURL);
		} else {
			delegate.sendAjaxRedirect(targetURL, req, resp, popup);
		}
	}

	public void setDelegate(@SuppressWarnings(&quot;hiding&quot;) AjaxHandler delegate) {
		this.delegate = delegate;
	}

	private boolean isPrimeFacesAjaxRequest(HttpServletRequest request) {
		return request.getParameterMap().containsKey(&quot;primefacesPartialRequest&quot;);
	}

}
</pre>
<p>This now allows this to work and then the AJAX calls are all happy:</p>
<pre class="brush: xml; wrap-lines: false;">
	&lt;bean id=&quot;flowController&quot; class=&quot;org.springframework.webflow.mvc.servlet.FlowController&quot;&gt;

		&lt;property name=&quot;ajaxHandler&quot;&gt;

			&lt;bean class=&quot;org.springframework.faces.primefaces.PrimeFacesAjaxHandler&quot;&gt;

				&lt;property name=&quot;delegate&quot;&gt;

					&lt;bean class=&quot;org.springframework.faces.richfaces.RichFacesAjaxHandler&quot; /&gt;

				&lt;/property&gt;

			&lt;/bean&gt;

		&lt;/property&gt;

[...]

	&lt;/bean&gt;
</pre>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fprimefaces-and-spring-web-flow%2F&amp;linkname=PrimeFaces%20and%20Spring%20Web%20Flow" title="Digg" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fprimefaces-and-spring-web-flow%2F&amp;linkname=PrimeFaces%20and%20Spring%20Web%20Flow" title="Delicious" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fprimefaces-and-spring-web-flow%2F&amp;linkname=PrimeFaces%20and%20Spring%20Web%20Flow" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fprimefaces-and-spring-web-flow%2F&amp;linkname=PrimeFaces%20and%20Spring%20Web%20Flow" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fprimefaces-and-spring-web-flow%2F&amp;linkname=PrimeFaces%20and%20Spring%20Web%20Flow" title="Reddit" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/yahoo_buzz?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fprimefaces-and-spring-web-flow%2F&amp;linkname=PrimeFaces%20and%20Spring%20Web%20Flow" title="Yahoo Buzz" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/buzz.png" width="16" height="16" alt="Yahoo Buzz"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fprimefaces-and-spring-web-flow%2F&amp;linkname=PrimeFaces%20and%20Spring%20Web%20Flow" title="Twitter" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fprimefaces-and-spring-web-flow%2F&amp;linkname=PrimeFaces%20and%20Spring%20Web%20Flow" title="DZone" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fprimefaces-and-spring-web-flow%2F&amp;linkname=PrimeFaces%20and%20Spring%20Web%20Flow" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fprimefaces-and-spring-web-flow%2F&amp;linkname=PrimeFaces%20and%20Spring%20Web%20Flow" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/amazon_wish_list?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fprimefaces-and-spring-web-flow%2F&amp;linkname=PrimeFaces%20and%20Spring%20Web%20Flow" title="Amazon Wish List" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/amazon.png" width="16" height="16" alt="Amazon Wish List"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fprimefaces-and-spring-web-flow%2F&amp;linkname=PrimeFaces%20and%20Spring%20Web%20Flow"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/B3kXlmOyPUxoVdvv5TtwiQS97SA/0/da"><img src="http://feedads.g.doubleclick.net/~a/B3kXlmOyPUxoVdvv5TtwiQS97SA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/B3kXlmOyPUxoVdvv5TtwiQS97SA/1/da"><img src="http://feedads.g.doubleclick.net/~a/B3kXlmOyPUxoVdvv5TtwiQS97SA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/datenschwanznet/~4/DH0fhcg8pgU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://datenschwanz.net/2010/04/08/primefaces-and-spring-web-flow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/us/</creativeCommons:license>
	<feedburner:origLink>http://datenschwanz.net/2010/04/08/primefaces-and-spring-web-flow/</feedburner:origLink></item>
		<item>
		<title>Philosophize on *this*! (or, fake science at Scientific American)</title>
		<link>http://feedproxy.google.com/~r/datenschwanznet/~3/cEdZ3TsWT1E/</link>
		<comments>http://datenschwanz.net/2010/04/08/philosophize-on-this/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 06:55:10 +0000</pubDate>
		<dc:creator>studmuffin</dc:creator>
				<category><![CDATA[Society]]></category>
		<category><![CDATA[fake science]]></category>
		<category><![CDATA[religion]]></category>

		<guid isPermaLink="false">http://datenschwanz.net/?p=419</guid>
		<description><![CDATA[This is my response to the huge honking turd that Scientific American put out: Scientists say free will probably doesn&#8217;t exist, but urge: &#8220;Don&#8217;t stop believing!&#8221;
Oh, where to begin? First, this isn&#8217;t science or scientific. This is religious propaganda poorly disguised as science, and funded by a religious organization. It doesn&#8217;t belong anywhere near this [...]]]></description>
			<content:encoded><![CDATA[<div class="boxnote">This is my response to the huge honking turd that Scientific American put out: <a href="http://www.scientificamerican.com/blog/post.cfm?id=scientists-say-free-will-probably-d-2010-04-06">Scientists say free will probably doesn&#8217;t exist, but urge: &#8220;Don&#8217;t stop believing!&#8221;</a></div>
<p>Oh, where to begin? First, this isn&#8217;t science or scientific. This is religious propaganda poorly disguised as science, and funded by a religious organization. It doesn&#8217;t belong anywhere near this magazine that once had value, but <a href="http://www.edge.org/3rd_culture/horgan06/horgan06_index.html">Templeton</a> has deep pockets.</p>
<p>As it is presented, the &#8220;experiment&#8221; is fundamentally flawed. Testing all of humanity against a constrained and insignificant sample space does not produce relevant results. Were people tested over time? People from vastly different societies? People who are &#8220;mentally handicapped&#8221; such that they don&#8217;t value what the usual selfish human values (nihilists)? What about people from other times? People of different ages? Heck, it doesn&#8217;t even matter. It was just 30 people! Maybe the experiment should have been testing why these people behaved this way. Repression? Pervasive fraud and lies in our society? Shortage of resources? Rebellion against stupid experimenters?</p>
<p>Sorry, but why the hell would you send me back to stop WW2? Knowing full well who funded this experiment, it would make no sense because I&#8217;m not Jewish. Like many others, I probably wouldn&#8217;t have been born if it wasn&#8217;t for WW2. (Then again, maybe I wouldn&#8217;t have been born if Hitler won.) Why would you recommend that I essentially kill all of THOSE people that would have existed AND myself? Why wouldn&#8217;t I be sent back to the 1300s with some god damned penicillin? Do you know how many people died from the plague? Probably not, but I can tell you that it was orders of magnitude more than WW2. Just for your insolence, I may very well send Hitler&#8217;s mother back to the future, stay there and get his job done right, and then his mom can have another baby Adolf who will rule the world that I created! Since we&#8217;re talking nonsense here, maybe I would hold my breath in transit and go all the way back and kill Abraham. That way, there wouldn&#8217;t have been anyone to kill in WW2, or survive and complain incessantly (your pick!) If you want a religious twist, send me back to the Inquisition. There, you will find me probably doling out punishment because THOSE PEOPLE SURVIVED! Tourism! Give me any other period in time that would give me the opportunity to extinguish one of the major religions and I&#8217;m in! Really though, I would probably use my few minutes to find a brauhaus and get a hot dog and a beer. Philosophize on that.</p>
<p>Back to science&#8230; With perfect knowledge of a system, nothing is random. Randomness is only what we use to explain that which we cannot observe. It&#8217;s perceived to be random. So, removing the stochastic element from the universe, it&#8217;s all just math. I can see that there&#8217;s no shortage of assumptions here that our &#8220;free will&#8221; is somehow insulated others&#8217; actions. It&#8217;s the same system. Drr.</p>
<p>Lastly, anyone suggesting that science should not be full disclosure should be burned. People can handle the truth. People may think that they can&#8217;t because they have been coddled for so long, as well as the usual nefarious reasons (sex, money, power.) Sure, as with all big changes there is time for adaptation, but that&#8217;s one thing that humans are good at. Regardless, it&#8217;s contradictory. Stating that telling everyone that &#8220;free will&#8221; doesn&#8217;t exist and expecting the same outcome essentially states that humans are deterministic and can&#8217;t make up their own minds!</p>
<p>Seriously, though. Does anyone really think that people don&#8217;t already know all of this? Sure, they may go to church, pray, and say that they are nice people, but deep inside they are in denial. What they really want is to bang Miley Cyrus or Mel Gibson. &#8220;But I wouldn&#8217;t!&#8221; Pfft. Okay, if not that, they definitely want to have enough (or lots) of money, be free from bills and government, and basically&#8230; exercise free will! It&#8217;s a good thing that they are sentient enough to know that a little bit of greed gets you places. It got humans this far since it&#8217;s part of our toolkit of survival instincts. Telling humans that they must deny their humanity just reeks of religion. You&#8217;re a sucker if you hit that space bar.</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fphilosophize-on-this%2F&amp;linkname=Philosophize%20on%20%2Athis%2A%21%20%28or%2C%20fake%20science%20at%20Scientific%20American%29" title="Digg" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fphilosophize-on-this%2F&amp;linkname=Philosophize%20on%20%2Athis%2A%21%20%28or%2C%20fake%20science%20at%20Scientific%20American%29" title="Delicious" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fphilosophize-on-this%2F&amp;linkname=Philosophize%20on%20%2Athis%2A%21%20%28or%2C%20fake%20science%20at%20Scientific%20American%29" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fphilosophize-on-this%2F&amp;linkname=Philosophize%20on%20%2Athis%2A%21%20%28or%2C%20fake%20science%20at%20Scientific%20American%29" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fphilosophize-on-this%2F&amp;linkname=Philosophize%20on%20%2Athis%2A%21%20%28or%2C%20fake%20science%20at%20Scientific%20American%29" title="Reddit" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/yahoo_buzz?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fphilosophize-on-this%2F&amp;linkname=Philosophize%20on%20%2Athis%2A%21%20%28or%2C%20fake%20science%20at%20Scientific%20American%29" title="Yahoo Buzz" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/buzz.png" width="16" height="16" alt="Yahoo Buzz"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fphilosophize-on-this%2F&amp;linkname=Philosophize%20on%20%2Athis%2A%21%20%28or%2C%20fake%20science%20at%20Scientific%20American%29" title="Twitter" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fphilosophize-on-this%2F&amp;linkname=Philosophize%20on%20%2Athis%2A%21%20%28or%2C%20fake%20science%20at%20Scientific%20American%29" title="DZone" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fphilosophize-on-this%2F&amp;linkname=Philosophize%20on%20%2Athis%2A%21%20%28or%2C%20fake%20science%20at%20Scientific%20American%29" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fphilosophize-on-this%2F&amp;linkname=Philosophize%20on%20%2Athis%2A%21%20%28or%2C%20fake%20science%20at%20Scientific%20American%29" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/amazon_wish_list?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fphilosophize-on-this%2F&amp;linkname=Philosophize%20on%20%2Athis%2A%21%20%28or%2C%20fake%20science%20at%20Scientific%20American%29" title="Amazon Wish List" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/amazon.png" width="16" height="16" alt="Amazon Wish List"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F04%2F08%2Fphilosophize-on-this%2F&amp;linkname=Philosophize%20on%20%2Athis%2A%21%20%28or%2C%20fake%20science%20at%20Scientific%20American%29"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/YUzTOv8xi6ZKZ6YaL972TrY_Q9Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/YUzTOv8xi6ZKZ6YaL972TrY_Q9Q/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YUzTOv8xi6ZKZ6YaL972TrY_Q9Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/YUzTOv8xi6ZKZ6YaL972TrY_Q9Q/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/datenschwanznet/~4/cEdZ3TsWT1E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://datenschwanz.net/2010/04/08/philosophize-on-this/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/us/</creativeCommons:license>
	<feedburner:origLink>http://datenschwanz.net/2010/04/08/philosophize-on-this/</feedburner:origLink></item>
		<item>
		<title>EGit May Eat Your Project</title>
		<link>http://feedproxy.google.com/~r/datenschwanznet/~3/ZyiRwrC6Lqo/</link>
		<comments>http://datenschwanz.net/2010/03/30/egit-may-eat-your-project/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 23:49:24 +0000</pubDate>
		<dc:creator>studmuffin</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[EGit]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://datenschwanz.net/?p=413</guid>
		<description><![CDATA[I moved a few client repositories over to Git from Subversion over the weekend and I started using EGit. It works pretty well, other than that it&#8217;s missing the Team Synchronize functionality, which is sorely missed. The most you get is a single file diff. The only thing you have to watch out for is [...]]]></description>
			<content:encoded><![CDATA[<p>I moved a few client repositories over to <a href="http://git-scm.com/">Git</a> from <a href="http://subversion.tigris.org/">Subversion</a> over the weekend and I started using <a href="http://www.eclipse.org/egit/">EGit</a>. It works pretty well, other than that it&#8217;s missing the Team Synchronize functionality, which is sorely missed. The most you get is a single file diff. The only thing you have to watch out for is renaming projects. For some reason, and <a href="http://osdir.com/ml/git/2009-03/msg02013.html">this goes back to March 2009</a> I guess, it loses its configuration. None of the decorators will be there anymore and there will be no mention of your respository. If you check the Error Log, you&#8217;ll see an error something like this:</p>
<pre class="brush: plain; light: true; wrap-lines: false;">
Git team provider configuration has gone missing.

java.io.FileNotFoundException: /home/xxx/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/&lt;projectname&gt;/org.eclipse.egit.core/GitProjectData.properties (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.&lt;init&gt;(FileInputStream.java:106)
at org.eclipse.egit.core.project.GitProjectData.load(GitProjectData.java:402)
at org.eclipse.egit.core.project.GitProjectData.get(GitProjectData.java:165)
at org.eclipse.egit.core.GitProvider.getData(GitProvider.java:69)
at org.eclipse.egit.core.project.RepositoryMapping.getMapping(RepositoryMapping.java:244)
at org.eclipse.egit.ui.Activator$RCS.run(Activator.java:322)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
</pre>
<p>It&#8217;s easily fixed, though. Just recreate that file with contents like this:</p>
<pre class="brush: plain; light: true;">
#GitProjectData
#Mon Mar 29 08:01:28 CDT 2010
.gitdir=.git
</pre>
<p>Voila.</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F03%2F30%2Fegit-may-eat-your-project%2F&amp;linkname=EGit%20May%20Eat%20Your%20Project" title="Digg" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F03%2F30%2Fegit-may-eat-your-project%2F&amp;linkname=EGit%20May%20Eat%20Your%20Project" title="Delicious" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F03%2F30%2Fegit-may-eat-your-project%2F&amp;linkname=EGit%20May%20Eat%20Your%20Project" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F03%2F30%2Fegit-may-eat-your-project%2F&amp;linkname=EGit%20May%20Eat%20Your%20Project" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F03%2F30%2Fegit-may-eat-your-project%2F&amp;linkname=EGit%20May%20Eat%20Your%20Project" title="Reddit" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/yahoo_buzz?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F03%2F30%2Fegit-may-eat-your-project%2F&amp;linkname=EGit%20May%20Eat%20Your%20Project" title="Yahoo Buzz" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/buzz.png" width="16" height="16" alt="Yahoo Buzz"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F03%2F30%2Fegit-may-eat-your-project%2F&amp;linkname=EGit%20May%20Eat%20Your%20Project" title="Twitter" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F03%2F30%2Fegit-may-eat-your-project%2F&amp;linkname=EGit%20May%20Eat%20Your%20Project" title="DZone" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F03%2F30%2Fegit-may-eat-your-project%2F&amp;linkname=EGit%20May%20Eat%20Your%20Project" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F03%2F30%2Fegit-may-eat-your-project%2F&amp;linkname=EGit%20May%20Eat%20Your%20Project" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/amazon_wish_list?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F03%2F30%2Fegit-may-eat-your-project%2F&amp;linkname=EGit%20May%20Eat%20Your%20Project" title="Amazon Wish List" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/amazon.png" width="16" height="16" alt="Amazon Wish List"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F03%2F30%2Fegit-may-eat-your-project%2F&amp;linkname=EGit%20May%20Eat%20Your%20Project"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/TBbHNdYEGPunx1NMLIOkJf28x-c/0/da"><img src="http://feedads.g.doubleclick.net/~a/TBbHNdYEGPunx1NMLIOkJf28x-c/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/TBbHNdYEGPunx1NMLIOkJf28x-c/1/da"><img src="http://feedads.g.doubleclick.net/~a/TBbHNdYEGPunx1NMLIOkJf28x-c/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/datenschwanznet/~4/ZyiRwrC6Lqo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://datenschwanz.net/2010/03/30/egit-may-eat-your-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/us/</creativeCommons:license>
	<feedburner:origLink>http://datenschwanz.net/2010/03/30/egit-may-eat-your-project/</feedburner:origLink></item>
		<item>
		<title>Yawn of the Day</title>
		<link>http://feedproxy.google.com/~r/datenschwanznet/~3/6yPS3LuadZk/</link>
		<comments>http://datenschwanz.net/2010/02/13/yawn-of-the-day/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 19:45:06 +0000</pubDate>
		<dc:creator>studmuffin</dc:creator>
				<category><![CDATA[Interwebs]]></category>
		<category><![CDATA[Society]]></category>
		<category><![CDATA[I'm with stupid]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[self-victimization]]></category>
		<category><![CDATA[yawn]]></category>

		<guid isPermaLink="false">http://datenschwanz.net/?p=406</guid>
		<description><![CDATA[Oh no. Someone just realized that after agreeing to a contract allowing it, information willingly given to a company essentially gives that company the right to do whatever they want with that information. Drrr. That someone is Harriet Jacobs, ultra-victim.
I’m approving this after deleting hundreds of comments like this, since I’ve addressed this a few [...]]]></description>
			<content:encoded><![CDATA[<p>Oh no. Someone just realized that after agreeing to a contract allowing it, information willingly given to a company essentially gives that company the right to do whatever they want with that information. Drrr. That someone is <a href="http://fugitivus.wordpress.com/2010/02/11/fuck-you-google/">Harriet Jacobs, ultra-victim</a>.</p>
<blockquote><p>I’m approving this after deleting hundreds of comments like this, since I’ve addressed this a few times already</p></blockquote>
<p>This explains why the comments are basically an extension of the yawnfest, where it&#8217;s all, &#8220;Oh, your situation is so bad. SUE THEM!&#8221; I giggled when I read that she should get a cease and desist order, with all of the white knights chiming in.</p>
<blockquote><p>I opted out of Buzz when it arrived, but it still auto-followed.</p></blockquote>
<p>Hm, what is the law that protects someone in this case? I&#8217;m more than guessing that there isn&#8217;t one, since it&#8217;s probably stipulated in the contract that services may or may not work properly and data you give them <em>still</em> belongs to them. You opted in to just about everything when you decided to use Google services. Read the not-so-fine print. Or, hey, since you are an ultra-victim, maybe you should not make anything public in the first place.</p>
<div class="boxnote">You must not know this, but no matter how you think the world <em>should</em> work, if you are afraid of the world, you should not be flying a flag. It only attracts all of the bad things you are afraid of. That&#8217;s real, and your bitching away won&#8217;t change how humans really, truly work.</div>
<blockquote><p>So! All future comments about, “Turn Buzz off,” “Make your stuff private,” “Don’t approve contacts,” “Make your profile private,” “You shouldn’t have approved Buzz in the first place” are to be deleted, because I DID ALL THOSE THINGS.</p></blockquote>
<p>Google is not in the business of protecting anyone&#8217;s privacy. Haven&#8217;t you read the news since they started business? Do you know <em>anything</em> about the people you gave your &#8220;private&#8221; information to? Did you gamble with your life (!) and incorrectly expect them to be in that business? Google sucks for a lot of reasons, but not because you still live up to your history of misplacing trust.</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F13%2Fyawn-of-the-day%2F&amp;linkname=Yawn%20of%20the%20Day" title="Digg" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F13%2Fyawn-of-the-day%2F&amp;linkname=Yawn%20of%20the%20Day" title="Delicious" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F13%2Fyawn-of-the-day%2F&amp;linkname=Yawn%20of%20the%20Day" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F13%2Fyawn-of-the-day%2F&amp;linkname=Yawn%20of%20the%20Day" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F13%2Fyawn-of-the-day%2F&amp;linkname=Yawn%20of%20the%20Day" title="Reddit" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/yahoo_buzz?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F13%2Fyawn-of-the-day%2F&amp;linkname=Yawn%20of%20the%20Day" title="Yahoo Buzz" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/buzz.png" width="16" height="16" alt="Yahoo Buzz"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F13%2Fyawn-of-the-day%2F&amp;linkname=Yawn%20of%20the%20Day" title="Twitter" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F13%2Fyawn-of-the-day%2F&amp;linkname=Yawn%20of%20the%20Day" title="DZone" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F13%2Fyawn-of-the-day%2F&amp;linkname=Yawn%20of%20the%20Day" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F13%2Fyawn-of-the-day%2F&amp;linkname=Yawn%20of%20the%20Day" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/amazon_wish_list?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F13%2Fyawn-of-the-day%2F&amp;linkname=Yawn%20of%20the%20Day" title="Amazon Wish List" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/amazon.png" width="16" height="16" alt="Amazon Wish List"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F13%2Fyawn-of-the-day%2F&amp;linkname=Yawn%20of%20the%20Day"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/bYHyul3lUppVnRhpfcD2Ybbjm9Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/bYHyul3lUppVnRhpfcD2Ybbjm9Q/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bYHyul3lUppVnRhpfcD2Ybbjm9Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/bYHyul3lUppVnRhpfcD2Ybbjm9Q/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/datenschwanznet/~4/6yPS3LuadZk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://datenschwanz.net/2010/02/13/yawn-of-the-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/us/</creativeCommons:license>
	<feedburner:origLink>http://datenschwanz.net/2010/02/13/yawn-of-the-day/</feedburner:origLink></item>
		<item>
		<title>facelets.BUILD_BEFORE_RESTORE brokenness</title>
		<link>http://feedproxy.google.com/~r/datenschwanznet/~3/gSGRFkEmWP4/</link>
		<comments>http://datenschwanz.net/2010/02/01/facelets-build_before_restore-brokenness/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 17:01:29 +0000</pubDate>
		<dc:creator>studmuffin</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Facelets]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://datenschwanz.net/?p=390</guid>
		<description><![CDATA[I have finally had some time to sit down and figure out why submitted form data was disappearing when there were form validation errors. I tracked it down to facelets.BUILD_BEFORE_RESTORE, yet another one of Facelets completely undocumented features.
You may be wondering why I had it enabled in the first place, since I didn&#8217;t read the [...]]]></description>
			<content:encoded><![CDATA[<p>I have finally had some time to sit down and figure out why submitted form data was disappearing when there were form validation errors. I tracked it down to facelets.BUILD_BEFORE_RESTORE, yet another one of Facelets completely undocumented features.</p>
<p>You may be wondering why I had it enabled in the first place, since I didn&#8217;t read the documentation that doesn&#8217;t exist. Well, I&#8217;m dealing with a few sizable forms and a pretty small heap, and according to <a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1176">this Facelets enhancement</a>, I would get a magical 30-60% memory savings. <strong>Great</strong>, <em>except it breaks everything.</em></p>
<p>BUILD_BEFORE_RESTORE <a href="http://sfjsf.blogspot.com/2006/03/fixing-jsf-state-saving-progress.html">seems to go back to 2006</a>, when it was added to save on saved state size. 10k down to 600 bytes sure sounds like a big deal, <em>except it breaks everything.</em></p>
<p><a href="http://www.jtraining.com/blogs/faceletsbuild-before-restore-will-eat-your-richfaces.html">I&#8217;m not the first to notice this</a>, and people have been having problems with it ever since:</p>
<ul>
<li><a href="http://markmail.org/message/kbrh5roud4lhkx4d">net.java.dev.facelets.users [Facelets] BUILD_BEFORE_RESTORE failure</a></li>
<li><a href="http://markmail.org/message/hhy6ygifjaxcdad5">net.java.dev.facelets.dev CACHE_VEW_ROOT=false and BUILD_BEFORE_RESTORE=true</a></li>
<li><a href="http://seamframework.org/Community/FaceletsBUILDBEFORERESTOREBreaksHcommandButtonInSeam">facelets.BUILD_BEFORE_RESTORE breaks h:commandButton in seam</a></li>
<li><a href="http://www.logikdev.com/2009/11/25/no-saved-view-state/">No saved view state</a></li>
</ul>
<p>Similar behavior was noted and fixed in MyFaces, but it was related to UIInput. Maybe the mechanism is similar.</p>
<p>So, I went back and took out the web.xml mods. Mojarra didn&#8217;t like this. It didn&#8217;t break, but it felt it necessary to recommend that I break it back to where it was:</p>
<style>
div.plainred td.content code.plain { color: red !important; }
</style>
<pre class="brush: plain; class-name: plainred; light: true;">
WARNING: facelets.RECREATE_VALUE_EXPRESSION_ON_BUILD_BEFORE_RESTORE is set to 'true' but facelets.BUILD_BEFORE_RESTORE is set to 'false' or unset. To use facelets.RECREATE_VALUE_EXPRESSION_ON_BUILD_BEFORE_RESTORE you must also set facelets.BUILD_BEFORE_RESTORE to 'true'!
</pre>
<p>Sweet. facelets.RECREATE_VALUE_EXPRESSION_ON_BUILD_BEFORE_RESTORE is true by default, so you need to go back into your web.xml and disable it if you don&#8217;t want to see this nagging message all of the time. If you work in a team, you almost certainly want to squelch this message so someone who isn&#8217;t <em>in the know</em> doesn&#8217;t go in and break everything because the machine told them to.</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F01%2Ffacelets-build_before_restore-brokenness%2F&amp;linkname=facelets.BUILD_BEFORE_RESTORE%20brokenness" title="Digg" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F01%2Ffacelets-build_before_restore-brokenness%2F&amp;linkname=facelets.BUILD_BEFORE_RESTORE%20brokenness" title="Delicious" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F01%2Ffacelets-build_before_restore-brokenness%2F&amp;linkname=facelets.BUILD_BEFORE_RESTORE%20brokenness" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F01%2Ffacelets-build_before_restore-brokenness%2F&amp;linkname=facelets.BUILD_BEFORE_RESTORE%20brokenness" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F01%2Ffacelets-build_before_restore-brokenness%2F&amp;linkname=facelets.BUILD_BEFORE_RESTORE%20brokenness" title="Reddit" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/yahoo_buzz?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F01%2Ffacelets-build_before_restore-brokenness%2F&amp;linkname=facelets.BUILD_BEFORE_RESTORE%20brokenness" title="Yahoo Buzz" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/buzz.png" width="16" height="16" alt="Yahoo Buzz"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F01%2Ffacelets-build_before_restore-brokenness%2F&amp;linkname=facelets.BUILD_BEFORE_RESTORE%20brokenness" title="Twitter" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F01%2Ffacelets-build_before_restore-brokenness%2F&amp;linkname=facelets.BUILD_BEFORE_RESTORE%20brokenness" title="DZone" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F01%2Ffacelets-build_before_restore-brokenness%2F&amp;linkname=facelets.BUILD_BEFORE_RESTORE%20brokenness" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F01%2Ffacelets-build_before_restore-brokenness%2F&amp;linkname=facelets.BUILD_BEFORE_RESTORE%20brokenness" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/amazon_wish_list?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F01%2Ffacelets-build_before_restore-brokenness%2F&amp;linkname=facelets.BUILD_BEFORE_RESTORE%20brokenness" title="Amazon Wish List" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/amazon.png" width="16" height="16" alt="Amazon Wish List"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F02%2F01%2Ffacelets-build_before_restore-brokenness%2F&amp;linkname=facelets.BUILD_BEFORE_RESTORE%20brokenness"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/6LfFWJXSPUwTHdBWnfIJgZw98TE/0/da"><img src="http://feedads.g.doubleclick.net/~a/6LfFWJXSPUwTHdBWnfIJgZw98TE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6LfFWJXSPUwTHdBWnfIJgZw98TE/1/da"><img src="http://feedads.g.doubleclick.net/~a/6LfFWJXSPUwTHdBWnfIJgZw98TE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/datenschwanznet/~4/gSGRFkEmWP4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://datenschwanz.net/2010/02/01/facelets-build_before_restore-brokenness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/us/</creativeCommons:license>
	<feedburner:origLink>http://datenschwanz.net/2010/02/01/facelets-build_before_restore-brokenness/</feedburner:origLink></item>
		<item>
		<title>EclipseLink Hates MySQL… Probably</title>
		<link>http://feedproxy.google.com/~r/datenschwanznet/~3/bqSSsFsfiJI/</link>
		<comments>http://datenschwanz.net/2010/01/22/eclipselink-hates-mysql-probably/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 11:00:41 +0000</pubDate>
		<dc:creator>studmuffin</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[EclipseLink]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://datenschwanz.net/?p=383</guid>
		<description><![CDATA[Being TopLink&#8217;s mutant flipper baby, it&#8217;s no surprise that EclipseLink&#8217;s (2.0.0) support of MySQL is substandard. If you have been using the two of them together, you may have noticed that LOBs don&#8217;t really work quite right. Some of the blame is probably for MySQL, with its multiple length-specific LOB column types, but it at [...]]]></description>
			<content:encoded><![CDATA[<p>Being TopLink&#8217;s mutant flipper baby, it&#8217;s no surprise that EclipseLink&#8217;s (2.0.0) support of MySQL is substandard. If you have been using the two of them together, you may have noticed that LOBs don&#8217;t really work quite right. Some of the blame is probably for MySQL, with its multiple length-specific LOB column types, but it at least handles specified lengths and does the work for you. So, if you have been getting exceptions when you&#8217;re trying to insert a bunch of data, you&#8217;re using EL&#8217;s DDL generation, and you have been lazy about fixing it yourself, read on&#8230;</p>
<p><span id="more-383"></span><br />
64000. Yep, that&#8217;s it. (Insert &#8220;64k ought to be enough&#8221; joke.) That&#8217;s all you get if you use a LOB type with EL and MySQL. It&#8217;s hard coded and it ignores the @Column length. I don&#8217;t know how important it is to abide by the JPA spec here. It doesn&#8217;t seem to be specified anywhere obvious that @Lob should obey @Column&#8217;s length, but Hibernate does that and it&#8217;s kind of useless on MySQL without it. Being that MySQL is basically a de facto standard in the OSS world, you would expect it to be usable on MySQL. (Yeah, I know that there are others. Big deal. I have never felt the need to reach for an alternative RDBMS, more often opting for distributed object stores or whatever.) Regardless, the JPA spec seems optional for EL, since it <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=243301">doesn&#8217;t really</a> <a href="http://www.eclipse.org/forums/index.php?t=msg&#038;goto=499756&#038;S=3bcc64b0e0822e7707f2ce0b616d92df">seem to</a> <a href="http://stackoverflow.com/questions/1877499/eclipselink-jpa-preupdate-call-not-persisting">follow it</a>. (Hey, why should it work as expected when it can be <em>faster</em>!) Anyway, 64000&#8230;</p>
<p>The first suspect that&#8217;s broken in EclipseLink is o.e.p.platform.database.MySQLPlatform, which essentially blows at describing the underlying database&#8217;s capabilities and SQL quirks. It basically locks the column types for CLOB and BLOB to TEXT and BLOB, all with a fixed 64000 length. MySQL basically ignores that length and turns them into plain BLOB and TEXT columns. This doesn&#8217;t do us any good if we need MEDIUMBLOB, LONGTEXT, etc. This enables setting of the size on these field definitions so @Column&#8217;s length actually ends up somewhere.</p>
<pre class="brush: diff; wrap-lines: false;">
diff -ur f/org/eclipse/persistence/platform/database/MySQLPlatform.java src/org/eclipse/persistence/platform/database/MySQLPlatform.java
--- f/org/eclipse/persistence/platform/database/MySQLPlatform.java	2009-11-04 16:00:56.000000000 -0600
+++ src/org/eclipse/persistence/platform/database/MySQLPlatform.java	2010-01-22 03:19:41.000000000 -0600
@@ -129,12 +129,18 @@
         fieldTypeMapping.put(String.class, new FieldTypeDefinition(&quot;VARCHAR&quot;, 255));
         fieldTypeMapping.put(Character.class, new FieldTypeDefinition(&quot;CHAR&quot;, 1));

-        fieldTypeMapping.put(Byte[].class, new FieldTypeDefinition(&quot;BLOB&quot;, 64000));
-        fieldTypeMapping.put(Character[].class, new FieldTypeDefinition(&quot;TEXT&quot;, 64000));
-        fieldTypeMapping.put(byte[].class, new FieldTypeDefinition(&quot;BLOB&quot;, 64000));
-        fieldTypeMapping.put(char[].class, new FieldTypeDefinition(&quot;TEXT&quot;, 64000));
-        fieldTypeMapping.put(java.sql.Blob.class, new FieldTypeDefinition(&quot;BLOB&quot;, 64000));
-        fieldTypeMapping.put(java.sql.Clob.class, new FieldTypeDefinition(&quot;TEXT&quot;, 64000));
+        final FieldTypeDefinition blobFieldTypeDefinition = new FieldTypeDefinition(&quot;BLOB&quot;, 64000);
+        blobFieldTypeDefinition.setIsSizeAllowed(true);
+
+        final FieldTypeDefinition clobFieldTypeDefinition = new FieldTypeDefinition(&quot;TEXT&quot;, 64000);
+        clobFieldTypeDefinition.setIsSizeAllowed(true);
+
+        fieldTypeMapping.put(Byte[].class, blobFieldTypeDefinition);
+        fieldTypeMapping.put(Character[].class, clobFieldTypeDefinition);
+        fieldTypeMapping.put(byte[].class, blobFieldTypeDefinition);
+        fieldTypeMapping.put(char[].class, clobFieldTypeDefinition);
+        fieldTypeMapping.put(java.sql.Blob.class, blobFieldTypeDefinition);
+        fieldTypeMapping.put(java.sql.Clob.class, clobFieldTypeDefinition);

         fieldTypeMapping.put(java.sql.Date.class, new FieldTypeDefinition(&quot;DATE&quot;, false));
         fieldTypeMapping.put(java.sql.Time.class, new FieldTypeDefinition(&quot;TIME&quot;, false));
</pre>
<div class="boxnote">
EclipseLink defines two types for MySQL: TargetDatabase.MySQL and TargetDatabase.MySQL4. Spring 3.0.0 actually only ever uses MySQL4. It doesn&#8217;t matter, because EL uses the same MySQLPlatform for both. One day it may matter, though&#8230;
</div>
<p>The second is the pukerrific(!) o.e.p.tools.schemaframework.DefaultTableGenerator, which generates the DDL. Originally, it only obeyed the @Column length for, essentially, basic String values. Even if you set a length, it would silently ignore it. You would never know without running into it after deployment or verifying the schema by hand. If you&#8217;re going to have to do that, you may as well throw out your computers and use pencil and paper. Someone must not know what fail-fast means.</p>
<pre class="brush: diff; wrap-lines: false;">
diff -ur f/org/eclipse/persistence/tools/schemaframework/DefaultTableGenerator.java src/org/eclipse/persistence/tools/schemaframework/DefaultTableGenerator.java
--- f/org/eclipse/persistence/tools/schemaframework/DefaultTableGenerator.java	2009-11-24 18:02:34.000000000 -0600
+++ src/org/eclipse/persistence/tools/schemaframework/DefaultTableGenerator.java	2010-01-22 03:48:10.000000000 -0600
@@ -683,7 +683,9 @@
                 if ((fieldType != null)) {
                     if (fieldType.equals(ClassConstants.STRING) ||
                        fieldType.equals(ClassConstants.APCHAR)  ||
-                       fieldType.equals(ClassConstants.ACHAR)) {
+                       fieldType.equals(ClassConstants.ACHAR) ||
+                       fieldType.equals(ClassConstants.BLOB) ||
+                       fieldType.equals(ClassConstants.CLOB)) {
                         // The field size is defaulted to &quot;255&quot; or use the user supplied length
                         fieldDef.setSize(dbField.getLength());
                     } else {
</pre>
<p>After these minor changes, maybe everything explodes for other database systems. I don&#8217;t really care. It works for me. Countdown to infinity, as we wait for EclipseLink developers to find this sitting here and then include it in EclipseLink, starts now!</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F22%2Feclipselink-hates-mysql-probably%2F&amp;linkname=EclipseLink%20Hates%20MySQL%26%238230%3B%20Probably" title="Digg" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F22%2Feclipselink-hates-mysql-probably%2F&amp;linkname=EclipseLink%20Hates%20MySQL%26%238230%3B%20Probably" title="Delicious" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F22%2Feclipselink-hates-mysql-probably%2F&amp;linkname=EclipseLink%20Hates%20MySQL%26%238230%3B%20Probably" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F22%2Feclipselink-hates-mysql-probably%2F&amp;linkname=EclipseLink%20Hates%20MySQL%26%238230%3B%20Probably" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F22%2Feclipselink-hates-mysql-probably%2F&amp;linkname=EclipseLink%20Hates%20MySQL%26%238230%3B%20Probably" title="Reddit" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/yahoo_buzz?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F22%2Feclipselink-hates-mysql-probably%2F&amp;linkname=EclipseLink%20Hates%20MySQL%26%238230%3B%20Probably" title="Yahoo Buzz" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/buzz.png" width="16" height="16" alt="Yahoo Buzz"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F22%2Feclipselink-hates-mysql-probably%2F&amp;linkname=EclipseLink%20Hates%20MySQL%26%238230%3B%20Probably" title="Twitter" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F22%2Feclipselink-hates-mysql-probably%2F&amp;linkname=EclipseLink%20Hates%20MySQL%26%238230%3B%20Probably" title="DZone" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F22%2Feclipselink-hates-mysql-probably%2F&amp;linkname=EclipseLink%20Hates%20MySQL%26%238230%3B%20Probably" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F22%2Feclipselink-hates-mysql-probably%2F&amp;linkname=EclipseLink%20Hates%20MySQL%26%238230%3B%20Probably" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/amazon_wish_list?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F22%2Feclipselink-hates-mysql-probably%2F&amp;linkname=EclipseLink%20Hates%20MySQL%26%238230%3B%20Probably" title="Amazon Wish List" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/amazon.png" width="16" height="16" alt="Amazon Wish List"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F22%2Feclipselink-hates-mysql-probably%2F&amp;linkname=EclipseLink%20Hates%20MySQL%26%238230%3B%20Probably"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/F0orwF78fTexSnM-u91lkcLo-rM/0/da"><img src="http://feedads.g.doubleclick.net/~a/F0orwF78fTexSnM-u91lkcLo-rM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/F0orwF78fTexSnM-u91lkcLo-rM/1/da"><img src="http://feedads.g.doubleclick.net/~a/F0orwF78fTexSnM-u91lkcLo-rM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/datenschwanznet/~4/bqSSsFsfiJI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://datenschwanz.net/2010/01/22/eclipselink-hates-mysql-probably/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/us/</creativeCommons:license>
	<feedburner:origLink>http://datenschwanz.net/2010/01/22/eclipselink-hates-mysql-probably/</feedburner:origLink></item>
		<item>
		<title>They Should Have Called Java “Molasses”</title>
		<link>http://feedproxy.google.com/~r/datenschwanznet/~3/VLnaQWzsdS0/</link>
		<comments>http://datenschwanz.net/2010/01/15/they-should-have-called-java-molasses/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 01:57:34 +0000</pubDate>
		<dc:creator>studmuffin</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[AOP]]></category>
		<category><![CDATA[AspectJ]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://datenschwanz.net/?p=376</guid>
		<description><![CDATA[Possibly a testament to why people hate the JCP, that style of bureaucracy, and why almost everything that isn&#8217;t touched by it actually gets things done, I ran into what I would consider a blocker when it was requested that I have the currency symbol and percent signs optional for form inputs using f:convertNumber and [...]]]></description>
			<content:encoded><![CDATA[<p>Possibly a testament to why people hate the JCP, that style of bureaucracy, and why almost everything that isn&#8217;t touched by it actually gets things done, I ran into what I would consider a blocker when it was requested that I have the currency symbol and percent signs optional for form inputs using f:convertNumber and found that it was impossible with Mojarra. I can&#8217;t see any reason why they would be absolutely required. There isn&#8217;t even an option to make them optional with some listed caveats or &#8220;we don&#8217;t think you should do this, but here&#8217;s the gun.&#8221;</p>
<p>After about ten seconds of research, I found this enhancement request:</p>
<p><a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=811">Have f:convertNumber add currency symbol if not present for type=currency</a></p>
<p>This issue has been rotting there <strong><em>since 2008</em></strong>? It was marked for <em>consideration</em>, its priority reduced, and then rescheduled four times, not even for JSF 1.2? Who puts these retards at the helm?</p>
<p>So, in typical fashion, we have to shoehorn business processes into the framework. Well, not this time. I have decided to abuse AOP <em>once again</em> and patch around it.</p>
<p><span id="more-376"></span><br />
I initially considered writing a simple converter that subclassed the broken one. I actually did it. Here, you can use it if you want to go down that route or you can&#8217;t/don&#8217;t use AspectJ.</p>
<p><em>Note: There is a tiny hack in there that will format a string with the same formatter to extract a missing currency symbol. If you don&#8217;t like it that much, just set currencySymbol on the convert tag.</em></p>
<pre class="brush: java; wrap-lines: false;">
/**
 * LDSYS Java Library
 *
 * Copyright (C) 1997-2010 Christopher G. Stach II
 *
 * This file is part of LDSYS Java Library.
 *
 * LDSYS Java Library is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * LDSYS Java Library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with LDSYS Java Library.  If not, see
 * &lt;http://www.gnu.org/licenses/&gt;.
 *
 **/

package net.ldsys.view.jsf.converter;

import java.math.BigDecimal;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;

/**
 * Description: Description goes here.
 *
 * @author cgs
 */
public class NumberConverter
	extends javax.faces.convert.NumberConverter
{

	private static final char PERCENT_SYMBOL = '%';

	/**
	 *
	 */
	public NumberConverter() {
		super();
	}

	/**
	 * @see javax.faces.convert.NumberConverter#getAsObject(javax.faces.context.FacesContext,
	 *      javax.faces.component.UIComponent, java.lang.String)
	 */
	@Override
	public Object getAsObject(FacesContext facesContext, UIComponent component, String str) {
		final String trimmed = str == null ? &quot;&quot; : str.trim();

		final String maybeModifiedStr;

		if (&quot;currency&quot;.equals(getType()) &amp;&amp; !trimmed.isEmpty() &amp;&amp; !hasCurrencySymbol(trimmed, getCurrencySymbol(facesContext, component))) {
			maybeModifiedStr = getCurrencySymbol(facesContext, component) + trimmed;
		} else if (&quot;percent&quot;.equals(getType()) &amp;&amp; !trimmed.isEmpty() &amp;&amp; !hasPercentSymbol(trimmed)) {
			maybeModifiedStr = trimmed + PERCENT_SYMBOL;
		} else {
			maybeModifiedStr = str;
		}

		return super.getAsObject(facesContext, component, maybeModifiedStr);
	}

	private String getCurrencySymbol(FacesContext facesContext, UIComponent component) {
		String currencySymbol = getCurrencySymbol();

		if (currencySymbol == null) {
			currencySymbol = getAsString(facesContext, component, BigDecimal.ZERO).substring(0, 1);
		}

		return currencySymbol;
	}

	private boolean hasCurrencySymbol(String str, String currencySymbol) {
		return str.substring(0, 1).equals(currencySymbol);
	}

	private boolean hasPercentSymbol(String str) {
		return str.charAt(str.length() - 1) == PERCENT_SYMBOL;
	}

}
</pre>
<p>Then realized I would probably need to go and change all of the tags in a plethora of files. It&#8217;s basically the same thing, but an aspect.</p>
<pre class="brush: java; wrap-lines: false;">
/**
 * LDSYS Java Library
 *
 * Copyright (C) 1997-2010 Christopher G. Stach II
 *
 * This file is part of LDSYS Java Library.
 *
 * LDSYS Java Library is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * LDSYS Java Library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with LDSYS Java Library.  If not, see
 * &lt;http://www.gnu.org/licenses/&gt;.
 *
 **/

package net.ldsys.view.jsf.converter;

import java.math.BigDecimal;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;

/**
 * Description: Description goes here.
 *
 * @author cgs
 */
@Aspect
public class NumberConverterAspect {

	private static final char PERCENT_SYMBOL = '%';

	/**
	 *
	 */
	public NumberConverterAspect() {
		super();
	}

	/**
	 * @param proceedingJoinPoint
	 * @param facesContext
	 * @param component
	 * @param str
	 * @return Object version of &lt;code&gt;str&lt;/code&gt;
	 * @throws Throwable
	 * @see javax.faces.convert.NumberConverter#getAsObject(javax.faces.context.FacesContext,
	 *      javax.faces.component.UIComponent, java.lang.String)
	 */
	@Around(argNames = &quot;facesContext, component, str&quot;, value = &quot;execution(public Object javax.faces.convert.NumberConverter.getAsObject(..)) &amp;&amp; args(facesContext, component, str)&quot;)
	public Object addMissingCurrencyPercentSymbols(ProceedingJoinPoint proceedingJoinPoint, FacesContext facesContext, UIComponent component, String str)
		throws Throwable
	{
		final javax.faces.convert.NumberConverter numberConverter = (javax.faces.convert.NumberConverter) proceedingJoinPoint.getThis();

		final String trimmed = str == null ? &quot;&quot; : str.trim();

		final String maybeModifiedStr;

		if (&quot;currency&quot;.equals(numberConverter.getType()) &amp;&amp; !trimmed.isEmpty() &amp;&amp; !hasCurrencySymbol(trimmed, getCurrencySymbol(numberConverter, facesContext, component))) {
			maybeModifiedStr = getCurrencySymbol(numberConverter, facesContext, component) + trimmed;
		} else if (&quot;percent&quot;.equals(numberConverter.getType()) &amp;&amp; !trimmed.isEmpty() &amp;&amp; !hasPercentSymbol(trimmed)) {
			maybeModifiedStr = trimmed + PERCENT_SYMBOL;
		} else {
			maybeModifiedStr = str;
		}

		return proceedingJoinPoint.proceed(new Object[] {
			facesContext,
			component,
			maybeModifiedStr
		});
	}

	private String getCurrencySymbol(javax.faces.convert.NumberConverter numberConverter, FacesContext facesContext, UIComponent component) {
		String currencySymbol = numberConverter.getCurrencySymbol();

		if (currencySymbol == null) {
			currencySymbol = numberConverter.getAsString(facesContext, component, BigDecimal.ZERO).substring(0, 1);
		}

		return currencySymbol;
	}

	private boolean hasCurrencySymbol(String str, String currencySymbol) {
		return str.substring(0, 1).equals(currencySymbol);
	}

	private boolean hasPercentSymbol(String str) {
		return str.charAt(str.length() - 1) == PERCENT_SYMBOL;
	}

}
</pre>
<p>Just add -Xset:weaveJavaxPackages=true to your weaver options and the net.ldsys.view.jsf.converter.NumberConverterAspect aspect to your aspects in aop.xml and you&#8217;re done. All of the tags will work as you probably always expected. The damn thing adds commas, but not dollar signs?</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F15%2Fthey-should-have-called-java-molasses%2F&amp;linkname=They%20Should%20Have%20Called%20Java%20%26%238220%3BMolasses%26%238221%3B" title="Digg" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F15%2Fthey-should-have-called-java-molasses%2F&amp;linkname=They%20Should%20Have%20Called%20Java%20%26%238220%3BMolasses%26%238221%3B" title="Delicious" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F15%2Fthey-should-have-called-java-molasses%2F&amp;linkname=They%20Should%20Have%20Called%20Java%20%26%238220%3BMolasses%26%238221%3B" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F15%2Fthey-should-have-called-java-molasses%2F&amp;linkname=They%20Should%20Have%20Called%20Java%20%26%238220%3BMolasses%26%238221%3B" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F15%2Fthey-should-have-called-java-molasses%2F&amp;linkname=They%20Should%20Have%20Called%20Java%20%26%238220%3BMolasses%26%238221%3B" title="Reddit" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/yahoo_buzz?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F15%2Fthey-should-have-called-java-molasses%2F&amp;linkname=They%20Should%20Have%20Called%20Java%20%26%238220%3BMolasses%26%238221%3B" title="Yahoo Buzz" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/buzz.png" width="16" height="16" alt="Yahoo Buzz"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F15%2Fthey-should-have-called-java-molasses%2F&amp;linkname=They%20Should%20Have%20Called%20Java%20%26%238220%3BMolasses%26%238221%3B" title="Twitter" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F15%2Fthey-should-have-called-java-molasses%2F&amp;linkname=They%20Should%20Have%20Called%20Java%20%26%238220%3BMolasses%26%238221%3B" title="DZone" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F15%2Fthey-should-have-called-java-molasses%2F&amp;linkname=They%20Should%20Have%20Called%20Java%20%26%238220%3BMolasses%26%238221%3B" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F15%2Fthey-should-have-called-java-molasses%2F&amp;linkname=They%20Should%20Have%20Called%20Java%20%26%238220%3BMolasses%26%238221%3B" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/amazon_wish_list?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F15%2Fthey-should-have-called-java-molasses%2F&amp;linkname=They%20Should%20Have%20Called%20Java%20%26%238220%3BMolasses%26%238221%3B" title="Amazon Wish List" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/amazon.png" width="16" height="16" alt="Amazon Wish List"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F15%2Fthey-should-have-called-java-molasses%2F&amp;linkname=They%20Should%20Have%20Called%20Java%20%26%238220%3BMolasses%26%238221%3B"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/qLDGsWmz_BfdcJKSmn59zTnPbtg/0/da"><img src="http://feedads.g.doubleclick.net/~a/qLDGsWmz_BfdcJKSmn59zTnPbtg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/qLDGsWmz_BfdcJKSmn59zTnPbtg/1/da"><img src="http://feedads.g.doubleclick.net/~a/qLDGsWmz_BfdcJKSmn59zTnPbtg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/datenschwanznet/~4/VLnaQWzsdS0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://datenschwanz.net/2010/01/15/they-should-have-called-java-molasses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/us/</creativeCommons:license>
	<feedburner:origLink>http://datenschwanz.net/2010/01/15/they-should-have-called-java-molasses/</feedburner:origLink></item>
		<item>
		<title>Don’t Panic! Cable TV Rates Increasing in 2010!</title>
		<link>http://feedproxy.google.com/~r/datenschwanznet/~3/m1Ik5xPnwrM/</link>
		<comments>http://datenschwanz.net/2010/01/14/dont-panic-cable-tv-rates-increasing-in-2010/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 22:58:38 +0000</pubDate>
		<dc:creator>studmuffin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://datenschwanz.net/?p=365</guid>
		<description><![CDATA[
Cable bills rising in 2010, how to lock your rate in today
http://www.walletpop.com/blog/2010/01/13/cable-bills-rising-in-2010-how-to-lock-your-rate-in-today/
Josh Smith &#8211; Jan 13th 2010 at 12:30PM
The next cable bill that comes in your mail could contain a belated bad start to 2010 in the form of higher prices. Not only are new offerings, like 3-D programming&#8230;

I stopped reading right there. Of course, [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
<strong>Cable bills rising in 2010, how to lock your rate in today</strong><br />
<a href="http://www.walletpop.com/blog/2010/01/13/cable-bills-rising-in-2010-how-to-lock-your-rate-in-today/">http://www.walletpop.com/blog/2010/01/13/cable-bills-rising-in-2010-how-to-lock-your-rate-in-today/</a><br />
Josh Smith &#8211; Jan 13th 2010 at 12:30PM</p>
<p>The next cable bill that comes in your mail could contain a belated bad start to 2010 in the form of higher prices. Not only are new offerings, like 3-D programming&#8230;
</p></blockquote>
<p>I stopped reading right there. Of course, following my instincts, I composed an inflammatory response. &#8220;Lock it in at $0. TV is bad for you. It destroys lives, families, and is destroying our country.&#8221; This was enough to get at least one TV apologist to come out of the woodwork and try to justify a mass of cancer by the little fetus in fetu inside because <em>it&#8217;s still a life!</em></p>
<blockquote><p>The news media is destroying our country, I can agree with that.  Not all of TV, but most of it.   What about the cooking shows? I see you guys watching those from time to time!  ha.  If anything push the FCC for a la carte TV subscriptions where you get to pay for the channels you want.  If that were the case I would probably have about 10 channels and be set.</p></blockquote>
<p>Good points, but not good enough.</p>
<p>I would rather rent or buy quality shows. The rest, even the crap I&#8217;ve watched, is easy to give up. The cooking shows are even shit almost all of the time. It&#8217;s just Real World all over again or some fat chick trying to show off. The occasional gem like <a href="http://www.travelchannel.com/TV_Shows/Anthony_Bourdain">Anthony Bourdain&#8217;s No Reservations</a> are just cynical, nihilistic, and/or hedonistic fluff making fun of how stupid everyone is and the intended audience already understands. It&#8217;s just passing the time until Rachel Ray comes on and ruins your life. It&#8217;s purely optional, and I would rather sit in silence while I eat, since reading while eating is too difficult. Other shows that involve science and nature are on the borderline of expendable entertainment, like <a href="http://www.foodnetwork.com/good-eats/index.html">Good Eats</a> where you may learn some technique or science behind cooking. Shows like <a href="http://dsc.discovery.com/convergence/planet-earth/planet-earth.html">Planet Earth</a> just make you want to kill, so they can be very inspiring and help get you through the day. They&#8217;re all available in other forms, though.</p>
<p>All of the aforementioned shows are available off of TV:</p>
<ul>
<li><a href="http://www.amazon.com/gp/product/B000LPS2TU?ie=UTF8&#038;tag=datenschwanznet-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B000LPS2TU">Anthony Bourdain: No Reservations &#8211; Collection 1</a><img src="http://www.assoc-amazon.com/e/ir?t=datenschwanznet-20&#038;l=as2&#038;o=1&#038;a=B000LPS2TU" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>
<li><a href="http://www.amazon.com/gp/product/B000XXWDZY?ie=UTF8&#038;tag=datenschwanznet-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B000XXWDZY">Anthony Bourdain: No Reservations &#8211; Collection 2</a><img src="http://www.assoc-amazon.com/e/ir?t=datenschwanznet-20&#038;l=as2&#038;o=1&#038;a=B000XXWDZY" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>
<li><a href="http://www.amazon.com/gp/product/B001HB1K1E?ie=UTF8&#038;tag=datenschwanznet-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B001HB1K1E">Anthony Bourdain: No Reservations &#8211; Collection 3</a><img src="http://www.assoc-amazon.com/e/ir?t=datenschwanznet-20&#038;l=as2&#038;o=1&#038;a=B001HB1K1E" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>
<li><a href="http://www.amazon.com/gp/product/B0026IQTPO?ie=UTF8&#038;tag=datenschwanznet-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B0026IQTPO">Anthony Bourdain: No Reservations &#8211; Collection 4</a><img src="http://www.assoc-amazon.com/e/ir?t=datenschwanznet-20&#038;l=as2&#038;o=1&#038;a=B0026IQTPO" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>
<li><a href="http://www.amazon.com/gp/product/B000MRAAJM?ie=UTF8&#038;tag=datenschwanznet-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B000MRAAJM">Planet Earth: The Complete BBC Series [Blu-ray]</a><img src="http://www.assoc-amazon.com/e/ir?t=datenschwanznet-20&#038;l=as2&#038;o=1&#038;a=B000MRAAJM" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>
<li><a href="http://www.amazon.com/gp/product/B0018KVL5O?ie=UTF8&#038;tag=datenschwanznet-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B0018KVL5O">Good Eats: Vol. 5-7 Super Sweets, Breakfast Eats 2 &#038; 3</a><img src="http://www.assoc-amazon.com/e/ir?t=datenschwanznet-20&#038;l=as2&#038;o=1&#038;a=B0018KVL5O" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>
</ul>
<p>&#8230; and so on.</p>
<p>It&#8217;s also not the news media. It&#8217;s the people who watch it. People have been taught that news is actually news and not entertainment. The lines blurred over time and now there&#8217;s almost nothing left of &#8220;news&#8221;. The only way to change it is to stop watching altogether, since they aren&#8217;t responsible enough or smart enough to be able to determine which is which. They sit, eat more garbage, get fatter, and are entertained, thinking that this is the only time they get to themselves in their day after getting raped on both ends by their employers, the government, and any purveyor they deal with cutting new holes to rape them, too, so they&#8217;re going to be entertained. All other forms of entertainment are practically dead and you can&#8217;t even go to the park without the threat of being mugged, perceived or real, or having the park not be covered with graffiti and McDonald&#8217;s trash. You can&#8217;t even talk to people in public without them suing you. People have lost their imaginations and are too jaded to come up with and enjoy any form of constructive entertainment because TV does it all for them. Watching a cooking show does not make you a chef, watching Friends does not make you funny or cool, and watching MTV does not make you black.</p>
<p>It really boils down to stupid people being irresponsible with their time and lives and TV the catalyst, drug, or whatever that enables it instead of people, I don&#8217;t know, educating themselves.</p>
<p>Oh, American Gladiators is on&#8230;</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F14%2Fdont-panic-cable-tv-rates-increasing-in-2010%2F&amp;linkname=Don%26%238217%3Bt%20Panic%21%20Cable%20TV%20Rates%20Increasing%20in%202010%21" title="Digg" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F14%2Fdont-panic-cable-tv-rates-increasing-in-2010%2F&amp;linkname=Don%26%238217%3Bt%20Panic%21%20Cable%20TV%20Rates%20Increasing%20in%202010%21" title="Delicious" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F14%2Fdont-panic-cable-tv-rates-increasing-in-2010%2F&amp;linkname=Don%26%238217%3Bt%20Panic%21%20Cable%20TV%20Rates%20Increasing%20in%202010%21" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F14%2Fdont-panic-cable-tv-rates-increasing-in-2010%2F&amp;linkname=Don%26%238217%3Bt%20Panic%21%20Cable%20TV%20Rates%20Increasing%20in%202010%21" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F14%2Fdont-panic-cable-tv-rates-increasing-in-2010%2F&amp;linkname=Don%26%238217%3Bt%20Panic%21%20Cable%20TV%20Rates%20Increasing%20in%202010%21" title="Reddit" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/yahoo_buzz?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F14%2Fdont-panic-cable-tv-rates-increasing-in-2010%2F&amp;linkname=Don%26%238217%3Bt%20Panic%21%20Cable%20TV%20Rates%20Increasing%20in%202010%21" title="Yahoo Buzz" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/buzz.png" width="16" height="16" alt="Yahoo Buzz"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F14%2Fdont-panic-cable-tv-rates-increasing-in-2010%2F&amp;linkname=Don%26%238217%3Bt%20Panic%21%20Cable%20TV%20Rates%20Increasing%20in%202010%21" title="Twitter" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F14%2Fdont-panic-cable-tv-rates-increasing-in-2010%2F&amp;linkname=Don%26%238217%3Bt%20Panic%21%20Cable%20TV%20Rates%20Increasing%20in%202010%21" title="DZone" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F14%2Fdont-panic-cable-tv-rates-increasing-in-2010%2F&amp;linkname=Don%26%238217%3Bt%20Panic%21%20Cable%20TV%20Rates%20Increasing%20in%202010%21" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F14%2Fdont-panic-cable-tv-rates-increasing-in-2010%2F&amp;linkname=Don%26%238217%3Bt%20Panic%21%20Cable%20TV%20Rates%20Increasing%20in%202010%21" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/amazon_wish_list?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F14%2Fdont-panic-cable-tv-rates-increasing-in-2010%2F&amp;linkname=Don%26%238217%3Bt%20Panic%21%20Cable%20TV%20Rates%20Increasing%20in%202010%21" title="Amazon Wish List" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/amazon.png" width="16" height="16" alt="Amazon Wish List"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F14%2Fdont-panic-cable-tv-rates-increasing-in-2010%2F&amp;linkname=Don%26%238217%3Bt%20Panic%21%20Cable%20TV%20Rates%20Increasing%20in%202010%21"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/2CbSHKd1CWPXyakFnSTT0ZRXFd8/0/da"><img src="http://feedads.g.doubleclick.net/~a/2CbSHKd1CWPXyakFnSTT0ZRXFd8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/2CbSHKd1CWPXyakFnSTT0ZRXFd8/1/da"><img src="http://feedads.g.doubleclick.net/~a/2CbSHKd1CWPXyakFnSTT0ZRXFd8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/datenschwanznet/~4/m1Ik5xPnwrM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://datenschwanz.net/2010/01/14/dont-panic-cable-tv-rates-increasing-in-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/us/</creativeCommons:license>
	<feedburner:origLink>http://datenschwanz.net/2010/01/14/dont-panic-cable-tv-rates-increasing-in-2010/</feedburner:origLink></item>
		<item>
		<title>I don’t know who Keith Downey thinks he is…</title>
		<link>http://feedproxy.google.com/~r/datenschwanznet/~3/D047E6ScXqg/</link>
		<comments>http://datenschwanz.net/2010/01/08/i-dont-know-who-keith-downey-thinks-he-is/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 03:02:46 +0000</pubDate>
		<dc:creator>studmuffin</dc:creator>
				<category><![CDATA[Interwebs]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://datenschwanz.net/?p=359</guid>
		<description><![CDATA[Spam is particularly fun when you have the opportunity to reach a real person on the other side with a snide response, closed bank accounts, electricity turned off in the middle of winter, or a truck of research cadavers. So, Keith Downey, whoeverthefuck that is, at some piece of shit company, SourceEdge (ooh high tech), [...]]]></description>
			<content:encoded><![CDATA[<p>Spam is particularly fun when you have the opportunity to reach a real person on the other side with a snide response, closed bank accounts, electricity turned off in the middle of winter, or a truck of research cadavers. So, Keith Downey, whoeverthefuck that is, at some piece of shit company, SourceEdge (<em>ooh high tech</em>), thinks it&#8217;s a good idea to spam my Eclipse development email address with an ad for his wares.</p>
<blockquote><p>
&#8212;&#8211; &#8220;Keith Downey&#8221; &lt;KeithDowney.SourceEdge@gmail.com&gt; wrote:</p>
<p>> Hi,<br />
><br />
> I am doing a quick email check with you, to see if there are any IT or<br />
> Engineering jobs, I can help you fill today at your company. I can<br />
> help fill any Contractor positions or Direct-Hire positions or<br />
> Contract-to-Hire positions. Additionally, I can also help fill<br />
> positions in the Accounting / HR / Sales / Management areas too.
</p></blockquote>
<p><span id="more-359"></span><br />
I make a separate email alias every time I sign up somewhere and I care about replies. I use <a href="http://www.mailinator.com/">mailinator</a> for the rest. He probably bought it from some list scraping company, since I have been getting a lot of <em>v1agr4</em> and &#8220;Show her your are real man in bed with yoru hidden monster&#8221;-like things to that address for years.</p>
<blockquote><p>
> I am very aware of the soft economy, and so I am very flexible in our<br />
> pricing structure to accommodate my client&#8217;s budget needs. My goal is<br />
> to service my clients, within their budgets, so let&#8217;s discuss this, as<br />
> appropriate.
</p></blockquote>
<p>He is probably just trying to make ends meet in this rough world. Well, good intentions or not, it&#8217;s the wrong way to go about it.</p>
<blockquote><p>
> Now, we also have the capability to do projects, from our India<br />
> offices, whereby we can offer you offshore, on-shore and near-shore<br />
> project deliverables. We have a very heavy focus in the Oracle, Web<br />
> and ERP arenas. We can also find you employees to work from our India<br />
> office, who can under your direction (Offshore employees?). We can<br />
> also offer Remote Infrastructure Management services too. Please keep<br />
> me in mind for such projects. I can send you a brochure, if you like,<br />
> of our expanded services in this arena.
</p></blockquote>
<p>Ooh! Indians! So cheap! Yeah, gimme one gimme one! Waiiiit a minute. We need to inspect the merchandise. Are you bringing them to the town square anytime soon so we can check their teeth? <em>We need pedigreed Indians, I tell you!</em> What fucking century do you think this is? Do you think you&#8217;re really slick in advertising and nobody will notice that you&#8217;re really trying to sell slaves for less money than only partial, disobedient slaves in <em>&lt;insert your own country&gt;</em>? Try selling quality, price, or time directly, not some twisted Colonial era language not too dissimilar from selling coffee beans.</p>
<p>They are probably the same people who write the pants monster emails. As much as I would love to hire some cut-rate outsourcing company to price all of my friends out of work and produce substandard everything for me, fuck you.</p>
<blockquote><p>
> Please let me know, how I can help you with any of your open jobs,<br />
> your company.<br />
><br />
> Regards &#8212; Keith<br />
><br />
> xxx@xxx
</p></blockquote>
<p>I responded, just in case he really is an asshole:</p>
<blockquote>
<p>You can also go fuck your mother.</p>
</blockquote>
<p>I hope he gets back to me. I hope he&#8217;s angry. As an alternative, I hope to never hear about him or his company again, unless it&#8217;s in the news due to the murder-suicide subsequent to its failure. Don&#8217;t shop there.</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F08%2Fi-dont-know-who-keith-downey-thinks-he-is%2F&amp;linkname=I%20don%26%238217%3Bt%20know%20who%20Keith%20Downey%20thinks%20he%20is%26%238230%3B" title="Digg" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F08%2Fi-dont-know-who-keith-downey-thinks-he-is%2F&amp;linkname=I%20don%26%238217%3Bt%20know%20who%20Keith%20Downey%20thinks%20he%20is%26%238230%3B" title="Delicious" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F08%2Fi-dont-know-who-keith-downey-thinks-he-is%2F&amp;linkname=I%20don%26%238217%3Bt%20know%20who%20Keith%20Downey%20thinks%20he%20is%26%238230%3B" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F08%2Fi-dont-know-who-keith-downey-thinks-he-is%2F&amp;linkname=I%20don%26%238217%3Bt%20know%20who%20Keith%20Downey%20thinks%20he%20is%26%238230%3B" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F08%2Fi-dont-know-who-keith-downey-thinks-he-is%2F&amp;linkname=I%20don%26%238217%3Bt%20know%20who%20Keith%20Downey%20thinks%20he%20is%26%238230%3B" title="Reddit" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/yahoo_buzz?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F08%2Fi-dont-know-who-keith-downey-thinks-he-is%2F&amp;linkname=I%20don%26%238217%3Bt%20know%20who%20Keith%20Downey%20thinks%20he%20is%26%238230%3B" title="Yahoo Buzz" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/buzz.png" width="16" height="16" alt="Yahoo Buzz"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F08%2Fi-dont-know-who-keith-downey-thinks-he-is%2F&amp;linkname=I%20don%26%238217%3Bt%20know%20who%20Keith%20Downey%20thinks%20he%20is%26%238230%3B" title="Twitter" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F08%2Fi-dont-know-who-keith-downey-thinks-he-is%2F&amp;linkname=I%20don%26%238217%3Bt%20know%20who%20Keith%20Downey%20thinks%20he%20is%26%238230%3B" title="DZone" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F08%2Fi-dont-know-who-keith-downey-thinks-he-is%2F&amp;linkname=I%20don%26%238217%3Bt%20know%20who%20Keith%20Downey%20thinks%20he%20is%26%238230%3B" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F08%2Fi-dont-know-who-keith-downey-thinks-he-is%2F&amp;linkname=I%20don%26%238217%3Bt%20know%20who%20Keith%20Downey%20thinks%20he%20is%26%238230%3B" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/amazon_wish_list?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F08%2Fi-dont-know-who-keith-downey-thinks-he-is%2F&amp;linkname=I%20don%26%238217%3Bt%20know%20who%20Keith%20Downey%20thinks%20he%20is%26%238230%3B" title="Amazon Wish List" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/amazon.png" width="16" height="16" alt="Amazon Wish List"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F08%2Fi-dont-know-who-keith-downey-thinks-he-is%2F&amp;linkname=I%20don%26%238217%3Bt%20know%20who%20Keith%20Downey%20thinks%20he%20is%26%238230%3B"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/DCa6x5W-imxVEj5HqAK35ypK6NU/0/da"><img src="http://feedads.g.doubleclick.net/~a/DCa6x5W-imxVEj5HqAK35ypK6NU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/DCa6x5W-imxVEj5HqAK35ypK6NU/1/da"><img src="http://feedads.g.doubleclick.net/~a/DCa6x5W-imxVEj5HqAK35ypK6NU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/datenschwanznet/~4/D047E6ScXqg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://datenschwanz.net/2010/01/08/i-dont-know-who-keith-downey-thinks-he-is/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/us/</creativeCommons:license>
	<feedburner:origLink>http://datenschwanz.net/2010/01/08/i-dont-know-who-keith-downey-thinks-he-is/</feedburner:origLink></item>
		<item>
		<title>How To Easily Get Row Selection Working With ICEfaces and AspectJ</title>
		<link>http://feedproxy.google.com/~r/datenschwanznet/~3/cYmuWAtFlX8/</link>
		<comments>http://datenschwanz.net/2010/01/05/how-to-easily-get-row-selection-working-with-icefaces-and-aspectj/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 21:32:27 +0000</pubDate>
		<dc:creator>studmuffin</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[AOP]]></category>
		<category><![CDATA[AspectJ]]></category>
		<category><![CDATA[ICEfaces]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://datenschwanz.net/?p=354</guid>
		<description><![CDATA[If you&#8217;ve succumbed to not being able to get Spring Web Flow to work with your other framework of choice (I am only using ICEfaces as an example because its fresh in my head) and have to figure out how to reimplement row selection for tables and such, since you can&#8217;t readily use SWF&#8217;s OneSelectionTrackingListDataModel [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve succumbed to not being able to get Spring Web Flow to work with your other framework of choice (I am only using ICEfaces as an example because its fresh in my head) and have to figure out how to reimplement row selection for tables and such, since you can&#8217;t readily use SWF&#8217;s OneSelectionTrackingListDataModel et al (i.e. result-type=&#8221;dataModel&#8221; in a flow configuration), there is of course an AOP solution. <em>What can&#8217;t it do?!</em></p>
<p>I have an aspect skeleton sitting around for this, and of course you can use it if you want. (Fuck, you can use the whole library. I just have to get my SCM back online.) You just have to have everything else in place to make it go, like load-time weaving or whatever. Anyway, it&#8217;s basically the <a href="http://en.wikipedia.org/wiki/Decorator_pattern">Decorator pattern</a>, something AOP introductions&#8230; <em>are</em>. Here it is&#8230;</p>
<p><span id="more-354"></span></p>
<pre class="brush: java; wrap-lines: false;">
/**
 * LDSYS Java Library
 *
 * Copyright (C) 1997-2010 Christopher G. Stach II
 *
 * This file is part of LDSYS Java Library.
 *
 * LDSYS Java Library is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * LDSYS Java Library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with LDSYS Java Library.  If not, see
 * &lt;http://www.gnu.org/licenses/&gt;.
 *
 **/

package net.ldsys.view.jsf;

import java.io.Serializable;

import javax.faces.event.ActionEvent;

/**
 * Description: This should be subclassed and used like this: &lt;code&gt;
 * &amp;#064;Aspect
 * public class SelectableRowAspect {
 *     &amp;#064;DeclareMixin(&amp;quot;@javax.persistence.Entity your.package.model..*&amp;quot;)
 *     public static SelectableRow createDelegate(Object row) {
 *         return net.ldsys.view.jsf.SelectableRowAspect.createDelegate(row);
 *     }
 * }
 * &lt;/code&gt;
 *
 * @author cgs
 */
// @Aspect
public class SelectableRowAspect {

	/**
	 * Description: What do you think it is?
	 *
	 * @author cgs
	 */
	public interface SelectableRow
		extends Serializable
	{

		/**
		 * @return the selected
		 */
		boolean isSelected();

		/**
		 * @param selected
		 */
		void setSelected(boolean selected);

		/**
		 * @param actionEvent
		 */
		void toggleSelected(ActionEvent actionEvent);

	}

	/**
	 * Description: What do you think it is?
	 *
	 * @author cgs
	 */
	public static class SelectableRowImpl
		implements SelectableRow
	{

		private static final long serialVersionUID = 1L;

		private boolean _selected;

		/**
		 *
		 */
		public SelectableRowImpl() {
			super();
		}

		/**
		 * @see net.ldsys.view.jsf.SelectableRowAspect.SelectableRow#isSelected()
		 */
		public boolean isSelected() {
			return _selected;
		}

		/**
		 * @see net.ldsys.view.jsf.SelectableRowAspect.SelectableRow#setSelected(boolean)
		 */
		public void setSelected(boolean selected) {
			_selected = selected;
		}

		/**
		 * @see net.ldsys.view.jsf.SelectableRowAspect.SelectableRow#toggleSelected(javax.faces.event.ActionEvent)
		 */
		public void toggleSelected(ActionEvent actionEvent) {
			_selected = !_selected;
		}

	}

	/**
	 * @param row
	 * @return the SelectableRow implementation
	 */
	// @DeclareMixin(&amp;quot;@javax.persistence.Entity
	// your.package.model..*&amp;quot;)
	public static SelectableRow createDelegate(Object row) {
		return new SelectableRowImpl();
	}

}
</pre>
<p>Using it is basically what the Javadoc says. One would look like this:</p>
<pre class="brush: java; wrap-lines: false;">
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.DeclareMixin;

@Aspect
public class SelectableRowAspect
	extends net.ldsys.view.jsf.SelectableRowAspect
{

	@DeclareMixin(&quot;@javax.persistence.Entity tld.domain.some.package.model..*&quot;)
	public static SelectableRow createDelegate(Object row) {
		return net.ldsys.view.jsf.SelectableRowAspect.createDelegate(row);
	}

	/**
	 *
	 */
	public SelectableRowAspect() {
		super();
	}

}
</pre>
<p>That applies your row selection aspect on all of your entities. You just stuff them into a list and you can use the selection mechanism in things, kind of like this (this is a fucked up example, so don&#8217;t copy and paste thinking that it will work):</p>
<pre class="brush: xml; wrap-lines: false;">
&lt;ice:dataTable id=&quot;someTableData&quot;
    value=&quot;#{someTableModel.rows}&quot;
    var=&quot;user&quot;
    varStatus=&quot;status&quot;&gt;

    &lt;ice:rowSelector id=&quot;someTableRowSelector&quot;
        immediate=&quot;true&quot;
        toggleOnClick=&quot;false&quot;
        toggleOnInput=&quot;false&quot;
        value=&quot;#{something.selected}&quot; /&gt;

    &lt;columnblahblah&gt;

        &lt;ice:commandLink action=&quot;#{somePopup.open}&quot;
            actionListener=&quot;#{something.toggleSelected}&quot;&gt;

            &lt;ice:outputText value=&quot;#{status.index + 1}&quot; /&gt;

        &lt;/ice:commandLink&gt;

    &lt;/columnblahblah&gt;

    [...]

&lt;/ice:dataTable&gt;
</pre>
<p>There. Now you can click on a row and it will be selected for your popup.</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F05%2Fhow-to-easily-get-row-selection-working-with-icefaces-and-aspectj%2F&amp;linkname=How%20To%20Easily%20Get%20Row%20Selection%20Working%20With%20ICEfaces%20and%20AspectJ" title="Digg" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F05%2Fhow-to-easily-get-row-selection-working-with-icefaces-and-aspectj%2F&amp;linkname=How%20To%20Easily%20Get%20Row%20Selection%20Working%20With%20ICEfaces%20and%20AspectJ" title="Delicious" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F05%2Fhow-to-easily-get-row-selection-working-with-icefaces-and-aspectj%2F&amp;linkname=How%20To%20Easily%20Get%20Row%20Selection%20Working%20With%20ICEfaces%20and%20AspectJ" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F05%2Fhow-to-easily-get-row-selection-working-with-icefaces-and-aspectj%2F&amp;linkname=How%20To%20Easily%20Get%20Row%20Selection%20Working%20With%20ICEfaces%20and%20AspectJ" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F05%2Fhow-to-easily-get-row-selection-working-with-icefaces-and-aspectj%2F&amp;linkname=How%20To%20Easily%20Get%20Row%20Selection%20Working%20With%20ICEfaces%20and%20AspectJ" title="Reddit" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/yahoo_buzz?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F05%2Fhow-to-easily-get-row-selection-working-with-icefaces-and-aspectj%2F&amp;linkname=How%20To%20Easily%20Get%20Row%20Selection%20Working%20With%20ICEfaces%20and%20AspectJ" title="Yahoo Buzz" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/buzz.png" width="16" height="16" alt="Yahoo Buzz"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F05%2Fhow-to-easily-get-row-selection-working-with-icefaces-and-aspectj%2F&amp;linkname=How%20To%20Easily%20Get%20Row%20Selection%20Working%20With%20ICEfaces%20and%20AspectJ" title="Twitter" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F05%2Fhow-to-easily-get-row-selection-working-with-icefaces-and-aspectj%2F&amp;linkname=How%20To%20Easily%20Get%20Row%20Selection%20Working%20With%20ICEfaces%20and%20AspectJ" title="DZone" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F05%2Fhow-to-easily-get-row-selection-working-with-icefaces-and-aspectj%2F&amp;linkname=How%20To%20Easily%20Get%20Row%20Selection%20Working%20With%20ICEfaces%20and%20AspectJ" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F05%2Fhow-to-easily-get-row-selection-working-with-icefaces-and-aspectj%2F&amp;linkname=How%20To%20Easily%20Get%20Row%20Selection%20Working%20With%20ICEfaces%20and%20AspectJ" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/amazon_wish_list?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F05%2Fhow-to-easily-get-row-selection-working-with-icefaces-and-aspectj%2F&amp;linkname=How%20To%20Easily%20Get%20Row%20Selection%20Working%20With%20ICEfaces%20and%20AspectJ" title="Amazon Wish List" rel="nofollow" target="_blank"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/icons/amazon.png" width="16" height="16" alt="Amazon Wish List"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fdatenschwanz.net%2F2010%2F01%2F05%2Fhow-to-easily-get-row-selection-working-with-icefaces-and-aspectj%2F&amp;linkname=How%20To%20Easily%20Get%20Row%20Selection%20Working%20With%20ICEfaces%20and%20AspectJ"><img src="http://datenschwanz.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>
<p><a href="http://feedads.g.doubleclick.net/~a/MXy-zQiW6ZW36vGd1G5zmxsO788/0/da"><img src="http://feedads.g.doubleclick.net/~a/MXy-zQiW6ZW36vGd1G5zmxsO788/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/MXy-zQiW6ZW36vGd1G5zmxsO788/1/da"><img src="http://feedads.g.doubleclick.net/~a/MXy-zQiW6ZW36vGd1G5zmxsO788/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/datenschwanznet/~4/cYmuWAtFlX8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://datenschwanz.net/2010/01/05/how-to-easily-get-row-selection-working-with-icefaces-and-aspectj/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/us/</creativeCommons:license>
	<feedburner:origLink>http://datenschwanz.net/2010/01/05/how-to-easily-get-row-selection-working-with-icefaces-and-aspectj/</feedburner:origLink></item>
	</channel>
</rss>
