<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>BerryMore</title>
	<atom:link href="http://berrymore.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://berrymore.wordpress.com</link>
	<description>Blackberry development tips</description>
	<lastBuildDate>Thu, 26 Jun 2008 08:44:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='berrymore.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>BerryMore</title>
		<link>http://berrymore.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://berrymore.wordpress.com/osd.xml" title="BerryMore" />
	<atom:link rel='hub' href='http://berrymore.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Persistent Persistable Objects</title>
		<link>http://berrymore.wordpress.com/2008/06/25/persistent-persistable-objects/</link>
		<comments>http://berrymore.wordpress.com/2008/06/25/persistent-persistable-objects/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 16:50:30 +0000</pubDate>
		<dc:creator>demonxxi</dc:creator>
				<category><![CDATA[Blackberry]]></category>
		<category><![CDATA[J2ME]]></category>
		<category><![CDATA[JDE]]></category>

		<guid isPermaLink="false">http://berrymore.wordpress.com/2008/06/25/persistent-persistable-objects/</guid>
		<description><![CDATA[Extended RIM JDE API has very powerful feature &#8211; Persistent objects. This allows you just to mark any class as &#8220;implements Persistable&#8221; and be able to hibernate any instance of this class to&#160; internal BB Persistent storage using net.rim.device.api.system.PersistentObject class. That&#8217;s cool, but there are some restrictions. As soon as you modify you class in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=berrymore.wordpress.com&amp;blog=4026706&amp;post=10&amp;subd=berrymore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Extended RIM JDE API has very powerful feature &#8211; Persistent objects. This allows you just to mark any class as &#8220;implements Persistable&#8221; and be able to hibernate any instance of this class to&nbsp; internal BB Persistent storage using <strong>net.rim.device.api.system.PersistentObject </strong>class. </p>
<p>That&#8217;s cool, but there are some restrictions. As soon as you modify you class in future program updates including private members changes, all persistent information will be lost. This is because of saved information is no more matching the new class structure. </p>
<p>Not so bad news at first look, but according to the best practice of storing objects (<a href="http://na.blackberry.com/eng/developers/resources/journals/jan_2006/object_grouping.jsp" target="_blank">see an article</a>)&nbsp; we need to group objects into a single collection. And in case of changes in any object that is stored in such collection, all the collection will be invalidated and lost! </p>
<p>So what do do? How to save information between application updates? In my project I decided to implement custom serialization approach using PersistentObject&nbsp; and collection of predefined types that will not be changed. </p>
<p>Let&#8217;s say class <strong>Person </strong>has 3 properties: </p>
<ul>
<li>String FirstName;
<li>String LastName;
<li>Integer Age;</li>
</ul>
<p>As soon as String and Integer are types that not to be changed in future updates we can serialize Person as a Vector of FirstName, LasttName, Age values. I prefer to use Hashtable against Vector, so that we can easily get properties by key but not position. This is important when we do not know how old was version of app that saved this information and we cannot replay on properties indexes. </p>
<p>As soon as Hashtable does not implement Persistable interface I used Custom class <strong>PHashtable</strong> as a wrapper of <strong>Persistable</strong> class <strong>LongHashtable </strong>with custom translation of String keys to long keys using <strong>StringUtilities.computeHashCode</strong> method.</p>
<p>Then I create a base object EntityBase which every new class should inherit in order to get ability to Persist it&#8217;s state. EntityBase has basic methods to Save and Delete itself and an Id property. All objects then will be placed into common PHashtable by their class name and then by their Id. So Id should be unique for every Class scope. One can simplify this mechanism not to use nested PHashtable objects but use complex keys like ClassName + &#8220;#&#8221; + Id, but I prefer this nesting to be able later get all objects of specific class.</p>
<p>Inheriting the EntityBase class will free us from routine work of implementing common serialization tasks of all classes. The only thing we need now is to implement 2 methods: </p>
<p><font size="2">
<ul>
<li>getProperties</font><font size="2">
<li>setProperties</li>
</ul>
<p>For our sample class listed above the implementation of these methods is:</font></p>
<p><b><font color="#7f0055" size="2"><font color="#7f0055" size="2">
<div>
<div style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0;">
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;"><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">void</span> setProperties(PHashtable properties) {</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">    super.setProperties(properties);</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;">    FirstName = (String) properties.get(<span style="color:#006080;">"FirstName"</span>);</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">    LastName = (String) properties.get(<span style="color:#006080;">"LastName"</span>); </pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;">    Age = (Integer) properties.get(<span style="color:#006080;">"Age"</span>); </pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">}</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;">&nbsp;</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;"><span style="color:#0000ff;">public</span> PHashtable getProperties() {</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;">    PHashtable properties = super.getProperties();</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">    properties.put(<span style="color:#006080;">"FirstName"</span>, FirstName);</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;">    properties.put(<span style="color:#006080;">"LastName"</span>, LastName);</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">    properties.put(<span style="color:#006080;">"Age"</span>, Age);</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;">&nbsp;</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">    <span style="color:#0000ff;">return</span> properties;</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;">}</pre>
</div>
</div>
<p></b></font></font></p>
<p align="left"><font size="2"></p>
<p></font>Implementing objects with properties of some other Persistent classes is&nbsp; less trivial but still simple. Let&#8217;s say we want to store information about person&#8217;s transport. So now in Person we have additional property Transport of class Car that extends EntityBase. We can use the samу Id for this Car object that we use for Person as soon as we require it to be unique only in class scope (Alternatively we can use some other calculated id like Id+&#8221;.Transport&#8221; or Id+&#8221;.Transport1&#8243;). And also we need to be sure that as soon as we save our Person to Persistens storage, the information abut it&#8217;s transport is also saved. And the same in case of Deleting the object.</p>
<p>So we are to implement 2 more methods: </p>
<p><b><font color="#7f0055" size="2"><font color="#7f0055" size="2"></b></font></font><font size="2"></p>
<div>
<div style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0;">
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;"><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">void</span> Delete() {</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">    Transport.Delete();</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;">    super.Delete();</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">}</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;">&nbsp;</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;"><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">void</span> Save() {</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;">    <span style="color:#0000ff;">if</span> (Transport != <span style="color:#0000ff;">null</span>) Transport.Save();</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">    super.Save();</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;">}</pre>
</div>
</div>
<p></font></p>
<p>Also do not forget to load this this property from storage while Person initialization: </p>
<div>
<div style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0;">
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;"><span style="color:#0000ff;">public</span> Person(String Id) {</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">    super(Id, <span style="color:#0000ff;">true</span>); </pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;margin:0;padding:0;">    Transport = <span style="color:#0000ff;">new</span> Car(Id);</pre>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">}</pre>
</div>
</div>
<p>Heh. That&#8217;s all. As soon as new properties are added to the person class or&nbsp; removed. you do not need to worry. Only ensure that your getProperties method is ready&nbsp; to receive null while fetching property value. </p>
<p>If need ed you can also save some class version information or other metadata to properties collection to use it for more intelligent version migration mechanism. let&#8217;s say that you had CarModel and CarColor stored in Person class and then you moved it to separate property transport of class Car(Model, Color). Then you can ensure to fetch this information in Person&#8217;s getProperties method and populate Transport.Model and Transport.Color properties.</p>
<p>You can download see <a href="http://demon-xxi.net/bbclient/PersistentDemo.zip" target="_blank">the code</a> of a sample application with EntityBase class implementation and some usage example. </p>
<p>Looking forward to your comments and suggestions. </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/berrymore.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/berrymore.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/berrymore.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/berrymore.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/berrymore.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/berrymore.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/berrymore.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/berrymore.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/berrymore.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/berrymore.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/berrymore.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/berrymore.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/berrymore.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/berrymore.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/berrymore.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/berrymore.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=berrymore.wordpress.com&amp;blog=4026706&amp;post=10&amp;subd=berrymore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://berrymore.wordpress.com/2008/06/25/persistent-persistable-objects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1b422f169c206c3c710974cc01f7beb4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">demonxxi</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry JDE projects Build &amp; Signing automation</title>
		<link>http://berrymore.wordpress.com/2008/06/22/blackberry-jde-projects-build-signing-automation/</link>
		<comments>http://berrymore.wordpress.com/2008/06/22/blackberry-jde-projects-build-signing-automation/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 15:45:38 +0000</pubDate>
		<dc:creator>demonxxi</dc:creator>
				<category><![CDATA[Blackberry]]></category>
		<category><![CDATA[JDE]]></category>
		<category><![CDATA[ANT]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[MSBuild]]></category>
		<category><![CDATA[Sign]]></category>
		<category><![CDATA[TFS]]></category>

		<guid isPermaLink="false">http://berrymore.wordpress.com/2008/06/22/blackberry-jde-projects-build-signing-automation/</guid>
		<description><![CDATA[Most projects sooner or later require build process automation. And blackberry JDE projects are not exception. But in case of JDE projects we need two things to automate: build and sign. Build can be automated in many ways but the basis is to use &#8220;rapc.exe&#8221; command line tool which comes with JDE and can be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=berrymore.wordpress.com&amp;blog=4026706&amp;post=9&amp;subd=berrymore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Most projects sooner or later require build process automation. And blackberry JDE projects are not exception. But in case of JDE projects we need two things to automate: <strong>build</strong> and <strong>sign</strong>.</p>
<p>Build can be automated in many ways but the basis is to use &#8220;rapc.exe&#8221; command line tool which comes with JDE and can be located in <em>bin</em> folder. But this tool requires to specify full list of files needed to compile the project and it&#8217;s not very handy because somehow we need to get this list from *.jdp file. </p>
<p>Eventually there is a tool that already hadle this: <a href="http://www.etaras.com/blackberry/rapc/" target="_blank">RAPC ant task</a>. You can use it as Ant task in your build automation script but also as a standalone commmand line tool. </p>
<p>I use it in standalone mode because automate builds under TFS using MSBuild. Sample: </p>
<p>Run the following command in the directory where HelloWorld.jdw exists: </p>
<div>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;height:68px;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">

java -jar anttask-rapc-1.8.jar -javahome=<span style="color:#006080;">"C:/jdk1.4.0"</span>

<span style="color:#006080;"></span>-jdehome=<span style="color:#006080;">"C:/Program Files/Research In Motion/BlackBerry JDE 4.3.0"</span> <strong><span style="color:#006080;">"HelloWorld.jdw"</span>
</strong>
</pre>
</div>
<p>As you can see this tool does all the dirty job by parsing *.jdw and *.jdp files and successfully compiles *.cod for us. </p>
<p>&nbsp;</p>
<p>The next step is signing compiled *.cod files.</p>
<p>For a long time this was very difficult to automate becasue SignatureTool.jar tool required to enter validation password manually. One could automate it by automatic UI interaction but that was very unstable. </p>
<p>Using JDE 4.3.0 SignatureTool.jar it is now possible to specify password as a parameter (<em>-p PASSWORD</em>) as well as other parameters to do signing in quiet mode.</p>
<p>You can see <strong>Appendix A: Command line code signature requests</strong> of <strong><a href="http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/8067/645045/8655/8656/1381328/BlackBerry_Signature_Tool_Developer_Guide.pdf?nodeid=1381553&amp;vernum=0" target="_blank">BlackBerry Signature Tool Developer Guide (Version 4.3.0)</a></strong>&nbsp; for the full list of<strong>&nbsp;</strong>SignatureTool.jar comand line parameters but here&#8217;s the syntax to automate signing process: </p>
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;height:68px;background-color:#f4f4f4;border-style:none;margin:0;padding:0;">

java -jar "C:/Program Files/Research In Motion/BlackBerry JDE 4.3.0/SignatureTool.jar"

 -javahome="C:/jdk1.4.0" -a -c "HelloWorld.cod"  -p PASSWORD

</pre>
<p>Here&#8217;s my complete MSBuild project for this automation: </p>
<div style="border-right:gray 1px solid;border-top:gray 1px solid;font-size:8pt;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;border-bottom:gray 1px solid;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;margin:20px 0 10px;padding:4px;">
<pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;"><span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Project</span> <span style="color:#ff0000;">xmlns</span><span style="color:#0000ff;">="http://schemas.microsoft.com/developer/msbuild/2003"</span><span style="color:#0000ff;">&gt;</span>
    <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">PropertyGroup</span><span style="color:#0000ff;">&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">JavaDir</span><span style="color:#0000ff;">&gt;</span>"C:\Program Files\Java\jdk1.6.0"<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">JavaDir</span><span style="color:#0000ff;">&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">JDEDir</span><span style="color:#0000ff;">&gt;</span>C:\Program Files\Research In Motion<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">JDEDir</span><span style="color:#0000ff;">&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">ProjectDir</span><span style="color:#0000ff;">&gt;</span>.HelloWorld.jdw<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">ProjectDir</span><span style="color:#0000ff;">&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">SigningPassword</span><span style="color:#0000ff;">&gt;</span>SecretWord<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">SigningPassword</span><span style="color:#0000ff;">&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">SourceDir</span><span style="color:#0000ff;">&gt;</span>HelloWorld<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">SourceDir</span><span style="color:#0000ff;">&gt;</span>
    <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">PropertyGroup</span><span style="color:#0000ff;">&gt;</span>
    <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Target</span> <span style="color:#ff0000;">Name</span><span style="color:#0000ff;">="Building"</span><span style="color:#0000ff;">&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Delete</span> <span style="color:#ff0000;">Files</span><span style="color:#0000ff;">="$(ProjectDir)/HelloWorld.cod;$(ProjectDir)/HelloWorld.cso"</span> <span style="color:#0000ff;">/&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Exec</span> <span style="color:#ff0000;">Command</span><span style="color:#0000ff;">="java -jar lib/anttask-rapc-1.8.jar -alx -javahome=$(JavaDir) -jdehome=&amp;quot;$(JDEDir)\BlackBerry JDE $(Version)&amp;quot; &amp;quot;$(ProjectDir)\HelloWorld.jdw&amp;quot;"</span> <span style="color:#0000ff;">/&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Copy</span> <span style="color:#ff0000;">SourceFiles</span><span style="color:#0000ff;">="$(SourceDir)/HelloWorld.cod;$(SourceDir)/HelloWorld.cso"</span> <span style="color:#ff0000;">DestinationFiles</span><span style="color:#0000ff;">="..\build\$(Version)\HelloWorld.cod;..\build\$(Version)\HelloWorld.cso"</span> <span style="color:#0000ff;">/&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Exec</span> <span style="color:#ff0000;">Command</span><span style="color:#0000ff;">="java -jar &amp;quot;$(JDEDir)\BlackBerry JDE 4.3.0\bin\SignatureTool.jar&amp;quot; -a -c ..\build\$(Version)\HelloWorld.cod -p $(SigningPassword)"</span> <span style="color:#0000ff;">/&gt;</span>
    <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">Target</span><span style="color:#0000ff;">&gt;</span>
<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">Project</span><span style="color:#0000ff;">&gt;</span></pre>
</div>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/berrymore.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/berrymore.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/berrymore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/berrymore.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/berrymore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/berrymore.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/berrymore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/berrymore.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/berrymore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/berrymore.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/berrymore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/berrymore.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/berrymore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/berrymore.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/berrymore.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/berrymore.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=berrymore.wordpress.com&amp;blog=4026706&amp;post=9&amp;subd=berrymore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://berrymore.wordpress.com/2008/06/22/blackberry-jde-projects-build-signing-automation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1b422f169c206c3c710974cc01f7beb4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">demonxxi</media:title>
		</media:content>
	</item>
		<item>
		<title>BerryMore blog start</title>
		<link>http://berrymore.wordpress.com/2008/06/20/berrymore-blog-start/</link>
		<comments>http://berrymore.wordpress.com/2008/06/20/berrymore-blog-start/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 10:30:01 +0000</pubDate>
		<dc:creator>demonxxi</dc:creator>
				<category><![CDATA[Blackberry]]></category>

		<guid isPermaLink="false">http://berrymore.wordpress.com/2008/06/20/berrymore-blog-start/</guid>
		<description><![CDATA[Hi dear all. I&#8217;m going to start this blog to post some useful info that I was able to digg while developing for the Blackberry platform. This will be more technical oriented site but I&#8217;ll also post some info related to user experience in BB world, new devices and software. Thanks for the interest, and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=berrymore.wordpress.com&amp;blog=4026706&amp;post=5&amp;subd=berrymore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hi dear all. </p>
<p>I&#8217;m going to start this blog to post some useful info that I was able to digg while developing for the Blackberry platform. </p>
<p>This will be more technical oriented site but I&#8217;ll also post some info related to user experience in BB world, new devices and software. </p>
<p>Thanks for the interest, and stay with this blog&#8230; </p>
<p> <a href="http://berrymore.files.wordpress.com/2008/06/image.png"><img style="border-width:0;" border="0" alt="image" src="http://berrymore.files.wordpress.com/2008/06/image-thumb.png?w=144&#038;h=240" width="144" height="240" /></a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/berrymore.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/berrymore.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/berrymore.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/berrymore.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/berrymore.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/berrymore.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/berrymore.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/berrymore.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/berrymore.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/berrymore.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/berrymore.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/berrymore.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/berrymore.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/berrymore.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/berrymore.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/berrymore.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=berrymore.wordpress.com&amp;blog=4026706&amp;post=5&amp;subd=berrymore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://berrymore.wordpress.com/2008/06/20/berrymore-blog-start/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1b422f169c206c3c710974cc01f7beb4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">demonxxi</media:title>
		</media:content>

		<media:content url="http://berrymore.files.wordpress.com/2008/06/image-thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
	</channel>
</rss>
