<?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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>Dariusz Łuksza &#187; java</title>
	<atom:link href="http://luksza.org/category/programing/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://luksza.org</link>
	<description>myśli luźno zebrane ... ja i moja jaźń w intenecie</description>
	<lastBuildDate>Wed, 29 Feb 2012 10:11:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>

   <image>
    <title>Dariusz Łuksza</title>
    <url>http://0.gravatar.com/avatar/ed2d261ca5db36a17e690dc736dcd9ef.png?s=48</url>
    <link>http://luksza.org</link>
   </image>
		<item>
		<title>Android workshops in Szczecin</title>
		<link>http://luksza.org/2011/android-workshops-in-szczecin/</link>
		<comments>http://luksza.org/2011/android-workshops-in-szczecin/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 02:34:20 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[szczecin]]></category>
		<category><![CDATA[SzJUG]]></category>
		<category><![CDATA[worksjop]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=932</guid>
		<description><![CDATA[Recently we have huge moments in Java oriented area in Szczecin. W had JDK7 launch party &#8230; and now we (as a Szczecin Java User Group) are organizing all day long Android workshops. More information you can found on our mailing list and registration page.]]></description>
			<content:encoded><![CDATA[<p>Recently we have huge moments in Java oriented area in Szczecin. W had <em><a href="http://luksza.org/2011/java7-launch-party-szczecin/" target="_blank">JDK7 launch party</a></em> &#8230; and now we (as a <a href="http://szczecin.jug.pl/" target="_blank">Szczecin Java User Group</a>) are organizing all day long Android workshops. More information you can found <a href="https://groups.google.com/group/szczecin-jug/browse_thread/thread/a27a0a29c3dc3208" target="_blank">on our mailing list</a> and <a href="http://www.eventbrite.com/event/1921742985" target="_blank">registration page</a>.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=932" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2011/android-workshops-in-szczecin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Huge performance boost for EGit sync-view</title>
		<link>http://luksza.org/2011/huge-performance-boost-for-egit-sync-view/</link>
		<comments>http://luksza.org/2011/huge-performance-boost-for-egit-sync-view/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 20:20:30 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[soc11]]></category>
		<category><![CDATA[egit]]></category>
		<category><![CDATA[gsoc11]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[synchronize view]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=927</guid>
		<description><![CDATA[For last few days I was working on EGit Synchronize View performance, especially on Workspace presentation model (the Git Change Set is next on my list ). My starting point was 1m 40s to compare two linux kernel versions, v2.6.36 versus v2.6.38-rc2. Such result seams to be very good, but you need to know that [...]]]></description>
			<content:encoded><![CDATA[<p>For last few days I was working on EGit Synchronize View performance, especially on <em>Workspace</em> presentation model (the <em>Git Change Set</em> is next on my list <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). My starting point was 1m 40s to compare two linux kernel versions, v2.6.36 versus v2.6.38-rc2. Such result seams to be very good, but you need to know that it was achived on SSD hard drive and comparing to regular HDD it would be much worst (maybe more then 3 or 4 minutes).</p>
<p>What can be improved ? Fist of all, current implementation whenever it is asked for members of particular folder it <em>opens repository</em><span style="color: #ff9900;">*</span> and read data directly from it. Of course there is a cashing mechanism, but it is only on single resource level. Therefore when you are launching synchronization on repository that have about 300 folders, current implementation will create and configure 300 <em>connections<span style="color: #ff9900;">*</span></em> to repository to read data and then will cache it.</p>
<p>So, my idea was to create only one <em>connection<span style="color: #ff9900;">*</span>,</em> read all data at once and put them into global cache. This cache will be used whenever any list of members for given folder will be required. This approach gives about 2.5x performance boost to synchronization (from 1m 40s down to 40s). This result looks much better and maybe on HDD this action will take less then 2 minutes &#8230; but this isn&#8217;t over <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Reading members of folder is one thing, but getting information about particular file (it is changed, added or removed and does this change is incoming, outgoing or conflicting) is another. Currently we are reusing default implementation of SyncInfo class from Team Framework. This is really good implementation &#8230; when you cannot obtain such information from version control system. In Git  we have SHA-1 for each file and folder version and we didn&#8217;t have to compare file contents to check they are similar or not, comparing SHA-1 is sufficient. This should save lots of CPU time, disk IO&#8217;s and developer time waiting for synchronization to finish <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Now when I already have cache that contains list of all changed resources it was natural thing to add information about change type to it. Then whenever Team Framework need to know change type it can be easily obtained from this cache &#8230; no IO&#8217;s are needed, no comparison just read from in-memory-cache and return proper value.</p>
<p>I&#8217;m sure that you are wondering how fast synchronization can be now &#8230; I can only that it is <strong>REALLY</strong> fast &#8230; as you can remember my stating point was <strong>1m 40s,</strong> now same comparison will finish in less than <strong>7s</strong>!! This means that now synchronization will be <strong>14 times</strong> faster then before! What this means for a regular user? Well, it meas that you will get results of &#8216;<em>Synchronize Workspace</em>&#8216; action almost instantly.</p>
<p>Unfortunately, mentioned above changes are sill awaiting for review in <a href="http://egit.eclipse.org/r/" target="_blank">gerrit</a>, you can grab them from change <a href="http://egit.eclipse.org/r/#change,3891" target="_blank">#3891</a> and build it locally. I hope this will be included in 1.1 release &#8230;</p>
<p><span style="color: #ff9900;">*</span> jgit uses concept of walks (with filters) through repository, but I&#8217;ve used more commonly recognized terminology here</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=927" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2011/huge-performance-boost-for-egit-sync-view/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Java7 Launch Party @Szczecin</title>
		<link>http://luksza.org/2011/java7-launch-party-szczecin/</link>
		<comments>http://luksza.org/2011/java7-launch-party-szczecin/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 15:36:00 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jdk7]]></category>
		<category><![CDATA[szczecin]]></category>
		<category><![CDATA[SzJUG]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=917</guid>
		<description><![CDATA[Szczecin Java User Group is organizing a Launch Party event for JDK7. There would be a short introduction of new features in Java lanuage and API&#8217;s presented by Filip &#8216;Filus&#8217; Pająk. Filip will be also speaking about Java7 syntax support in popular IDE&#8217;s like InteliJ Idea and Eclipse IDE. As usually on ours meeting there [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://luksza.org/wp-content/uploads/2011/07/java7-tshirt-front.jpg"><img class="size-thumbnail wp-image-915 alignleft" style="margin: 5px;" title="Java7 T-Shirt front" src="http://luksza.org/wp-content/uploads/2011/07/java7-tshirt-front-150x150.jpg" alt="Java7 T-Shirt front" width="150" height="150" /></a><a href="http://luksza.org/wp-content/uploads/2011/07/java7-tshirt-back.jpg"><img class="size-thumbnail wp-image-916 alignleft" style="margin: 5px;" title="Java7 T-Shirt back" src="http://luksza.org/wp-content/uploads/2011/07/java7-tshirt-back-150x150.jpg" alt="Java7 T-Shirt back" width="150" height="150" /></a><a href="http://szczecin.jug.pl" target="_blank">Szczecin Java User Group</a> is organizing a Launch Party event for JDK7. There would be a short introduction of new features in Java lanuage and API&#8217;s presented by <a href="http://pacykarz.blogspot.com/" target="_blank">Filip &#8216;Filus&#8217; Pająk</a>. Filip will be also speaking about Java7 syntax support in popular IDE&#8217;s like InteliJ Idea and Eclipse IDE.</p>
<p>As usually on ours meeting there would be drawing of licenses for JRebel and InteliJ Idea. This time we have also cool Java7 T-Shirts for all attendees.</p>
<p>Registration isn&#8217;t required but it would be nice if you can join <a href="https://www.facebook.com/pages/Java4people/176202629066350" target="_blank">this event on facebook</a> (here you can also find mode details about this event).</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=917" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2011/java7-launch-party-szczecin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Szczecin JUG meetup &#8211; Google Guice</title>
		<link>http://luksza.org/2011/szczecin-jug-meetup-google-guice/</link>
		<comments>http://luksza.org/2011/szczecin-jug-meetup-google-guice/#comments</comments>
		<pubDate>Fri, 22 Apr 2011 22:20:43 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[gin]]></category>
		<category><![CDATA[guice]]></category>
		<category><![CDATA[jug]]></category>
		<category><![CDATA[SzJUG]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=831</guid>
		<description><![CDATA[I&#8217;m honored to invite every one of you to next meetup of Szczecin Java User Group. This time Kazik &#8216;morisil&#8217; Pogoda will be speaking about Dependency Injection library form Google called Guice. Before getting deep into Guice he&#8217;ll explain what exactly DI is. Then we&#8217;ll dive into Guice based example application. This is a first [...]]]></description>
			<content:encoded><![CDATA[<p><a style="margin: 5px;" href="http://luksza.org/wp-content/uploads/2011/04/JugSpotkanie_11.jpg"><img class="alignleft size-thumbnail wp-image-833" title="JugSpotkanie_11" src="http://luksza.org/wp-content/uploads/2011/04/JugSpotkanie_11-150x150.jpg" alt="plakat" width="150" height="150" /></a><br />
I&#8217;m honored to invite every one of you to next meetup of <a href="https://sites.google.com/site/szczecinjug/" target="_blank">Szczecin Java User Group</a>. This time <a href="http://blog.xemantic.com/" target="_blank">Kazik &#8216;morisil&#8217; Pogoda</a> will be speaking about Dependency Injection library form Google called <a href="https://code.google.com/p/google-guice/" target="_blank">Guice</a>. Before getting deep into Guice he&#8217;ll explain what exactly DI is. Then we&#8217;ll dive into Guice based example application.</p>
<p>This is a first from a series of lectures about Dependency Injection in java by Kazik. The next one will cover <a href="https://code.google.com/p/google-gin/" target="_blank">Gin</a>, dependency injection library for <a href="https://code.google.com/intl/pl/webtoolkit/" target="_blank">GWT</a> based on Guice.</p>
<p>If you are interested in those topics feel free to join us 28th of April (more detailed information about time and place you can find on poster above).</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=831" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2011/szczecin-jug-meetup-google-guice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>A year of my contribution into EGit</title>
		<link>http://luksza.org/2011/a-year-of-my-contribution-into-egit/</link>
		<comments>http://luksza.org/2011/a-year-of-my-contribution-into-egit/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 21:03:48 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[egit]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=784</guid>
		<description><![CDATA[Few days ago (exactly 2010-03-16) was a first anniversary of my first contribution into EGit project.  Here is my very simple first patch sent into EGit&#8217;s Gerrit. It only replaces some old type loops with for-each loop, this is how it starts &#8230; Then I implement a tagging dialog, after that Google Summer of Code [...]]]></description>
			<content:encoded><![CDATA[<p>Few days ago (exactly 2010-03-16) was a first anniversary of my first contribution into EGit project.  Here is my very simple <a href="http://egit.eclipse.org/r/#change,362" target="_blank">first patch sent into EGit&#8217;s Gerrit</a>. It only replaces some old type loops with for-each loop, this is how it starts &#8230; Then I implement a tagging dialog, after that Google Summer of Code 2010 comes during with <a href="http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/eclipse/t127230758145" target="_blank">I was implementing Synchronization View</a> support &#8230; and so on.</p>
<p>Now when I&#8217;m looking on my <a href="http://www.ohloh.net/accounts/lock" target="_blank">ohloh account</a> I&#8217;m quite surprised  with my contribution size. Currently it <a href="http://www.ohloh.net/p/egit/contributors/60215441580143" target="_blank">shows 127 commits and almost 18000 code lines changed</a>.  For me those statistics are something that I can be proud of <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>We&#8217;ll see what next year will bring ;&gt;</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=784" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2011/a-year-of-my-contribution-into-egit/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Android, Eclipse, Maven and (Robo)Guice together?</title>
		<link>http://luksza.org/2010/android-eclipse-maven-and-roboguice-together/</link>
		<comments>http://luksza.org/2010/android-eclipse-maven-and-roboguice-together/#comments</comments>
		<pubDate>Sat, 06 Nov 2010 20:38:12 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[guice]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[roboguice]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=686</guid>
		<description><![CDATA[I&#8217;m sure that when you trays automated dependency management and application building/deploying you will never want to abandon this kind of comfort that it gives. The same situation is with dependency injection; when you will get it ideas. In &#8220;normal&#8221; desktop, web, or server side project&#8217;s integrating with such tools like maven and guice isn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sure that when you trays automated dependency management and application building/deploying you will never want to abandon this kind of comfort that it gives. The same situation is with dependency injection; when you will get it ideas. In &#8220;normal&#8221; desktop, web, or server side project&#8217;s integrating with such tools like maven and guice isn&#8217;t that complicated like in Android projects.<br />
Android tooling is very consistent and the ADT plug-in isn&#8217;t integrated with maven. This isn&#8217;t a problem when application is relatively small, or when you don&#8217;t want to use continuous integration tools like Hudson. But when you enter Android world from &#8220;enterprise&#8221; web application like I do, you surely would like to use CI, DI and lots more of cool stuff that was available before.</p>
<p>In this post I&#8217;ll present simple Android application that will have Maven and Guice support.<br />
<span id="more-686"></span></p>
<h2>1. Eclipse, Android and Maven</h2>
<p>I assume that you already have installed and configured <em>ADT</em> and m2eclipse plugins. To have it working properly we need to install <a href="http://code.google.com/a/eclipselabs.org/p/m2eclipse-android-integration/" target="_blank">m2eclipse-android-integration</a> from theirs update site:</p>

<div class="wp_syntax"><div class="code"><pre class="url" style="font-family:monospace;">http://m2eclipse-android-integration.googlecode.com/svn/trunk/com.byluroid.eclipse.maven.android.update/</pre></div></div>

<h2>2. Create a simple android project</h2>
<p>Using Android project creator create new project and create a <em>pom.xml</em> file and configure <em>maven-android-plugin</em>. Here is a sample minimal <em>pom.xml</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;project</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://maven.apache.org/POM/4.0.0&quot;</span> <span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000066;">xsi:schemaLocation</span>=<span style="color: #ff0000;">&quot;http://maven.apache.org/POM/4.0.0</span>
<span style="color: #009900;">                               http://maven.apache.org/maven-v4_0_0.xsd&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;modelVersion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>4.0.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/modelVersion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.luksza.android<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>exampleapplication<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>0.0.1-SNAPSHOT<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;packaging<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>apk<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/packaging<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>ExampleApplication<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.google.android<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>android<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.5_r3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;build<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sourceDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>src<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/sourceDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.jayway.maven.plugins.android.generation2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-android-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.6.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sdk<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;path<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${path-to-android-sdk}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/path<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;platform<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/platform<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/sdk<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;extensions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/extensions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-compiler-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.5<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.5<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/build<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Remember <strong>replace ${path-to-android-sdk}</strong> with proper path. After that there are only two things that should to be done. From project context menu and select <em>&#8220;Maven&#8221; -> &#8220;Enabled dependency management&#8221;</em> and secondly <em>&#8220;Maven&#8221; -> &#8220;Update project configuration&#8221;</em> and remove standard <em>JRE</em> library from project build path.<br />
That was quite simple isn&#8217;t it? There is one additional thing worth to notice, if yours application would be using <em>Google Maps API</em> you should use project <a href="http://github.com/mosabua/maven-android-sdk-deployer" target="_blank">maven-android-sdk-deployer</a> to automatically install proper jar&#8217;s in local m2 repository. Whole installation process is described in <a href="https://github.com/mosabua/maven-android-sdk-deployer/blob/master/README.markdown" target="_blank">README.markdown</a> file.</p>
<h2>3. Android and Guice</h2>
<p>Now when we have enabled dependency management we can add some dependencies <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . First of all we will need <em>Guice 2.0</em> without <em>AOP</em> (we cannot use <em>Aspect Oriented Programming on Android</em>). Because this jar isn&#8217;t available in any known maven repository we should download it from <a href="http://code.google.com/p/google-guice/downloads/list" target="_blank">Guice download site</a> and install it in our local repository:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">mvn install:install-file -Dfile=./guice-2.0-no_aop.jar -DgroupId=com.google.inject\
      -DartifactId=guice-no_aop -Dversion=2.0 -Dpackaging=jar -DgeneratePom=true</pre></div></div>

<p>after that we can add new dependency to ours <em>pom.xml</em></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.google.inject<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>guice-no_aop<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Theoretically we can use Guice without any addons &#8230; but using <a href="http://code.google.com/p/roboguice/" target="_blank">Roboguice</a> we can achieve lots more than simple dependency injection eg. using <em>@InjectView</em> and <em>@InjectResource</em> we can easily inject views and resources without casts. Also there are preconfigured <em>Guice</em> modules that have configured standard bindings. To add <em>Roboguice</em> into ours project first we should define new repository from with it will be donloaded</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;repositories<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;repository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven2-repository.dev.java.net<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Java.net Repository for Maven<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://download.java.net/maven/2/<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/repository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/repositories<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Secondly the dependency should be also added</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>roboguice<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>roboguice<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.1-SNAPSHOT<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>To have everything working we should create new class eg. <em>ExampleApplication</em> that will extend <em>roboguice.application.RoboApplication</em></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">org.luksza.android</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">roboguice.application.RoboApplication</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ExampleApplication <span style="color: #000000; font-weight: bold;">extends</span> RoboApplication <span style="color: #009900;">&#123;</span>
&nbsp;
	@Override
	<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> addApplicationModules<span style="color: #009900;">&#40;</span>List<span style="color: #339933;">&lt;</span>Module<span style="color: #339933;">&gt;</span> modules<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>In method <em>addApplicationModules</em> we can add any module that extends <em>com.google.inject.Module</em>. In our example we don&#8217;t need to add any extra module. Next we should edit <em>AndroidManifest.xml</em> file and change line</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;application</span> <span style="color: #000066;">android:icon</span>=<span style="color: #ff0000;">&quot;@drawable/icon&quot;</span> <span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;@string/app_name&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></pre></div></div>

<p>into</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;application</span> <span style="color: #000066;">android:icon</span>=<span style="color: #ff0000;">&quot;@drawable/icon&quot;</span> <span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;@string/app_name&quot;</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.ExampleApplication&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></pre></div></div>

<p>If we would like to benefit from <em>@InjectView</em> or <em>@InjectResource</em> annotation our activity class should extends <em>roboguice.activity.RoboActivity</em> instead of <em>android.app.Activity</em>. It is very <strong>important to notice that any injection can occur after <em>setContentView()</em> method is called</strong>. Therefor we cannot inject main activity layout! Here is an example <em>ExampleActivity</em> class that have injected button:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">org.luksza.android</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">roboguice.activity.RoboActivity</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">roboguice.inject.InjectView</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.Button</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ExampleActivity <span style="color: #000000; font-weight: bold;">extends</span> RoboActivity <span style="color: #009900;">&#123;</span>
	@InjectView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #003399;">Button</span><span style="color: #009900;">&#41;</span>
	<span style="color: #003399;">Button</span> button<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #008000; font-style: italic; font-weight: bold;">/** Called when the activity is first created. */</span>
	@Override
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		button.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Injected button&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>That is all I want to share with you. I&#8217;ve hope that this information would be useful for you <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=686" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/android-eclipse-maven-and-roboguice-together/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>EGit Synchornize ChnageSet &#8211; implemented!</title>
		<link>http://luksza.org/2010/egit-synchornize-chnageset-implemented/</link>
		<comments>http://luksza.org/2010/egit-synchornize-chnageset-implemented/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 01:44:24 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[soc10]]></category>
		<category><![CDATA[change set]]></category>
		<category><![CDATA[egit]]></category>
		<category><![CDATA[gsoc10]]></category>
		<category><![CDATA[synchronize view]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=639</guid>
		<description><![CDATA[Finally! I&#8217;ve implemented ChangeSet support in EGit! It looks almost the same as I was imagine it before I&#8217;ve started coding. The reality and Team API turn out much more complicated then I was thinking of it before Summer Of Code. But hours days of debugging and analyzing code of Team Framework, CVS integration plugin [...]]]></description>
			<content:encoded><![CDATA[<p>Finally! I&#8217;ve implemented <a href="http://egit.eclipse.org/r/#change,1247" target="_blank">ChangeSet support in EGit</a>! It looks almost the same as I was imagine it before I&#8217;ve started coding. The reality and Team API turn out much more complicated then I was thinking of it before Summer Of Code. But <span style="text-decoration: line-through;">hours</span> days of debugging and analyzing code of Team Framework, CVS integration plugin and &#8220;Example FileSystem&#8221; project finally give me some reasonable results. Apart from code analysis I&#8217;ve implemented four or five (I&#8217;ve published only two of them <a href="http://luksza.org/2010/07/28/egit-synchronize-changeset-a-small-step-ahead/" target="_blank">1</a>, <a href="http://luksza.org/2010/07/30/egit-synchornize-chnageset-discussion/" target="_blank">2</a>) different approaches for this problem, all of them had some weakens and issues that latest implementation seams to solve. But now it is unimportant, the most important thing right now is to get this feature merged into EGit as fast as it is possible, another important thing is &#8230; the feature list! <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Current implementation shows <em>Git Change Set</em> next to &#8220;normal change set&#8221;. In my humble opinion this should be changed in the feature; <em>Git Change Set</em> view should be set as default view for synchronization for git, because in git we track changes on repository level and cannot import only part of commit. Above <em>Git Change</em> Set we have node that represent repository, if we launch synchronization for more then one repository there would be more nodes on this level. Inside repository node we have list of commits that occurs between two selected points (branches of versions). Every commit is described by text label with contains first 6 characters from commit SHA-1 and first line of commit message. Commits are sorted chronologically, most recent commits are on the top. Inside commit we have list of changes that are associated with this commit. Double click action on file element will launch ChangeEditor window with will display changes that were made between two most recent commits (this one and it parent).</p>
<p>Here is a screenshot how it looks in <em>real world</em>:</p>
<p><a href="http://luksza.org/wp-content/uploads/2010/08/egit-sync-view-change-set.jpg"><img class="aligncenter size-medium wp-image-640" title="egit-sync-view-change-set" src="http://luksza.org/wp-content/uploads/2010/08/egit-sync-view-change-set-300x170.jpg" alt="" width="300" height="170" /></a></p>
<p>It shows list of changes between current HEAD and tag v0.8.4 &#8230; from height of scrollbar in <em>Synchronize</em> window we can guess that upcoming 0.9.0 release will contain lots of cool new features and bug fixes <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ;&gt;</p>
<p>Currently I didn&#8217;t manage display change direction (does it is incoming, outgoing or conflicting) I&#8217;ll work on that in nearest feature. Another think that I was unable to achieve is &#8220;proper resource handling&#8221; eg. displaying java packages as this JDT does, to be honest I don&#8217;t know that this is achievable but I&#8217;ll try &#8230; dome day <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Next think is context menu and merge/commit/overwrite actions, for now didn&#8217;t even think about it, but it also should be done in <em>nearest</em> feature.</p>
<p>What is your opinion about this new feature? Maybe you see something that should be changed, removed or improved? Please, let me know &#8230; feedback is strongly appreciated! <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=639" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/egit-synchornize-chnageset-implemented/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>EGit Synchornize ChnageSet &#8211; discussion</title>
		<link>http://luksza.org/2010/egit-synchornize-chnageset-discussion/</link>
		<comments>http://luksza.org/2010/egit-synchornize-chnageset-discussion/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 01:17:34 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[soc10]]></category>
		<category><![CDATA[change set]]></category>
		<category><![CDATA[egit]]></category>
		<category><![CDATA[gsoc10]]></category>
		<category><![CDATA[synchronize view]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=634</guid>
		<description><![CDATA[About 48 hours ago I was describing my first small step to get ChangeSet implemented. Two days is a lots of time, and current status of this feature can be described by this screen shot: As you can see, the &#8220;Git Change Set&#8221; appears next to the standard change set representation, this can be changed [...]]]></description>
			<content:encoded><![CDATA[<p>About 48 hours ago I was describing <a href="http://luksza.org/2010/07/28/egit-synchronize-changeset-a-small-step-ahead/" target="_blank">my first small step to get ChangeSet implemented</a>. Two days is a lots of time, and current status of this feature can be described by this screen shot:</p>
<p><a href="http://luksza.org/wp-content/uploads/2010/07/egit-change-set-support.jpg"><img class="aligncenter size-medium wp-image-635" title="egit-change-set-support" src="http://luksza.org/wp-content/uploads/2010/07/egit-change-set-support-241x300.jpg" alt="" width="241" height="300" /></a>As you can see, the &#8220;Git Change Set&#8221; appears next to the standard change set representation, this can be changed using third tool bar button (from left hand side).</p>
<p>Currently list of commits contains only commits between base and destination rev, the common ancestor isn&#8217;t included or even dispatched by the change set implementation (this can, or even should, be changed). Also there should be included proper graphical representations for commits, folders and files; additionally compare view should be launched when we double click on file. That things should be improved/fixed before I&#8217;ll publish code.</p>
<p>Beside that <em>small issues</em> I think that right now it is the best time to start discussion how we (yes, me and you!) would like to use this feature and have it should behave and and look. What you can see in above screen shot is only my proposition and (as always) I&#8217;m open for any suggestions and ideas. The best place for this discussion is Eclispe&#8217;s Bugzilla and <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=318473"><strong>bug 318473</strong></a>, and I encourage you to share yours opinion with us!</p>
<p>I&#8217;m looking forward for any feedback about this feature <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>BTW. One of thins that I&#8217;m proud of, in current implementation, is that I haven&#8217;t use any kind of internal API of Team Framework ;&gt;</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=634" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/egit-synchornize-chnageset-discussion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>EGit Synchronize ChangeSet &#8211; a small step ahead</title>
		<link>http://luksza.org/2010/egit-synchronize-changeset-a-small-step-ahead/</link>
		<comments>http://luksza.org/2010/egit-synchronize-changeset-a-small-step-ahead/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 00:58:06 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[soc10]]></category>
		<category><![CDATA[change set]]></category>
		<category><![CDATA[egit]]></category>
		<category><![CDATA[gsoc10]]></category>
		<category><![CDATA[synchronize view]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=628</guid>
		<description><![CDATA[This is  actually a really small step, because I only manage to display list of commits between two selected branches/tags (as you can see on this screen shot): But for me it is a great success, after more then a week of fighting with Team Framework API, with was actually designed for centralized version control [...]]]></description>
			<content:encoded><![CDATA[<p>This is  actually a really small step, because I only manage to display list of commits between two selected branches/tags (as you can see on this screen shot):</p>
<p><a href="http://luksza.org/wp-content/uploads/2010/07/egit-synchronize-change-set.jpg"><img class="aligncenter size-medium wp-image-629" title="egit-synchronize-change-set" src="http://luksza.org/wp-content/uploads/2010/07/egit-synchronize-change-set-223x300.jpg" alt="" width="223" height="300" /></a>But for me it is a great success, after more then a week of fighting with Team Framework API, with was actually designed for centralized version control system.</p>
<p>Actually this list isn&#8217;t even sorted properly, listed commits doesn&#8217;t contains any data/child  &#8230; but I think that right now things should goes faster then it was before, because I think that I&#8217;ve got idea of change set&#8217;s.</p>
<p>What should be done? All commit&#8217;s should be assigned to root node with should represent repository (this is in  case if someone will be synchronizing multiple repositories at a same time). Commit&#8217;s should contains list of changes with proper path representation: project (if it is included in this repository), folder (and java packages if it is a java project) and finally files that was changed in this particular commit.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=628" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/egit-synchronize-changeset-a-small-step-ahead/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>EGit synchornization &#8211; the next step</title>
		<link>http://luksza.org/2010/egit-synchornization-the-next-step/</link>
		<comments>http://luksza.org/2010/egit-synchornization-the-next-step/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 18:24:56 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[soc10]]></category>
		<category><![CDATA[change set]]></category>
		<category><![CDATA[egit]]></category>
		<category><![CDATA[gsoc10]]></category>
		<category><![CDATA[logical model integration]]></category>
		<category><![CDATA[synchronize view]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=623</guid>
		<description><![CDATA[First step of providing synchronization feature into  EGit was, display set of changes between two branches, and this works quite well (if there is applied my latest patch for common ancestor). The next step of integration would be to make it more &#8220;git&#8221; way. In this case all changes should be spited into proper commits, [...]]]></description>
			<content:encoded><![CDATA[<p>First step of providing synchronization feature into  EGit was, display set of changes between two branches, and this works quite well (if there is applied my latest patch for common ancestor).</p>
<p>The next step of integration would be to make it more &#8220;git&#8221; way. In this case all changes should be spited into proper commits, because in Git we track changes on repository level (not on file level) and every commit leads us from one consistent state to another. In this case, synchronize view should show list of commits (first 4-6 characters of each SHA-1 and first line from commit message), then as a child of particular commit we should see resources that was changed by this commit. Generally all changes in particular commit should have one direction incoming or outgoing (despite conflicts that can appears on file or container level inside commit). Also merge operation should be available only on commit level.</p>
<p>OK, so this is how things should be handled and how they should look like &#8230; but how to achieve it?</p>
<p>This is quite tricky question. Thanks of <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=318473" target="_blank">bug 317934</a> that was made by  Benjamin Muskalla I&#8217;ve started for looking information about &#8216;change set&#8217; in eclipse.This leads me to &#8216;<a href="http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/team_model.htm" target="_blank">Team Logical Model Integration</a>&#8216;. According to this documentation I should almost rewrite all project &#8230; change base class of GitSynchronizationParticipant, provides implementation of IResourceMapping, ISynchornizationContext, IResourceMappingManager, etc &#8230;</p>
<p>The other thing that I&#8217;ve spot some time ago, is that <a href="http://javaforge.com/project/HGE" target="_blank">Mercurial plug-in for Eclipse</a> has functionally that is somehow similar with those that I&#8217;ve want to implement (they split changes into two groups: incoming and outgoing); thank god that it is open sourced <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . With base knowledge about &#8216;Eclipse Logical Model&#8217; I&#8217;ve downloaded MercurialEclipse sources &#8230; of course using hg <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  BTW. to download sources I was forced to create an account on <a href="http://javaforge.com" target="_blank">javaforge.com</a> &#8230; this is next account that I used only once &#8230; no comments for that &#8230;</p>
<p>When I finally get sources I&#8217;ve started inspecting how they implement change sets &#8230; and realize that they also use &#8216;Logical Model Integration&#8217; &#8230; but according to comment for <a href="http://javaforge.com/scmShowFileRevision?proj_id=2828&amp;filename=src%2Fcom%2Fvectrace%2FMercurialEclipse%2Fsynchronize%2FMercurialSynchronizeParticipant.java&amp;revision=2025&amp;date=Sat+Mar+27+16%3A56%3A00+UTC+2010" target="_blank">MercurialSynchronizeParticipant</a> they don&#8217;t really know why they use ModelSynchronizeParticipant <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8230; why bother with that, so it is working <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>So my plan for next few days is:</p>
<ul>
<li>migrate actual implementation of synchronization on &#8216;Logical Model&#8217;</li>
<li>implement change sets</li>
</ul>
<p>This looks like there will be next 1 or 2 kloc patch set o integrate into EGit &#8230;</p>
<p>Wish me luck <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8230; or suggest better/easier solution <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Any suggestions are strongly required <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=623" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/egit-synchornization-the-next-step/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: basic
Database Caching 14/27 queries in 0.035 seconds using disk: basic

Served from: luksza.org @ 2012-05-22 05:29:35 -->
