<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1753785183900106589</id><updated>2012-01-22T07:16:34.827-08:00</updated><category term='Red Hat'/><category term='grant all'/><category term='Fedora'/><category term='JVM Arguments'/><category term='Egypt'/><category term='Flex SDK 3.4.1'/><category term='Spring Framework'/><category term='maven'/><category term='Yakov Fain'/><category term='events'/><category term='.flexProperties'/><category term='Windows'/><category term='Israel'/><category term='upgrade'/><category term='Jarray'/><category term='RIA'/><category term='java.lang.OutOfMemoryError'/><category term='VideoDisplay'/><category term='Galileo'/><category term='Spring Roo'/><category term='SpringSource Tool Suite'/><category term='posgresql'/><category term='gas3'/><category term='Trac'/><category term='mvn install'/><category term='Jython'/><category term='Flex'/><category term='java -version'/><category term='Error'/><category term='Apache'/><category term='sort'/><category term='M2Eclipse'/><category term='Adobe Air'/><category term='-Xmx'/><category term='mysql'/><category term='jre'/><category term='PDF'/><category term='Tel Aviv'/><category term='Cairngorm 3'/><category term='jdk'/><category term='httpd'/><category term='CentOS'/><category term='Web Services'/><category term='ResourceBundle'/><category term='mxmlc'/><category term='XML'/><category term='tikal'/><category term='maven2'/><category term='Path annotation'/><category term='Drupal'/><category term='Apache http Server'/><category term='Cairngorm'/><category term='Flash Builder 4'/><category term='Enterprise'/><category term='TracWiki'/><category term='Google Analytics'/><category term='Spring AS'/><category term='Ben Forta'/><category term='Eclipse'/><category term='CMS'/><category term='Bugzilla'/><category term='statistics'/><category term='ubuntu'/><category term='Flex on Java Exchange'/><category term='Intel'/><category term='Python'/><category term='Twitter'/><category term='Microsoft'/><category term='RHEL'/><category term='Front Page'/><category term='WYSIWYG'/><category term='flex compiler'/><category term='headless server'/><category term='DataGrid'/><category term='ByteArray'/><category term='London'/><category term='PureMVC'/><category term='GUI'/><category term='Almog Koren'/><category term='WSDL'/><category term='STS'/><category term='BlazeDS'/><category term='internet'/><category term='debian'/><category term='Flex Component Life Cycle'/><category term='posgresql show tables'/><category term='Spring'/><category term='Book'/><category term='Action Script'/><category term='AlivePDF'/><category term='Ubuntu 8.04. Hardy Heron'/><category term='dto'/><category term='java.awt.headless'/><category term='cloud computing'/><category term='Flash Builder'/><category term='RESTEasy'/><category term='REST'/><category term='Flex Bulider 3'/><category term='Wind River'/><category term='job trends'/><category term='Java'/><category term='Flex License'/><category term='Locale'/><category term='SOAP'/><category term='Error Loading Project'/><category term='jobs'/><category term='sql'/><category term='Linux'/><category term='Eclipse 3.5'/><category term='Flex SDK'/><category term='AMF'/><category term='Silverlight'/><title type='text'>Flex On Java</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.flexonjava.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-4757392528935435661</id><published>2011-10-04T12:35:00.000-07:00</published><updated>2011-10-04T23:52:33.218-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spring Roo'/><category scheme='http://www.blogger.com/atom/ns#' term='SpringSource Tool Suite'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Tips for working with Spring Roo on STS</title><content type='html'>&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-DI539U2Ig-A/TotiEFDx2NI/AAAAAAAAARk/0LiQgAJvNYM/s1600/roo.jpeg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 78px; height: 78px;" src="http://3.bp.blogspot.com/-DI539U2Ig-A/TotiEFDx2NI/AAAAAAAAARk/0LiQgAJvNYM/s400/roo.jpeg" alt="" id="BLOGGER_PHOTO_ID_5659725178938185938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In my current project I do lots of use of Roo 1.2 under the SpringSource Tool Suite, Roo is becoming one of my favorite tools, especially after the&lt;a href="http://blog.springsource.com/2011/09/14/new-application-layering-and-persistence-choices-in-spring-roo/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+SpringSourceTeamBlog+%28SpringSource+Team+Blog%29"&gt; recently added layering in version 1.2&lt;/a&gt;. Roo and it's support on the STS is still in it's early stages, there are a number of roo bugs that make the work process a little  rigid. Here are a two tips which will help you get more from Roo on STS&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Use the Navigator view on the tree, this way you'll be able to see the AJ code that roo generates and not only the Java classes. goto &lt;span style="font-weight: bold; font-style: italic;"&gt;Window &amp;gt; Show View &amp;gt; Other &amp;gt; Navigator&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;When you start STS, make sure you open Roo shell so roo will update AJ files while you code.  To do this&lt;span style="font-weight: bold; font-style: italic;"&gt; right click the project on the tree &amp;gt; Spring Tools &amp;gt; Open Roo Shell&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-4757392528935435661?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/4757392528935435661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=4757392528935435661' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/4757392528935435661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/4757392528935435661'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2011/10/tips-for-working-with-spring-roo-on-sts.html' title='Tips for working with Spring Roo on STS'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-DI539U2Ig-A/TotiEFDx2NI/AAAAAAAAARk/0LiQgAJvNYM/s72-c/roo.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-922403022688233702</id><published>2011-07-25T00:16:00.000-07:00</published><updated>2011-07-31T07:14:55.502-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Action Script'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><title type='text'>Looking back at Swing</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-Gi3msk86-Yc/Ti0aXeADZfI/AAAAAAAAAPQ/y2ZMfT2rp3M/s1600/java-logo.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 67px; height: 67px;" src="http://4.bp.blogspot.com/-Gi3msk86-Yc/Ti0aXeADZfI/AAAAAAAAAPQ/y2ZMfT2rp3M/s400/java-logo.png" alt="" id="BLOGGER_PHOTO_ID_5633187699402958322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I am currently using a Java third party library that uses Swing classes. I had to perform a simple task today, which included creating a Label with an Icon, using Swing's ImageIcon class. I looked into swing six years ago. Then, at the time I was the first Flex person in a Java developer’s team. The company I was working for was switching from Swing to Flex. It is interesting to look at Swing and learn how the concept of productivity in a GUI development environment has changed over such a short time period. For instance, this is how the Swing manual &lt;a href="http://download.oracle.com/javase/tutorial/uiswing/components/icon.html"&gt;suggests&lt;/a&gt; that you create a label with an Icon:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;ImageIcon icon = createImageIcon("images/middle.gif",&lt;br /&gt;                            "a pretty but meaningless splat");&lt;br /&gt;label1 = new JLabel("Image and Text", icon, JLabel.CENTER);&lt;br /&gt;...&lt;br /&gt;label3 = new JLabel(icon);&lt;br /&gt;&lt;br /&gt;/** Returns an ImageIcon, or null if the path was invalid. */&lt;br /&gt;protected ImageIcon createImageIcon(String path,&lt;br /&gt;                                      String description) {&lt;br /&gt;java.net.URL imgURL = getClass().getResource(path);&lt;br /&gt;if (imgURL != null) {&lt;br /&gt;   return new ImageIcon(imgURL, description);&lt;br /&gt;} else {&lt;br /&gt;   System.err.println("Couldn't find file: " + path);&lt;br /&gt;   return null;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Can you imagine? All this code is required for a simple Label with an Icon! Software&lt;br /&gt;development has changed in the last few years. Platforms and languages are expected to be more efficient and require less code and time from the developer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-922403022688233702?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/922403022688233702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=922403022688233702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/922403022688233702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/922403022688233702'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2011/07/looking-back-at-swing.html' title='Looking back at Swing'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Gi3msk86-Yc/Ti0aXeADZfI/AAAAAAAAAPQ/y2ZMfT2rp3M/s72-c/java-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-7000553338828904959</id><published>2011-06-26T03:24:00.000-07:00</published><updated>2011-06-30T02:31:52.414-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java.lang.OutOfMemoryError'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM Arguments'/><category scheme='http://www.blogger.com/atom/ns#' term='STS'/><category scheme='http://www.blogger.com/atom/ns#' term='SpringSource Tool Suite'/><category scheme='http://www.blogger.com/atom/ns#' term='-Xmx'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><category scheme='http://www.blogger.com/atom/ns#' term='M2Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>STS with Maven - java.lang.OutOfMemoryError: Java heap space</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-ekb4pUxpPz0/TgeJUwd1l1I/AAAAAAAAAO0/cZ2lYmUwJtY/s1600/springsource-logo.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 78px; height: 78px;" src="http://2.bp.blogspot.com/-ekb4pUxpPz0/TgeJUwd1l1I/AAAAAAAAAO0/cZ2lYmUwJtY/s400/springsource-logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5622613649495791442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've recently started using SpringSource Tool Suite (STS) for a large Flex on Java project, In the recent configuration I used eclipse to code and launched Maven using command line. STS provides a built in Maven launcher which really makes more sense to use (STS use m2eclipse to fully integrate maven with eclipse). The only problem is that once I tried to run mvn clean install I ran into the good old heap space issue:&lt;div&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;java.lang.OutOfMemoryError: Java heap space&lt;br /&gt;at java.io.BufferedWriter.(BufferedWriter.java:87)&lt;br /&gt;at java.io.BufferedWriter.(BufferedWriter.java:70)&lt;br /&gt;at java.io.PrintStream.init(PrintStream.java:83)&lt;br /&gt;at java.io.PrintStream.(PrintStream.java:100)&lt;br /&gt;at java.io.PrintStream.(PrintStream.java:62)&lt;br /&gt;at org.aspectj.weaver.bcel.LazyClassGen.toLongString(LazyClassGen.java:764)&lt;br /&gt;at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1837)&lt;br /&gt;at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1755)&lt;br /&gt;at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1515)&lt;br /&gt;at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1322)&lt;br /&gt;at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.weaveQueuedEntries(AjPipeliningCompilerAdapter.java:435)&lt;br /&gt;at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.queueForWeaving(AjPipeliningCompilerAdapter.java:371)&lt;br /&gt;at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.afterProcessing(AjPipeliningCompilerAdapter.java:358)&lt;br /&gt;at org.aspectj.ajdt.internal.compiler.CompilerAdapter.ajc$after$org_aspectj_ajdt_internal_compiler_CompilerAdapter$5$6b855184(CompilerAdapter.aj:98)&lt;br /&gt;at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:652)&lt;br /&gt;at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:392)&lt;br /&gt;at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:1007)&lt;br /&gt;at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBuildManager.java:268)&lt;br /&gt;at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:182)&lt;br /&gt;at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)&lt;br /&gt;at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)&lt;br /&gt;at org.aspectj.tools.ajc.Main.run(Main.java:355)&lt;br /&gt;at org.aspectj.tools.ajc.Main.runMain(Main.java:234)&lt;br /&gt;at org.codehaus.mojo.aspectj.AbstractAjcCompiler.execute(AbstractAjcCompiler.java:378)&lt;br /&gt;at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)&lt;br /&gt;at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)&lt;br /&gt;at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)&lt;br /&gt;at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)&lt;br /&gt;at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)&lt;br /&gt;at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)&lt;br /&gt;at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)&lt;br /&gt;at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The solution obviously is to increase the maximum heap size which is represented by the JVM -Xmx argument. Now there are a number of places you can find this argument (STS.ini is one of them) , but here's the one place I found that really makes the difference. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Goto the 'Run Configurations' popup of the current maven run you are trying to use (can be accesed by right clicking your project and selecting 'Run As')&lt;/li&gt;&lt;li&gt;Select your current run under 'Maven Build' in the tree&lt;/li&gt;&lt;li&gt;Select the the JVM tab and add your requested -Xmx settings (I chose -Xmx512m)&lt;/li&gt;&lt;li&gt;Press 'Apply' and 'Run'&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/-iFaoJDCIn8s/Tgcqlc656EI/AAAAAAAAAOs/Dx9ai00M6kY/s1600/jre-settings.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 396px; height: 400px;" src="http://4.bp.blogspot.com/-iFaoJDCIn8s/Tgcqlc656EI/AAAAAAAAAOs/Dx9ai00M6kY/s400/jre-settings.png" alt="" id="BLOGGER_PHOTO_ID_5622509482702137410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You should now be able to run your Maven project.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-7000553338828904959?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/7000553338828904959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=7000553338828904959' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7000553338828904959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7000553338828904959'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2011/06/sts-with-maven-javalangoutofmemoryerror.html' title='STS with Maven - java.lang.OutOfMemoryError: Java heap space'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ekb4pUxpPz0/TgeJUwd1l1I/AAAAAAAAAO0/cZ2lYmUwJtY/s72-c/springsource-logo.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-3737898297091424203</id><published>2011-04-01T09:25:00.000-07:00</published><updated>2011-04-16T05:30:22.178-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RESTEasy'/><category scheme='http://www.blogger.com/atom/ns#' term='Path annotation'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>Using relative url with RESTEasy path annotation</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-dhHSrFuinOM/TZX_Iny6e-I/AAAAAAAAANQ/PgxPuU4YOzw/s1600/resteasy.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 91px; height: 69px;" src="http://4.bp.blogspot.com/-dhHSrFuinOM/TZX_Iny6e-I/AAAAAAAAANQ/PgxPuU4YOzw/s400/resteasy.png" alt="" id="BLOGGER_PHOTO_ID_5590655036036905954" border="0" /&gt;&lt;/a&gt;I ran into the following problem in the office this week, I'm working on a WAR project that exposes multiple services of different types (SOAP, REST, AMF). The REST part was written using Jboss's RESTEasy, after I renamed the REST servlet RESTEasy's services were no longer working. I was surprised to find out that the servlet name was hard coded into the code as part of the @Path annotation content, in order to update RESTEasy with the new servlet name, I was supposed to change the annotation content in a number of classes. Luckily there's a work around for this, and it's one that in my opinion you should always use, RESTEasy lets you specify the path prefix as a context variable, all you have to do is declare it in your web.xml in the following way...&lt;br /&gt;&lt;br /&gt;in my code I have the following Path deceleration:&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;@Path("/rest-api/user")&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;rest-api is the servlet name, I'd like to make sure it's no longer hard coded in my application..&lt;br /&gt;&lt;br /&gt;I will add the "mapping prefix" into my web.xml:&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;&amp;lt;web-app&amp;gt;&lt;br /&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;   &amp;lt;servlet-name&amp;gt;rest-servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;   &amp;lt;servlet-class&amp;gt;org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;   &amp;lt;servlet-name&amp;gt;rest-servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;   &amp;lt;url-pattern&amp;gt;/rest-api/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;context-param&amp;gt;&lt;br /&gt;   &amp;lt;param-name&amp;gt;resteasy.servlet.mapping.prefix&amp;lt;/param-name&amp;gt;&lt;br /&gt;   &amp;lt;param-value&amp;gt;/rest-api&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/context-param&amp;gt;&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Now when I've added the mapping prefix to the web.xml I can drop the servlet name from all path annotations:&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;@Path("/user")&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;In case I'de like to rename my servlet or for some reason change a part of the service URL, all I need to do is update the mapping prefix variable in the web.xml&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-3737898297091424203?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/3737898297091424203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=3737898297091424203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/3737898297091424203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/3737898297091424203'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2011/04/using-relative-url-with-resteasy-path.html' title='Using relative url with RESTEasy path annotation'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-dhHSrFuinOM/TZX_Iny6e-I/AAAAAAAAANQ/PgxPuU4YOzw/s72-c/resteasy.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-5852881230484993820</id><published>2011-02-24T11:01:00.000-08:00</published><updated>2011-02-24T12:13:32.797-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spring Roo'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Roo Flex Addon Tutorial</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-GjaUtX5QqtQ/TWa0b7ulPUI/AAAAAAAAAL4/EEX_bksS17Y/s1600/spring-roo.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 122px; height: 72px;" src="http://1.bp.blogspot.com/-GjaUtX5QqtQ/TWa0b7ulPUI/AAAAAAAAAL4/EEX_bksS17Y/s400/spring-roo.jpg" alt="" id="BLOGGER_PHOTO_ID_5577343580527476034" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;I ran a workshop today at &lt;a href="http://www.tikalk.com/"&gt;Tikal&lt;/a&gt; exploring the new Roo Flex Addon, during this workshop My colleagues &lt;/span&gt;&lt;em style="font-style: italic;"&gt; &lt;a href="http://www.tikalk.com/users/haim"&gt;Haim Raman&lt;/a&gt;, Shay Gabay &lt;/em&gt;&lt;span style="font-style: italic;"&gt;prepared a short tutorial for using Roo Flex Addon. If you are interested in the full post including our thoughts and conclusion on Roo goto the &lt;a href="http://www.tikalk.com/flex/roo-flex-addon-tutorial"&gt;post page&lt;/a&gt; on Tikal's website.&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Below  I've listed the basic steps you need to go through in order to run a simple Roo Flex Application&lt;/span&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;strong&gt;Getting  Required Software&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Spring Roo addon is still in early  development so using it is tricky, it's not entirely compatible with  different Roo versions. In order to run this tutorial you need to get  the following artifacts and versions:&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://s3.amazonaws.com/dist.springframework.org/release/ROO/spring-roo-1.1.1.RELEASE.zip"&gt;spring-roo-1.1.1.RELEASE&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maven.springframework.org/snapshot/org/springframework/flex/roo/addon/org.springframework.flex.roo.addon/1.0.0.BUILD-SNAPSHOT/org.springframework.flex.roo.addon-1.0.0.BUILD-20110219.075648-225.jar"&gt;Latest running Roo Flex Addon&lt;/a&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;strong&gt;Installing the software&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Unzip spring-roo-1.1.1.RELEASE.zip to a desired folder (this will be declared later as your ROO_HOME)&lt;/li&gt;&lt;li&gt;Copy the addon jar to ROO_HOME\bundle directory&lt;/li&gt;&lt;/ul&gt;  Make the following changes to your environment variables  &lt;ul&gt;&lt;li&gt;ROO_HOME = installed roo dir&lt;/li&gt;&lt;li&gt;Add ROO_HOME\bin to your path variable&lt;/li&gt;&lt;/ul&gt;  &lt;p style="margin-bottom: 0in;"&gt;Now open a command shell and create a new directory&lt;/p&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;mkdir voteFlex&lt;br /&gt;cd voteFle&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p style="margin-bottom: 0in;"&gt;Open roo shell by typing "roo"&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;Once the shell is open, you can  copy\paste the entire following script, sit back relax and let Roo do  it's magic and work for you.&lt;/p&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;project --topLevelPackage com.tikalk.fuseday.roo --projectName voteFlex&lt;br /&gt;persistence setup --provider HIBERNATE --database HYPERSONIC_PERSISTENT&lt;br /&gt;flex setup&lt;br /&gt;entity --class ~.domain.Choice --testAutomatically&lt;br /&gt;field string namingChoice --notNull --sizeMin 1 --sizeMax 30&lt;br /&gt;field string description --sizeMax 80&lt;br /&gt;entity --class Vote --testAutomatically&lt;br /&gt;field reference choice --type Choice&lt;br /&gt;field string ip --notNull&lt;br /&gt;field date registered --type java.util.Date --notNull --past&lt;br /&gt;flex remoting all --package ~.service&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style="margin-bottom: 0in;"&gt;Exit from roo using the exit command and run your new application by calling&lt;/p&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;mvn tomcat:run&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Chances are that you will get some missing dependencies, in order to  solve this go edit the /voteFlex/pom.xml and add the following  repository to it&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;&amp;lt;repository&amp;gt;&lt;br /&gt;&amp;lt;id&amp;gt;spring-snapshot&amp;lt;/id&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;Spring Portfolio Snapshot Repository&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://maven.springframework.org/snapshot&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;releases&amp;gt;&lt;br /&gt;&amp;lt;enabled&amp;gt;false&amp;lt;/enabled&amp;gt;&lt;br /&gt;&amp;lt;/releases&amp;gt;&lt;br /&gt;&amp;lt;snapshots&amp;gt;&lt;br /&gt;&amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;&amp;lt;/snapshots&amp;gt;&lt;br /&gt;&amp;lt;/repository&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Thanks to Ken Rimple for &lt;a href="http://java.dzone.com/news/roo-flex-add-alive?utm_source=am6_feedtweet&amp;amp;utm_medium=twitter&amp;amp;utm_campaign=toya256ForRSS" _fcksavedurl="http://java.dzone.com/news/roo-flex-add-alive?utm_source=am6_feedtweet&amp;amp;utm_medium=twitter&amp;amp;utm_campaign=toya256ForRSS"&gt;solving&lt;/a&gt; the above issue.&lt;br /&gt;&lt;p style="margin-bottom: 0in;"&gt;Now, let go through the script rows and try to understand what Roo is doing&lt;/p&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;project --topLevelPackage com.tikalk.fuseday.roo --projectName voteFlex&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style="margin-bottom: 0in;"&gt;Creates a new Spring Roo project for a  given name and top level package name,  this line will add the basic  files that are required for the project.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;persistence setup --provider HIBERNATE --database HYPERSONIC_PERSISTENT&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style="margin-bottom: 0in;"&gt;Sets up your persistence layer, use Hibernate as ORM, use Hypersonic as a DB.&lt;/p&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;flex setup&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style="margin-bottom: 0in;"&gt;Setup the project to use Flex as GUI,  this line will add Flex dependencies to the project's pom and add a  number of Flex features to the build.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;entity --class ~.domain.Choice --testAutomatically&lt;br /&gt;field string namingChoice --notNull --sizeMin 1 --sizeMax 30&lt;br /&gt;field string description --sizeMax 80&lt;br /&gt;entity --class Vote --testAutomatically&lt;br /&gt;field reference choice --type Choice&lt;br /&gt;field string ip --notNull&lt;br /&gt;field date registered --type java.util.Date --notNull &amp;#8211;past&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;The above lines create entities and add  fields to these entities. These lines will create Hibernate entities,  relevant AspectJ scripts and so on.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;flex remoting all --package ~.service&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;The above does the real work, it scafolds  the entities and creates Flex GUI that will represent them, it also  creates services in the specified ".service" package. It also adds  BlazeDS and configures it.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;once your tomcat is up and running to go to &lt;a href="http://localhost:8080/voteFlex/voteFlex_scaffold.html" _fcksavedurl="http://localhost:8080/voteFlex/voteFlex_scaffold.html"&gt;http://localhost:8080/voteFlex/voteFlex_scaffold.html&lt;/a&gt; And see your running application, you can edit and modify both vote and choice entities from your auto created Flex screen.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-5852881230484993820?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/5852881230484993820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=5852881230484993820' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/5852881230484993820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/5852881230484993820'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2011/02/roo-flex-addon-tutorial.html' title='Roo Flex Addon Tutorial'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-GjaUtX5QqtQ/TWa0b7ulPUI/AAAAAAAAAL4/EEX_bksS17Y/s72-c/spring-roo.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-7319165034808514376</id><published>2011-02-09T07:25:00.001-08:00</published><updated>2011-02-12T13:28:18.629-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='mvn install'/><title type='text'>Why Installing Maven dependencies with the generatePom option is a good idea</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-UqgobYP1ZcM/TVb5Q1QL7SI/AAAAAAAAALw/OzdzSIbMYK8/s1600/mavenlogo_builtby_w.gif"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 120px; height: 40px;" src="http://3.bp.blogspot.com/-UqgobYP1ZcM/TVb5Q1QL7SI/AAAAAAAAALw/OzdzSIbMYK8/s400/mavenlogo_builtby_w.gif" alt="" id="BLOGGER_PHOTO_ID_5572915656485760290" border="0" /&gt;&lt;/a&gt;I recently noticed my project's Maven build takes ages to complete. Looking more closely I found out that on each build, Maven was trying to download a number of Poms from all declared repositories, waiting for a response from these repositories took some time and made my build process much longer. All the mentioned dependencies were ones I had to install locally on my local repository for licensing reasons.&lt;br /&gt;&lt;br /&gt;So what's happening here? When you skip &lt;span style="font-weight: bold; font-style: italic;"&gt;-DgeneratePom=true&lt;/span&gt; while installing a local dependency, Maven will obviously not create a pom.xml for the dependency. Each time you build, Maven will try to download the dependency pom. I removed all problematic dependencies and installed again in the following method:&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 95%;"&gt;&lt;code&gt;mvn install:install-file -Dfile=&amp;lt;path-to-file&amp;gt; -DgroupId=&amp;lt;group-id&amp;gt;&lt;br /&gt;-DartifactId=&amp;lt;artifact-id&amp;gt; -Dversion=&amp;lt;version&amp;gt; -Dpackaging=&amp;lt;packaging&amp;gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-DgeneratePom=true&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-7319165034808514376?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/7319165034808514376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=7319165034808514376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7319165034808514376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7319165034808514376'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2011/02/why-installing-maven-dependencies-with.html' title='Why Installing Maven dependencies with the generatePom option is a good idea'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-UqgobYP1ZcM/TVb5Q1QL7SI/AAAAAAAAALw/OzdzSIbMYK8/s72-c/mavenlogo_builtby_w.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-7679850060948926566</id><published>2011-01-28T08:25:00.000-08:00</published><updated>2011-01-28T14:07:53.413-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Analytics'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='Egypt'/><title type='text'>Egypt's Internet Blockade as seen in Google Analyitcs</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/TUMu5WIH9BI/AAAAAAAAALk/W4zZVy5CKdk/s1600/no-internet.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 87px; height: 87px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/TUMu5WIH9BI/AAAAAAAAALk/W4zZVy5CKdk/s400/no-internet.png" alt="" id="BLOGGER_PHOTO_ID_5567345127087141906" border="0" /&gt;&lt;/a&gt;I  run a number of websites in many languages, Arabic is one of them. Many of my Arabic language visitors are from Egypt. As you probably know, currently there's a massive wave of demonstrations in a number of Egyptian cities against the governing prime minister. As a result, the government there decided to block the internet in order to avoid people from reporting about the protests. Here's the results of that blockade as seen in today's &lt;a href="http://www.blogger.com/www.google.com/analytics"&gt;Google Analytics &lt;/a&gt;reports from my site.&lt;br /&gt;&lt;br /&gt;I made a comparison between yesterday's Egyptian visitors stats to today's result. The day is still not over in Egypt so the comparison is not 100% accurate but the results are pretty clear. Bellow you see the huge decline in traffic from each major Egyptian city. Traffic declined from 95% to 98% in each of the listed cities. It seems like internet communication out of Egypt is almost zero today.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_tECzk8Tdl88/TULwkBHw5LI/AAAAAAAAALU/0qOeUDTVVPs/s1600/egypt.PNG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 207px;" src="http://1.bp.blogspot.com/_tECzk8Tdl88/TULwkBHw5LI/AAAAAAAAALU/0qOeUDTVVPs/s400/egypt.PNG" alt="" id="BLOGGER_PHOTO_ID_5567276590950311090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-7679850060948926566?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/7679850060948926566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=7679850060948926566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7679850060948926566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7679850060948926566'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2011/01/egypts-internet-blockade-as-seen-in.html' title='Egypt&apos;s Internet Blockade as seen in Google Analyitcs'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tECzk8Tdl88/TUMu5WIH9BI/AAAAAAAAALk/W4zZVy5CKdk/s72-c/no-internet.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-5106379205978973255</id><published>2011-01-26T04:19:00.000-08:00</published><updated>2011-01-26T04:53:39.824-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='posgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='posgresql show tables'/><title type='text'>Postgresql show tables and other shortcuts</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/TUASN1VsF9I/AAAAAAAAALM/H2iWhlgXjRo/s1600/postgresql_logo.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 71px; height: 71px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/TUASN1VsF9I/AAAAAAAAALM/H2iWhlgXjRo/s400/postgresql_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5566469168295581650" border="0" /&gt;&lt;/a&gt;I'm not a huge fan of postgresql, mysql was used in most of the projects I was invloved in in the past few years. I've revently started working with postgresql. Here's a short list of command line short cuts:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Show tables - &lt;span style="font-weight: bold;"&gt;\dt&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Show columns of specific table - &lt;span style="font-weight: bold;"&gt;\d [table name]&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Quit the console - &lt;span style="font-weight: bold;"&gt;\q &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-5106379205978973255?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/5106379205978973255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=5106379205978973255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/5106379205978973255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/5106379205978973255'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2011/01/postgresql-show-tables-and-other.html' title='Postgresql show tables and other shortcuts'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tECzk8Tdl88/TUASN1VsF9I/AAAAAAAAALM/H2iWhlgXjRo/s72-c/postgresql_logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-4593329122889525736</id><published>2011-01-18T03:01:00.000-08:00</published><updated>2011-01-25T04:49:33.751-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yakov Fain'/><category scheme='http://www.blogger.com/atom/ns#' term='events'/><category scheme='http://www.blogger.com/atom/ns#' term='Cairngorm 3'/><category scheme='http://www.blogger.com/atom/ns#' term='Israel'/><category scheme='http://www.blogger.com/atom/ns#' term='Ben Forta'/><category scheme='http://www.blogger.com/atom/ns#' term='Almog Koren'/><title type='text'>February Events - Flash Israel Event and Pre Event</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tECzk8Tdl88/TS8q1IMGOXI/AAAAAAAAALE/K7k4EkEKLZM/s1600/ATTND_Shape_250x100.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 122px; height: 75px;" src="http://4.bp.blogspot.com/_tECzk8Tdl88/TS8q1IMGOXI/AAAAAAAAALE/K7k4EkEKLZM/s400/ATTND_Shape_250x100.png" alt="" id="BLOGGER_PHOTO_ID_5561711157045508466" border="0" /&gt;&lt;/a&gt;This coming February, some of the top Flash and Flex experts and evangelists are coming to Israel. &lt;a href="http://flashisrael.com/"&gt;Flash Israel&lt;/a&gt; event will take place on 22-23 February, so ensure you don't miss it! Tikal is sponsoring this event and you are welcome to visit us in Tikal's Booth. I am mostly looking forward to attending the Flex sessions. However, some of the general Flash topics will be very interesting too.&lt;br /&gt;&lt;br /&gt;Some of the lectures I am planning to attend and the issues covered are listed below:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://flashisrael.com/portfolio/hillel-coren-architecting-scalable-flex-applications-using-parsley-and-cairngorm-3/"&gt;Hillel Koren&lt;/a&gt;, discussing Cairngorm 3 and Parsley, covering DI and other issues.&lt;/li&gt;&lt;li&gt;&lt;a href="http://flashisrael.com/portfolio/kevin-schmidt-learning-the-flex-component-lifecycle/"&gt;Kevin Schmidt&lt;/a&gt;, covering the Component Life Cycle, discussing both Flex 3 and Flex 4.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://flashisrael.com/portfolio/sanyu-kiruluta-playbook-applications-with-air/"&gt;Sanyu Kiruluta&lt;/a&gt;, showcasing Air development on the new OS of the BlackBerry Tablet.&lt;/li&gt;&lt;li&gt;&lt;a href="http://flashisrael.com/portfolio/elad-elrom-developing-deploying-air-applications-for-tv/"&gt;Elad Elrom&lt;/a&gt;, covering Air on TV. This is a very interesting session for me. As you may recall, I presented a&lt;a href="http://blogs.adobe.com/jd1/archives/2005/09/more-on-orca-sw.html"&gt; TV based Flash SDK&lt;/a&gt; over 6 years ago. An application which was also displayed in Macromedia Max 2005.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In addition, some other well-known speakers, such as &lt;a href="http://flashisrael.com/portfolio/grant-skinner-being-distracted-successfully/"&gt;Grant Skinner&lt;/a&gt;, &lt;a href="http://flashisrael.com/portfolio/ben-forta/"&gt;Ben Forta&lt;/a&gt;, &lt;a href="http://flashisrael.com/portfolio/lee-brimelow/"&gt;Lee Brimellow&lt;/a&gt; and &lt;a href="http://flashisrael.com/portfolio/liz-frederick-the-adobe-community/"&gt;Liz Fredrik&lt;/a&gt; will also speak and present various topics.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;But wait, there's also a &lt;/span&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://flash-and-flex-israel.eventbrite.com/"&gt;Pre event&lt;/a&gt; on Feb 1, hosting Java Champion and Flex expert &lt;a href="http://flexblog.faratasystems.com/author/yakov"&gt;Yakov Fain&lt;/a&gt; .Yakov is the co author of &lt;a href="http://www.flexonjava.net/2010/03/book-review-enterprise-development-with.html"&gt;Enterprise Development with Flex&lt;/a&gt; . There are still free tickets available to the pre event, so go get yours!&lt;br /&gt;&lt;br /&gt;Major software companies, such as Microsoft, generally hold big Annual Conferences in Israel. Adobe, on the other hand does not offer such a summit. Therefore, this is the local developers’ first opportunity to attend such a major event and hear all these great speakers talk.&lt;br /&gt;&lt;br /&gt;The key person behind this event is &lt;a href="http://www.almogdesign.net/"&gt;Almog Koren&lt;/a&gt;. The event is sponsored by Tikal, Adobe, RIM and Quicksoft and other componies. You can refer to the event's &lt;a href="http://flashisrael.com/category/blog/"&gt;blog&lt;/a&gt; for further information and updates regarding this event.&lt;br /&gt;&lt;br /&gt;Hope to see you all there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-4593329122889525736?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/4593329122889525736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=4593329122889525736' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/4593329122889525736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/4593329122889525736'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2011/01/february-events-flash-israel-event-and.html' title='February Events - Flash Israel Event and Pre Event'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tECzk8Tdl88/TS8q1IMGOXI/AAAAAAAAALE/K7k4EkEKLZM/s72-c/ATTND_Shape_250x100.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-3189511386960040332</id><published>2010-11-06T13:52:00.000-07:00</published><updated>2011-06-21T01:02:20.966-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gas3'/><category scheme='http://www.blogger.com/atom/ns#' term='maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='dto'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='AMF'/><category scheme='http://www.blogger.com/atom/ns#' term='BlazeDS'/><title type='text'>Automated DTO Generation with Maven and GAS3</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tECzk8Tdl88/TNXB7iQLcQI/AAAAAAAAAKw/iPBgVt2xTq0/s1600/mavenlogo_builtby_w.gif"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 120px; height: 40px;" src="http://1.bp.blogspot.com/_tECzk8Tdl88/TNXB7iQLcQI/AAAAAAAAAKw/iPBgVt2xTq0/s400/mavenlogo_builtby_w.gif" alt="" id="BLOGGER_PHOTO_ID_5536544545472999682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Update: this tutorial is now updated, it now uses the recently new Flex Mojos GDS integration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In Recent years Flex has become the ideal client solution for Java server based projects. Flex complements Java in many ways and has many similarities to Java. These include, the syntax, the OOP approach and many other features of the two languages that are similar.&lt;br /&gt;&lt;br /&gt;In this tutorial, I will demonstrate one aspect of  the Flex Java integration by covering the earliest stage of the development process, which is the build and infrastructure creation. In future posts I will cover later stages of the development.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;VO\DTO Generation&lt;/span&gt;&lt;br /&gt;The VO generation process converts the existing server side entity classes to client side entity classes. At the end of the process each server side DTO\Entity class will have a client side corresponding class, enabling easy communication between the client and server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Using Flexmojos and GAS3 to Generate AS3&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.graniteds.org/confluence/display/DOC/3.+Gas3+Code+Generator"&gt;GAS3&lt;/a&gt; is one the modules of &lt;a href="http://www.graniteds.org/confluence/pages/viewpage.action?pageId=229378"&gt;GraniteDS&lt;/a&gt;, GDS is a comprehensive Flex remoting framework which will not be covered in this post. GAS3 is responsible for the Java to AS3 VO (or DTO) generation, it reads the domain Java objects and generates the corresponding AS classes. Usually GAS3 is used in conjunction with other GraniteDS modules. However, as I'm about to demonstrate, GAS3 can also be used separately from GDS in conjunction with different remoting frameworks such as BlazeDS or even different integration layers  like SOAP and  REST services.&lt;br /&gt;&lt;br /&gt;GAS3 is created on top of the Groovy templates. It can be customized and used to generate different  derivatives of Vos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;MyCRM Sample Application&lt;/span&gt;&lt;br /&gt;The sample mini application shown below, is a CRM app (MyCRM). responsible for managing customer information ,it contains three sub projects, as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;mycrm-core:&lt;/span&gt; The Java server,  responsible for the server side business logic. In our sample it contains only a number of basic entities.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;mycrm-parent:&lt;/span&gt; Maven's parent project, which serves as a parent POM.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;mycrm-flex-domain:&lt;/span&gt; The Flex side of the domain objects, packaged as an SWC which may be used by any Flex application.&lt;/li&gt;&lt;/ul&gt;The entire code for the sample application may be downloaded from &lt;a href="http://www.box.net/shared/7zmyehl20u"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;The GAS3 Flexmojos Generate Goal&lt;/span&gt;&lt;br /&gt;In the pom.xml under mycrm-flex-domain, the following section is responsible for the GAS3 operation:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.sonatype.flexmojos&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;flexmojos-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;3.6&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;executions&amp;gt;&lt;br /&gt;    &amp;lt;execution&amp;gt;&lt;br /&gt;        &amp;lt;goals&amp;gt;&lt;br /&gt;            &amp;lt;goal&amp;gt;generate&amp;lt;/goal&amp;gt;&lt;br /&gt;        &amp;lt;/goals&amp;gt;&lt;br /&gt;        &amp;lt;configuration&amp;gt;&lt;br /&gt;            &amp;lt;entityTemplate&amp;gt;&lt;br /&gt;                &amp;lt;template&amp;gt;${project.basedir}/../mycrm-flex-domain/gsp/MyCRMEntityBaseTemplate.gsp&amp;lt;/template&amp;gt;&lt;br /&gt;                &amp;lt;template&amp;gt;${project.basedir}/../mycrm-flex-domain/gsp/MyCRMEntityTemplate.gsp&amp;lt;/template&amp;gt;&lt;br /&gt;            &amp;lt;/entityTemplate&amp;gt;&lt;br /&gt;            &amp;lt;includeJavaClasses&amp;gt;&lt;br /&gt;                &amp;lt;includeClass&amp;gt;*net.flexonjava.examples.mycrm.domain*&amp;lt;/includeClass&amp;gt;&lt;br /&gt;            &amp;lt;/includeJavaClasses&amp;gt;&lt;br /&gt;            &amp;lt;outputDirectory&amp;gt;${project.basedir}/../mycrm-flex-domain/src/main/flex&amp;lt;/outputDirectory&amp;gt;&lt;br /&gt;            &amp;lt;baseOutputDirectory&amp;gt;${project.basedir}/../mycrm-flex-domain/src/main/flex-autogenerated&amp;lt;/baseOutputDirectory&amp;gt;&lt;br /&gt;        &amp;lt;/configuration&amp;gt;&lt;br /&gt;    &amp;lt;/execution&amp;gt;&lt;br /&gt;&amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Many of the tags above are overrides for the default configurations, you can use them in order to override GAS3 default settings. Lets take a closer look on some of these settings:&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;&amp;lt;entityTemplate&amp;gt;&lt;br /&gt;&amp;lt;template&amp;gt;${project.basedir}/../mycrm-flex-domain/gsp/MyCRMEntityBaseTemplate.gsp&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template&amp;gt;${project.basedir}/../mycrm-flex-domain/gsp/MyCRMEntityTemplate.gsp&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;/entityTemplate&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;GAS3 generates two types of VOs, the Base&lt;entityname&gt; class and the &lt;span style="font-style: italic;"&gt;&lt;entityname&gt; class extends Base&lt;entityname&gt;&lt;/entityname&gt;&lt;/entityname&gt;&lt;/span&gt;. Do not touch the Base class, this class is auto-generated every-time you compile, it’s best practice not to include it under your source control management repository. The child&lt;span style="font-style: italic;"&gt;&lt;entityname&gt; &lt;/entityname&gt;&lt;/span&gt;class is a different story, this class is simply a wrapper that you are welcome to modify. It can be  used for different purposes, such as, validating setter values, annotating, in-line documentation and so on. If you were wondering,  The &lt;span style="font-style: italic;"&gt;&lt;entityname&gt; &lt;/entityname&gt;&lt;/span&gt;class is also auto-generated like the Base class, Only if a copy of the class is not yet available in your code.&lt;br /&gt;&lt;br /&gt;The baseoutputdir tells GAS3 to place the base classes in a place different then my src folder.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;&amp;lt;baseOutputDirectory&amp;gt;${project.basedir}/../mycrm-flex-domain/src/main/flex-autogenerated&amp;lt;/baseOutputDirectory&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;GAS3 uses Groovy templates to convert Java to AS3 classes. GSP (Groovy Server Page) code is used in these templates. GSP is very similar to JSP or any other script language you’ve probably used in the past. By writing your own templates or modifying the existing ones you can modify the generated AS3 classes to suit your needs. You can insert your custom code remarks or apply your own logic on the conversion process.  The default templates maybe found under GAS3 distribution (look for *.gsp file name extension). I made some modifications to the basic templates.&lt;br /&gt;&lt;br /&gt;Once the build is ready and configured, run &lt;span style="font-weight: bold; font-style: italic;"&gt;mvn clean install&lt;/span&gt;. If everything goes well, a new SWC will be created for the mycrm-flex-domain project. This SWC will be used by any Flex project that needs to talk with MyCRM server. The SWC maybe used in conjunction with BlazeDS, SOAP, REST or any other integration layer we would like to use.&lt;/entityname&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-3189511386960040332?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/3189511386960040332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=3189511386960040332' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/3189511386960040332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/3189511386960040332'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2010/11/automated-dto-generation-with-maven-and.html' title='Automated DTO Generation with Maven and GAS3'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tECzk8Tdl88/TNXB7iQLcQI/AAAAAAAAAKw/iPBgVt2xTq0/s72-c/mavenlogo_builtby_w.gif' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-8908208285457183797</id><published>2010-09-07T05:04:00.000-07:00</published><updated>2010-09-11T08:50:44.389-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='DataGrid'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='sort'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex SDK'/><title type='text'>DataGrid error - Find criteria must contain at least one sort field value</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tECzk8Tdl88/TIulQjhxpOI/AAAAAAAAAJw/SrhSbvrN-kU/s1600/flex_logo.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 77px; height: 77px;" src="http://1.bp.blogspot.com/_tECzk8Tdl88/TIulQjhxpOI/AAAAAAAAAJw/SrhSbvrN-kU/s400/flex_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5515683872478700770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I got the above error message while doing some random tests on my current Flex application. This always seemed to be happening under the following scenario...  a DataGrid was on the screen, the grid was binded to a collection (myVosArrayCollection). One of the gird columns data fields was pointing to a nested value (myVO.field.child) :&lt;br /&gt;&lt;br /&gt;&lt;pre   style="color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 95%;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;font-size:12px;"&gt;&lt;code&gt; &amp;lt;mx:DataGridColumn dataProvider="{myVosArrayCollection}" dataField="&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;field&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;span style="font-weight: bold;"&gt;child&lt;/span&gt;&lt;/span&gt;".../&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;It seems like Flex has a problem dealing with nested objects for dataGrid column dataField. My solution is adding a wrapper getter on myVO.field.child , for me this is only natural as I'm using a two level VOs hierarchy exactly for these sort of scenarios, the BaseVO and the VO it self (but that's something I'll cover on a different post).  MyVo now have a new getter:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 95%;"&gt;&lt;code&gt;public class MyVO&lt;br /&gt; {&lt;br /&gt;     private var field:Object;&lt;br /&gt;  &lt;br /&gt;     public function get fieldChild():Object&lt;br /&gt;     {&lt;br /&gt;         return field.child;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;my DataGrid now has the following setup:&lt;br /&gt;&lt;br /&gt;&lt;pre   style="color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 95%;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;font-size:12px;"&gt;&lt;code&gt; &amp;lt;mx:DataGridColumn dataProvider="{myVosArrayCollection}" dataField="&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;field&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;C&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;hild&lt;/span&gt;&lt;/span&gt;".../&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;This solved the issue for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-8908208285457183797?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/8908208285457183797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=8908208285457183797' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/8908208285457183797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/8908208285457183797'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2010/09/datagrid-error-find-criteria-must.html' title='DataGrid error - Find criteria must contain at least one sort field value'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tECzk8Tdl88/TIulQjhxpOI/AAAAAAAAAJw/SrhSbvrN-kU/s72-c/flex_logo.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-7187207220580060308</id><published>2010-06-12T08:01:00.000-07:00</published><updated>2010-06-14T13:42:20.512-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tikal'/><category scheme='http://www.blogger.com/atom/ns#' term='jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Israel'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Tikal is Looking for Flex Developers</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tECzk8Tdl88/TBOjBeyM0xI/AAAAAAAAAIk/hLH7p_SGVAo/s1600/tikallogo.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 116px; height: 44px;" src="http://3.bp.blogspot.com/_tECzk8Tdl88/TBOjBeyM0xI/AAAAAAAAAIk/hLH7p_SGVAo/s400/tikallogo.png" alt="" id="BLOGGER_PHOTO_ID_5481904417278841618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Tikal knowledge group is Israel's leading Software consulting group specializing in Open Source technologies, Java, Flex and Phyton, Tikal has open positions for Flex developers in Israel. Job description:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;At least 1.5 years of experience in Client side Programming with Flex, Action script &amp;amp; Flash.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt; Deep knowledge of Action Script 3&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Experience as a Java/.NET developer – Must.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Web Services knowledge - big advantage.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;3 years of UI development experience. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;If you're interested feel free to email me on liorb at tikalk.com or jobs at tikalk.com&lt;br /&gt;&lt;br /&gt;You may find many other open positions for Java, Python, .Net, Javascript Build experts and many other fileds on &lt;a href="http://www.tikalk.com/jobs"&gt;Tikal's jobs page&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-7187207220580060308?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/7187207220580060308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=7187207220580060308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7187207220580060308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7187207220580060308'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2010/06/tikal-is-looking-for-flex-developers.html' title='Tikal is Looking for Flex Developers'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tECzk8Tdl88/TBOjBeyM0xI/AAAAAAAAAIk/hLH7p_SGVAo/s72-c/tikallogo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-7286356577531352516</id><published>2010-05-28T10:54:00.000-07:00</published><updated>2010-05-28T12:09:16.006-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tikal'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex on Java Exchange'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='Tel Aviv'/><category scheme='http://www.blogger.com/atom/ns#' term='London'/><title type='text'>June Events: Flex on Java and Cloud Computing</title><content type='html'>Two very interesting event in June...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tECzk8Tdl88/TAAFwDronkI/AAAAAAAAAIM/INrGS22ndk0/s1600/tikallogo.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 116px; height: 44px;" src="http://3.bp.blogspot.com/_tECzk8Tdl88/TAAFwDronkI/AAAAAAAAAIM/INrGS22ndk0/s400/tikallogo.png" alt="" id="BLOGGER_PHOTO_ID_5476383470062706242" border="0" /&gt;&lt;/a&gt;Tikal Knowledge Group is hosting &lt;a href="http://www.tikalk.com/tikals-open-cloud-track-open-2010-conference"&gt;Open Cloud track @ Open 2010 conference&lt;/a&gt;&lt;span style="font-style: italic;"&gt;. &lt;/span&gt;in Tel Aviv, I will be attending this event, a great opportunity to hear some of Tikal's experts&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;"Cloud computing is creating a Paradigm shift in the open source software arena.&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Giants like Microsoft, Amazon and Google are using open source software to provide their cloud services, challenging the traditional open source players. How will the open source players will confront the “new kids”? Can they keep their leadership in open source software services?&lt;/span&gt; &lt;span style="font-style: italic;"&gt;The Tikal team invites you to join us at the Open Cloud breakout sessions in the Open Israel taking place on June 10th . In these sessions hosted and provided by Tikal, We will discuss the dilemmas, and present methods, technologies and service paradigms, used by major open source players to meet the upcoming challenges in the industry. "&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;This event seems like a perfect opportunity for developers who want to understand what's the Cloud Buzz is all about. Starting with a session titled "Introduction to cloud computing by Yanai Franchi followed by a hands on demo by Zvika Markfeld.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://skillsmatter.com/event/java-jee/flex-on-java-exchange-2010"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 100px; height: 84px;" src="http://3.bp.blogspot.com/_tECzk8Tdl88/TAAIA-MVFnI/AAAAAAAAAIU/miRMImFyasw/s400/flex-on-java-exchange_100x84_imattending.gif" alt="" id="BLOGGER_PHOTO_ID_5476385959670257266" border="0" /&gt;&lt;/a&gt;&lt;span&gt;Another event I might attend is&lt;a href="http://skillsmatter.com/event/java-jee/flex-on-java-exchange-2010"&gt; Flex on Java Exchange in London&lt;/a&gt;&lt;/span&gt;&lt;span&gt;. If you read my blog you'd probably find this event very interesting. Some of the people behind my favorite open source Flex and Java solutions will be speaking in this event, such as &lt;a href="http://www.herrodius.com/blog/"&gt;Christophe Herreman&lt;/a&gt; creator of the Spring ActionScript Framework which I &lt;a href="http://flexonjava.blogspot.com/2009/04/consuming-web-services-with-flex-using.html"&gt;blogged about before&lt;/a&gt; or Jeremy Grelle the lead for &lt;a href="http://www.springsource.org/spring-flex"&gt;Spring BlazeDS Integration&lt;/a&gt; project at SpringSource. Another very interesting session in the event should be Michaël Chaize's Flex\Java Communication...&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;"Michaël will explain how Flex and Java coders can work together to ensure the success of Enterprise RIAs. You’ll see the new features in Flex 4, the integration of interactive designs produced in Flash Catalyst, advanced communications with Java using LiveCycle Data Services, Model-driven development and Live collaboration services".&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Other sessions in this event will deal with Garils for Flex and Enterprise Flex Development with the Parsley Framework.&lt;/span&gt;&lt;span&gt; If your in London on June 16 don't  miss this event.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-7286356577531352516?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/7286356577531352516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=7286356577531352516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7286356577531352516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7286356577531352516'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2010/05/june-events-flex-on-java-and-cloud.html' title='June Events: Flex on Java and Cloud Computing'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tECzk8Tdl88/TAAFwDronkI/AAAAAAAAAIM/INrGS22ndk0/s72-c/tikallogo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-4822948333706328801</id><published>2010-05-18T12:58:00.000-07:00</published><updated>2010-05-21T11:18:22.434-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TracWiki'/><category scheme='http://www.blogger.com/atom/ns#' term='Trac'/><title type='text'>Generating release notes with Trac and TracWiki</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tECzk8Tdl88/S98b2DzBAWI/AAAAAAAAAHc/xIK9v3m4a_g/s1600/trac_logo.jpeg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 72px; height: 72px;" src="http://3.bp.blogspot.com/_tECzk8Tdl88/S98b2DzBAWI/AAAAAAAAAHc/xIK9v3m4a_g/s400/trac_logo.jpeg" alt="" id="BLOGGER_PHOTO_ID_5467119088197239138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://trac.edgewall.org/"&gt;Trac&lt;/a&gt; is a very basic but efficient SCM tool, it lacks many of the features you may find in tools like Jira but, hey it's free, open and based on Python. Trac consists of a number of Modules, two of the major ones are Trac tickets management and TracWiki, the first is the core feature of Trac and the later is a basic Wiki module. Trac also lets you integrate the two modules, you can bring Tickets data into a Wiki page and vice versa.&lt;br /&gt;&lt;br /&gt;Release notes are often used in order to track the changes of a certain product release. Here's a simple trick which will help you generate TracWiki pages and templates for your release notes, it's based on the &lt;a href="http://trac.edgewall.org/wiki/TracQuery"&gt;TracQuery&lt;/a&gt; feature, a simple SQL like query language which helps you search for Trac tickets from TracWiki. Here's how it works...&lt;br /&gt;&lt;br /&gt;In Trac, I have a track project called MyProject, each project ticket whether it is a defects or enhancements is associated with a specific version of MyProject.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tECzk8Tdl88/S-SADayApMI/AAAAAAAAAHk/geEw6Rp9gaU/s1600/trac_ticket.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 372px; height: 400px;" src="http://4.bp.blogspot.com/_tECzk8Tdl88/S-SADayApMI/AAAAAAAAAHk/geEw6Rp9gaU/s400/trac_ticket.png" alt="" id="BLOGGER_PHOTO_ID_5468636643751666882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In track wiki I create a very simple wiki page which will be used as the release notes for version 1.04. I will use &lt;a href="http://trac.edgewall.org/wiki/TracQuery"&gt;TracQuery&lt;/a&gt; in order to retrieve the Tickets that represent changes in version 1.04, I will now add the following line to my wiki page:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;[[TicketQuery(status=closed,order=id,version=1.04,format=table,col=id|summary|description)]]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;In the above code sinppet I simply told Trac to display all tickets that are under version 1.04 and are in a fixed state. The query returns the tickets list as a table, my release notes will be updated as more tickets are closed, that during the the development process I can see which tickets will be present in the release.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/S_LXxoxjrcI/AAAAAAAAAH8/HUO8CjudEtg/s1600/trackwiki.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 119px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/S_LXxoxjrcI/AAAAAAAAAH8/HUO8CjudEtg/s400/trackwiki.png" alt="" id="BLOGGER_PHOTO_ID_5472673744967413186" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/S-SCCgI9G2I/AAAAAAAAAHs/3CqT2GZbujY/s1600/trac_table.png"&gt;&lt;br /&gt;&lt;/a&gt;As you can see above, the script creates a nice table with the relevant tickets and fields in my wiki page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-4822948333706328801?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/4822948333706328801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=4822948333706328801' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/4822948333706328801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/4822948333706328801'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2010/04/generating-release-notes-with-trac-and.html' title='Generating release notes with Trac and TracWiki'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tECzk8Tdl88/S98b2DzBAWI/AAAAAAAAAHc/xIK9v3m4a_g/s72-c/trac_logo.jpeg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-7231242865696538168</id><published>2010-04-28T13:23:00.001-07:00</published><updated>2010-04-28T13:26:29.840-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse 3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash Builder 4'/><category scheme='http://www.blogger.com/atom/ns#' term='Galileo'/><title type='text'>Error when installing m2eclipse on Flash Builder 4</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/S9Crg8BA-6I/AAAAAAAAAHE/cIo7I12wWDQ/s1600/eclipse_logo.jpeg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 79px; height: 79px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/S9Crg8BA-6I/AAAAAAAAAHE/cIo7I12wWDQ/s400/eclipse_logo.jpeg" alt="" id="BLOGGER_PHOTO_ID_5463054930354961314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;M2eclipse is a great maven plug in for eclipse, When I tried to install it on my Flash Builder 4 stand alone version, I got the following error:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;Cannot complete the install because one or more required items could not be found.   Software being installed: Maven Integration for Eclipse (Required) 0.10.0.20100209-0800 (org.maven.ide.eclipse.feature.feature.group 0.10.0.20100209-0800)   Missing requirement: Maven Integration for Eclipse (Required) 0.10.0.20100209-0800 (org.maven.ide.eclipse.feature.feature.group 0.10.0.20100209-0800) requires 'org.eclipse.jdt.feature.group 3.3.0' but it could not be found&lt;/blockquote&gt;FB4 standalone is based on version 3.5 of the eclipse platform, when you install m2e on eclipse it looks like it needs to download some dependencies from the eclipse update site, by default the site should be listed along with any other update site on your eclipse. For some reason this was left out by Adobe, so in this case m2e installation will not be able to grab the needed dependencies. All you have to do in order to fix this is to add the Eclipse 3.5 (Galileo) to the update sites list and you are good to go.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open Help &gt; Install new software &gt; Press Add&lt;/li&gt;&lt;li&gt;Add the following site:&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Name: Galileo&lt;br /&gt;Location: http://download.eclipse.org/releases/galileo&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/S9C8R3aQ-DI/AAAAAAAAAHU/nsZwyPPrpGA/s1600/add_site.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 168px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/S9C8R3aQ-DI/AAAAAAAAAHU/nsZwyPPrpGA/s400/add_site.PNG" alt="" id="BLOGGER_PHOTO_ID_5463073363118323762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now you can go ahead, add the m2e site and install it. &lt;a href="http://m2eclipse.sonatype.org/installing-m2eclipse.html"&gt;See&lt;/a&gt; m2eclipse installation guide for me info&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-7231242865696538168?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/7231242865696538168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=7231242865696538168' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7231242865696538168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7231242865696538168'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2010/04/error-when-installing-m2eclipse-on.html' title='Error when installing m2eclipse on Flash Builder 4'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tECzk8Tdl88/S9Crg8BA-6I/AAAAAAAAAHE/cIo7I12wWDQ/s72-c/eclipse_logo.jpeg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-6192653034328545974</id><published>2010-04-23T12:52:00.001-07:00</published><updated>2010-04-25T15:18:32.464-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOAP'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise'/><category scheme='http://www.blogger.com/atom/ns#' term='WYSIWYG'/><title type='text'>Enterprise Flex Development Do's and Dont's</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tECzk8Tdl88/S8gkk64bskI/AAAAAAAAAGk/6fvaI-mbJ-A/s1600/flex_logo.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 82px; height: 82px;" src="http://1.bp.blogspot.com/_tECzk8Tdl88/S8gkk64bskI/AAAAAAAAAGk/6fvaI-mbJ-A/s400/flex_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5460654764886569538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I recently had an interesting discussion with a friend who manages a team of developers. He was complaining that although his team members are experienced Flex developers, many of them had very bad coding habits. I knew what he was talking about.  Years of developing relatively small GUI applications on a very tight schedule caused AS3 developers to adopt bad habits. Poor tutorials and a lack of good professional literature also contributed to this situation. When a person dives into Flex, many of the articles he or she will view online describe solutions for small applications. In such examples MVC and other patterns are absent, layout code is mixed with functional code, and many antipatterns are applied.&lt;br /&gt;&lt;br /&gt;I think that Flex developers who are switching to Enterprise development will find the following short list of Do's and Dont's very useful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;1. Do use an MVC framework/architecture and stick to its rules!&lt;/span&gt; An MVC framework is essential when writing large-scale applications. Such a framework will already contain solutions to common challenges and thus compel the use of common design patterns. Enterprise applications are often developed by a large number of developers. The MVC framework encourages developers to adopt the same methodology and "speak the same language". When you write small applications on your own you can avoid using an MVC framework and get away with it, but this is not the case when you are writing a large application and sharing the task with a number of team members.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tECzk8Tdl88/S8gs38mKRUI/AAAAAAAAAG0/MY76pKVWjJI/s1600/mvc.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 231px; height: 222px;" src="http://4.bp.blogspot.com/_tECzk8Tdl88/S8gs38mKRUI/AAAAAAAAAG0/MY76pKVWjJI/s400/mvc.png" alt="" id="BLOGGER_PHOTO_ID_5460663887857337666" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;image taken from &lt;/span&gt;&lt;a style="font-style: italic;" href="http://priyangpatel.wordpress.com/2009/03/25/something-about-mvc-model-view-controller/"&gt;Priyang Patel’s Weblog&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;2. Forget XML handling&lt;/span&gt;. Flex online docs are filled with XML handling tutorials. Many developers seem to be excited by the possibility of loading and handling XML and incorporate these solutions in their code. While loading and parsing XML maybe useful in small applications, it is redundant in enterprise applications.&lt;br /&gt;&lt;br /&gt;In an enterprise application XML may be present in the integration layer. For instance, if you are using SOAP web services, the messages to and from the server are constructed from XML. However, in an enterprise OO application, data should be handled as objects. The data might consist of XML but your code at large should not be aware of it. Your code does not need to be dependent on a specific XML structure coming from the server because a specific encoder and decoder should be handling the XML. If you are using a standard integration layer (SOAP, REST) third party solutions should be used to perform the XML-related tasks thereby relieving you from the need to write large chunks of XML parsing code. For example, the SOAP Encoder and SOAP Decoder should handle XML for you if you are using SOAP.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tECzk8Tdl88/S8gtsD1i-4I/AAAAAAAAAG8/-rcoKyH_fx8/s1600/soap-diagram.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 108px;" src="http://1.bp.blogspot.com/_tECzk8Tdl88/S8gtsD1i-4I/AAAAAAAAAG8/-rcoKyH_fx8/s400/soap-diagram.PNG" alt="" id="BLOGGER_PHOTO_ID_5460664783154117506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;3. Use resource bundles &lt;/span&gt;Enterprise application texts should be customizable. They should allow administrators to change the content, or even the text language, when necessary. Large organizations in many countries (the EU for example) require the applications that they purchase to be entirely (100%) in their native language.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;4. Stay away from the Flex Builder WYSIWYG Editor &lt;/span&gt;Flex WYSIWYG Editor (design mode) can be used to drag and drop or resize components on the application screen. This method is really efficient when you need to create something quickly and can compromise on it being dirty. Unfortunately the Flex WYSIWYG Editor generates code that is very difficult to maintain. One symptom is the hard coded x and y values of each component on the screen, which will be problematic when you need to resize or scale your screen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;5. Don't mix AS with MXML&lt;/span&gt; MXML is used to describe your application layout whereas AS is used to create business logic, and the two should not be mixed. A number of methods are available to help you keep the two separate and the View Helper pattern is one of them. By sticking to this rule you will be able to create a clear separation between layout and functionality. It will also be easier to manage and your code will be readable to others.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. (&lt;a href="http://robotoole.com/blog/wp/"&gt;Rob's&lt;/a&gt; addition) - Maintain a library of reusable generic UI components&lt;/span&gt; such components should not be dependent on your application code or used only in a specific scenario. Instead they should be generic and available for all team member to be used in different scenarios.  Try to determine where a piece of UI code can be separated and isolated for reuse and make that piece a separate component.&lt;br /&gt;&lt;br /&gt;These are my do's and don'ts feel free to comment and add yours..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-6192653034328545974?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/6192653034328545974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=6192653034328545974' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/6192653034328545974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/6192653034328545974'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2010/04/enterprise-flex-development-dos-and.html' title='Enterprise Flex Development Do&apos;s and Dont&apos;s'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tECzk8Tdl88/S8gkk64bskI/AAAAAAAAAGk/6fvaI-mbJ-A/s72-c/flex_logo.jpg' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-7447243934685939892</id><published>2010-04-18T14:45:00.000-07:00</published><updated>2010-06-29T14:00:30.721-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='M2Eclipse'/><title type='text'>Maven2 on Eclipse Error - The specified user settings file does not exist</title><content type='html'>If you get this, simply create a new settings.xml under the specified path and paste the following&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;&amp;lt;settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"&amp;gt;&lt;br /&gt;&amp;lt;/settings&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;This seems to be a known issue with some of the M2Eclipse releases&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-7447243934685939892?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/7447243934685939892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=7447243934685939892' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7447243934685939892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7447243934685939892'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2010/04/maven2-on-eclipse-error-specified-user.html' title='Maven2 on Eclipse Error - The specified user settings file does not exist'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-4836381030793073395</id><published>2010-03-10T02:13:00.000-08:00</published><updated>2010-03-10T02:34:41.106-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Cairngorm'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='PureMVC'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='BlazeDS'/><title type='text'>Book Review: Enterprise Development with Flex</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/SsZfzBlxXYI/AAAAAAAAAFQ/LTYtEYz4QHs/s1600-h/books.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 106px; height: 90px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/SsZfzBlxXYI/AAAAAAAAAFQ/LTYtEYz4QHs/s400/books.jpeg" alt="" id="BLOGGER_PHOTO_ID_5388099334400204162" border="0" /&gt;&lt;/a&gt;I was very happy to learn that &lt;a href="http://yakovfain.sys-con.com/"&gt;Yakov Fain&lt;/a&gt; and his colleagues at &lt;a href="http://www.faratasystems.com/"&gt;Farata&lt;/a&gt; Systems were working on a new book, especially one with both “&lt;span style="font-style: italic;"&gt;Flex&lt;/span&gt;” and “&lt;span style="font-style: italic;"&gt;Enterprise&lt;/span&gt;” in its title. In my work developing Enterprise Flex projects, I often feel that many of the resources out there are targeted at  Media applications developers and not at the developers of large-scale Enterprise Flex applications. This is why I rushed to get a PDF copy of the rough-cut version of &lt;a href="http://oreilly.com/catalog/9780596154172"&gt;Enterprise Development with Flex&lt;/a&gt;.&lt;p&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;So what's in this  book? I’ve reviewed a selection of the chapters for you.   &lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;It starts with a very down-to-earth comparison of the different available Flex Frameworks, something I’ve wanted to read for a long time, &lt;b&gt;Chapter 1: Comparing Selected Flex Frameworks&lt;/b&gt; describes a simple Flex application and showcases the different implementations of the application using popular existing frameworks such as Cairngorm, Mate, PureMVC, and Clear Toolkit, which is Frata's own solution. After discussing the advantages and disadvantages of each solution, the authors conclude that different frameworks are suitable for different scenarios. &lt;b&gt;Chapter 2: Selected Design Patterns&lt;/b&gt; discusses  the use of different design patterns in Flex. I loved the detailed description of the Proxy pattern, which actually gives you a full-detail "under the hood" description of the Flex Data Binding mechanism.  &lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;b&gt;Chapter 4: Equipping Enterprise Flex Projects&lt;/b&gt; describes the process required to set up a Flex project, starting with the team's staffing considerations, and goes on to define the different roles you may need to make up a Flex team. The authors end up with 3 basic roles – the Flex Architect, UI Developers and Component Developers. They describe each role and its responsibilities, and go on to describe different solutions available today for the project's infrastructure including Hibernate, Spring Integration, Logging and so on.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;b&gt;Chapter 6:&lt;/b&gt;&lt;span&gt;&lt;span&gt; &lt;span style="font-weight: bold;"&gt;Open Source Networking Solution&lt;/span&gt;s&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: rgb(255, 255, 0) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt; &lt;/b&gt;covers BlazeDS and the AMF protocol. The authors truly share their extensive experience on the subject of web clients to server connectivity. They discuss topics such as the differences between BlazeDS and LCDS, BlazeDS architecture,&lt;span style="font-family:Candara,sans-serif;"&gt; &lt;/span&gt;different use cases with BlazeDS,  and also cover many advanced Flex networking issues. &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;b&gt;Who should read this book?&lt;/b&gt; I think this book is an excellent read for advanced Flex Developers/Architects. For me, this was my first chance to read about Flex Development from a very professional angle, an angle you may find in advanced Java books. This book won’t teach you how to code but it will definitely enrich your knowledge as an architect, team leader or advanced Flex coder.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-4836381030793073395?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/4836381030793073395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=4836381030793073395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/4836381030793073395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/4836381030793073395'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2010/03/book-review-enterprise-development-with.html' title='Book Review: Enterprise Development with Flex'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tECzk8Tdl88/SsZfzBlxXYI/AAAAAAAAAFQ/LTYtEYz4QHs/s72-c/books.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-6151491077081413228</id><published>2010-01-17T12:28:00.000-08:00</published><updated>2010-01-22T15:19:32.171-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Component Life Cycle'/><category scheme='http://www.blogger.com/atom/ns#' term='VideoDisplay'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex SDK'/><title type='text'>Flex VideoDisplay Bug and The Component Life Cycle</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/S1N8Hk9K_ZI/AAAAAAAAAGM/2M3ONCS73-Y/s1600-h/fb_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 96px; height: 96px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/S1N8Hk9K_ZI/AAAAAAAAAGM/2M3ONCS73-Y/s400/fb_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5427818445532757394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We ran into this strange problem at work this week, we were dealing with a Component class that uses the &lt;a href="http://www.adobe.com/livedocs/flex/3/langref/mx/controls/VideoDisplay.html#cuePointManagerClass"&gt;VideoDisplay&lt;/a&gt; component in Flex in order to play video. The class was unfortunately not consistent with the Flex Component life cycle guidelines. Working with the class, I wanted to be able to use the CuePointManager so I had to first set the property &lt;span style="font-weight: bold; font-style: italic;"&gt;VideoDisplay.cuePointManagerClass&lt;/span&gt;. The problem was that even though I set this member, when examining the VideoDisplay instance in the debugger I got &lt;span style="font-weight: bold; font-style: italic;"&gt;cuePointManagerClass=null&lt;/span&gt;. When I examined the &lt;span style="font-weight: bold; font-style: italic;"&gt;VideoDispaly&lt;/span&gt; class I found the problem, the VideoDisplay code constructs the CuePointManager in a method that is called from &lt;span style="font-weight: bold; font-style: italic;"&gt;CreateChildren  &lt;/span&gt;the name of that method is &lt;span style="font-weight: bold; font-style: italic;"&gt;createVideoPlayer&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0); word-wrap: normal;"&gt;1:  private function createVideoPlayer():void&lt;br /&gt;2:  {&lt;br /&gt;3:     .&lt;br /&gt;4:     if (cuePointManagerClass)&lt;br /&gt;5:     {&lt;br /&gt;6:        _cuePointManager = new cuePointManagerClass(videoPlayer);&lt;br /&gt;7:        _cuePointManager.videoDisplay = this;&lt;br /&gt;8:     }&lt;br /&gt;9:     .&lt;br /&gt;10:  }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;The setter cuePointManagerClass simply states:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0); word-wrap: normal;"&gt;1:  public function set cuePointManagerClass(value:Class):void&lt;br /&gt;2:  {&lt;br /&gt;3:     _cuePointManagerClass = value;&lt;br /&gt;4:  }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;In our scenario the above setter was called after the &lt;span style="font-weight: bold; font-style: italic;"&gt;VideoDisplay &lt;/span&gt;class was added to the parent component, therefore, the class &lt;span style="font-weight: bold; font-style: italic;"&gt;createChildren &lt;/span&gt;method followed by &lt;span style="font-weight: bold; font-style: italic;"&gt;createVideoPlayer&lt;/span&gt; were already called, the setter did not invoke any invalidation method that could invoke &lt;span style="font-weight: bold;"&gt;createVideoPlayer &lt;/span&gt;and would make sure the &lt;span style="font-style: italic;"&gt;cuePointManager &lt;/span&gt;is instantiated. Although this is a bug, we can avoid running into it if we stick to the Adobe's Component codding conventions. The component life cycle docs and code samples hints that you should first instantiate and set all members of a new child and then add it using &lt;span style="font-weight: bold; font-style: italic;"&gt;addChild&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What are the lessons to be learned here?&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Like any other engineering product, Flex SDK has bugs.&lt;/li&gt;&lt;li&gt;Following Adobe's codding conventions will help you avoid running into troubles.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-6151491077081413228?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/6151491077081413228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=6151491077081413228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/6151491077081413228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/6151491077081413228'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2010/01/flex-videodisplay-bug-and-component.html' title='Flex VideoDisplay Bug and The Component Life Cycle'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tECzk8Tdl88/S1N8Hk9K_ZI/AAAAAAAAAGM/2M3ONCS73-Y/s72-c/fb_logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-7796758083342243530</id><published>2009-11-22T07:08:00.000-08:00</published><updated>2009-11-27T01:39:36.629-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex SDK 3.4.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash Builder'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex SDK'/><title type='text'>Setting SDK 3.4.1 on Flash Builder</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tECzk8Tdl88/SwlUk1SOCgI/AAAAAAAAAF4/5q9-WKugUkU/s1600/fb-logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 71px; height: 71px;" src="http://1.bp.blogspot.com/_tECzk8Tdl88/SwlUk1SOCgI/AAAAAAAAAF4/5q9-WKugUkU/s400/fb-logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5406945819390511618" border="0" /&gt;&lt;/a&gt;So Flex is now Flash Builder (4), like many other developers I was excited to try out the new Adobe IDE. I was especially  interested in the much needed bug fixes from Flex 3 and missing features (at last a proper 'Generate getters and setters'  option for AS classes). As a Linux user I was also very disappointed to find out that Adobe has currently &lt;a href="http://www.insideria.com/2009/06/flex-builder-linux-and-open-so.html"&gt;neglected&lt;/a&gt; it's Builder for Linux support. Now, flash Builder's default SDK version is 4, you'll notice that on the first time that you'll start a Flex project on FB4. Version 4 introduces new AS libraries and a new MXML syntax, but most of us only want to test run FB4 using the same code and syntax we used with the 3.x.x SDK versions. Luckily the new builder has an optional 3.4.1 SDK you can use for your projects. Here's how you can set SDK 3.4.1 as your default SDK with FB4:&lt;br /&gt;&lt;br /&gt;1. On Eclipse top menu select Window &gt; Preferences and the Preferences window will popup&lt;br /&gt;2. On the left tree select Flash Builder &gt; Installed Flex SDK's&lt;br /&gt;3. Check SDK 3.4 and press Apply&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/Sw8N6aTj61I/AAAAAAAAAGA/HL50rjTQFn0/s1600/fb4.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 135px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/Sw8N6aTj61I/AAAAAAAAAGA/HL50rjTQFn0/s400/fb4.PNG" alt="" id="BLOGGER_PHOTO_ID_5408556974640196434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From now on all your Flash Builder new projects will be using the 3.4.1 SDK&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-7796758083342243530?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/7796758083342243530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=7796758083342243530' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7796758083342243530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7796758083342243530'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/11/setting-sdk-341-on-flash-builder.html' title='Setting SDK 3.4.1 on Flash Builder'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tECzk8Tdl88/SwlUk1SOCgI/AAAAAAAAAF4/5q9-WKugUkU/s72-c/fb-logo.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-2161191457616476890</id><published>2009-10-10T03:49:00.000-07:00</published><updated>2009-10-10T05:11:24.541-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu 8.04. Hardy Heron'/><category scheme='http://www.blogger.com/atom/ns#' term='Bugzilla'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Bugzilla on Ubuntu 8.04 - Installation problem</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tECzk8Tdl88/StBp_pzKzlI/AAAAAAAAAFg/PCBM64JbxgI/s1600-h/buggie.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 81px; height: 107px;" src="http://3.bp.blogspot.com/_tECzk8Tdl88/StBp_pzKzlI/AAAAAAAAAFg/PCBM64JbxgI/s400/buggie.png" alt="" id="BLOGGER_PHOTO_ID_5390925296235630162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Bugzilla seems to be one of these products people are stying loyal to no matter what. I honestly love the simplicity of the tool, I've used many other bug tracking systems but Bugzilla will always remain my#1 favorite. I've recently decided to install Bugzilla on my Ubuntu 8.04 machine. I was happy to find out that this can be done using apt-get, as Bugzilla installations always seem to be bugy. Used the following line for the installation:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;sudo apt-get install bugzilla&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;That seemed to have worked I thought, but when I was done I tried to browse to the new Bugzilla site and got an Internal Server Error message.&lt;br /&gt;&lt;br /&gt;In order to fix the problem and get your Bugzilla up and running here's what you need to do: access your mysql admin using both command line or MySQL Adminstrator app , Assign all privileges to the user&lt;span style="font-weight: bold;"&gt; debian-sys-maint @ localhost&lt;/span&gt; on the bugzilla Schema.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tECzk8Tdl88/StBvlDg0snI/AAAAAAAAAFw/FJ2Pko9Nsq8/s1600-h/mysql-bugzilla.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 277px;" src="http://3.bp.blogspot.com/_tECzk8Tdl88/StBvlDg0snI/AAAAAAAAAFw/FJ2Pko9Nsq8/s400/mysql-bugzilla.png" alt="" id="BLOGGER_PHOTO_ID_5390931436351304306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Once you are done go back to your local to the bugzilla web page on your localhost, you should now be able to see the Bugzilla web interface. This solution and some explanations may be found on this &lt;a href="https://bugs.launchpad.net/ubuntu/+source/bugzilla/+bug/55747"&gt;thread.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-2161191457616476890?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/2161191457616476890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=2161191457616476890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/2161191457616476890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/2161191457616476890'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/10/bugzilla-on-ubuntu-804-installation.html' title='Bugzilla on Ubuntu 8.04 - Installation problem'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tECzk8Tdl88/StBp_pzKzlI/AAAAAAAAAFg/PCBM64JbxgI/s72-c/buggie.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-3852302966537655556</id><published>2009-09-30T10:17:00.000-07:00</published><updated>2009-10-03T13:18:06.004-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Bulider 3'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='flex compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex License'/><title type='text'>Flex 3 on build machine: Flex Charting Components water mark</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/SsOVZuFaLuI/AAAAAAAAAFI/IYH3lT1lODo/s1600-h/fb_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 76px; height: 76px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/SsOVZuFaLuI/AAAAAAAAAFI/IYH3lT1lODo/s400/fb_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5387313848365231842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I was dealing with the following problem: when compiling my Flex app locally using both FB3 or Ant, Flex Charting Components appeared just as you expect them to, they did not display the annoying water mark that non licensed users may get. But when the application was compiled using my team's build machine it produced the annoying watermark on top of all the application charts. So what went wrong? &lt;a href="http://raghuonflex.wordpress.com/2008/02/20/how-to-apply-the-data-visualization-license-on-command-line-in-flex-3/"&gt;Raghu&lt;/a&gt; has the answer, to make a long story short, all I had to do is to update the&lt;span style="font-weight: bold; font-style: italic;"&gt; flex-config.xml&lt;/span&gt; with my license number:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 90%"&gt;&lt;code&gt;&amp;lt;licenses&amp;gt;&lt;br /&gt;    &amp;lt;license&amp;gt;&lt;br /&gt;        &amp;lt;product&amp;gt;flexbuilder3&amp;lt;/product&amp;gt;&lt;br /&gt;        &amp;lt;serial-number&amp;gt;your serial number here&amp;lt;/serial-number&amp;gt;&lt;br /&gt;    &amp;lt;/license&amp;gt;&lt;br /&gt;&amp;lt;/licenses&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://raghuonflex.wordpress.com/2008/02/20/how-to-apply-the-data-visualization-license-on-command-line-in-flex-3/"&gt;Raghu&lt;/a&gt;'s detailed explanation and some info about the licensing mechanism on Flex 3&lt;br /&gt;&lt;br /&gt;Licensing configuration on &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=configuring_environment_2.html#212596"&gt;Adobe's live docs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-3852302966537655556?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/3852302966537655556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=3852302966537655556' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/3852302966537655556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/3852302966537655556'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/09/flex-3-on-build-machine-flex-charting.html' title='Flex 3 on build machine: Flex Charting Components water mark'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tECzk8Tdl88/SsOVZuFaLuI/AAAAAAAAAFI/IYH3lT1lODo/s72-c/fb_logo.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-1316126048227555307</id><published>2009-09-27T07:43:00.000-07:00</published><updated>2009-09-27T08:05:27.871-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Front Page'/><category scheme='http://www.blogger.com/atom/ns#' term='Drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><title type='text'>Drupal - Setting any page as front page</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tECzk8Tdl88/Sr97KiBdL3I/AAAAAAAAAEI/vaTdsi1qaoY/s1600-h/drupal.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 71px; height: 82px;" src="http://1.bp.blogspot.com/_tECzk8Tdl88/Sr97KiBdL3I/AAAAAAAAAEI/vaTdsi1qaoY/s400/drupal.jpeg" alt="" id="BLOGGER_PHOTO_ID_5386159100220223346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Drupal is a great CMS that seems to be gaining more and more popularity over time and for a good reason, overall I belive it's the best CMS available today, There might be a number of products out there with better architecture and design but none of them has a huge community of users behind them like Drupal. On the other hand, I do feel that Drupal lacks documentation. In some cases it seems to take ages to find how to apply simple configurations in Drupal's admin screens. For instance, I spent some time today trying to understand how to perform a simple task, making a page on your site the default site front page, here's how it's done with Drupal 6.x:&lt;br /&gt;&lt;br /&gt;1. Go to the &lt;span style="font-weight: bold;"&gt;Admin&lt;/span&gt; panel&lt;br /&gt;&lt;br /&gt;2. Select&lt;span style="font-weight: bold;"&gt; Site Information&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. scroll down to the &lt;span style="font-weight: bold;"&gt;Default front page &lt;/span&gt;field and insert the name of the page you would like to set as front page&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;. &lt;/span&gt;Press&lt;span style="font-weight: bold;"&gt; Save Configuration&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/Sr9-rxT9NgI/AAAAAAAAAEQ/bSHixeJYt00/s1600-h/admin.png"&gt;&lt;img style="cursor: pointer; width: 384px; height: 295px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/Sr9-rxT9NgI/AAAAAAAAAEQ/bSHixeJYt00/s400/admin.png" alt="" id="BLOGGER_PHOTO_ID_5386162969794917890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-1316126048227555307?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/1316126048227555307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=1316126048227555307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/1316126048227555307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/1316126048227555307'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/09/drupal-setting-any-page-as-front-page.html' title='Drupal - Setting any page as front page'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tECzk8Tdl88/Sr97KiBdL3I/AAAAAAAAAEI/vaTdsi1qaoY/s72-c/drupal.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-5421138797493622362</id><published>2009-08-15T02:09:00.000-07:00</published><updated>2009-08-17T07:14:16.949-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ByteArray'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Jython'/><category scheme='http://www.blogger.com/atom/ns#' term='Jarray'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Jython - Convert File to Byte Array</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tECzk8Tdl88/SoZ93xag3jI/AAAAAAAAAEA/aQ_fwjPOr90/s1600-h/jython-logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 100px; height: 65px;" src="http://4.bp.blogspot.com/_tECzk8Tdl88/SoZ93xag3jI/AAAAAAAAAEA/aQ_fwjPOr90/s400/jython-logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5370118002796715570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've recently started developing with Jython and I love the language. the combination of Python's dynamic features with Java is extremely powerful. If you are not familiar with &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; or &lt;a href="http://www.jython.org/"&gt;Jython&lt;/a&gt;, be sure to check the above links. As an Action Script veteran, I have to admit that Python makes me miss the early days of AS, when the language was dynamic and weakly typed.&lt;br /&gt;&lt;br /&gt;The following is an example of a typical web client task, a conversion of a local file to a Byte array, such a conversion is common when sending a local file from the client to a Java server, using SOAP Web Services or other integration layer. Here is an example of a file to Byte array conversion in Jython, it's a Jython version of a simple java code I've found &lt;a href="http://www.java-tips.org/java-se-tips/java.io/reading-a-file-into-a-byte-array.html"&gt;here&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre face="Andale Mono,Lucida Console,Monaco,fixed,monospace" size="12px" style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); line-height: 14px; width: 90%;"&gt;&lt;code&gt;from java.lang import Byte&lt;br /&gt;from java.io import FileInputStream&lt;br /&gt;from java.io import File&lt;br /&gt;import jarray&lt;br /&gt;&lt;br /&gt;def getByteArray(self,fileUrl):&lt;br /&gt;  file = File(fileUrl);&lt;br /&gt;  inputStream = FileInputStream(file)&lt;br /&gt;  length = file.length()&lt;br /&gt;  bytes = jarray.zeros(length, 'b')&lt;br /&gt;  #Read in the bytes&lt;br /&gt;  offset = 0&lt;br /&gt;  numRead = 0&lt;br /&gt;  while offset&amp;lt;length:&lt;br /&gt;      if numRead&amp;gt;= 0:&lt;br /&gt;          print numRead&lt;br /&gt;          numRead=inputStream.read(bytes, offset, length-offset)&lt;br /&gt;          offset = offset + numRead&lt;br /&gt;  return bytes&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;As you can see, I had to use the &lt;a href="http://book.opensourceproject.org.cn/lamp/python/pythonjava/opensource/0201616165_ch11lev1sec4.html"&gt;jarray&lt;/a&gt; Jython module in this code. Jarray provides a much needed API that is missing from Jython's core modules. It exposes two methods which allow you to construct Typed Arrays and\or determine the array length on creation. The following are the two jarray methods:&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;array(sequence, type):&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt; Creates an array of a specific type with values from the sequence; the array is the same size as the sequence&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;zeros(length, type):&lt;/span&gt;&lt;span style="font-style: italic;"&gt; Creates an empty array the length of the length parameter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The follwoing line in my code:&lt;br /&gt;&lt;br /&gt;&lt;pre face="Andale Mono,Lucida Console,Monaco,fixed,monospace" size="12px" style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); line-height: 14px; width: 90%;"&gt;&lt;code&gt;bytes = jarray.zeros(length, 'b')&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Is the jarray, Jython implementation of the following java code:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;bytes = &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;new &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[(&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;length&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-5421138797493622362?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/5421138797493622362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=5421138797493622362' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/5421138797493622362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/5421138797493622362'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/08/jython-convert-file-into-byte-array.html' title='Jython - Convert File to Byte Array'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tECzk8Tdl88/SoZ93xag3jI/AAAAAAAAAEA/aQ_fwjPOr90/s72-c/jython-logo.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-1000312210930114332</id><published>2009-08-07T02:36:00.000-07:00</published><updated>2009-10-06T10:03:50.168-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Red Hat'/><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache http Server'/><category scheme='http://www.blogger.com/atom/ns#' term='httpd'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Start, Stop, Restart Apache HTTP Server on different Linux distributions</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tECzk8Tdl88/Snv50nFVz0I/AAAAAAAAAD4/Jne4bixv3Sw/s1600-h/apache.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 104px; height: 78px;" src="http://1.bp.blogspot.com/_tECzk8Tdl88/Snv50nFVz0I/AAAAAAAAAD4/Jne4bixv3Sw/s400/apache.jpeg" alt="" id="BLOGGER_PHOTO_ID_5367158063181975362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Switching from one Linux distribution to another I keep bumping into these minor differences. For instance, here is how you start\stop\restart Apache the different Linux distributions I work with.&lt;br /&gt;&lt;br /&gt;Ubuntu (Debian)&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;/etc/init.d/apache2 restart&lt;br /&gt;/etc/init.d/apache2 start&lt;br /&gt;/etc/init.d/apache2 stop&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Red Hat \ Fedora&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;/etc/init.d/httpd restart&lt;br /&gt;/etc/init.d/httpd start&lt;br /&gt;/etc/init.d/httpd stop&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;CentOS&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;/sbin/service httpd restart&lt;br /&gt;/sbin/service httpd start&lt;br /&gt;/sbin/service httpd stop&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Feel free to comment with ways to do this on other distributions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-1000312210930114332?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/1000312210930114332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=1000312210930114332' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/1000312210930114332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/1000312210930114332'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/08/start-stop-restart-apache-http-server.html' title='Start, Stop, Restart Apache HTTP Server on different Linux distributions'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tECzk8Tdl88/Snv50nFVz0I/AAAAAAAAAD4/Jne4bixv3Sw/s72-c/apache.jpeg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-7813827050383466790</id><published>2009-07-16T06:47:00.000-07:00</published><updated>2009-07-28T04:27:08.083-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='headless server'/><category scheme='http://www.blogger.com/atom/ns#' term='java.awt.headless'/><category scheme='http://www.blogger.com/atom/ns#' term='mxmlc'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='flex compiler'/><title type='text'>Flex compiler displays misleading headless-server errors</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/Sm2gI0dj32I/AAAAAAAAADw/IkMHvihn16c/s1600-h/flex_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 77px; height: 77px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/Sm2gI0dj32I/AAAAAAAAADw/IkMHvihn16c/s400/flex_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5363118804650155874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;An error occurred because there is no graphics environment available.  Please set the headless-server setting in the Flex configuration file to true.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above error message might show up on your logs after calling Flex compiler (probably via Ant). This is sometimes done on a server that is not connected to a monitor or keyboard, A common scenario when using a build machine for build tasks. The first thing you should do is exactly what the error message implies, go to the &lt;span style="font-weight: bold; font-style: italic;"&gt;flex-config.xml&lt;/span&gt; at the root of your project and change the following:&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;&amp;lt;headless-server&amp;gt;true&amp;lt;headless-server&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;We got this error on our lab build machine at work, in our case and according to the web, in &lt;a href="http://bugs.adobe.com/jira/browse/FB-12266"&gt;many&lt;/a&gt; other cases the property was already set to true, so the error message was useless. It was also very strange since this was not happening on a new server but on a build machine that was running Flex builds for months.&lt;br /&gt;&lt;br /&gt;So what is happening here? The problem here is that the Flex compiler is using the &lt;code&gt;java.awt.headless&lt;/code&gt; system property, a property other components seem to also be using. I assume that at first phase the compiler reads the &lt;span style="font-style: italic; font-weight: bold;"&gt;flex-config.xml&lt;/span&gt; and sets &lt;code&gt;java.awt.headless&lt;/code&gt; to true. It seems like this environment variable is getting later set to false by a different application\component along the way. Eventually the compiler gets to a line in it's code that requires the flag to be true and complains about the flag being set to false.&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The workaround we used at work was to set this environment variable in the VM arguments:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;-Djava.awt.headless=true&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;This issue was researched and solved by Hila, one of my team members here in Wind River.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-7813827050383466790?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/7813827050383466790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=7813827050383466790' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7813827050383466790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7813827050383466790'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/07/flex-compiler-displays-missleading.html' title='Flex compiler displays misleading headless-server errors'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tECzk8Tdl88/Sm2gI0dj32I/AAAAAAAAADw/IkMHvihn16c/s72-c/flex_logo.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-6899691650552079639</id><published>2009-07-14T04:11:00.000-07:00</published><updated>2009-07-19T03:16:05.481-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><title type='text'>I'm on Twitter now</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tECzk8Tdl88/SlxoxD4cucI/AAAAAAAAAC8/3rmXnffsR18/s1600-h/logo-twitter-logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 73px; height: 92px;" src="http://3.bp.blogspot.com/_tECzk8Tdl88/SlxoxD4cucI/AAAAAAAAAC8/3rmXnffsR18/s400/logo-twitter-logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5358272848728996290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I opened an account on Twitter, will use it mostly for posting about Flex and blog related issues. I also added this nice &lt;a href="http://twitter.com/badges/blogger"&gt;Twitter Blogger gadget&lt;/a&gt; to my blog (see the left bar on this page). Feel free to add me and message me &lt;a href="http://twitter.com/liorboord"&gt;http://twitter.com/liorboord&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-6899691650552079639?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/6899691650552079639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=6899691650552079639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/6899691650552079639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/6899691650552079639'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/07/im-on-twitter-now.html' title='I&apos;m on Twitter now'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tECzk8Tdl88/SlxoxD4cucI/AAAAAAAAAC8/3rmXnffsR18/s72-c/logo-twitter-logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-7840967319854286323</id><published>2009-07-06T10:56:00.000-07:00</published><updated>2009-07-19T03:16:26.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='job trends'/><category scheme='http://www.blogger.com/atom/ns#' term='RIA'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe Air'/><title type='text'>Is Silverlight catching up with Flex?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/SlI99EMR8iI/AAAAAAAAACs/yiwZfQuGf8Y/s1600-h/silverlight.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 69px; height: 78px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/SlI99EMR8iI/AAAAAAAAACs/yiwZfQuGf8Y/s400/silverlight.jpeg" alt="" id="BLOGGER_PHOTO_ID_5355411026203505186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;From time to time I like to check this great tool in &lt;a href="http://www.indeed.com/jobtrends"&gt;Indeed's Job Trends&lt;/a&gt;. This is an excellent example of a data visualization app, this small app lets you search  job postings from many sites for different phrases and see they're popularity over time. As the below graph illustrates, MS Silverlight is certainly getting more popular but still has a long way to go in order to catch up with Flex.&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 540px;"&gt;&lt;a href="http://www.indeed.com/jobtrends?q=%22adobe+flex%22%2C%22microsoft+silverlight%22" title="&amp;quot;adobe flex&amp;quot;,&amp;quot;microsoft silverlight&amp;quot; Job Trends"&gt;&lt;img src="http://www.indeed.com/trendgraph/jobgraph.png?q=%22adobe+flex%22%2C%22microsoft+silverlight%22" alt="&amp;quot;adobe flex&amp;quot;,&amp;quot;microsoft silverlight&amp;quot; Job Trends graph" width="540" border="0" height="300" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;table style="font-size: 80%;" width="100%" border="0" cellpadding="6" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.indeed.com/jobtrends?q=%22adobe+flex%22%2C%22microsoft+silverlight%22"&gt;"adobe flex","microsoft silverlight" Job Trends&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;&lt;td align="right"&gt;&lt;a href="http://www.indeed.com/jobs?q=%22adobe+flex%22"&gt;"adobe flex" jobs&lt;/a&gt; - &lt;a href="http://www.indeed.com/jobs?q=%22microsoft+silverlight%22"&gt;"microsoft silverlight" jobs&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-7840967319854286323?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/7840967319854286323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=7840967319854286323' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7840967319854286323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/7840967319854286323'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/07/is-silverlight-catching-up-with-flex.html' title='Is Silverlight catching up with Flex?'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tECzk8Tdl88/SlI99EMR8iI/AAAAAAAAACs/yiwZfQuGf8Y/s72-c/silverlight.jpeg' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-6361613242846968146</id><published>2009-06-04T10:48:00.000-07:00</published><updated>2009-07-12T11:43:50.104-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='Red Hat'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='grant all'/><title type='text'>MySQL grant privileges on database for any host - Windows vs. Linux</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tECzk8Tdl88/SigOOLLwrzI/AAAAAAAAACk/1M_swwrUCt4/s1600-h/mysql_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 88px; height: 49px;" src="http://3.bp.blogspot.com/_tECzk8Tdl88/SigOOLLwrzI/AAAAAAAAACk/1M_swwrUCt4/s400/mysql_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5343536594558168882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Usually it's not a good idea to grant privileges on a MySQL database for any host, but this option is very useful during the development process. I often get called by a QA person or another developer and need to look into his\her's db. In order to investigate the problem I some times need to debug my local server while it's using his\her's DB as a data source, in these cases allowing access to the db from any host is extremely useful. I recently found out that the grant privileges for host syntax may be misleading when using  Linux.&lt;br /&gt;&lt;br /&gt;On Windows the following line would allow the user to access the db from &lt;span style="font-weight: bold;"&gt;any host&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;grant all on dbname.* to 'dbuser'@'%' identified by 'dbpassword';&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;While on Linux (or at least on my Red Hat) This would allow &lt;span style="font-weight: bold;"&gt;any host but localhost&lt;/span&gt; to access the DB(!). that's why it's important to specifically assign privileges for localhost in addition to privileges for any host:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;grant all on dbname.* to 'dbuser'@'%' identified by 'dbpassword';&lt;br /&gt;grant all on dbname.* to 'dbuser'@'localhost' identified by 'dbpassword';&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;And there you go...the Linux DB will be accessible from any machine including localhost.&lt;br /&gt;&lt;br /&gt;Update: &lt;a href="http://jroller.com/evans/"&gt;Evans&lt;/a&gt; points out that there might be &lt;a href="http://www.jroller.com/evans/entry/remote_connection_problem_to_mysql"&gt;configuration issues&lt;/a&gt; to consider on Linux&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-6361613242846968146?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/6361613242846968146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=6361613242846968146' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/6361613242846968146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/6361613242846968146'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/06/mysql-grant-privlages-on-database-for.html' title='MySQL grant privileges on database for any host - Windows vs. Linux'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tECzk8Tdl88/SigOOLLwrzI/AAAAAAAAACk/1M_swwrUCt4/s72-c/mysql_logo.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-4264061836622678255</id><published>2009-06-04T06:17:00.000-07:00</published><updated>2009-06-04T07:02:59.616-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wind River'/><category scheme='http://www.blogger.com/atom/ns#' term='Intel'/><title type='text'>Intel to Acquire Wind River</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tECzk8Tdl88/SifKn6TSx4I/AAAAAAAAACc/kBUoL1M_Iqc/s1600-h/intel_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 116px; height: 87px;" src="http://3.bp.blogspot.com/_tECzk8Tdl88/SifKn6TSx4I/AAAAAAAAACc/kBUoL1M_Iqc/s400/intel_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5343462269912270722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.pcworld.com/article/166091/intel_to_acquire_wind_river_for_884_million.html"&gt;News Flash&lt;/a&gt;: Intel has agreed to acquire my employer, Wind River for 884M$. Wind River will become a subsidiary of Intel.&lt;br /&gt;&lt;div class="articleBodyContent"&gt; &lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;div class="articleBodyContent"&gt;&lt;p&gt;"Intel said Thursday that it has agreed to acquire Wind River Systems for a total of about $884 million in cash, in an effort to bolster its offerings in the market for processors for embedded systems and mobile devices.&lt;/p&gt;&lt;p&gt;The move is part of Intel's plan to grow beyond its traditional stronghold in the PC market, the company said in a release. Intel is paying $11.50 per share in cash for Wind River.&lt;/p&gt;&lt;p&gt; "This acquisition will bring us complementary, market-leading software assets and an incredibly talented group of people to help us continue to grow our embedded systems and mobile device capabilities," said Renee James, Intel vice president and general manager of the company's Software and Services Group, in a statement.&lt;/p&gt;&lt;p&gt;The board of directors of Wind River has approved the deal, which the companies expect to close this summer, subject to regulatory approvals and other conditions to which the companies have agreed."&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-4264061836622678255?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/4264061836622678255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=4264061836622678255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/4264061836622678255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/4264061836622678255'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/06/intel-to-acquire-wind-river.html' title='Intel to Acquire Wind River'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tECzk8Tdl88/SifKn6TSx4I/AAAAAAAAACc/kBUoL1M_Iqc/s72-c/intel_logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-1808030974946347130</id><published>2009-06-03T05:45:00.000-07:00</published><updated>2009-06-03T06:09:42.291-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='Error Loading Project'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex Bulider 3'/><category scheme='http://www.blogger.com/atom/ns#' term='.flexProperties'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Flex Builder 3 - Error Loading Project</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tECzk8Tdl88/SiZzFYY6yhI/AAAAAAAAACU/7_Pa0JLX-eQ/s1600-h/fb_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 77px; height: 77px;" src="http://4.bp.blogspot.com/_tECzk8Tdl88/SiZzFYY6yhI/AAAAAAAAACU/7_Pa0JLX-eQ/s400/fb_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5343084544205179410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Working with eclipse based FB3 can sometimes be very strange. After forcing a reboot on my machine and then restarting FB3, I got the following error message:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;Error Loading Project - A problem occurred when opening project (my project name) &lt;project name=""&gt;. Try quitting and restarting the application. If the problem persists, you might be using an unsupported product version or your project files might be corrupted&lt;/project&gt;&lt;/blockquote&gt;&lt;project name=""&gt;&lt;/project&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/SiZylb3obyI/AAAAAAAAACM/8qekljA1JjQ/s1600-h/error.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 150px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/SiZylb3obyI/AAAAAAAAACM/8qekljA1JjQ/s400/error.PNG" alt="" id="BLOGGER_PHOTO_ID_5343083995383492386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Working with the project seemed impossible, Ctrl+T did not return any type and pressing a Class name did not lead to the class code. After some quick &lt;a href="http://www.blackcj.com/blog/2009/02/22/error-loading-project-missing-project-files/"&gt;Googling&lt;/a&gt; and a second look at my file system I found the problem: my &lt;span style="font-weight: bold; font-style: italic;"&gt;.flexProperties&lt;/span&gt; was deleted from my file system for some reason. After I added a copy of the file to my project's root, the problem was resolved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-1808030974946347130?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/1808030974946347130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=1808030974946347130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/1808030974946347130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/1808030974946347130'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/06/flex-builder-3-error-loading-project.html' title='Flex Builder 3 - Error Loading Project'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tECzk8Tdl88/SiZzFYY6yhI/AAAAAAAAACU/7_Pa0JLX-eQ/s72-c/fb_logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-3746741628947531403</id><published>2009-05-23T01:02:00.000-07:00</published><updated>2009-05-24T14:15:44.810-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDF'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='AlivePDF'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe Air'/><title type='text'>How to generate PDF files from your Air application</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tECzk8Tdl88/Shextw-D6gI/AAAAAAAAAB0/tYwXe5X_lJU/s1600-h/pdf_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 99px; height: 93px;" src="http://4.bp.blogspot.com/_tECzk8Tdl88/Shextw-D6gI/AAAAAAAAAB0/tYwXe5X_lJU/s400/pdf_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5338931283068447234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There are a number of methods for generating on demand PDF documents from an online Flex application, in many enterprise applications PDF files are required as a part of the reporting layer. In that case it would be useful to incorporate a reporting tool such as &lt;a href="http://jasperforge.org/plugins/project/project_home.php?group_id=102"&gt;Jasper Reports&lt;/a&gt;.   But what if you are running an Air application that is not using a server? In this case you will need a pure client side solution. I found the following great tool for this: &lt;span style="font-style: italic;"&gt;"&lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.alivepdf.org/"&gt;AlivePDF&lt;/a&gt;&lt;span style="font-style: italic;"&gt; is an open-source ActionScript 3 (Flash, Flex, AIR) PDF generation library ported from the &lt;/span&gt;&lt;a style="font-style: italic;" title="http://www.fpdf.org" href="http://www.fpdf.org/" target="_blank"&gt;FPDF&lt;/a&gt;&lt;span style="font-style: italic;"&gt; PHP project. It allows you to generate PDF's client-side"&lt;/span&gt;. I tried this very simple &lt;a href="http://alivepdf.bytearray.org/wp-content/tutorials/alivepdf-tutorial-getting-started.swf"&gt;tutorial&lt;/a&gt;(video) and using the code below generated my PDf file:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="generatePdf(event)" viewSourceURL="srcview/index.html"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Script&amp;gt;&lt;br /&gt;&amp;lt;![CDATA[&lt;br /&gt;    import org.alivepdf.saving.Method;&lt;br /&gt;    import org.alivepdf.layout.Size;&lt;br /&gt;    import org.alivepdf.layout.Unit;&lt;br /&gt;    import org.alivepdf.layout.Orientation;&lt;br /&gt;    import org.alivepdf.pdf.PDF;&lt;br /&gt;&lt;br /&gt;    private var myPdf:PDF;&lt;br /&gt;&lt;br /&gt;    public function generatePdf(e:Event):void&lt;br /&gt;    {&lt;br /&gt;        myPdf = new PDF(Orientation.LANDSCAPE,Unit.MM,Size.A4);&lt;br /&gt;        myPdf.addPage();&lt;br /&gt;        var stream:FileStream = new FileStream();&lt;br /&gt;        var file:File = File.desktopDirectory.resolvePath("tsss.pdf");&lt;br /&gt;        stream.open(file,FileMode.WRITE);&lt;br /&gt;        var byteArray:ByteArray = myPdf.save(Method.LOCAL);&lt;br /&gt;        stream.writeBytes(byteArray);&lt;br /&gt;        stream.close();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;]]&amp;gt;&lt;br /&gt;&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&amp;lt;/mx:WindowedApplication&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-3746741628947531403?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/3746741628947531403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=3746741628947531403' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/3746741628947531403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/3746741628947531403'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/05/how-to-generate-pdf-from-your-air.html' title='How to generate PDF files from your Air application'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tECzk8Tdl88/Shextw-D6gI/AAAAAAAAAB0/tYwXe5X_lJU/s72-c/pdf_logo.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-499646689974484687</id><published>2009-05-22T14:22:00.000-07:00</published><updated>2009-05-24T14:16:43.038-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Bulider 3'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe Air'/><title type='text'>VerifyError: Error #1014: Class flash.events::NativeWindowBoundsEvent could not be found.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tECzk8Tdl88/ShccVC-PIjI/AAAAAAAAABs/sKW54WDYZAs/s1600-h/air_logo2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 68px; height: 68px;" src="http://1.bp.blogspot.com/_tECzk8Tdl88/ShccVC-PIjI/AAAAAAAAABs/sKW54WDYZAs/s400/air_logo2.jpg" alt="" id="BLOGGER_PHOTO_ID_5338767031171752498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If you are getting this error while working with flex...chances are that you are trying to create an Air application for the first time. You should run your Air application by simply pressing CTRL+F11. BTW: This is happening because your Flash Player is trying to run your Air app but it does not contain support for the Air libraries.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;VerifyError: Error #1014: Class flash.events::NativeWindowBoundsEvent could not be found.&lt;br /&gt;&lt;br /&gt;at flash.display::MovieClip/nextFrame()&lt;br /&gt;at mx.managers::SystemManager/deferredNextFrame()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\SystemManager.as:299]&lt;br /&gt;at mx.managers::SystemManager/preloader_initProgressHandler()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\SystemManager.as:2225]&lt;br /&gt;at flash.events::EventDispatcher/dispatchEventFunction()&lt;br /&gt;at flash.events::EventDispatcher/dispatchEvent()&lt;br /&gt;at mx.preloaders::Preloader/timerHandler()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\preloaders\Preloader.as:398]&lt;br /&gt;at flash.utils::Timer/_timerDispatch()&lt;br /&gt;at flash.utils::Timer/tick()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-499646689974484687?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/499646689974484687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=499646689974484687' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/499646689974484687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/499646689974484687'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/05/verifyerror-error-1014-class.html' title='VerifyError: Error #1014: Class flash.events::NativeWindowBoundsEvent could not be found.'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tECzk8Tdl88/ShccVC-PIjI/AAAAAAAAABs/sKW54WDYZAs/s72-c/air_logo2.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-8713120651145172998</id><published>2009-04-24T08:42:00.000-07:00</published><updated>2009-05-24T14:19:12.080-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cairngorm'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring AS'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Building Flex Web Services client with Cairngorm and Spring Actionscript</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tECzk8Tdl88/SfNX-GRtPeI/AAAAAAAAABM/UN_Gbthr80U/s1600-h/spring.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 54px; height: 62px;" src="http://3.bp.blogspot.com/_tECzk8Tdl88/SfNX-GRtPeI/AAAAAAAAABM/UN_Gbthr80U/s400/spring.png" alt="" id="BLOGGER_PHOTO_ID_5328699508457815522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I’ve been using Spring for the past few years for my Java applications, and that is why I was extremely happy to hear about the new &lt;a href="http://www.pranaframework.org/"&gt;Spring Actionscript Framework&lt;/a&gt; (formerly known as &lt;em&gt;Prana framework)&lt;/em&gt; the framework is simply an AS implementation of spring’s core feature - IoC (Inversion of Control). I was even happier to find out that the creators of Spring AS included an extension, which covers Cairngorm integration.&lt;br /&gt;&lt;br /&gt;In the following example I’ve wired my sample &lt;a href="http://flexonjava.blogspot.com/2008/12/integrating-cairngorm-with-fb3-data.html"&gt;GlobalWeather &lt;/a&gt;application using Spring AS. The project is available for &lt;a href="http://lior.boord.googlepages.com/globalWeatherSpringAS.zip"&gt;download&lt;/a&gt;, below I listed the steps I had to take in order to port it to Spring AS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Registering the Commands.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I started my application-context.xml with the Commands registration, a task I always felt should not be done using code, now Spring AS makes it very simple. Finally Caingorm users can separate the command registration tasks from they're code:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;objects xmlns="http://www.pranaframework.org/objects" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;      xsi:schemaLocation="http://www.pranaframework.org/objects&lt;br /&gt;                          http://www.pranaframework.org/schema/objects/prana-objects-0.7.xsd"&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;object id="controller" class="org.springextensions.actionscript.cairngorm.control.CairngormFrontController"&amp;gt;&lt;br /&gt;     &amp;lt;constructor-arg&amp;gt;&lt;br /&gt;         &amp;lt;object&amp;gt;&lt;br /&gt;             &amp;lt;property name="getCitiesByCountry" value="GetCitiesByCountryCommand"/&amp;gt;&lt;br /&gt;             &amp;lt;property name="GetWeatherEvent" value="GetWeatherCommand"/&amp;gt;&lt;br /&gt;         &amp;lt;/object&amp;gt;&lt;br /&gt;     &amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;     &amp;lt;constructor-arg value="sample.command"/&amp;gt;&lt;br /&gt;     &amp;lt;method-invocation name="addCommandFactory"&amp;gt;&lt;br /&gt;           &amp;lt;arg&amp;gt;&amp;lt;ref&amp;gt;globalWeatherCommandFactory&amp;lt;/ref&amp;gt;&amp;lt;/arg&amp;gt;&lt;br /&gt;      &amp;lt;/method-invocation&amp;gt;&lt;br /&gt; &amp;lt;/object&amp;gt;&lt;br /&gt;&amp;lt;/objects&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Adding custom command factory, Model and Service&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the GlobalWeather application, the Commands inheritance chain plays an important role. The BaseGlobalWeather command contains references to two GlobalWeather application resources, the Service and ModelLocator. The child commands inherent the references for those dependencies, this is a pattern I use in many of my applications.&lt;br /&gt;&lt;br /&gt;Spring AS supports this functionality by providing the option of using custom command factories. Using Custom command factories you can make sure that commands are not only created but also injected with they're right dependencies. I've created the GlobalWeatherCommandFactory a factory that injects the created class with both model and service:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;package sample.springextensions&lt;br /&gt;{&lt;br /&gt; import as3reflect.ClassUtils;&lt;br /&gt; import com.adobe.cairngorm.commands.ICommand;&lt;br /&gt; import net.webservicex.BaseGlobalWeather;&lt;br /&gt; import org.springextensions.actionscript.cairngorm.commands.ICommandFactory;&lt;br /&gt; import sample.command.BaseGlobalWeatherCommand;&lt;br /&gt; import sample.model.GlobalWeatherModelLocator;&lt;br /&gt;&lt;br /&gt; public class GlobalWeatherCommandFactory implements ICommandFactory&lt;br /&gt; {&lt;br /&gt;     public var service:BaseGlobalWeather;&lt;br /&gt;     public var model:GlobalWeatherModelLocator;&lt;br /&gt;  &lt;br /&gt;     public function canCreate(clazz:Class):Boolean&lt;br /&gt;     {&lt;br /&gt;           return (ClassUtils.isSubclassOf(clazz, BaseGlobalWeatherCommand));&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     public function createCommand(clazz:Class):ICommand&lt;br /&gt;     {&lt;br /&gt;           var result:BaseGlobalWeatherCommand = new clazz();&lt;br /&gt;        &lt;br /&gt;           result.service = this.service;&lt;br /&gt;           result.model = this.model;&lt;br /&gt;        &lt;br /&gt;           return result;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;The command Factory can now be declared in the application-context file along with it's dependencies:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;&amp;lt;object id="globalWeatherModelLocator" class="sample.model.GlobalWeatherModelLocator" factory-method="getInstance"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;object id="globalWeatherService" class="net.webservicex.BaseGlobalWeather"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;object id="globalWeatherCommandFactory" class="sample.springextensions.GlobalWeatherCommandFactory"&amp;gt;&lt;br /&gt;&amp;lt;property name="model" ref="globalWeatherModelLocator"/&amp;gt;&lt;br /&gt;&amp;lt;property name="service" ref="globalWeatherService"/&amp;gt;&lt;br /&gt;&amp;lt;/object&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;My application-context.xml is done and now looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;objects xmlns="http://www.pranaframework.org/objects" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;      xsi:schemaLocation="http://www.pranaframework.org/objects&lt;br /&gt;                          http://www.pranaframework.org/schema/objects/prana-objects-0.7.xsd"&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;object id="globalWeatherModelLocator" class="sample.model.GlobalWeatherModelLocator" factory-method="getInstance"/&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;object id="globalWeatherService" class="net.webservicex.BaseGlobalWeather"/&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;object id="globalWeatherCommandFactory" class="sample.springextensions.GlobalWeatherCommandFactory"&amp;gt;&lt;br /&gt;     &amp;lt;property name="model" ref="globalWeatherModelLocator"/&amp;gt;&lt;br /&gt;     &amp;lt;property name="service" ref="globalWeatherService"/&amp;gt;&lt;br /&gt; &amp;lt;/object&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;object id="controller" class="org.springextensions.actionscript.cairngorm.control.CairngormFrontController"&amp;gt;&lt;br /&gt;     &amp;lt;constructor-arg&amp;gt;&lt;br /&gt;         &amp;lt;object&amp;gt;&lt;br /&gt;             &amp;lt;property name="getCitiesByCountry" value="GetCitiesByCountryCommand"/&amp;gt;&lt;br /&gt;             &amp;lt;property name="GetWeatherEvent" value="GetWeatherCommand"/&amp;gt;&lt;br /&gt;         &amp;lt;/object&amp;gt;&lt;br /&gt;     &amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;     &amp;lt;constructor-arg value="sample.command"/&amp;gt;&lt;br /&gt;     &amp;lt;method-invocation name="addCommandFactory"&amp;gt;&lt;br /&gt;           &amp;lt;arg&amp;gt;&amp;lt;ref&amp;gt;globalWeatherCommandFactory&amp;lt;/ref&amp;gt;&amp;lt;/arg&amp;gt;&lt;br /&gt;      &amp;lt;/method-invocation&amp;gt;&lt;br /&gt; &amp;lt;/object&amp;gt;&lt;br /&gt;&amp;lt;/objects&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Now that the application context is ready, it's time to move on to the main class of my sample project, the main.mxml. it's interesting to see how much wiring and plumbing code is no longer needed thanks to Spring AS.&lt;br /&gt;&lt;br /&gt;First I need to initiate the application context once the application starts:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;private var _applicationContext:XMLApplicationContext;&lt;br /&gt;&lt;br /&gt;private function onCreationComplete() : void&lt;br /&gt;{&lt;br /&gt;//load the xml&lt;br /&gt;_applicationContext = new XMLApplicationContext("application-context.xml");&lt;br /&gt;_applicationContext.addEventListener(Event.COMPLETE, init);&lt;br /&gt;_applicationContext.load();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Once the context is loaded, the application can initiate. Again, note that many of the lines that were used before when the wiring was hardcoded, are no longer needed:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;private function init(event:Event):void&lt;br /&gt;{&lt;br /&gt;//disptach the first event&lt;br /&gt;var e:GetCitiesByCountryEvent = new GetCitiesByCountryEvent("israel");&lt;br /&gt;CairngormEventDispatcher.getInstance().dispatchEvent(e);&lt;br /&gt;//the following lines are no longer needed&lt;br /&gt;//var f:FrontController = new FrontController();&lt;br /&gt;//f.addCommand(GetWeatherEvent.GET_WEATHER,GetWeatherCommand);&lt;br /&gt;//f.addCommand(GetCitiesByCountryEvent.GET_CITIES_BY_COUNTRY,GetCitiesByCountryCommand);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;A very important thing to note here is that Flex has a limitation when it comes to IoC. In Flex, in order for a class to compile and be available on runtime you must hardcode it somehow into the application code. The meaning of this is that all the classes that are currently only declared on my application-context.xml should also be mentioned in the actionscript code. Hopefully this is a limitation that the Adobe Flex team will some how solve in the near future, until then you have to add the following to to the code:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;//hack: references for classes that are injected using Spring AS&lt;br /&gt;private static var compiledClasses:Array = [Services,BaseGlobalWeatherCommand,GetCitiesByCountryCommand,&lt;br /&gt;GetWeatherCommand,BaseGlobalWeather,GlobalWeatherModelLocator,CustomCairngormFrontController,GlobalWeatherCommandFactory]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;The following is the entire code of my main.mxml:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete()"&lt;br /&gt;xmlns:business="sample.business.*"&amp;gt;&lt;br /&gt;&amp;lt;business:Services id="services"/&amp;gt;&lt;br /&gt;&amp;lt;mx:Script&amp;gt;&lt;br /&gt;&amp;lt;![CDATA[&lt;br /&gt;    import sample.springextensions.GlobalWeatherCommandFactory;&lt;br /&gt;    import sample.springextensions.CustomCairngormFrontController;&lt;br /&gt;    import org.springextensions.actionscript.cairngorm.control.CairngormFrontController;&lt;br /&gt;    import net.webservicex.BaseGlobalWeather;&lt;br /&gt;    import sample.command.BaseGlobalWeatherCommand;&lt;br /&gt;    import org.springextensions.actionscript.context.support.XMLApplicationContext;&lt;br /&gt;    import com.adobe.cairngorm.control.CairngormEventDispatcher;&lt;br /&gt;    import sample.command.GetCitiesByCountryCommand;&lt;br /&gt;    import sample.event.GetCitiesByCountryEvent;&lt;br /&gt;    import sample.command.GetWeatherCommand;&lt;br /&gt;    import sample.event.GetWeatherEvent;&lt;br /&gt;    import sample.model.GlobalWeatherModelLocator;&lt;br /&gt;&lt;br /&gt;    //hack: references for classes that are injected using Spring AS&lt;br /&gt;    private static var compiledClasses:Array = [Services,BaseGlobalWeatherCommand,GetCitiesByCountryCommand,&lt;br /&gt;    GetWeatherCommand,BaseGlobalWeather,GlobalWeatherModelLocator,CustomCairngormFrontController,GlobalWeatherCommandFactory]&lt;br /&gt;&lt;br /&gt;    private var _applicationContext:XMLApplicationContext;&lt;br /&gt;&lt;br /&gt;    private function onCreationComplete() : void&lt;br /&gt;    {&lt;br /&gt;        //load the xml&lt;br /&gt;          _applicationContext = new XMLApplicationContext("application-context.xml");&lt;br /&gt;          _applicationContext.addEventListener(Event.COMPLETE, init);&lt;br /&gt;          _applicationContext.load();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private function init(event:Event):void&lt;br /&gt;    {&lt;br /&gt;        //disptach the first event&lt;br /&gt;        var e:GetCitiesByCountryEvent = new GetCitiesByCountryEvent("israel");&lt;br /&gt;        CairngormEventDispatcher.getInstance().dispatchEvent(e);&lt;br /&gt;        //the following lines are no longer needed&lt;br /&gt;        //var f:FrontController = new FrontController();&lt;br /&gt;        //f.addCommand(GetWeatherEvent.GET_WEATHER,GetWeatherCommand);&lt;br /&gt;        //f.addCommand(GetCitiesByCountryEvent.GET_CITIES_BY_COUNTRY,GetCitiesByCountryCommand);&lt;br /&gt;    }&lt;br /&gt;]]&amp;gt;&lt;br /&gt;&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&amp;lt;mx:VBox&amp;gt;&lt;br /&gt;&amp;lt;mx:Label text="Waiting for a respond" color="red"&lt;br /&gt;    visible="{Boolean(GlobalWeatherModelLocator.getInstance().workflowstate == GlobalWeatherModelLocator.WAITING_WAITING_FOR_SERVICE_RESPONSE)}"/&amp;gt;&lt;br /&gt;&amp;lt;mx:TextArea width="400" height="400" editable="false" text="{GlobalWeatherModelLocator.getInstance().cities}"/&amp;gt;&lt;br /&gt;&amp;lt;/mx:VBox&amp;gt;&lt;br /&gt;&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The application is now ready to use.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Using Spring AS can certainly improve your code and your coding process, as it eliminates the need to wire or configure classes inside actionscript, instead offering an XML standard that many Java developers are familiar with. Spring AS in conjunction with Cairngorm enables developers to concentrate on business logic while not having to worry so much about the plumbing or wiring of the application elements. It provides a clear separation between logic and configuration and enables the writing flexible and modular applications that are easier to maintain and test.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Downloads&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The entire sample project may be downloaded from &lt;a href="http://lior.boord.googlepages.com/globalWeatherSpringAS.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;The 3 required SWC maybe downloaded from here&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://lior.boord.googlepages.com/Cairngorm.swc"&gt;Cairngorm.swc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lior.boord.googlepages.com/spring-actionscript.swc"&gt;spring-actionscript.swc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lior.boord.googlepages.com/spring-actionscript-cairngorm.swc"&gt;spring-actionscript-cairngorm.swc&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-8713120651145172998?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/8713120651145172998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=8713120651145172998' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/8713120651145172998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/8713120651145172998'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/04/consuming-web-services-with-flex-using.html' title='Building Flex Web Services client with Cairngorm and Spring Actionscript'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tECzk8Tdl88/SfNX-GRtPeI/AAAAAAAAABM/UN_Gbthr80U/s72-c/spring.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-5150140675768907274</id><published>2009-02-19T11:51:00.000-08:00</published><updated>2009-04-26T00:09:14.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Red Hat'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='upgrade'/><category scheme='http://www.blogger.com/atom/ns#' term='RHEL'/><category scheme='http://www.blogger.com/atom/ns#' term='java -version'/><category scheme='http://www.blogger.com/atom/ns#' term='jdk'/><category scheme='http://www.blogger.com/atom/ns#' term='jre'/><title type='text'>Upgrading Java on RHEL</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tECzk8Tdl88/SfQIUL2a6BI/AAAAAAAAABU/7s-S7Z2Zlt0/s1600-h/linux_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 75px; height: 90px;" src="http://1.bp.blogspot.com/_tECzk8Tdl88/SfQIUL2a6BI/AAAAAAAAABU/7s-S7Z2Zlt0/s400/linux_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5328893401957591058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So you needed to upgrade Java on your Red Hat Linux, you've downloaded the RPM, installed and made sure all is well, but when you ran "java -version" you found out that your Linux is still pointing to the old version, This is what happened to me. After some Googling I found the answer, installing the new java version is not enough, you need to go through another step in order to tell the environment which JRE it should use..&lt;br /&gt;&lt;br /&gt;run:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;&lt;br /&gt;sudo /usr/sbin/alternatives --config java&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;This will open a menu which will prompt you to select the JRE\JDK folder you would like to use:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;&lt;br /&gt;There are 3 programs which provide 'java'.&lt;br /&gt;&lt;br /&gt;Selection Command&lt;br /&gt;-----------------------------------------------&lt;br /&gt;* 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java&lt;br /&gt;+ 2 /opt/jre1.6/bin/java&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;In case your new installed version does not appear in the list add it using:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;&lt;br /&gt;/usr/sbin/alternatives --install /usr/bin/java java /&amp;lt;Path to your new JRE&amp;gt;/bin/java&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Select it and run "java -version" again to make sure you're upgraded.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-5150140675768907274?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/5150140675768907274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=5150140675768907274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/5150140675768907274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/5150140675768907274'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2009/02/upgrading-java-on-rhel.html' title='Upgrading Java on RHEL'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tECzk8Tdl88/SfQIUL2a6BI/AAAAAAAAABU/7s-S7Z2Zlt0/s72-c/linux_logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-1794770726984276776</id><published>2008-12-26T07:55:00.000-08:00</published><updated>2009-05-29T10:15:40.172-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Cairngorm'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex Bulider 3'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Integrating Cairngorm with FB3 Data Wizard Auto generated code.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tECzk8Tdl88/SfQI_xNkDzI/AAAAAAAAABc/Ov6jntqAX60/s1600-h/flex.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 81px; height: 81px;" src="http://2.bp.blogspot.com/_tECzk8Tdl88/SfQI_xNkDzI/AAAAAAAAABc/Ov6jntqAX60/s400/flex.jpg" alt="" id="BLOGGER_PHOTO_ID_5328894150721146674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Flex Builder 3 introduces an agile approach for integrating Flex clients with Web Services, the Web Service Introspection Wizard (WSIW). The wizard lets you specify a service WSDL and auto generates the AS stubs for the service.&lt;/span&gt;  &lt;a href="http://www.flexlive.net/?p=79"&gt;Zee Yang&lt;/a&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; wrote a great tutorial about this subject demonstrating this tool. Looking at his example, you can understand how simple consuming WS with Flex has become. &lt;/span&gt;&lt;/span&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The wizard creates a strongly typed stub for each service, and each operation is called by using a specific method. once the call is back you need to listen to a specific event in order to tell whether the call result was successful or not.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;As you can see, if you are developing large enterprise SOA applications like I do, you have to write lots of code in order to cover each service.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;In my daily work I use Flex WS enabled clients, I also use &lt;a href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm"&gt;Cairngorm&lt;/a&gt; as a framework for my code. Following are several of the benefits of using Caringrom together with the WSIW:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;You don't need to repeat your code - for instance, you can use a single error handler for all ws operations.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Your code is layered and ordered, for each tasks there's a certain type of class operating on different code layer - One example can be the commands that handle the application flow.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Your code is modular - in the future you may replace SOAP WS with a different integration layer (like REST), using &lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Caringrom this task is simple&lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;   &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;To demonstrate the benefits of this methodology, I included an example.  Click on the following link &lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://lior.boord.googlepages.com/globalWeather.zip"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; to find the source code.  The sample project was kept short and simple for your convenience, I left out many things from the source,  for instance, in my daily work I use delegates in order to encapsulate service calls handling. Also note that this specific sample can only be uses with Flash Player 9.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The service I'm using is The &lt;a href="http://www.webservicex.net/WCF/ServiceDetails.aspx?SID=48"&gt;Global Weather Service&lt;/a&gt;, it lets you get the weather in different cities all over the world. The service has 2 operations, one lets you get a list of cities the service covers fr a given country, the other retrieves the weather forecast for a given city.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-weight: bold;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1. Import the WSDL&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;The first thing you need to do in order to consume the WS is to generate local stubs from it's WSDL.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Go to Data &gt; Import Web Service (WSDL) &gt; choose the src folder of your project and press next &gt; Type the WSDL you re about to import (in my case it's http://www.webservicex.net/globalweather.asmx?WSDL) and press "finish"&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; font-weight: bold;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2. Register the service&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The local stubs were generated in a default location&lt;/span&gt;&lt;/span&gt;. Take a look at the BaseGlobalWeather class, in this sample this is the only class that is referenced. The next step would be to make the class available via the service locater.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;create a business\Service.mxml document and use the ServiceLocator in order to register the new imported service:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;cairngorm:ServiceLocator&lt;br /&gt; xmlns:mx="http://www.adobe.com/2006/mxml"&lt;br /&gt; xmlns:cairngorm="com.adobe.cairngorm.business.*"&lt;br /&gt; xmlns:globalWeatherService="net.webservicex.*"&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;!-- declare the global weather service, provide the base service class --&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;globalWeatherService:BaseGlobalWeather id="globalWeatherService"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/cairngorm:ServiceLocator&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The globalWeatherService will now be available via the ServiceLocator.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;3. Create the commands&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;For each WS operation you will need to create a separate command, use a Base command as the base class for the commands.&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;The tasks the base command needs to perform are:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Declare and set the service and model.&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Create global onResult and onFault handlers for the service operations&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;Here are a few lines from the BaseGloblWeatherCommand:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;1 package sample.command&lt;br /&gt;2 {&lt;br /&gt;13&lt;br /&gt;14     public class BaseGlobalWeatherCommand implements Responder, Command&lt;br /&gt;15     {&lt;br /&gt;16         protected var service:BaseGlobalWeather&lt;br /&gt;17         protected var model:GlobalWeatherModelLocator;&lt;br /&gt;18&lt;br /&gt;19         public function BaseGlobalWeatherCommand()&lt;br /&gt;20         {&lt;br /&gt;21             //get the ws instance&lt;br /&gt;22             service = BaseGlobalWeather(ServiceLocator.getInstance()&lt;br /&gt;23                 .getService("globalWeatherService"));&lt;br /&gt;24             model = GlobalWeatherModelLocator.getInstance();&lt;br /&gt;25         }&lt;br /&gt;26 &lt;br /&gt;33         /**&lt;br /&gt;34          * Generic on result, all results eventualy goes here&lt;br /&gt;35          */&lt;br /&gt;36         public function onResult(event:*=null):void&lt;br /&gt;37         {&lt;br /&gt;38             //the service returned a response, update the model&lt;br /&gt;39             model.workflowstate = -1;&lt;br /&gt;40         }&lt;br /&gt;41&lt;br /&gt;42         /**&lt;br /&gt;43          * Generic fault handler all fault responses goes here&lt;br /&gt;44          */&lt;br /&gt;45         public function onFault(event:*=null):void&lt;br /&gt;46         {&lt;br /&gt;47             //the service returned a fault response, update the model and wanr the user&lt;br /&gt;48             model.workflowstate = -1;&lt;br /&gt;49             Alert.show("An error has accourd:"+event.toString());&lt;br /&gt;50         }&lt;br /&gt;51     }&lt;br /&gt;52 }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Next, write a command per each WS operation, here are a number of lines from the GetCitiesByCountryCommand:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;  1 package sample.command&lt;br /&gt;2 {&lt;br /&gt;10     public class GetCitiesByCountryCommand extends BaseGlobalWeatherCommand&lt;br /&gt;11     {&lt;br /&gt;12         public override function execute(event:CairngormEvent):void&lt;br /&gt;13         {&lt;br /&gt;14             var e:GetCitiesByCountryEvent = GetCitiesByCountryEvent(event);&lt;br /&gt;15             var token:AsyncToken = service.getCitiesByCountry(e.countryName);&lt;br /&gt;16             token.addEventListener("result",onResult);&lt;br /&gt;17             token.addEventListener("fault",onFault);&lt;br /&gt;18             model.workflowstate = GlobalWeatherModelLocator.WAITING_WAITING_FOR_SERVICE_RESPONSE;&lt;br /&gt;19         }&lt;br /&gt;20&lt;br /&gt;21         public override function onResult(event:*=null):void&lt;br /&gt;22         {&lt;br /&gt;23             //handle specific command taks here&lt;br /&gt;24             model.cities = event.result;&lt;br /&gt;25             super.onResult(event);&lt;br /&gt;26         }&lt;br /&gt;27     }&lt;br /&gt;28 }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Notice how my onResult method handles the results in the context of the specific command (line 24), it sets the result of the operation to the relevant member of the model (cities)   it then moves on and let the base class handle the results globally, the base class will notify the rest of the application that the application state has changed(line 39 of BaseGloblWeatherCommand):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;38             //the service returned a response, update the model&lt;br /&gt;39             model.workflowstate = -1;&lt;br /&gt;&lt;/code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color:Teal;"&gt;39&lt;/span&gt;             model.workflowstate = -&lt;span style="color:Maroon;"&gt;1&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="color:Teal;"&gt; &lt;/span&gt;As you can see, by using the commands and the WSIW, you can write applications that talk to web services and maintain a simple and efficient architecture.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-1794770726984276776?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/1794770726984276776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=1794770726984276776' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/1794770726984276776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/1794770726984276776'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2008/12/integrating-cairngorm-with-fb3-data.html' title='Integrating Cairngorm with FB3 Data Wizard Auto generated code.'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tECzk8Tdl88/SfQI_xNkDzI/AAAAAAAAABc/Ov6jntqAX60/s72-c/flex.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1753785183900106589.post-6787279850385818729</id><published>2008-12-18T06:01:00.000-08:00</published><updated>2009-05-24T14:21:13.817-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Locale'/><category scheme='http://www.blogger.com/atom/ns#' term='ResourceBundle'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex Bulider 3'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Flex 3 - Unable to resolve resource bundle error</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tECzk8Tdl88/She2gwLsIPI/AAAAAAAAAB8/GeAOiy2K_rI/s1600-h/fb_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 96px; height: 96px;" src="http://1.bp.blogspot.com/_tECzk8Tdl88/She2gwLsIPI/AAAAAAAAAB8/GeAOiy2K_rI/s400/fb_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5338936557077012722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;While implementing Flex &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/resources/ResourceBundle.html"&gt;ResourceBundle&lt;/a&gt; using .properties files, I ran into a strange problem. Although my Locale folder was added to the build path, Flex could not find it and could not resolve the ResourceBundles. I Googled things up and found the problem, it looks like a Flex 3 issue...&lt;br /&gt;&lt;br /&gt;Instead of specifying the locale folder in the build path (which sounds like the correct way to do it), add it to the "Additional compiler arguments" in the project's compiler tab.&lt;br /&gt;&lt;br /&gt;To do this, simply&lt;span style="font-style: italic;"&gt; right click your project &gt; properites &gt; Flex compiler and add "-source-path ../locale/{locale}" to the Aditional compiler arguments text field.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(note that my locale folder is under &lt;flex&gt;/locale/en_US/)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tECzk8Tdl88/SUpdaxPETQI/AAAAAAAAAAU/qz-a7KR-jFk/s1600-h/compiler.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 192px;" src="http://4.bp.blogspot.com/_tECzk8Tdl88/SUpdaxPETQI/AAAAAAAAAAU/qz-a7KR-jFk/s400/compiler.jpg" alt="" id="BLOGGER_PHOTO_ID_5281136227519843586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once your done you'll be able to use this very powerful feature.&lt;br /&gt;Note that in case you are using Ant you would also need to add the locale folder location as source-path path-element to the &lt;mxmlc&gt; tags:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 90%;"&gt;&lt;code&gt;&amp;lt;mxmlc&amp;gt;&lt;br /&gt;  .&lt;br /&gt;  &amp;lt;source-path path-element="locale/{locale}"/&amp;gt;&lt;br /&gt;  .&lt;br /&gt;&amp;lt;/mxmlc&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/mxmlc&gt;&lt;/flex&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1753785183900106589-6787279850385818729?l=www.flexonjava.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.flexonjava.net/feeds/6787279850385818729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1753785183900106589&amp;postID=6787279850385818729' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/6787279850385818729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1753785183900106589/posts/default/6787279850385818729'/><link rel='alternate' type='text/html' href='http://www.flexonjava.net/2008/12/flex-3-unable-to-resolve-resource.html' title='Flex 3 - Unable to resolve resource bundle error'/><author><name>Lior Boord</name><uri>http://www.blogger.com/profile/06819631562688384068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-jvvwSWaEQq0/TcBRrG7MokI/AAAAAAAAANc/RvEzxXUo1Lw/s220/lior.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tECzk8Tdl88/She2gwLsIPI/AAAAAAAAAB8/GeAOiy2K_rI/s72-c/fb_logo.jpg' height='72' width='72'/><thr:total>11</thr:total></entry></feed>
