<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Christophe Herreman &#187; Conferences</title>
	<atom:link href="http://www.herrodius.com/blog/category/conferences/feed" rel="self" type="application/rss+xml" />
	<link>http://www.herrodius.com/blog</link>
	<description>Thoughts from a software developer</description>
	<lastBuildDate>Thu, 10 Jun 2010 19:08:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Speaking at the Flex on Java eXchange in London</title>
		<link>http://www.herrodius.com/blog/344</link>
		<comments>http://www.herrodius.com/blog/344#comments</comments>
		<pubDate>Thu, 10 Jun 2010 19:06:03 +0000</pubDate>
		<dc:creator>Christophe</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Spring ActionScript]]></category>
		<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://www.herrodius.com/blog/?p=344</guid>
		<description><![CDATA[
I&#8217;ll be speaking at the first Flex on Java eXchange in London on June 16th. My talk will be an introduction to the Spring ActionScript framework, along with other presentations on Flex and Java connectivity and enterprise Flex development.
From the Skills Matter website:
Skills Matter is pleased to organise the first Flex on Java eXchange. This [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.herrodius.com/blog/wp-content/uploads/2010/06/flex-on-java-exchange_670x180.gif"><img src="http://www.herrodius.com/blog/wp-content/uploads/2010/06/flex-on-java-exchange_670x180.gif" alt="" title="flex-on-java-exchange_670x180" width="670" height="180" class="aligncenter size-full wp-image-347" /></a></p>
<p>I&#8217;ll be speaking at the first Flex on Java eXchange in London on June 16th. My talk will be an introduction to the Spring ActionScript framework, along with other presentations on Flex and Java connectivity and enterprise Flex development.</p>
<p>From the Skills Matter website:</p>
<blockquote><p>Skills Matter is pleased to organise the first Flex on Java eXchange. This Annual Flex and Java conference brings together the leading experts on RIA, Flex, Java, Spring and Grails with London&#8217;s JEE and web development community, for an informal day of deep technical insight and friendly discussion.</p>
<p>Come learn about Java and Flex integration technologies, MVC frameworks, tools, plugins, best practices and innovative ideas from the creators of those technologies and from the industry&#8217;s innovators. </p></blockquote>
<p>In case you&#8217;re in the neighborhood, be sure to join!</p>
<p>More info: <a href="http://skillsmatter.com/event/java-jee/flex-on-java-exchange-2010">http://skillsmatter.com/event/java-jee/flex-on-java-exchange-2010</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.herrodius.com/blog/344/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring ActionScript at the Devoxx Conference</title>
		<link>http://www.herrodius.com/blog/232</link>
		<comments>http://www.herrodius.com/blog/232#comments</comments>
		<pubDate>Mon, 19 Oct 2009 19:03:55 +0000</pubDate>
		<dc:creator>Christophe</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Spring ActionScript]]></category>

		<guid isPermaLink="false">http://www.herrodius.com/blog/?p=232</guid>
		<description><![CDATA[On November 18th, I&#8217;ll be doing a presentation on Spring ActionScript at this year&#8217;s Devoxx conference in Antwerp, Belgium. The conference formerly known as JavaPolis is the biggest European (Java) Developers conference.This 5 day conference has an impressive speaker list each year, lots of quality content and is extremely cheap compared to other conferences. So [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.herrodius.com/blog/wp-content/uploads/2009/10/devoxx.jpeg" alt="devoxx" title="devoxx" width="300" height="112" class="alignright size-full wp-image-233" />On November 18th, I&#8217;ll be doing a presentation on <a href="http://www.springactionscript.org/">Spring ActionScript</a> at this year&#8217;s <a href="http://www.devoxx.com">Devoxx</a> conference in Antwerp, Belgium. The conference formerly known as JavaPolis is the biggest European (Java) Developers conference.This 5 day conference has an impressive speaker list each year, lots of quality content and is extremely cheap compared to other conferences. So even with the economic crisis, there is no reason not to be there&#8230;</p>
<p>Here&#8217;s the abstract of my presentation (<a href="http://www.devoxx.com/display/DV09/Spring+ActionScript">link</a>):</p>
<blockquote><p>Spring ActionScript is an offshoot of Java Spring and brings Inversion of Control to the Flash Platform. Primarily focusing on Flex and AIR development, you&#8217;ll learn how this framework can be used to build testable and maintainable applications. We&#8217;ll take a look at the different kinds of configuration options and will also see how the minimal MVCS infrastructure fits into an application.</p></blockquote>
<p>If you&#8217;re there and are interested in Flex development, then this session is for you.</p>
<p>I&#8217;m currently preparing samples and slides, so if you have anything in particular you would like to see covered, feel free to leave something in the comments. Or if you are attending the conference and would like to meet up, leave a comment as well.</p>
<p>Looking forward to seeing you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.herrodius.com/blog/232/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Spring ActionScript at FlexCamp 2008 Belgium</title>
		<link>http://www.herrodius.com/blog/158</link>
		<comments>http://www.herrodius.com/blog/158#comments</comments>
		<pubDate>Fri, 12 Dec 2008 10:18:31 +0000</pubDate>
		<dc:creator>Christophe</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Inversion of Control]]></category>
		<category><![CDATA[Spring ActionScript]]></category>
		<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://www.herrodius.com/blog/158</guid>
		<description><![CDATA[Here's a rundown of the presentation I did on Spring ActionScript at the FlexCamp in Antwerp, Belgium. In 40 minutes I tried to cover the basic theory on Inversion of Control, Dependency Injection and the Spring ActionScript project in general. We then dove right into some code we've been writing for an enterprise app that [...]]]></description>
			<content:encoded><![CDATA[<p>Here's a rundown of the presentation I did on Spring ActionScript at the FlexCamp in Antwerp, Belgium. In 40 minutes I tried to cover the basic theory on Inversion of Control, Dependency Injection and the Spring ActionScript project in general. We then dove right into some code we've been writing for an enterprise app that extensively uses Spring ActionScript's IoC container.</p>
<p><center>
<div style="width:425px;text-align:left" id="__ss_840353"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/herrodius/spring-actionscript-presentation?type=powerpoint" title="Spring ActionScript">Spring ActionScript</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=springactionscript-1229072979837175-2&#038;stripped_title=spring-actionscript-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=springactionscript-1229072979837175-2&#038;stripped_title=spring-actionscript-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View SlideShare <a style="text-decoration:underline;" href="http://www.slideshare.net/herrodius/spring-actionscript-presentation?type=powerpoint" title="View Spring ActionScript on SlideShare">presentation</a> or <a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint">Upload</a> your own. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/flash">flash</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/air">air</a>)</div>
</div>
<p></center></p>
<p>Since time was limited (or in case you were not there), I'll run through the key features of the code I ran through and try to give some more explanation.</p>
<p><strong>Targeting BlazeDS via remoting and messaging</strong></p>
<p>Whenever I'm hitting a backend, I try to have the endpoints externally configured. This allows me to switch between different endpoints - different test or production servers for instance - just by specifying the ip and port in an external properties file. This means that you don't have to specify any compiler arguments that point to the services-config.xml or messaging-config.xml files.</p>
<p>You can set up a channelset and a consumer with the following code. Notice the "method-invocation" element that allows you to execute a method on the object you create. This allows us to directly pass in a channel to the channelset. (In case you are interested, the method-invocation element is preprocessed to an instance of MethodInvokingFactoryObject)</p>
<div class="igBar"><span id="lcode-13"><a href="#" onclick="javascript:showPlainTxt('code-13'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-13">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;object id=<span style="color:#CC0000;">"channelSet"</span> class=<span style="color:#CC0000;">"mx.messaging.ChannelSet"</span>&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;method-invocation name=<span style="color:#CC0000;">"addChannel"</span>&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;arg&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;object id=<span style="color:#CC0000;">"streamingAMFChannel"</span> class=<span style="color:#CC0000;">"mx.messaging.channels.StreamingAMFChannel"</span>&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;property name=<span style="color:#CC0000;">"url"</span> value=<span style="color:#CC0000;">"http://${host}:${port}/${context-root}/messagebroker/streamingamf"</span> /&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/object&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/arg&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;/method-invocation&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/object&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;object id=<span style="color:#CC0000;">"eventMessageFeedConsumer"</span> class=<span style="color:#CC0000;">"mx.messaging.Consumer"</span>&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;property name=<span style="color:#CC0000;">"destination"</span> value=<span style="color:#CC0000;">"eventMessageFeed"</span> /&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;property name=<span style="color:#CC0000;">"channelSet"</span> ref=<span style="color:#CC0000;">"channelSet"</span> /&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/object&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Have you noticed the placeholders "${...}" for the host, port and context-root? These are loaded from a properties file that is referenced in the application context file.</p>
<p>Here's the external properties file:</p>
<div class="igBar"><span id="lcode-14"><a href="#" onclick="javascript:showPlainTxt('code-14'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-14">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">host=<span style="color:#800000;color:#800000;">192</span>.<span style="color:#800000;color:#800000;">168</span>.<span style="color:#800000;color:#800000;">2</span>.<span style="color:#800000;color:#800000;">134</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">port=<span style="color:#800000;color:#800000;">8081</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">context-root=server-web </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>And here's the import declaration in the application context xml file:</p>
<div class="igBar"><span id="lcode-15"><a href="#" onclick="javascript:showPlainTxt('code-15'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-15">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;property file=<span style="color:#CC0000;">"application-context.properties.txt"</span> /&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Of course, you can also specify remote objects in the application context. Here's an example:</p>
<div class="igBar"><span id="lcode-16"><a href="#" onclick="javascript:showPlainTxt('code-16'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-16">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;object id=<span style="color:#CC0000;">"remoteObject"</span> class=<span style="color:#CC0000;">"mx.rpc.remoting.mxml.RemoteObject"</span> abstract=<span style="color:#CC0000;">"true"</span>&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;property name=<span style="color:#CC0000;">"endpoint"</span> value=<span style="color:#CC0000;">"http://${host}:${port}/${context-root}/messagebroker/amf"</span> /&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;property name=<span style="color:#CC0000;">"showBusyCursor"</span> value=<span style="color:#CC0000;">"true"</span> /&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/object&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;object id=<span style="color:#CC0000;">"userRemoteObject"</span> parent=<span style="color:#CC0000;">"remoteObject"</span>&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;property name=<span style="color:#CC0000;">"destination"</span> value=<span style="color:#CC0000;">"userService"</span> /&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/object&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Notice that we actually split this up into 2 objects. The first object is an abstract remote object which we use as a parent object for concrete remote objects. Notice the "abstract=true" and the "parent=remoteObject" properties on these objects.</p>
<p><strong>MVCS support</strong></p>
<p>As part of the project we are working on, we also starting working on some experimental MVCS support. If you haven't heard of MVCS, be sure to check out at <a href="http://joeberkovitz.com/blog/reviewtube/">Joe Berkovitz' blog</a>.</p>
<p>What we provide so far are some interfaces and abstract base classes for services, operations and commands. Let's look at some code for services and operations.</p>
<p>Here's an interface for a user service, which defines a "getAll" method.</p>
<div class="igBar"><span id="lcode-17"><a href="#" onclick="javascript:showPlainTxt('code-17'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-17">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">public interface IUserService <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; function getAll<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>:IAsyncOperation;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>We now want to create a concrete service for that interface. For instance, this could be a remote object enabled service. For that, we have a abstract remote object service base class.</p>
<div class="igBar"><span id="lcode-18"><a href="#" onclick="javascript:showPlainTxt('code-18'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-18">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">public class UserRemoteObjectService extends AbstractRemoteObjectService implements IUserService <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; public function UserRemoteObjectService<span style="color:#006600; font-weight:bold;">&#40;</span>remoteObject:RemoteObject<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; super<span style="color:#006600; font-weight:bold;">&#40;</span>remoteObject<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; public function getAll<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>:IAsyncOperation <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; var token:AsyncToken = remoteObject.<span style="">getAll</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; token.<span style="">addResponder</span><span style="color:#006600; font-weight:bold;">&#40;</span>new Responder<span style="color:#006600; font-weight:bold;">&#40;</span>onGetAllResult, onGetAllFault<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; return getOperation<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"getAll"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; private function onGetAllResult<span style="color:#006600; font-weight:bold;">&#40;</span>event:ResultEvent<span style="color:#006600; font-weight:bold;">&#41;</span>:void <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; getOperation<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"getAll"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">dispatchEvent</span><span style="color:#006600; font-weight:bold;">&#40;</span>new AsyncOperationResultEvent<span style="color:#006600; font-weight:bold;">&#40;</span>event.<span style="">result</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; private function onGetAllFault<span style="color:#006600; font-weight:bold;">&#40;</span>event:FaultEvent<span style="color:#006600; font-weight:bold;">&#41;</span>:void <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; getOperation<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"getAll"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">dispatchEvent</span><span style="color:#006600; font-weight:bold;">&#40;</span>new AsyncOperationErrorEvent<span style="color:#006600; font-weight:bold;">&#40;</span>event.<span style="">fault</span>.<span style="">faultDetail</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>For testing purposes, we could also create a mock user service:</p>
<div class="igBar"><span id="lcode-19"><a href="#" onclick="javascript:showPlainTxt('code-19'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-19">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">public class UserMockService extends AbstractService implements IUserService <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; private static var logger:ILogger = Log.<span style="">getLogger</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"UserMockService"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; public function UserMockService<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; logger.<span style="">warn</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"Mock user service instantiated."</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; public function getAll<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>:IAsyncOperation <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; var users:ArrayCollection = new ArrayCollection<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; var user1:User= new User<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; user1.<span style="">name</span> = <span style="color:#CC0000;">"John"</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; users.<span style="">addItem</span><span style="color:#006600; font-weight:bold;">&#40;</span>user1<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; var user2:User= new User<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; user2.<span style="">name</span> = <span style="color:#CC0000;">"Peter"</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; users.<span style="">addItem</span><span style="color:#006600; font-weight:bold;">&#40;</span>user2<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; setTimeout<span style="color:#006600; font-weight:bold;">&#40;</span>onGetUsersResult, Math.<span style="">random</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>*<span style="color:#800000;color:#800000;">3000</span>, users<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CursorManager.<span style="">setBusyCursor</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; return getOperation<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"getAll"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; private function onGetUsersResult<span style="color:#006600; font-weight:bold;">&#40;</span>users:ArrayCollection<span style="color:#006600; font-weight:bold;">&#41;</span>:void <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; var operation:IAsyncOperation = getOperation<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"getAll"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; operation.<span style="">dispatchEvent</span><span style="color:#006600; font-weight:bold;">&#40;</span>new AsyncOperationResultEvent<span style="color:#006600; font-weight:bold;">&#40;</span>users<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; CursorManager.<span style="">removeBusyCursor</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>We can now define these objects in the application context as follows:</p>
<div class="igBar"><span id="lcode-20"><a href="#" onclick="javascript:showPlainTxt('code-20'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-20">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;object id=<span style="color:#CC0000;">"userService"</span> class=<span style="color:#CC0000;">"UserMockService"</span>/&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">... <span style="">or</span> ...</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;object id=<span style="color:#CC0000;">"userService"</span> class=<span style="color:#CC0000;">"UserRemoteObjectService"</span>&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;constructor-arg&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;object id=<span style="color:#CC0000;">"userRemoteObject"</span> parent=<span style="color:#CC0000;">"remoteObject"</span>&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;property name=<span style="color:#CC0000;">"destination"</span> value=<span style="color:#CC0000;">"detectorGroupService"</span> /&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/object&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;/constructor-arg&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/object&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>You can now use one of these implementations by calling the getAll() method. Make sure that you type the service to IUserService and not to a concrete implementation:</p>
<div class="igBar"><span id="lcode-21"><a href="#" onclick="javascript:showPlainTxt('code-21'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-21">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">public function getUsers<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>:void <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; var operation:IAsyncOperation = _userService.<span style="">getAll</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; operation.<span style="">addEventListener</span><span style="color:#006600; font-weight:bold;">&#40;</span>AsyncOperationEvent.<span style="">RESULT</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; function<span style="color:#006600; font-weight:bold;">&#40;</span>e:AsyncOperationResultEvent<span style="color:#006600; font-weight:bold;">&#41;</span>:void <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logger.<span style="">info</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"Users loaded successfully."</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var users:ArrayCollection = ArrayCollection<span style="color:#006600; font-weight:bold;">&#40;</span>e.<span style="">result</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; operation.<span style="">addEventListener</span><span style="color:#006600; font-weight:bold;">&#40;</span>AsyncOperationEvent.<span style="">ERROR</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; function<span style="color:#006600; font-weight:bold;">&#40;</span>e:AsyncOperationErrorEvent<span style="color:#006600; font-weight:bold;">&#41;</span>:void <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logger.<span style="">error</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"An error occurred when loading the users: "</span> + e.<span style="">fault</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>To implement your own services, you don't necessarely need to extend the AbstractService or AbstractRemoteObjectService class. These base classes just provide you with some convenient methods, like "getOperation" that creates a generic AsyncOperation for you.</p>
<p>You could of course also create an own implementation of the IAsyncOperation interface for your specific needs. For instance, you could create a GetAllUsersOperation that has all the logic for invoking a method on a remote object and that also deals with the result and fault handling of the remote call.</p>
<p><strong>Presentation Model and Autowiring</strong></p>
<p>I mentioned that we were using <a href="http://martinfowler.com/eaaDev/PresentationModel.html">Presentation Model</a> to seperate our UI state and logic from our views. This has worked surprisingly well for us and it certainly allows us to write better tests (for the presentation model). If you are new to Presentation Model and Presentation Patterns in general, I really recommend taking a look at the writings by <a href="http://martinfowler.com/eaaDev/">Martin Fowler</a> and <a href="http://weblogs.macromedia.com/paulw/">Paul Williams</a>.</p>
<p>Seperating logic and state from the view is one thing, but of course in order to use this combination you have to provide your view with an instance of a presentation model at some point. It's easy to read a presentation model from an application context, but injecting it is not that easy. Especially if your view component is nested a few levels deep inside other view components, it can be tricky to pass in the instance of the presentation model. We started of by passing in the presentation models from the root of the application through all components until we had finally reached the component that needed the presentation model. Needless to say that this approach required us to write a lot of extra code that really wasn't supposed to exist...</p>
<p>Enter custom metadata and SystemManager! Using the systemManager, you can listen to events that get fired when view components are added to the stage. This was exactly what we needed to know. Combined with a custom metadata element [Autowired], we now support dependencies being injected into views automatically.</p>
<p>Here's how it works. Suppose you have a UserPanel and a UserPanelPresentationModel. In you UserPanel you'll have a reference to that presentation model so you can actually use it in your view component. By adding the extra [Autowired] metadata you can mark a property (the presentation model) as a property that needs to be autowired when the view is created and added to the stage.</p>
<p>In your UserPanel.mxml file, you declare the presentation model as follows.</p>
<div class="igBar"><span id="lcode-22"><a href="#" onclick="javascript:showPlainTxt('code-22'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-22">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#91;</span>Bindable<span style="color:#006600; font-weight:bold;">&#93;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#91;</span>Autowired<span style="color:#006600; font-weight:bold;">&#93;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">public var presentationModel:UserPanelPresentationModel; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Now all we need to do is listen to the ADDED event on the systemManager and write some glue code that injects the presentation models defined in the application context into the view components. This code goes in your main application file.</p>
<div class="igBar"><span id="lcode-23"><a href="#" onclick="javascript:showPlainTxt('code-23'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-23">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">import mx.<span style="">utils</span>.<span style="">DescribeTypeCache</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">import mx.<span style="">utils</span>.<span style="">DescribeTypeCacheRecord</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">...</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="">systemManager</span>.<span style="">addEventListener</span><span style="color:#006600; font-weight:bold;">&#40;</span>Event.<span style="">ADDED</span>, onAdded<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">...</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="">private</span> function onAdded<span style="color:#006600; font-weight:bold;">&#40;</span>event:Event<span style="color:#006600; font-weight:bold;">&#41;</span>:void <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; var autowiredObject:Object = event.<span style="">target</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; var typeInfo:DescribeTypeCacheRecord = DescribeTypeCache.<span style="">describeType</span><span style="color:#006600; font-weight:bold;">&#40;</span>autowiredObject<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; for each <span style="color:#006600; font-weight:bold;">&#40;</span>var metaDataNode:XML in typeInfo.<span style="">typeDescription</span>..<span style="">metadata</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; if <span style="color:#006600; font-weight:bold;">&#40;</span>metaDataNode.<span style="">attribute</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"name"</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color:#CC0000;">"Autowired"</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; var propertyNode:XML = metaDataNode.<span style="">parent</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; var property:String = propertyNode.@name.<span style="">toString</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; var objectName:String = property;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; var autowireByType:Boolean = true;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; for each <span style="color:#006600; font-weight:bold;">&#40;</span>var arg:XML in metaDataNode.<span style="">arg</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; if <span style="color:#006600; font-weight:bold;">&#40;</span>arg.<span style="">attribute</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"value"</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color:#CC0000;">"byName"</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; autowireByType = false;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; if <span style="color:#006600; font-weight:bold;">&#40;</span>autowireByType<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; var clazz:Class = ClassUtils.<span style="">forName</span><span style="color:#006600; font-weight:bold;">&#40;</span>propertyNode.@type.<span style="">toString</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; var objectNames:Array = m_applicationContext.<span style="">getObjectNamesForType</span><span style="color:#006600; font-weight:bold;">&#40;</span>clazz<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; if <span style="color:#006600; font-weight:bold;">&#40;</span>objectNames.<span style="">length</span> == <span style="color:#800000;color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; objectName = objectNames<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; autowiredObject<span style="color:#006600; font-weight:bold;">&#91;</span>property<span style="color:#006600; font-weight:bold;">&#93;</span> = m_applicationContext.<span style="">getObject</span><span style="color:#006600; font-weight:bold;">&#40;</span>objectName<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>You may have noticed that we do some extra checks on the attributes of the Autowired metadata. This is because the code above support autowiring by type (the default) and autowiring by name. Autowiring by type means that we will look in the context for objects that are of a certain type. If we find one, we will inject it. Autowiring by name means that we will look for objects in the context that have a certain id.</p>
<p>You can set up autowiring by name as follows:</p>
<div class="igBar"><span id="lcode-24"><a href="#" onclick="javascript:showPlainTxt('code-24'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-24">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#91;</span>Bindable<span style="color:#006600; font-weight:bold;">&#93;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#91;</span>Autowired<span style="color:#006600; font-weight:bold;">&#40;</span>mode=<span style="color:#CC0000;">"byName"</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#93;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">public var presentationModel:UserPanelPresentationModel; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p><strong>Conclusion</strong></p>
<p>I hope you now got a good understanding of some of the key features, best practices and what we are doing with Spring ActionScript in general. Don't hesitate to join our forum or the team if you want to help us out. We are really looking for more people to join, especially for working on samples and documentation.</p>
<p><a href="http://forum.springframework.org/forumdisplay.php?f=60"></p>
<p>http://forum.springframework.org/forumdisplay.php?f=60</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.herrodius.com/blog/158/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>2M08: Aral Balkan</title>
		<link>http://www.herrodius.com/blog/148</link>
		<comments>http://www.herrodius.com/blog/148#comments</comments>
		<pubDate>Fri, 23 May 2008 08:32:32 +0000</pubDate>
		<dc:creator>Christophe</dc:creator>
				<category><![CDATA[Conferences]]></category>

		<guid isPermaLink="false">http://www.herrodius.com/blog/148</guid>
		<description><![CDATA[[10.32] Aral is about to start. My laptop is running out of juice, so we'll see how far we get.
"Ruling the Web"
He brought a flying pig or so. He needs 12 volunteers. The Belgian crowd is frozen to their seats. I can't go of course, I need to blog   He handing out post-it [...]]]></description>
			<content:encoded><![CDATA[<p>[10.32] Aral is about to start. My laptop is running out of juice, so we'll see how far we get.</p>
<p>"Ruling the Web"</p>
<p>He brought a flying pig or so. He needs 12 volunteers. The Belgian crowd is frozen to their seats. I can't go of course, I need to blog <img src='http://www.herrodius.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  He handing out post-it notes. He wants people to write down interesting things and paste the notes on the walls.</p>
<p>He shot his flying pig into the audience.</p>
<p>Showing FutureSplash Animator.</p>
<p>Snakes on a plane, hehehe. angryalien.com</p>
<p>32 Things every flasher should know. Flash Gordon FTW!</p>
<p>"Flash is 99% bad", Mr. Nielsen or was it the lama.</p>
<p>Skip intro, Flashturbation is bad.</p>
<p>[10.43] Going through the 32 things. Talks about the evolution of the ActionScript language.</p>
<p>My battery is about to die. Sorry guys.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.herrodius.com/blog/148/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2M08: Keynote with Serge Jespers and Jason Levine</title>
		<link>http://www.herrodius.com/blog/147</link>
		<comments>http://www.herrodius.com/blog/147#comments</comments>
		<pubDate>Fri, 23 May 2008 07:52:46 +0000</pubDate>
		<dc:creator>Christophe</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.herrodius.com/blog/147</guid>
		<description><![CDATA[I'm sitting at the keynote of Multi-Mania. Serge and Jason are talking about the history of Flash. Actually, Serge is talking to the crowd and Jason is adding some sound effects. They are quite a funny duo  
[9.40] Serge is talking about The Open Screen Project.
Flash Player 10 now. Let's talk new features:
- custom [...]]]></description>
			<content:encoded><![CDATA[<p>I'm sitting at the keynote of Multi-Mania. Serge and Jason are talking about the history of Flash. Actually, Serge is talking to the crowd and Jason is adding some sound effects. They are quite a funny duo <img src='http://www.herrodius.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>[9.40] Serge is talking about The Open Screen Project.</p>
<p>Flash Player 10 now. Let's talk new features:<br />
- custom filters and effects: Pixelbender, scripting language to write your own filters. You can use these custom filters in across application...Photoshop, Flash<br />
- Rich text layout: Hebrew<br />
- enhanced video support</p>
<p>MAKE SOME NOISE: The campaign by Andre Michelle. Serge is showing some examples made by the community. An equalizer built in Flash. Oldskooll Atari tunes interpreted at runtime.</p>
<p>Serge shows some more demos. Very performant filtering. And a 3D demo of Doom, awesome!</p>
<p>New services by Adobe:<br />
- Scene7 imaging<br />
- SHARE<br />
- Pacifica<br />
- Cocomo</p>
<p>More info on Pacifica: Voice over IP for Flash. Serge shows the Adobe Directory, internal tool to find colleagues. Serge is available! <img src='http://www.herrodius.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Adobe Directory is an AIR application that is connected to the Pacifica server and is able to call Cell Phones. Live demo...the phone actually rings! Applause...</p>
<p>Adobe Flash CS4: Demo time. Don't click that button Serge (he has a paper with instructions about what not to do <img src='http://www.herrodius.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )! He creates a motion tween, applause! Now moves the animation line. Oh no, Serge is going to click the button...I saw that! My god, this is stand-up comedy, hehe</p>
<p>Serge is showing 3D support. Rotating text in multiple axes. Jason should be the voice for movie trailers. "But wait! There's more".</p>
<p>Serge is connecting some balls. Inverse Kinematics FTW!!! This is awesome.</p>
<p>[10.10] Jason now takes over. He's hilarious, hahaha. Will be showing some new features. Talking about some new ways to work with video. He's very excited.</p>
<p>He shows OnLocation perhaps running on a Macintosh. Capture video and add relevant metadata. The metadata stays with the files troughout the production process. Now shows Premiere Pro. Speech Transcription, Speech to Text. Explains how the subtitles will be searchable. Scrubs the timeline, text is highlighted.</p>
<p>Jason also has a list. Don't show this next thing <img src='http://www.herrodius.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Now shows SoundBooth. Editing multiple tracks. Synchronizes the changes between SoundBooth and Premiere.</p>
<p>Showing differences in loudness. Equalize volume levels. He's really good at sound effects. He spent a lot of time at the dark room...and still. "Who's the Gorilla, he's my brother!".</p>
<p>[10.21] Device Central now. Emulate playback of any type of content on mobile devices. Exports presets to After Effects. "You click render and.... you're done!"</p>
<p>Serge is taking over. MAX 2008 Europe, 1-4 December 2008 in Milan, Italy.</p>
<p>Applause, applause, applause...</p>
<p>...The End...</p>
]]></content:encoded>
			<wfw:commentRss>http://www.herrodius.com/blog/147/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speaking at the Dutch Flex Usergroup</title>
		<link>http://www.herrodius.com/blog/143</link>
		<comments>http://www.herrodius.com/blog/143#comments</comments>
		<pubDate>Sun, 20 Apr 2008 10:14:25 +0000</pubDate>
		<dc:creator>Christophe</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Prana]]></category>
		<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://www.herrodius.com/blog/143</guid>
		<description><![CDATA[Just a quick note to let you know that I'll be giving a presentation on Prana at the Dutch Flex Usergroup called Flugr on the 13th of June. So if you're in the neighborhood (Utrecht) and would like to meet, feel free to visit the event.


The following sessions will be given:
- Benjamin Dobbler &#038; Stephan [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.herrodius.com/blog/wp-content/uploads/2008/04/flugr.jpg' alt='Flugr' align='left'/>Just a quick note to let you know that I'll be giving a presentation on Prana at the Dutch Flex Usergroup called Flugr on the 13th of June. So if you're in the neighborhood (Utrecht) and would like to meet, feel free to visit the event.</p>
<p><br/><br />
<br/></p>
<p>The following sessions will be given:</p>
<p>- <a href="http://www.richapps.de/">Benjamin Dobbler</a> &#038; <a href="http://www.javapolis.com/confluence/display/~stephan/Home">Stephan Janssen</a>: The creation of Parleys<br />
- <a href="http://www.aboutnico.be">Nicolas Lierman</a>: Advanced Flex<br />
- myself: The Prana Framework</p>
<p>For more info, please visit the Flugr website at <a href="http://www.flugr.nl/">http://www.flugr.nl/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.herrodius.com/blog/143/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prana Presentation Slides</title>
		<link>http://www.herrodius.com/blog/127</link>
		<comments>http://www.herrodius.com/blog/127#comments</comments>
		<pubDate>Tue, 29 Jan 2008 20:48:51 +0000</pubDate>
		<dc:creator>Christophe</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Inversion of Control]]></category>
		<category><![CDATA[Prana]]></category>

		<guid isPermaLink="false">http://www.herrodius.com/blog/127</guid>
		<description><![CDATA[I put up the slides of the Prana presentation I did on the Adobe Usergroup - AIR Pre-Release Tour. You can download them at the Talks section or here (direct download).
Further, a number of people have blogged about the meeting:
 - Ward de Langhe
 - Gilles Vandenoostende
 - Wim Vanhenden
]]></description>
			<content:encoded><![CDATA[<p>I put up the slides of the Prana presentation I did on the Adobe Usergroup - AIR Pre-Release Tour. You can download them at the <a href="http://www.herrodius.com/blog/talks">Talks</a> section or <a href="http://www.herrodius.com/upload/AUG-26-01-2008-Prana.rar">here</a> (direct download).</p>
<p>Further, a number of people have blogged about the meeting:<br />
 - <a href="http://multimediaportfolio.net/vip/blog/default.aspx?id=8&#038;t=Adobes-prerelease-tour-|-new-year-spec">Ward de Langhe</a><br />
 - <a href="http://blog.vandenoostende.com/?p=31">Gilles Vandenoostende</a><br />
 - <a href="http://seeing-is-believing.blogspot.com/2008/01/usergroup-new-year-get-together-ruled.html">Wim Vanhenden</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.herrodius.com/blog/127/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex, Silverlight and AIR at FeWeb &#8211; presentation files</title>
		<link>http://www.herrodius.com/blog/103</link>
		<comments>http://www.herrodius.com/blog/103#comments</comments>
		<pubDate>Thu, 13 Dec 2007 20:17:58 +0000</pubDate>
		<dc:creator>Christophe</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[feweb]]></category>
		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://www.herrodius.com/blog/?p=103</guid>
		<description><![CDATA[Yesterday evening, the 5th annual FeWeb conference took place in Edegem. I did a session on our Edumatic product development with Flex and what tools we use on a daily basis. Below is a download link for those interested in my presentation files. The slides contain some useful links to the tools mentioned.
feweb-12-12-2007.ppt (273 kb)
feweb-12-12-2007.pptx [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday evening, the 5th annual <a href="http://www.feweb.be">FeWeb</a> conference took place in Edegem. I did a session on our <a href="http://www.edumatic.be">Edumatic</a> product development with Flex and what tools we use on a daily basis. Below is a download link for those interested in my presentation files. The slides contain some useful links to the tools mentioned.</p>
<p><a href='http://www.herrodius.com/blog/wp-content/uploads/2007/12/feweb-12-12-2007.ppt' title='FeWeb 12-12-2007 PPT'>feweb-12-12-2007.ppt</a> (273 kb)<br />
<a href='http://www.herrodius.com/blog/wp-content/uploads/2007/12/feweb-12-12-2007.pptx' title='FeWeb 12-12-2007 PPTX'>feweb-12-12-2007.pptx</a> (187 kb)</p>
<p>For a review of the conference I can recommend the following post by Peter Elst: <a href="http://www.peterelst.com/blog/2007/12/13/feweb-flex-silverlight-air-and-more/">FeWeb - Flex, Silverlight, AIR and more</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.herrodius.com/blog/103/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JavaPolis (day two)</title>
		<link>http://www.herrodius.com/blog/101</link>
		<comments>http://www.herrodius.com/blog/101#comments</comments>
		<pubDate>Tue, 11 Dec 2007 17:00:38 +0000</pubDate>
		<dc:creator>Christophe</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.herrodius.com/blog/?p=101</guid>
		<description><![CDATA[Thanks to the free pass I got from Christoph Rooms at Adobe, I made it to the JavaPolis conference in Antwerp today. I visited the event last year and certainly didn't want to miss it this year. There is a strange and attractive atmosphere of collective geeky-ness and it is oh so cool. The fact [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.herrodius.com/blog/wp-content/uploads/2007/12/javapolis_250.gif' alt='JavaPolis' align="left"/>Thanks to the free pass I got from <a href="http://christophrooms.com/">Christoph Rooms</a> at Adobe, I made it to the <a href="http://www.javapolis.com">JavaPolis</a> conference in Antwerp today. I visited the event last year and certainly didn't want to miss it this year. There is a strange and attractive atmosphere of collective geeky-ness and it is oh so cool. The fact that there are people here from all over the globe proves that this is an interesting conference for every (Java) developer out there. Just like last year, this event seemed professionally organized. At the entrance, every attendee received a backpack with a shirt, a notepad and a conference magazine. There are several boots from vendors that give you interesting information on their products, reductions and of course tons of swag. There are also free drinks for everyone, dinner at noon and fruits and candies.</p>
<p>I arrived pretty late but just in time for the first session and found <a href="http://www.peterelst.com">Peter Elst</a> there as well. Up was a session on Flex for a full house. I think there were easily 500 people in the room. <a href="http://www.jamesward.org/wordpress/">James Ward</a> and <a href="http://www.mindview.net/WebLog">Bruce Eckel</a> (that's right, THE Bruce Eckel) were pair presenting and did an excellent job at it. They thoroughly explained the advantages of using Flex as a presentation tier and showed some sample applications. Later on they walked us through an example on how to connect to JSP pages to fetch data and how to consume the Flickr API. The Java crowd seemed to like it and it gave me a confident feeling that we as a development team are using the right technology (Flex) for the right job (interactive user interfaces). Having Bruce Eckel over to present was probably the best move Adobe could make to convince a Java crowd.</p>
<p>Next session was on JavaFX by <a href="http://learnjavafx.typepad.com/">Jim Weaver</a>. I hadn't seen it in action before so this was my chance of getting to know it. Unfortunately I was not really impressed. The technology seemed to be ages behind on what we are doing today with Flex for RIA development and I can only imagine hard core Java developers wanting to use this. Of course their is a strong programming language behind it - just like C# is for Silverlight - but the whole thing feels like a desperate attempt to catch up with Adobe in the RIA space. I have the same feeling with Silverlight btw.</p>
<p>Last session was <a href="http://en.wikipedia.org/wiki/Erich_Gamma">Erich Gamma</a> on Jazz. He talked about how agile development teams are working today and how there still are many pain points in bringing all project information together. This being SCM, bug tracking, project management, iteration plans... Jazz attempts to bundle all this info in a single application that makes it easier to access project information for the whole team.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.herrodius.com/blog/101/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Speaking at the 5th FeWeb congress</title>
		<link>http://www.herrodius.com/blog/90</link>
		<comments>http://www.herrodius.com/blog/90#comments</comments>
		<pubDate>Wed, 21 Nov 2007 22:20:38 +0000</pubDate>
		<dc:creator>Christophe</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.herrodius.com/blog/?p=90</guid>
		<description><![CDATA[
I'm glad to announce that I'll be speaking at the 5th FeWeb Congress on december 12th. FeWeb is the Belgian Federation for Web Developers and offers support of all kinds for professional web developers.
In my session, I'll cover some of the current development we have going on at Indie Group for the next generation of [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.herrodius.com/blog/wp-content/uploads/2007/11/feweb_20071212.gif' alt='FeWeb 5th Congress' /></p>
<p>I'm glad to announce that I'll be speaking at the 5th FeWeb Congress on december 12th. <a href="http://www.feweb.be/">FeWeb</a> is the Belgian Federation for Web Developers and offers support of all kinds for professional web developers.</p>
<p>In my session, I'll cover some of the current development we have going on at <a href="http://www.indiegroup.be/">Indie Group</a> for the next generation of our e-learning and assessment tool called <a href="http://www.edumatic.be">Edumatic</a>. We'll have a look at what we are developing, why we chose Adobe Flex technology, what tools and frameworks we use and how it all fits together.</p>
<p>For a complete schedule, see the <a href="http://feweb.be/fewebcongres_5feweb.html">5th FeWeb Congress Program</a>.</p>
<p>Hope to see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.herrodius.com/blog/90/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
