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

<channel>
	<title>HMKCode</title>
	<atom:link href="http://hmkcode.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hmkcode.com</link>
	<description>Code First!</description>
	<lastBuildDate>Mon, 20 May 2013 17:07:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Testing Expected Exceptions (JUnit)</title>
		<link>http://hmkcode.com/testing-expected-exceptions-junit/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=testing-expected-exceptions-junit</link>
		<comments>http://hmkcode.com/testing-expected-exceptions-junit/#comments</comments>
		<pubDate>Mon, 20 May 2013 17:07:03 +0000</pubDate>
		<dc:creator>hani.hmk</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Junit]]></category>
		<category><![CDATA[@Rule]]></category>
		<category><![CDATA[@Test]]></category>
		<category><![CDATA[exception]]></category>
		<category><![CDATA[junit]]></category>

		<guid isPermaLink="false">http://hmkcode.com/?p=356</guid>
		<description><![CDATA[When we test, we expect some exceptions to take place. Here we will see different ways to test methods with expected exceptions. Objectives: How to write test cases that test expected exceptions? Environment &#38; Tools: Eclipse Maven Libraries: JUnit (4.11) hamcrest-core (1.3) For complete list of jar files: .classpath For complete list of Maven dependencies: [...]]]></description>
				<content:encoded><![CDATA[<p>When we test, we expect some exceptions to take place. Here we will see different ways to test methods with expected exceptions.</p>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/05/junit.png"><img class="aligncenter size-full wp-image-357" alt="junit" src="http://hmkcode.com/wp-content/uploads/2013/05/junit.png" width="175" height="84" /></a></p>
<h3><strong>Objectives:</strong></h3>
<ul>
<li>How to write test cases that test expected exceptions?</li>
</ul>
<p><span id="more-356"></span></p>
<h3><strong>Environment &amp; Tools:</strong></h3>
<ul>
<li>Eclipse</li>
<li>Maven</li>
</ul>
<h3><strong>Libraries</strong>:</h3>
<ul>
<li>JUnit (4.11)</li>
<li>hamcrest-core (1.3)</li>
</ul>
<ul style="list-style-type: circle;">
<li><em><span style="color: #999999;">For complete list of jar files</span>: <a href="https://github.com/hmkcode/Java/blob/master/junit-exception/.classpath">.classpath</a></em></li>
<li><em><span style="color: #999999;">For complete list of Maven dependencies:</span> <a href="https://github.com/hmkcode/Java/blob/master/junit-exception/pom.xml">pom.xml</a></em></li>
</ul>
<h2><strong>( 1 ) Simple Test</strong></h2>
<p>This is enough to test simple cases.</p>
<p>Here we initiate a String variable with <span style="color: #3366ff;">null</span>, then we try to apply toUpperCase() method. We know that it should throw <span style="color: #333333;"><strong>NullPointerException </strong>or we expected it!</span></p>
<pre class="brush: java; gutter: true">package com.hmkcode;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

@RunWith(JUnit4.class)
public class AppTest 
{
	 @Test(expected= NullPointerException.class) 
	  public void testNull() { 
	       String str = null;
	       str.toUpperCase();
	  } 	
}</pre>
<h2><strong>( 2 ) Test Exception Message</strong></h2>
<p>Here is a more advanced way to test expected exception. We use <em><strong>Try/catch</strong></em> if the exception we expected is not thrown the test will <em><strong>fail</strong>. </em>Also, if we did not get the expected exception message the test will fail.</p>
<pre class="brush: java; gutter: true">package com.hmkcode;

import java.util.LinkedList;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
import static org.hamcrest.CoreMatchers.is;

@RunWith(JUnit4.class)
public class AppTest 
{
	 @Test
	 public void testExceptionMessage(){
		 try{
			 new LinkedList&lt;Object&gt;().get(0);

			 //if no exception thrown the test will fail with the below message.
			 fail(&quot;Expected an IndexOutOfBoundsException to be thrown&quot;);

	      } catch (IndexOutOfBoundsException anIndexOutOfBoundsException) {

	    	  //if no exception message is not the same the test will fail with the below message.
	          assertThat(anIndexOutOfBoundsException.getMessage(), is(&quot;Index: 0, Size: 0&quot;));
	      }

	 }
}</pre>
<h3>( 3 ) Using @Rule</h3>
<p>We have another way to test expected exception and expected exception message, it is <strong>@Rule</strong></p>
<pre class="brush: java; gutter: true">package com.hmkcode;

import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

@RunWith(JUnit4.class)
public class AppTest 
{
  	  @Rule
	  public ExpectedException thrown = ExpectedException.none();

	  @Test
	  public void testExceptionByRule() throws ArithmeticException {

	        thrown.expect(ArithmeticException.class);
	        thrown.expectMessage(&quot;/ by zero&quot;);

	    	double d = 1 / 0;
	   }

}</pre>
<p><strong>Source Code @ <a href="https://github.com/hmkcode/Java/tree/master/junit-exception">GitHub</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://hmkcode.com/testing-expected-exceptions-junit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring Profile XML Configuration</title>
		<link>http://hmkcode.com/spring-profile-xml-configuration/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=spring-profile-xml-configuration</link>
		<comments>http://hmkcode.com/spring-profile-xml-configuration/#comments</comments>
		<pubDate>Sun, 19 May 2013 20:37:35 +0000</pubDate>
		<dc:creator>hani.hmk</dc:creator>
				<category><![CDATA[Spring]]></category>
		<category><![CDATA[profile]]></category>

		<guid isPermaLink="false">http://hmkcode.com/?p=352</guid>
		<description><![CDATA[If you like to load environment specific spring configuration you can do this using profile. In other words, if you want to load a set of beans that have different settings on different environment (development, testing or production) you can use profile feature instead of pointing to a different spring xml configuration at each stage. [...]]]></description>
				<content:encoded><![CDATA[<p>If you like to load environment specific spring configuration you can do this using profile. In other words, if you want to load a set of beans that have different settings on different environment (development, testing or production) you can use profile feature instead of pointing to a different spring xml configuration at each stage.</p>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/01/springsource.png"><img class="aligncenter size-full wp-image-48" alt="springsource" src="http://hmkcode.com/wp-content/uploads/2013/01/springsource.png" width="195" height="69" /></a></p>
<h3><strong>Objective:</strong></h3>
<ul>
<li>How to use profile in spring xml configuration?</li>
</ul>
<p><span id="more-352"></span></p>
<h3>Environment &amp; Tools:</h3>
<ul>
<li>Eclipse</li>
<li>Maven (optional)</li>
</ul>
<h3>Libraries:</h3>
<ul>
<li>Spring framework</li>
</ul>
<ul>
<li><em><span style="color: #888888;">For complete list of jars: <a href="https://github.com/hmkcode/Spring-Framework/blob/master/spring-profile/.classpath">.classpath</a></span></em></li>
<li><em><span style="color: #888888;">For complete list of dependencies: <a href="https://github.com/hmkcode/Spring-Framework/blob/master/spring-profile/pom.xml">pom.xml</a></span></em></li>
</ul>
<p><strong>Source Code @ <a href="https://github.com/hmkcode/Spring-Framework/tree/master/spring-profile">GitHub</a></strong></p>
<h2>( 1 ) Two Spring XML Config (non-profile-way)</h2>
<p>Assume we have two different spring xml configuration files and we want to load each one of them on a different environment &#8220;one for development and one for production&#8221;.</p>
<ul style="list-style-type: square;">
<li><strong>1. spring-config-development.xml</strong></li>
</ul>
<pre class="brush: xml; gutter: true">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans   xmlns=&quot;http://www.springframework.org/schema/beans&quot;
		xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
		xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&quot;&gt;

			&lt;bean id=&quot;person&quot; class=&quot;com.hmkcode.vo.Person&quot;&gt;
				&lt;property name=&quot;id&quot; value=&quot;1&quot; /&gt;
				&lt;property name=&quot;name&quot; value=&quot;dev-person&quot; /&gt;
			&lt;/bean&gt;
&lt;/beans&gt;</pre>
<ul style="list-style-type: square;">
<li><strong>2. spring-config-production.xml</strong></li>
</ul>
<pre class="brush: xml; gutter: true">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans   xmlns=&quot;http://www.springframework.org/schema/beans&quot;
		xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
		xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&quot;&gt;

			&lt;bean id=&quot;person&quot; class=&quot;com.hmkcode.vo.Person&quot;&gt;
				&lt;property name=&quot;id&quot; value=&quot;2&quot; /&gt;
				&lt;property name=&quot;name&quot; value=&quot;pro-person&quot; /&gt;
			&lt;/bean&gt;
&lt;/beans&gt;</pre>
<p>One solution is to explicitly point to each one when we move from one environment to another.</p>
<ul>
<li><strong>On development</strong></li>
</ul>
<pre class="brush: java; gutter: true;highlight:[7]">public class App 
{
    public static void main( String[] args )
    {

    	ClassPathXmlApplicationContext ctx = 
        new ClassPathXmlApplicationContext(&quot;spring-config-development.xml&quot;);
        Person person =  (Person)ctx.getBean(&quot;person&quot;);
        System.out.println(&quot;Person: &quot;+person);
    }
}</pre>
<ul>
<li><strong>On Production</strong></li>
</ul>
<pre class="brush: java; gutter: true;highlight:[7]">public class App 
{
    public static void main( String[] args )
    {

    	ClassPathXmlApplicationContext ctx = 
        new ClassPathXmlApplicationContext(&quot;spring-config-production.xml&quot;);
        Person person =  (Person)ctx.getBean(&quot;person&quot;);
        System.out.println(&quot;Person: &quot;+person);
    }
}</pre>
<h2>( 2 ) Using profile</h2>
<p>Spring 3.1 has introduced &#8220;profile&#8221; the environment aware feature.</p>
<p>To use profile, we need to add profile property to &lt;beans&gt; in xml file.</p>
<ul style="list-style-type: square;">
<li><strong>1. spring-config-development.xml</strong></li>
</ul>
<pre class="brush: xml; gutter: true;highlight:[8]">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans   xmlns=&quot;http://www.springframework.org/schema/beans&quot;
		xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
		xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&quot;

		profile=&quot;development&quot;&gt;

			&lt;bean id=&quot;person&quot; class=&quot;com.hmkcode.vo.Person&quot;&gt;
				&lt;property name=&quot;id&quot; value=&quot;1&quot; /&gt;
				&lt;property name=&quot;name&quot; value=&quot;dev-person&quot; /&gt;
			&lt;/bean&gt;
&lt;/beans&gt;</pre>
<ul style="list-style-type: square;">
<li><strong>2. spring-config-production.xml</strong></li>
</ul>
<pre class="brush: xml; gutter: true;highlight:[8]">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans   xmlns=&quot;http://www.springframework.org/schema/beans&quot;
		xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
		xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&quot;

		profile=&quot;production&quot;&gt;

			&lt;bean id=&quot;person&quot; class=&quot;com.hmkcode.vo.Person&quot;&gt;
				&lt;property name=&quot;id&quot; value=&quot;2&quot; /&gt;
				&lt;property name=&quot;name&quot; value=&quot;pro-person&quot; /&gt;
			&lt;/bean&gt;
&lt;/beans&gt;</pre>
<p>Now, in the main class we need to use GenericXmlApplicationContext since it allows us to point to more than one xml files. The question now is which xml to load? we can specify which xml to load by setting the active profile</p>
<ul style="list-style-type: square;">
<li>either <strong>System.setProperty(&#8220;spring.profiles.active&#8221;, &#8220;development&#8221;);</strong></li>
<li>or <strong>ctx.getEnvironment().setActiveProfiles(&#8220;development&#8221;)</strong>;</li>
</ul>
<pre class="brush: java; gutter: true;highlight:[12,18]">package com.hmkcode;

import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import com.hmkcode.vo.Person;

public class App 
{
    public static void main( String[] args )
    {

    	System.setProperty(&quot;spring.profiles.active&quot;, &quot;development&quot;); //or production
    	GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();

    	ctx.load(&quot;spring-config-development.xml&quot;,&quot;spring-config-production.xml&quot;);

    	// Alternative way to set the active profile
    	//ctx.getEnvironment().setActiveProfiles(&quot;development&quot;); //or production
    	ctx.refresh();

        Person person =  (Person)ctx.getBean(&quot;person&quot;);
        System.out.println(&quot;Person: &quot;+person);
    }
}</pre>
<p><strong>One further enhancement is to combine all xml files into one file as following:</strong></p>
<ul style="list-style-type: square;">
<li>spring-config-all.xml</li>
</ul>
<pre class="brush: xml; gutter: true;highlight:[8,15]">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans   xmlns=&quot;http://www.springframework.org/schema/beans&quot;
		xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
		xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&quot;&gt;

		&lt;beans profile=&quot;development&quot;&gt;
			&lt;bean id=&quot;person&quot; class=&quot;com.hmkcode.vo.Person&quot;&gt;
				&lt;property name=&quot;id&quot; value=&quot;1&quot; /&gt;
				&lt;property name=&quot;name&quot; value=&quot;dev-person&quot; /&gt;
			&lt;/bean&gt;
		&lt;/beans&gt;

		&lt;beans profile=&quot;production&quot;&gt;
			&lt;bean id=&quot;person&quot; class=&quot;com.hmkcode.vo.Person&quot;&gt;
				&lt;property name=&quot;id&quot; value=&quot;2&quot; /&gt;
				&lt;property name=&quot;name&quot; value=&quot;pro-person&quot; /&gt;
			&lt;/bean&gt;
		&lt;/beans&gt;
&lt;/beans&gt;</pre>
<p>Now, we can also change java code as following</p>
<pre class="brush: java; gutter: true">package com.hmkcode;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.hmkcode.vo.Person;

public class App 
{
    public static void main( String[] args )
    {

    	System.setProperty(&quot;spring.profiles.active&quot;, &quot;development&quot;); //or production
    	ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(&quot;spring-config-all.xml&quot;);

        Person person =  (Person)ctx.getBean(&quot;person&quot;);
        System.out.println(&quot;Person: &quot;+person);
    }
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://hmkcode.com/spring-profile-xml-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Studio &#8211; Hello World!</title>
		<link>http://hmkcode.com/android-studio-hello-world/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=android-studio-hello-world</link>
		<comments>http://hmkcode.com/android-studio-hello-world/#comments</comments>
		<pubDate>Sat, 18 May 2013 19:58:01 +0000</pubDate>
		<dc:creator>hani.hmk</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[android studio]]></category>

		<guid isPermaLink="false">http://hmkcode.com/?p=339</guid>
		<description><![CDATA[Building your first app with the new Android Studio. Objectives: Install Android Studio for Windows Build Hello World App Environment: Windows Java JDK ( 1 ) Download the new IDE http://developer.android.com/sdk/installing/studio.html#download Click on the &#8220;Download Android Studio&#8221; button ( 2 ) Install the IDE Lunch the downloaded .exe file Follow the installation instructions. ( 3 [...]]]></description>
				<content:encoded><![CDATA[<p>Building your first app with the new Android Studio.</p>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/05/android_studio.png"><img class="aligncenter size-full wp-image-340" alt="android_studio" src="http://hmkcode.com/wp-content/uploads/2013/05/android_studio.png" width="381" height="258" /></a></p>
<p><strong>Objectives:</strong></p>
<ul>
<li>Install Android Studio for Windows</li>
<li>Build Hello World App</li>
</ul>
<p><span id="more-339"></span></p>
<p><strong>Environment:</strong></p>
<ul>
<li>Windows</li>
<li>Java JDK</li>
</ul>
<p><strong>( 1 ) Download the new IDE</strong></p>
<ul>
<li><a href="http://developer.android.com/sdk/installing/studio.html#download">http://developer.android.com/sdk/installing/studio.html#download</a></li>
<li>Click on the &#8220;Download Android Studio&#8221; button</li>
</ul>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/05/android_studio_site.jpg"><img class="aligncenter size-full wp-image-346" alt="android_studio_site" src="http://hmkcode.com/wp-content/uploads/2013/05/android_studio_site.jpg" width="576" height="306" /></a></p>
<p><strong>( 2 ) Install the IDE</strong></p>
<ul>
<li>Lunch the downloaded .exe file</li>
<li>Follow the installation instructions.</li>
</ul>
<p><strong>( 3 ) New Project</strong></p>
<ul>
<li>After completing the installation select &#8220;New Project&#8221;</li>
</ul>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/05/android_studio_new_project.jpg"><img class="aligncenter size-full wp-image-348" alt="android_studio_new_project" src="http://hmkcode.com/wp-content/uploads/2013/05/android_studio_new_project.jpg" width="576" height="431" /></a></p>
<ul>
<li>Enter Application Name: Hello World</li>
<li>Keep other default settings.</li>
<li>Next (3 times)</li>
<li>Finish</li>
</ul>
<ul>
<li>It may take some time in the first time</li>
</ul>
<p><strong>( 4 ) Generated Project</strong></p>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/05/android_studio_project.png"><img class="aligncenter size-full wp-image-344" alt="android_studio_project" src="http://hmkcode.com/wp-content/uploads/2013/05/android_studio_project.png" width="326" height="386" /></a></p>
<p><strong>( 5 ) Run the App</strong></p>
<p><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAAfCAIAAADBdHBIAAAFl0lEQVR4nO2YWW8aZxSG5ydYyk0rtb3qljYZILSxYiWWoySVm0W1WUwcd7Oa9KoXqTHQAatRL0IT1a0jwjIxLokjYjA2ZjAwxGNI2iwtSVkCw7jD4liqqqo/oxcfJsMMMyGO7Jjqe3Q0+pZ3zjnovEI2yAoEIgLyohuAbF+gOSCiQHNARIHmgIjS3By/QNqWTTdHMpn8Vxyzt0NiC3mBJJPJTTcHRVH/iDMZ7/t+fuc538vf+l6yzr19JX5CQgzZSiiKkhj2niuHv1owpQuZ5zIHSZJ/i5D7c2nsxg6zt6MeYzd2pJmomB6ylZAkKTHs/X71gVnNB97BufuhjZsjEon8JcJkvM/s7XhAE8AZYIGTx8T0kK0kEolIDLuHOHUkPtwdPNl5/YQ5cj5fLGzEHARBrIlwYX7Xd/7XeHF+7k0x/VN5fGtMqRxLJi1K5ditx483nEcsMzen8OT/1OTa2hpBEBLDPhAaPEKdPhQf7iaG9nr7Tng/iz9cfmZzBIPB1eemmrAoFJZEtdp0y5MtJ8wSt+C8mrAoEIUlUV1dXa1WPTpE5xHoJRpo5WR7Ntk6wWBQYthdQd3Bm8MHbw73xD8/sDjU6VcpPccuxG1FpvgM5ggEApVGbIuHLi8erlQq3L82uMGwuboGUF42KxTm5XK56ZYnoyis+W15SofopsrlSqWybFYoFArdVFkimzAzV/PUk+3ZZKVScTgcg82w2+1cWSAQkDBH55ymm/y0FrFP9keGOuc08qsfam98eSd7r1Vz+Hy+UiPAAfWFMOiVTF0DYClMLscoluVtWQqTIwA5RrHgfOnmN4LbATfLlkol94Aco8BiwO0ekGNUqVRi64tGPciGDSAIMjDZJGetZns1WSqVWJa1Wq08Z1itVrZR5vP5JMyh9Pd3RYa4sS98au+8Vn79+J7Jo67E1ZbM4fV6eSdg8PWFMB7RD+saAEOannza2mc2xYouLaLFGaYmkJtiMeOTZ9GlRRAtzqysrJAmOaLFwUJuIhmGNGlNJINr5SaSYXCQhcF5elAUnNTyc3Iy67naq0kATdMYhtWdgWEYTdNPHRwXxcxHneGT/CB07wc1+2Y0rlvXePrm5pieni42AgZfXwgjV3hQ1wDomFEmM8ZomruNRg2yhlFonFFD7Xz9CV6hY0YZonHRNB0zyjSu2rNxwy0B9E5eBmFOmTFG0zFjrQv0zJlt22RRQCaTOXv27ODg4OjoaC6XEwqmp6clzLHbe0wZ0vBjQf0xqb/z6L5Q39wcHo+n0MilUM+lUE+hUBAzR+bR73UNIB81yGSGaD7P3UYWR7mHvHPubT5qkCFqZz6fzzvViNrpVKud+UKhEDWoDVGnWmaI5vPcEkDv4GUQ5mxWfZs3ySWVSlksllQq1fTW4/FImOPd673y+T5uvDenvnjbWRR8S0mZw+1250T4aaFb6Iwfg11CZTasR1F9OJvlbonMZRWCqOxZnowgRni3YT2KqOxAY1ehKIrqw9lcLpdd3+RyuWzWztNzi3Iq1t4N61GE01K7NNk6brdbwhw7rx1GA8drMXv8KPEFmX72f2VxHM+I41pUmb0dxO0fYr86zd4O16KqqSwdGkHRkVA6zdumQyNo/QsbHVlY+Bpdfzbe9tvW3w2NoMh6KiDot3HScvTcok8q2vpr1fr7uS21S5Otg+O4xLDf8vTs8vfu8vfu9veaKOsGfwRzOBx/iAPMsZC8GLltB+aQEEO2EofDITHsN37ufsd3ZP+sejb1HD+f22y2B+L4l8bOzbySuDubvDt/buZV3xImIYZsJTabTWLYr092nY7oHxbSrThD1BwTExO/QdqQiYmJFge/cXOMj4/fg7Qh4+Pjm26Oi5C2ZdPNAYGsQHNAJIDmgIgCzQERBZoDIgoyBYGIgNyBQET4DyWlczKrfy3FAAAAAElFTkSuQmCC" /></p>
<ul>
<li>Choose a running device &#8220;You need to plugin in android device&#8221;</li>
<li>or emulator</li>
</ul>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/05/android_studio_run.png"><img class="aligncenter size-full wp-image-343" alt="android_studio_run" src="http://hmkcode.com/wp-content/uploads/2013/05/android_studio_run.png" width="468" height="386" /></a></p>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/05/android_studio_emulator.jpg"><img class="aligncenter size-full wp-image-350" alt="android_studio_emulator" src="http://hmkcode.com/wp-content/uploads/2013/05/android_studio_emulator.jpg" width="260" height="453" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://hmkcode.com/android-studio-hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Maven Plugin (MySQL)</title>
		<link>http://hmkcode.com/sq-maven-plugin-mysql/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sq-maven-plugin-mysql</link>
		<comments>http://hmkcode.com/sq-maven-plugin-mysql/#comments</comments>
		<pubDate>Fri, 17 May 2013 19:57:11 +0000</pubDate>
		<dc:creator>hani.hmk</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sql-maven-plugin]]></category>

		<guid isPermaLink="false">http://hmkcode.com/?p=336</guid>
		<description><![CDATA[If you like to automate repetitive tasks with database you can achieve this using Maven SQL plugin. Simply it does for you whatever you need to do with a database at any given phase of Maven life-cycle. Objective: How to use SQL Maven plugin with MySQL or other db? Environment: Maven MySQL (for this example) [...]]]></description>
				<content:encoded><![CDATA[<p>If you like to automate repetitive tasks with database you can achieve this using Maven SQL plugin. Simply it does for you whatever you need to do with a database at any given phase of <a href="http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference">Maven life-cycle</a>.</p>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/05/maven-logo1.png"><img class="aligncenter size-full wp-image-310" alt="maven-logo" src="http://hmkcode.com/wp-content/uploads/2013/05/maven-logo1.png" width="307" height="105" /></a></p>
<p><strong>Objective:</strong></p>
<ul>
<li>How to use SQL Maven plugin with MySQL or other db?</li>
</ul>
<p><span id="more-336"></span></p>
<p><strong>Environment:</strong></p>
<ul>
<li>Maven</li>
<li>MySQL (for this example)</li>
</ul>
<p><strong>Libraries:</strong></p>
<ul>
<li>SQL Maven plugin</li>
</ul>
<p><strong>( 1 ) What we will be doing in this example?</strong></p>
<p>As mentioned above, this plugin is about doing somethings with a database (MySQL for example) at a given phase. Here we will do three things with MySQL at test phase (actually before going into the test phase).</p>
<p>We would like to do the following before running our test class.</p>
<ol>
<li>Drop &#8220;person&#8221; table if exists.</li>
<li>Create &#8220;person&#8221; table.</li>
<li>Insert some data into &#8220;person&#8221; table.</li>
</ol>
<p><strong>( 2 ) pom.xml </strong></p>
<p>All what we need to do will go into pom.xml file between the &lt;plugin&gt;&#8230;&lt;/plugin&gt;</p>
<p>With in the &lt;plugin&gt;&#8230;&lt;/plugin&gt; we need to add 4 things</p>
<ol>
<li>Plugin info &lt;groupId&gt;, &lt;artifactId&gt; &amp; &lt;version&gt;</li>
<li>JDBC Driver &lt;dependency&gt;</li>
<li>DB connection &lt;configuration&gt;</li>
<li>&lt;execute&gt; at a certain &lt;phase&gt; this &lt;sqlCommand&gt;, &lt;srcFile&gt; or &lt;fileset&gt;</li>
</ol>
<pre>&lt;plugin&gt;
        &lt;!-- ( 1 ) plugin info --&gt;
        &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
        &lt;artifactId&gt;sql-maven-plugin&lt;/artifactId&gt;
        &lt;version&gt;1.5&lt;/version&gt;

        &lt;!-- ( 2 ) jdbc dirver --&gt;
        &lt;dependencies&gt;
                &lt;dependency&gt;
                        &lt;groupId&gt;mysql&lt;/groupId&gt;
                        &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
                        &lt;version&gt;5.1.9&lt;/version&gt;
                &lt;/dependency&gt;
        &lt;/dependencies&gt;

      &lt;!-- ( 3 ) connection settings --&gt;
      &lt;configuration&gt;
          &lt;driver&gt;com.mysql.jdbc.Driver&lt;/driver&gt;
          &lt;url&gt;jdbc:mysql://localhost:3306/hmkcode&lt;/url&gt;
          &lt;username&gt;root&lt;/username&gt;
          &lt;password&gt;&lt;/password&gt;
        &lt;/configuration&gt;

      &lt;!-- ( 4 ) phase, goal &amp; SQL (command or file) --&gt;
      &lt;executions&gt;
          &lt;execution&gt;
            &lt;id&gt;drop-table&lt;/id&gt;
            &lt;phase&gt;process-test-resources&lt;/phase&gt;
            &lt;goals&gt;
              &lt;goal&gt;execute&lt;/goal&gt;
            &lt;/goals&gt;
            &lt;configuration&gt;
              &lt;autocommit&gt;true&lt;/autocommit&gt;
              &lt;sqlCommand&gt;DROP TABLE IF EXISTS person&lt;/sqlCommand&gt;
            &lt;/configuration&gt;
          &lt;/execution&gt;
         .......
         &lt;!-- more executions --&gt;
      &lt;/executions&gt;
&lt;/plugin&gt;</pre>
<p><strong>( 3 ) Analyzing &lt;execute&gt;</strong></p>
<ul>
<li>&lt;id&gt; : just unique name</li>
<li>&lt;phase&gt; : at what phase this will run</li>
<li>&lt;gaol&gt; : what goal to call <a href="http://mojo.codehaus.org/sql-maven-plugin/execute-mojo.html">sql:execute</a></li>
<li>&lt;configuration&gt; : read more about <a href="http://mojo.codehaus.org/sql-maven-plugin/execute-mojo.html">Optional Parameters</a></li>
<li>&lt;autocommit&gt; : <a href="http://mojo.codehaus.org/sql-maven-plugin/execute-mojo.html#autocommit">read more about it&#8230;</a></li>
<li>&lt;sqlCommand&gt; : SQL statement to execute</li>
</ul>
<p>Now, for the last tag &lt;sqlCommand&gt; we have other option which is passing sql file.</p>
<p><strong> ( 4 ) Complete Code<br />
</strong></p>
<ul style="list-style-type: square;">
<li><strong>pom.xml</strong></li>
</ul>
<pre class="brush: xml; gutter: true">&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

  &lt;groupId&gt;com.hmkcode&lt;/groupId&gt;
  &lt;artifactId&gt;maven-sql-plugin&lt;/artifactId&gt;
  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
  &lt;packaging&gt;jar&lt;/packaging&gt;

  &lt;name&gt;maven-sql-plugin&lt;/name&gt;
  &lt;url&gt;http://maven.apache.org&lt;/url&gt;

  &lt;properties&gt;
    &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
  &lt;/properties&gt;

  &lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;junit&lt;/groupId&gt;
      &lt;artifactId&gt;junit&lt;/artifactId&gt;
      &lt;version&gt;4.11&lt;/version&gt;
      &lt;scope&gt;test&lt;/scope&gt;
    &lt;/dependency&gt;
  &lt;/dependencies&gt;

&lt;build&gt;
&lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
        &lt;artifactId&gt;sql-maven-plugin&lt;/artifactId&gt;
        &lt;version&gt;1.5&lt;/version&gt;

        &lt;dependencies&gt;
				&lt;dependency&gt;
						&lt;groupId&gt;mysql&lt;/groupId&gt;
						&lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
						&lt;version&gt;5.1.9&lt;/version&gt;
				&lt;/dependency&gt;
		&lt;/dependencies&gt;

        &lt;configuration&gt;
          &lt;driver&gt;com.mysql.jdbc.Driver&lt;/driver&gt;
          &lt;url&gt;jdbc:mysql://localhost:3306/hmkcode&lt;/url&gt;
          &lt;username&gt;root&lt;/username&gt;
          &lt;password&gt;&lt;/password&gt;
        &lt;/configuration&gt;

        &lt;executions&gt;
          &lt;execution&gt;
            &lt;id&gt;drop-table&lt;/id&gt;
            &lt;phase&gt;process-test-resources&lt;/phase&gt;
            &lt;goals&gt;
              &lt;goal&gt;execute&lt;/goal&gt;
            &lt;/goals&gt;
            &lt;configuration&gt;
              &lt;autocommit&gt;true&lt;/autocommit&gt;
              &lt;sqlCommand&gt;DROP TABLE IF EXISTS person&lt;/sqlCommand&gt;
            &lt;/configuration&gt;
          &lt;/execution&gt;

          &lt;execution&gt;
            &lt;id&gt;create-table&lt;/id&gt;
            &lt;phase&gt;process-test-resources&lt;/phase&gt;
            &lt;goals&gt;
              &lt;goal&gt;execute&lt;/goal&gt;
            &lt;/goals&gt;
            &lt;configuration&gt;
              &lt;autocommit&gt;true&lt;/autocommit&gt;
			  &lt;srcFiles&gt;
                &lt;srcFile&gt;src/main/sql/schema.sql&lt;/srcFile&gt;
              &lt;/srcFiles&gt;
            &lt;/configuration&gt;
          &lt;/execution&gt;

          &lt;execution&gt;
            &lt;id&gt;insert-data&lt;/id&gt;
            &lt;phase&gt;process-test-resources&lt;/phase&gt;
            &lt;goals&gt;
              &lt;goal&gt;execute&lt;/goal&gt;
            &lt;/goals&gt;
            &lt;configuration&gt;
              &lt;orderFile&gt;ascending&lt;/orderFile&gt;
              &lt;fileset&gt;
                &lt;basedir&gt;${basedir}&lt;/basedir&gt;
                &lt;includes&gt;
                  &lt;include&gt;src/test/sql/test-data.sql&lt;/include&gt;
                &lt;/includes&gt;
              &lt;/fileset&gt;
            &lt;/configuration&gt;
          &lt;/execution&gt;

        &lt;/executions&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
&lt;/project&gt;</pre>
<ul style="list-style-type: square;">
<li>/src/main/sql/schema.sql</li>
</ul>
<pre class="brush: sql; gutter: true">CREATE TABLE person (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255));</pre>
<ul style="list-style-type: square;">
<li>/src/test/sql/test-data.sql</li>
</ul>
<pre class="brush: sql; gutter: true">INSERT INTO person (name) VALUES (&#039;person-1&#039;);
INSERT INTO person (name) VALUES (&#039;person-2&#039;);
INSERT INTO person (name) VALUES (&#039;person-3&#039;);
INSERT INTO person (name) VALUES (&#039;person-4&#039;);
INSERT INTO person (name) VALUES (&#039;person-5&#039;);
INSERT INTO person (name) VALUES (&#039;person-6&#039;);</pre>
<p><img alt="" src="data:image/png;base64,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" /></p>
<p>To run in example you need to have MySQL running on localhost and to create a database hmkcode. <span style="color: #888888;"><em>Actually we can add an &lt;execute&gt; that creates the database for us <img src='http://hmkcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></span></p>
<p>Open command prompt, navigate to the project directory &#8220;maven-sql-plugin&#8221; and type:</p>
<pre>./maven-sql-plugin&gt;mvn test</pre>
<p>Source Code @ <a href="https://github.com/hmkcode/Maven/tree/master/maven-sql-plugin">GitHub</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hmkcode.com/sq-maven-plugin-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MyBatis + Spring + Junit (The Missing Part)</title>
		<link>http://hmkcode.com/mybatis-spring-junit-the-missing-part/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mybatis-spring-junit-the-missing-part</link>
		<comments>http://hmkcode.com/mybatis-spring-junit-the-missing-part/#comments</comments>
		<pubDate>Thu, 16 May 2013 07:57:22 +0000</pubDate>
		<dc:creator>hani.hmk</dc:creator>
				<category><![CDATA[Junit]]></category>
		<category><![CDATA[myBatis]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[H2]]></category>
		<category><![CDATA[junit]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://hmkcode.com/?p=329</guid>
		<description><![CDATA[We have seen in Mybatis + Spring (XML &#124; Annotation) Mapper how to write a simple mybatis-spring app and what is actually needed to get it up and running. Here I will extend that sample code to cover more stuff that you may face in a real &#8220;coding&#8221;. We will see how to make a [...]]]></description>
				<content:encoded><![CDATA[<p>We have seen in <a title="Mybatis + Spring (XML | Annotation) Mapper" href="http://hmkcode.com/mybatis-spring-xml-annotation-mapper/">Mybatis + Spring (XML | Annotation) Mapper</a> how to write a simple mybatis-spring app and what is actually needed to get it up and running. Here I will extend that sample code to cover more stuff that you may face in a real &#8220;coding&#8221;. We will see how to make a single select that will fetch the <em>one</em> and the <em>many</em> of a &#8220;one-to-many&#8221; relationship, who to use mybatis config file with spring (if you need it), how to test mybatis-spring code using junit and things you need to watch out!</p>
<p><span style="color: #999999;"><em>H2 embedded database has been used to make this example easy to run. But you still can use it with other databases e.g. &#8220;MySql, Oracle,&#8230;.&#8221;</em></span></p>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/05/mybatis-spring-junit.jpg"><img class="aligncenter size-full wp-image-330" alt="mybatis-spring-junit" src="http://hmkcode.com/wp-content/uploads/2013/05/mybatis-spring-junit.jpg" width="706" height="84" /></a></p>
<p><strong>Objectives:</strong></p>
<ul>
<li>How to use make a single select that will fetch all one to many records?</li>
<li>How to reference mybatis config file in spring xml config file?</li>
<li>How to test using junit?</li>
</ul>
<p><span id="more-329"></span></p>
<p><strong>Environment:</strong></p>
<ul>
<li>Eclipse</li>
<li>Maven</li>
</ul>
<p><strong>Libraries:</strong></p>
<ul>
<li>Spring Framework</li>
<li>MyBatis</li>
<li>MyBatis for Spring</li>
<li>Junit (4.11)</li>
<li>H2</li>
</ul>
<ul>
<li><span style="color: #808080;">For complete list of <strong>jar</strong> files: <a href="https://github.com/hmkcode/Spring-Framework/blob/master/spring-mybatis-junit/.classpath">.classpath</a></span></li>
<li><span style="color: #808080;">For complete list of <strong>&lt;dependencies&gt;</strong>: <a href="https://github.com/hmkcode/Spring-Framework/blob/master/spring-mybatis-junit/pom.xml">pom.xml</a></span></li>
</ul>
<p><strong>( 1 ) Project Structure</strong></p>
<p><span style="color: #808080;"><em>This project was generated using Maven and converted into Eclipse.</em></span></p>
<p><img alt="" src="data:image/png;base64,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" /></p>
<p><strong>Database tables structure</strong></p>
<ul>
<li>Two tables (parent &amp; child)</li>
</ul>
<pre>CREATE TABLE parent (parentId INT PRIMARY KEY AUTO_INCREMENT, parentName VARCHAR(255));
CREATE TABLE child (childId INT PRIMARY KEY AUTO_INCREMENT, parentId INT, childName VARCHAR(255));</pre>
<p><strong>( 2 ) What to Code?</strong></p>
<ul>
<li><strong>spring-config.xml</strong> (<strong><span style="color: #888888;"><em>required</em></span></strong>)</li>
<li><strong>Mapper.java &amp; Mapper.xml</strong> (<strong><span style="color: #888888;"><em>required</em></span></strong>)</li>
<li><strong>mybatis-config.xml</strong> (<span style="color: #888888;"><em><strong>optional</strong></em></span>) as needed!</li>
<li><strong>Service.java</strong> (<span style="color: #888888;"><em><strong>decorator</strong></em></span>) make our code cleaner! you may call it e.g. Factory.java</li>
<li><strong>Parent.java &amp; Child.java</strong> (<span style="color: #888888;"><em><strong>model, beans or entities</strong></em></span>) for this example.</li>
<li><strong>Schema.sql &amp; test-data.sq</strong> (<span style="color: #888888;"><strong><em>data model &amp; sample data</em></strong></span>) for this example. Used by H2 db on instantiation! (H2 create tables and fill it with data when we start the app and destroy them when we close the app)</li>
<li><strong>App.java</strong> (<span style="color: #888888;"><strong><em>main class</em></strong></span>) run our example</li>
<li><strong>AppTest.java</strong> (<em><strong>test class</strong></em>)</li>
</ul>
<ul style="list-style-type: square;">
<li>src/main/resources/<strong>spring-config.xml</strong></li>
</ul>
<pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
	xmlns:context=&quot;http://www.springframework.org/schema/context&quot;
	xmlns:jdbc=&quot;http://www.springframework.org/schema/jdbc&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xmlns:aop=&quot;http://www.springframework.org/schema/aop&quot; xmlns:oxm=&quot;http://www.springframework.org/schema/oxm&quot;
	xmlns:mvc=&quot;http://www.springframework.org/schema/mvc&quot; xmlns:jee=&quot;http://www.springframework.org/schema/jee&quot;
	xmlns:tx=&quot;http://www.springframework.org/schema/tx&quot;
	xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.1.xsd


http://www.springframework.org/schema/context


http://www.springframework.org/schema/context/spring-context-3.1.xsd


http://www.springframework.org/schema/tx


http://www.springframework.org/schema/tx/spring-tx-3.1.xsd


http://www.springframework.org/schema/aop


http://www.springframework.org/schema/aop/spring-aop-3.1.xsd


http://www.springframework.org/schema/oxm


http://www.springframework.org/schema/oxm/spring-oxm-3.1.xsd


http://www.springframework.org/schema/jdbc


http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd&quot;

       &gt;

	&lt;context:annotation-config /&gt;
	&lt;tx:annotation-driven /&gt;

	&lt;!-- For MySQL --&gt;
    &lt;!-- bean id=&quot;dataSource&quot; class=&quot;org.springframework.jdbc.datasource.DriverManagerDataSource&quot;&gt;
       &lt;property name=&quot;driverClassName&quot; value=&quot;com.mysql.jdbc.Driver&quot; /&gt;  
       &lt;property name=&quot;url&quot; value=&quot;jdbc:mysql://localhost:3306/database&quot; /&gt;  
       &lt;property name=&quot;username&quot; value=&quot;&quot; /&gt;  
       &lt;property name=&quot;password&quot; value =&quot;&quot; /&gt; 
    &lt;/bean --&gt;

	&lt;!-- ( 1 ) datasource --&gt;
    &lt;jdbc:embedded-database id=&quot;dataSource&quot; type=&quot;H2&quot; &gt;
        &lt;jdbc:script location=&quot;classpath:schema.sql&quot;/&gt;
        &lt;jdbc:script location=&quot;classpath:test-data.sql&quot;/&gt;
    &lt;/jdbc:embedded-database&gt;

    &lt;!-- ( 2 ) sqlSessionFactory (dataSource, configLocation &quot;optional&quot;) --&gt;
    &lt;bean id=&quot;sqlSessionFactory&quot; class=&quot;org.mybatis.spring.SqlSessionFactoryBean&quot;&gt;
  		&lt;property name=&quot;dataSource&quot; ref=&quot;dataSource&quot; /&gt;
  		&lt;property name=&quot;configLocation&quot; value=&quot;classpath:com/hmkcode/spring/mybatis/mybatis-config.xml&quot; /&gt;  
	&lt;/bean&gt;

	&lt;!-- ( 3 ) mapper (sqlSessionFactory, Mapper) --&gt;
	&lt;bean id=&quot;mapper&quot; class=&quot;org.mybatis.spring.mapper.MapperFactoryBean&quot; &gt;
  		&lt;property name=&quot;mapperInterface&quot; value=&quot;com.hmkcode.spring.mybatis.mapper.Mapper&quot; /&gt;
  		&lt;property name=&quot;sqlSessionFactory&quot; ref=&quot;sqlSessionFactory&quot; /&gt;
	&lt;/bean&gt;

	&lt;bean id=&quot;service&quot; class=&quot;com.hmkcode.spring.mybatis.service.Service&quot; /&gt;

&lt;/beans&gt;</pre>
<ul style="list-style-type: square;">
<li>src/main/<strong></strong>java/com/hmkcode/spring/mybatis/mapper/<strong>Mapper.java</strong></li>
</ul>
<pre class="brush: java; gutter: true">package com.hmkcode.spring.mybatis.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.hmkcode.spring.mybatis.vo.Child;
import com.hmkcode.spring.mybatis.vo.Parent;;

public interface Mapper {

	//if @Select is used table/column name and class/property name should be the same

	//SQL query in &quot;Mapper.xml&quot;
	public List&lt;Parent&gt; selectAllParent();

	//SQL query in &quot;Mapper.xml&quot;
	public Parent selectParent(@Param(&quot;id&quot;) int id);

	@Insert(&quot;INSERT INTO parent (parentName) VALUES (#{parentName})&quot;)
	public int insertParent(Parent parent);

	@Select(&quot;SELECT * FROM child WHERE parentId = #{id}&quot;)
	public List&lt;Child&gt; selectAllChildren(@Param(&quot;id&quot;) int id);

	@Select(&quot;SELECT * FROM child WHERE childId = #{id}&quot;)
	public Child selectChild(@Param(&quot;id&quot;) int id);

	//SQL query in &quot;Mapper.xml&quot;
	public int insertchild(Child child);		
}</pre>
<ul style="list-style-type: square;">
<li>src/main/resources<strong></strong>/com/hmkcode/spring/mybatis/mapper/<strong>Mapper.xml</strong></li>
</ul>
<p><span style="color: #999999;"><em>Notice the use of &lt;collection&#8230;&gt; this will fetch all children of when each parent is fetched</em></span></p>
<pre class="brush: xml; gutter: true">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&lt;!DOCTYPE mapper PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot; &quot;http://mybatis.org/dtd/mybatis-3-mapper.dtd&quot;&gt;

&lt;mapper namespace=&quot;com.hmkcode.spring.mybatis.mapper.Mapper&quot;&gt;

	&lt;!-- Mapping Parent --&gt;
	&lt;resultMap type=&quot;com.hmkcode.spring.mybatis.vo.Parent&quot; id=&quot;Parent&quot;&gt;
		&lt;id column=&quot;parentId&quot; property=&quot;parentId&quot;  /&gt;
		&lt;result column=&quot;parentName&quot; property=&quot;parentName&quot;  /&gt;	

		&lt;!-- if collection is used SQL should be in XML --&gt;
		&lt;collection property=&quot;children&quot; column=&quot;parentId&quot; select=&quot;selectAllChildren&quot; javaType=&quot;ArrayList&quot; /&gt;
	&lt;/resultMap&gt;

	&lt;!-- Mapping Child --&gt;
	&lt;resultMap type=&quot;com.hmkcode.spring.mybatis.vo.Child&quot; id=&quot;Child&quot;&gt;
		&lt;id column=&quot;childId&quot; property=&quot;childId&quot;  /&gt;
		&lt;result column=&quot;parentId&quot; property=&quot;parentId&quot;  /&gt;
		&lt;result column=&quot;childName&quot; property=&quot;childName&quot;  /&gt;
	&lt;/resultMap&gt;

	&lt;!-- ************************************************************************************* --&gt;

	&lt;!-- Mapper.selectAllParent() --&gt;
	&lt;select id=&quot;selectAllParent&quot; resultMap=&quot;Parent&quot; timeout=&quot;10&quot;&gt;
		SELECT * FROM parent
	&lt;/select&gt;

	&lt;!-- Mapper.selectParent() --&gt;
	&lt;select id=&quot;selectParent&quot; resultMap=&quot;Parent&quot; parameterType=&quot;int&quot; timeout=&quot;10&quot;&gt;
		SELECT * FROM parent WHERE parentId= #{id}
	&lt;/select&gt;

	&lt;!-- Mapper.insertchild() --&gt;
	&lt;insert id=&quot;insertchild&quot; parameterType=&quot;Child&quot; timeout=&quot;10&quot;&gt;
		INSERT INTO child
			(parentId,childName)
			VALUES 
			(#{parentId},#{childName})
	&lt;/insert&gt;
&lt;/mapper&gt;</pre>
<ul style="list-style-type: square;">
<li>src/main/resources<strong></strong>/com/hmkcode/spring/mybatis//<strong>mybatis-config.xml</strong></li>
</ul>
<p><em><a href="http://mybatis.github.io/mybatis-3/configuration.html">Read more about MyBatis Configuration</a>&#8230;</em></p>
<p><span style="color: #333333;">Why we you need this file?</span></p>
<p>We want to create aliases for &#8220;model&#8221; classes (Parent.java &amp; Child.java) so when we need to refer to them we don&#8217;t need to write the complete namespace &#8220;package+class name&#8221; e.g. in the Mapper.xml we refer to Child in <span style="color: #888888;">&lt;insert id=&#8221;insertchild&#8221; parameterType=&#8221;<strong><em>Child</em></strong>&#8221; timeout=&#8221;10&#8243;&gt; <span style="color: #333333;">if we did not create the aliases in mybatis-config.xml we would write the following <span style="color: #999999;">&lt;insert id=&#8221;insertchild&#8221; parameterType=&#8221;<em><strong>com.hmkcode.spring.mybatis.vo.Child</strong></em>&#8221; timeout=&#8221;10&#8243;&gt;</span></span></span></p>
<p>Now, for the aliases either to specify classes full name or the their package. If you specify the package, classes should be annotated with @Alias(&#8220;&#8230;.&#8221;).</p>
<pre class="brush: xml; gutter: true">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&lt;!DOCTYPE configuration PUBLIC &quot;-//ibatis.apache.org//DTD Config 3.0//EN&quot; &quot;http://ibatis.apache.org/dtd/ibatis-3-config.dtd&quot;&gt;

&lt;configuration&gt;
	&lt;typeAliases&gt;

	 &lt;!-- use package to scan all classes annotated with @Aliase --&gt;
	  &lt;package name=&quot;com.hmkcode.spring.mybatis.vo&quot;/&gt; 

	  &lt;!--  to specify alias explicitly
	  	&lt;typeAlias alias=&quot;Parent&quot; type=&quot;com.hmkcode.spring.mybatis.vo.Parent&quot;/&gt;
  	  	&lt;typeAlias alias=&quot;Child&quot; type=&quot;com.hmkcode.spring.mybatis.vo.Child&quot;/&gt;
  	   --&gt; 
	&lt;/typeAliases&gt;
&lt;/configuration&gt;</pre>
<ul style="list-style-type: square;">
<li>src/main/<strong></strong>java/com/hmkcode/spring/mybatis/service/<strong>Service.java</strong></li>
</ul>
<pre class="brush: java; gutter: true">package com.hmkcode.spring.mybatis.service;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.hmkcode.spring.mybatis.mapper.Mapper;
import com.hmkcode.spring.mybatis.vo.Child;
import com.hmkcode.spring.mybatis.vo.Parent;

public class Service {

	@Autowired 
	private Mapper mapper;

	public List&lt;Parent&gt; selectAllParent(){
		return mapper.selectAllParent();
	}

	public Parent selectParent(int id){
		return mapper.selectParent(id);
	}

	public int insertParent(Parent parent){
		return mapper.insertParent(parent);
	}

	public List&lt;Child&gt; selectAllChildren(int parnetId){
		return mapper.selectAllChildren(parnetId);
	}

	public Child selectChild(int id){
		return mapper.selectChild(id);
	}

	public int insertchild(Child child){
		return mapper.insertchild(child);
	}
}</pre>
<ul style="list-style-type: square;">
<li>src/main/<strong></strong>java/com/hmkcode/spring/mybatis/vo/<strong>Parent.java</strong></li>
</ul>
<pre class="brush: java; gutter: true">package com.hmkcode.spring.mybatis.vo;

import java.util.List;
import org.apache.ibatis.type.Alias;

@Alias(&quot;Parent&quot;)
public class Parent {

	private int parentId;
	private String parentName;

	private List&lt;Child&gt; children;

	//setters &amp; getters

	public String toString(){
		return &quot;\nParent [ id: &quot;+this.parentId+&quot; - name: &quot;+this.parentName+&quot; \n&quot; +
						&quot;\tchildren: &quot;+this.children+
				&quot;\n]&quot;; 
	}
}</pre>
<ul style="list-style-type: square;">
<li>src/main/<strong></strong>java/com/hmkcode/spring/mybatis/vo/<strong>Child.java</strong></li>
</ul>
<pre class="brush: java; gutter: true">package com.hmkcode.spring.mybatis.vo;

import org.apache.ibatis.type.Alias;

@Alias(&quot;Child&quot;)
public class Child extends Parent
{
	private int childId;
   	private String childName;

   	//setters &amp; getters

	public String toString(){
		return &quot;Child [ id: &quot;+this.childId+&quot; - name: &quot;+this.childName+&quot; (PARENT_ID :&quot;+this.getParentId()+&quot;) ]&quot;; 
	}
}</pre>
<ul style="list-style-type: square;">
<li>src/main/resources/<strong>schema.xml</strong></li>
</ul>
<pre class="brush: sql; gutter: true">CREATE TABLE parent (parentId INT PRIMARY KEY AUTO_INCREMENT, parentName VARCHAR(255));
CREATE TABLE child (childId INT PRIMARY KEY AUTO_INCREMENT, parentId INT, childName VARCHAR(255));</pre>
<ul style="list-style-type: square;">
<li>src/main/resources/<strong>test-data.xml</strong></li>
</ul>
<pre class="brush: sql; gutter: true">INSERT INTO parent (parentName) VALUES (&#039;parent-1&#039;)
INSERT INTO parent (parentName) VALUES (&#039;parent-2&#039;)
INSERT INTO parent (parentName) VALUES (&#039;parent-3&#039;)

INSERT INTO child (childName,parentId) VALUES (&#039;child-1&#039;,1)
INSERT INTO child (childName,parentId) VALUES (&#039;child-2&#039;,1)
INSERT INTO child (childName,parentId) VALUES (&#039;child-3&#039;,2)</pre>
<ul style="list-style-type: square;">
<li>src/main/<strong></strong>java/com/hmkcode/spring/mybatis/<strong>App.java</strong></li>
</ul>
<pre class="brush: java; gutter: true">package com.hmkcode.spring.mybatis;

import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.hmkcode.spring.mybatis.service.Service;
import com.hmkcode.spring.mybatis.vo.Child;
import com.hmkcode.spring.mybatis.vo.Parent;

public class App 
{
	private static Log log = LogFactory.getLog(App.class);

    public static void main( String[] args )
    {

    	ApplicationContext cxt = new ClassPathXmlApplicationContext(&quot;spring-config.xml&quot;);
    	Service service = (Service) cxt.getBean(&quot;service&quot;);

    	log.info(&quot;Running App...&quot;);

    	//( 1 ) SELECT ALL PARENTS
    	System.out.println(&quot;( 1 ) selectAllParent()&quot;);
    	List&lt;Parent&gt; parents = service.selectAllParent();
    	System.out.println(&quot;-&gt; &quot;+parents);

    	System.out.println(&quot;****************************************************&quot;);

    	//( 2 ) SELECT ONE PARENT
    	System.out.println(&quot;( 2 ) selectParent(2)&quot;);
    	Parent parent = service.selectParent(2);
    	System.out.println(&quot;-&gt; &quot;+parent);

    	System.out.println(&quot;****************************************************&quot;);

    	//( 3 ) INSERT ONE PARENT
    	System.out.println(&quot;( 3 ) insertParent(parent)&quot;);
    	parent = new Parent();
    	parent.setParentName(&quot;parent-4 inserted&quot;);
    	service.insertParent(parent);
    	System.out.println(&quot;-&gt; parent inserted&quot;);

    	System.out.println(&quot;****************************************************&quot;);

    	//( 4 ) SELECT ALL CHILDREN OF A GIVEN PARENT
    	System.out.println(&quot;( 4 ) selectAllChildren(parentId)&quot;);
    	List&lt;Child&gt; children = service.selectAllChildren(1);
    	System.out.println(&quot;-&gt; &quot;+children);

    	System.out.println(&quot;****************************************************&quot;);

    	//( 5 ) SELECT ONE CHILD
    	System.out.println(&quot;( 5 ) selectChild(1)&quot;);
    	Child child = service.selectChild(1);
    	System.out.println(&quot;-&gt; &quot;+child);

    	System.out.println(&quot;****************************************************&quot;);

    	//( 6 ) INSERT ONE CHILD
    	System.out.println(&quot;( 6 ) selectAllChildren(parentId)&quot;);
    	child = new Child();
    	child.setChildName(&quot;child-4 inserted&quot;);
    	child.setParentId(2);
    	service.insertchild(child);
    	System.out.println(&quot;-&gt; child inserted&quot;);

    	System.out.println(&quot;****************************************************&quot;);

    	//( 7 ) SELECT ALL PARENTS (AGAIN!)
    	System.out.println(&quot;( 7 ) selectAllParent()&quot;);
    	parents = service.selectAllParent();
    	System.out.println(&quot;-&gt; &quot;+parents);

    }
}</pre>
<ul style="list-style-type: square;">
<li>src/test/<strong></strong>java/com/hmkcode/spring/mybatis/<strong>AppTest.java</strong></li>
</ul>
<pre class="brush: java; gutter: true">package com.hmkcode.spring.mybatis;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.hmkcode.spring.mybatis.service.Service;
import com.hmkcode.spring.mybatis.vo.Parent;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;;

/**
 * Unit test for simple App.
 */

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = &quot;/spring-config.xml&quot;)
public class AppTest {

	private static Log log = LogFactory.getLog(AppTest.class);

	@Autowired private Service service;

	@Test
	public void testSelectAllParent(){
		log.info(&quot;testing selectAllParent()...&quot;);

		List&lt;Parent&gt; parents = service.selectAllParent();

		assertNotNull(&quot;failure - parents is null&quot;, parents);

		assertTrue(&quot;failure - expected 3 parents&quot;, parents.size() == 3);

		assertTrue(&quot;failure - expected 2 children&quot;, parents.get(0).getChildren().size() == 2);

		log.info(parents);
	}

	@Test
	public void testSelectParent(){
		log.info(&quot;testing selectParent()...&quot;);
		int parentId = 2;
		String parentName = &quot;parent-2&quot;;
		Parent parent = service.selectParent(parentId);

		assertNotNull(&quot;failure - parents is null&quot;, parent);

		assertTrue(&quot;failure - parent name is not right&quot;, parent.getParentName().equals(parentName));

		assertTrue(&quot;failure - expected 1 child&quot;, parent.getChildren().size() == 1);
	}

	@Test
	public void testInsertParent(){

		log.info(&quot;testing insertParent()...&quot;);

		int parentId = 4;
		String parentName = &quot;parent-4 inserted&quot;;

		Parent parent = new Parent();
		parent.setParentName(parentName);

		service.insertParent(parent);

		parent = service.selectParent(4);

		assertNotNull(&quot;failure - parents is null&quot;, parent);

		assertTrue(&quot;failure - parent name is not right&quot;, parent.getParentName().equals(parentName));

		assertTrue(&quot;failure - expected 0 child&quot;, parent.getChildren().size() == 0);

	}
}</pre>
<p>( 3 ) Run &amp; Test</p>
<p>Now you have many ways to run or test this sample code. This sample code is ready to run, no need to make any configuration if you have Maven setup on you machine. If you don&#8217;t, you need to add the needed jar files to the classpath.</p>
<p><span style="text-decoration: underline;"><strong>Using Maven:</strong></span></p>
<p><strong>To run App.java</strong></p>
<pre>../spring-mybatis-junit&gt;mvn exec:java</pre>
<p><strong>To run AppTest.java</strong></p>
<pre>../spring-mybatis-junit&gt;mvn test</pre>
<p><span style="text-decoration: underline;"><strong>Using Eclipse:</strong></span></p>
<p>Convert Maven project to Eclipse</p>
<pre>../spring-mybatis-junit&gt;mvn eclipse:eclipse</pre>
<p><strong>To run App.java </strong></p>
<p>Right Click App.java &gt;&gt; Run As &gt;&gt; Java Application</p>
<p><strong>To run AppTest.java</strong></p>
<p>Right click AppTest.java &gt;&gt; Run As &gt;&gt; Junit Test</p>
<p>Source Code @ <a href="https://github.com/hmkcode/Spring-Framework/tree/master/spring-mybatis-junit">GitHub</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hmkcode.com/mybatis-spring-junit-the-missing-part/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring MVC + jQuery File Upload (multiple, drag&amp;drop, progress&#8230;)</title>
		<link>http://hmkcode.com/spring-mvc-jquery-file-upload-multiple-dragdrop-progress/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=spring-mvc-jquery-file-upload-multiple-dragdrop-progress</link>
		<comments>http://hmkcode.com/spring-mvc-jquery-file-upload-multiple-dragdrop-progress/#comments</comments>
		<pubDate>Thu, 09 May 2013 14:58:11 +0000</pubDate>
		<dc:creator>hani.hmk</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[bootstrap]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jquery-file-upload]]></category>
		<category><![CDATA[Spring MVC]]></category>

		<guid isPermaLink="false">http://hmkcode.com/?p=319</guid>
		<description><![CDATA[jQuery-File-Upload js library is &#8220;so far&#8221; the most elegant, smart, simple..etc js library I have used to upload files. Simply it is amazing. It supports async upload &#8220;Ajax&#8221;, multiple files upload, drag&#38;drop, progress update and a lot more. Here we will see an example of uploading multiple files to Spring MVC app. Bootstrap has been [...]]]></description>
				<content:encoded><![CDATA[<p><strong>jQuery-File-Upload</strong> js library is &#8220;so far&#8221; the most elegant, smart, simple..etc js library I have used to upload files. <em>Simply it is amazing</em>. It supports async upload &#8220;Ajax&#8221;, multiple files upload, drag&amp;drop, progress update and <em><a href="https://github.com/blueimp/jQuery-File-Upload">a lot more.</a> </em>Here we will see an example of uploading multiple files to Spring MVC app. <a href="http://twitter.github.io/bootstrap/index.html">Bootstrap </a>has been used in this example to make the UI more attractive.</p>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/05/spring-mvc-jquery-file-upload.png"><img class="aligncenter size-full wp-image-321" alt="spring-mvc-jquery-file-upload" src="http://hmkcode.com/wp-content/uploads/2013/05/spring-mvc-jquery-file-upload.png" width="430" height="254" /></a></p>
<h2 style="text-align: center;"><strong>Try Simple <a href="http://hmkcode.jelastic.servint.net/">Demo</a></strong></h2>
<p><strong>Objectives</strong>:</p>
<ul>
<li>How to upload single or multiple files using <a id="832a0d6b2a6f2586451f5562bd5632bc-79a6c3ff908eea5dae2855e7840b2a02ec0b5786" title="jquery.fileupload.js" href="https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload.js">jquery.fileupload.js</a>?</li>
</ul>
<p><span id="more-319"></span></p>
<p><strong>Environment:</strong></p>
<ul>
<li>Firefox &amp; Chrome (IE was not tested!)</li>
<li>Maven</li>
<li>Eclipse</li>
<li>Jetty (or other java server)</li>
</ul>
<p><strong>Libraries:</strong></p>
<p><span style="color: #888888;"><em><strong>Java Libraries:</strong></em></span></p>
<ul>
<li>Spring Framework</li>
<li>Apache common io &amp; fileupload</li>
<li>Jackson</li>
<li>Common logging</li>
<li>Other</li>
</ul>
<p><span style="color: #888888;"><em>check .classpath file for complete list of jars</em> </span></p>
<p><strong>pom.xml</strong></p>
<pre>	&lt;dependencies&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.springframework&lt;/groupId&gt;
			&lt;artifactId&gt;spring-core&lt;/artifactId&gt;
			&lt;version&gt;${spring.version}&lt;/version&gt;
		&lt;/dependency&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.springframework&lt;/groupId&gt;
			&lt;artifactId&gt;spring-web&lt;/artifactId&gt;
			&lt;version&gt;${spring.version}&lt;/version&gt;
		&lt;/dependency&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.springframework&lt;/groupId&gt;
			&lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt;
			&lt;version&gt;${spring.version}&lt;/version&gt;
		&lt;/dependency&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;javax.servlet&lt;/groupId&gt;
			&lt;artifactId&gt;servlet-api&lt;/artifactId&gt;
			&lt;version&gt;2.5&lt;/version&gt;
		&lt;/dependency&gt;
		&lt;dependency&gt;
		&lt;groupId&gt;commons-fileupload&lt;/groupId&gt;
			&lt;artifactId&gt;commons-fileupload&lt;/artifactId&gt;
			&lt;version&gt;1.2&lt;/version&gt;
		&lt;/dependency&gt;
	    &lt;dependency&gt;
			&lt;groupId&gt;commons-io&lt;/groupId&gt;
			&lt;artifactId&gt;commons-io&lt;/artifactId&gt;
			&lt;version&gt;2.4&lt;/version&gt;
		&lt;/dependency&gt;
        &lt;dependency&gt;
		&lt;groupId&gt;org.codehaus.jackson&lt;/groupId&gt;
			&lt;artifactId&gt;jackson-mapper-asl&lt;/artifactId&gt;
			&lt;version&gt;1.9.12&lt;/version&gt;
		&lt;/dependency&gt;
        &lt;dependency&gt;
			&lt;groupId&gt;org.codehaus.jackson&lt;/groupId&gt;
			&lt;artifactId&gt;jackson-core-asl&lt;/artifactId&gt;
			&lt;version&gt;1.9.12&lt;/version&gt;
		&lt;/dependency&gt;
	&lt;/dependencies&gt;</pre>
<p><span style="color: #888888;"><em><strong>Javascript Libraries:</strong></em></span></p>
<ul>
<li><a href="http://code.jquery.com/jquery-1.9.1.min.js">jquery.1.9.1.min.js</a></li>
<li><a href="http://jqueryui.com/resources/download/jquery-ui-1.10.3.zip">jquery.ui.widget.js</a></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.iframe-transport.js">jquery.iframe-transport.js</a></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload.js">jquery.fileupload.js</a></li>
<li><a href="http://twitter.github.io/bootstrap/assets/bootstrap.zip">bootstrap</a></li>
</ul>
<pre>&lt;script src=&quot;js/jquery.1.9.1.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/vendor/jquery.ui.widget.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/jquery.iframe-transport.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/jquery.fileupload.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;bootstrap/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;
&lt;link href=&quot;bootstrap/css/bootstrap.css&quot; type=&quot;text/css&quot; rel=&quot;stylesheet&quot; /&gt;</pre>
<p><span style="color: #999999;"><em>The example was designed to run with simple Maven command, just download the source code and run it.</em></span></p>
<pre>&gt;mvn jetty:run</pre>
<p><strong>( 1 ) Backend &#8211; Java Project &#8220;Spring MVC&#8221;</strong></p>
<p><span style="color: #888888;"><em>This project was generate using Maven and converted into Eclipse</em></span></p>
<p><img alt="" src="data:image/png;base64,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" width="228" height="329" /></p>
<p>For the backend we have:</p>
<ul>
<li>2 Java files (FileController.java &amp; FileMeta.java)</li>
<li>2 XML files (rest-servlet.xml &amp; web.xml)</li>
</ul>
<ul>
<li><span style="color: #333333;">src/main/java/com/hmkcode/spring/mvc/controllers/<strong>FileController.java</strong></span></li>
</ul>
<pre class="brush: java; gutter: true">package com.hmkcode.spring.mvc.controllers;

import java.io.IOException;
import java.util.Iterator;
import java.util.LinkedList;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.hmkcode.spring.mvc.model.FileMeta;

@Controller
@RequestMapping(&quot;/controller&quot;)
public class FileController {

	LinkedList&lt;FileMeta&gt; files = new LinkedList&lt;FileMeta&gt;();
	FileMeta fileMeta = null;
	/***************************************************
	 * URL: /rest/controller/upload  
	 * upload(): receives files
	 * @param request : MultipartHttpServletRequest auto passed
	 * @param response : HttpServletResponse auto passed
	 * @return LinkedList&lt;FileMeta&gt; as json format
	 ****************************************************/
	@RequestMapping(value=&quot;/upload&quot;, method = RequestMethod.POST)
	public @ResponseBody LinkedList&lt;FileMeta&gt; upload(MultipartHttpServletRequest request, HttpServletResponse response) {

		//1. build an iterator
		 Iterator&lt;String&gt; itr =  request.getFileNames();
		 MultipartFile mpf = null;

		 //2. get each file
		 while(itr.hasNext()){

			 //2.1 get next MultipartFile
			 mpf = request.getFile(itr.next()); 
			 System.out.println(mpf.getOriginalFilename() +&quot; uploaded! &quot;+files.size());

			 //2.2 if files &gt; 10 remove the first from the list
			 if(files.size() &gt;= 10)
				 files.pop();

			 //2.3 create new fileMeta
			 fileMeta = new FileMeta();
			 fileMeta.setFileName(mpf.getOriginalFilename());
			 fileMeta.setFileSize(mpf.getSize()/1024+&quot; Kb&quot;);
			 fileMeta.setFileType(mpf.getContentType());

			 try {
				fileMeta.setBytes(mpf.getBytes());
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			 //2.4 add to files
			 files.add(fileMeta);
		 }
		// result will be like this
		// [{&quot;fileName&quot;:&quot;app_engine-85x77.png&quot;,&quot;fileSize&quot;:&quot;8 Kb&quot;,&quot;fileType&quot;:&quot;image/png&quot;},...]
		return files;
	}
	/***************************************************
	 * URL: /rest/controller/get/{value}
	 * get(): get file as an attachment
	 * @param response : passed by the server
	 * @param value : value from the URL
	 * @return void
	 ****************************************************/
	@RequestMapping(value = &quot;/get/{value}&quot;, method = RequestMethod.GET)
	 public void get(HttpServletResponse response,@PathVariable String value){
		 FileMeta getFile = files.get(Integer.parseInt(value));
		 try {		
			 	response.setContentType(getFile.getFileType());
			 	response.setHeader(&quot;Content-disposition&quot;, &quot;attachment; filename=\&quot;&quot;+getFile.getFileName()+&quot;\&quot;&quot;);
		        FileCopyUtils.copy(getFile.getBytes(), response.getOutputStream());
		 }catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
		 }
	 }
}</pre>
<p>src/main/java/com/hmkcode/spring/mvc/model/<strong>FileMeta.java</strong></p>
<pre class="brush: java; gutter: true">package com.hmkcode.spring.mvc.model;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;

//ignore &quot;bytes&quot; when return json format
@JsonIgnoreProperties({&quot;bytes&quot;}) 
public class FileMeta {

	private String fileName;
	private String fileSize;
	private String fileType;

	private byte[] bytes;

         //setters &amp; getters
}</pre>
<p>src/main/webapp/WEB-INF/<strong>web.xml</strong></p>
<pre class="brush: xml; gutter: true">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;web-app xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; 
xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot; 
xmlns:web=&quot;http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&quot; 
xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&quot; 
id=&quot;WebApp_ID&quot; version=&quot;2.5&quot;&gt;
  &lt;display-name&gt;Archetype Created Web Application&lt;/display-name&gt;
  &lt;welcome-file-list&gt;
    &lt;welcome-file&gt;index.html&lt;/welcome-file&gt;
  &lt;/welcome-file-list&gt;

  &lt;servlet&gt;
  	&lt;servlet-name&gt;rest&lt;/servlet-name&gt;            
  	&lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;
  &lt;/servlet&gt;
  &lt;servlet-mapping&gt;
  	&lt;servlet-name&gt;rest&lt;/servlet-name&gt;
  	&lt;url-pattern&gt;/rest/*&lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;
&lt;/web-app&gt;</pre>
<p>src/main/webapp/WEB-INF/<strong>rest-servlet.xml</strong></p>
<pre class="brush: xml; gutter: true">&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
	xmlns:context=&quot;http://www.springframework.org/schema/context&quot;
	xmlns:mvc=&quot;http://www.springframework.org/schema/mvc&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xsi:schemaLocation=&quot;

http://www.springframework.org/schema/beans


http://www.springframework.org/schema/beans/spring-beans-3.0.xsd


http://www.springframework.org/schema/context


http://www.springframework.org/schema/context/spring-context-3.0.xsd


http://www.springframework.org/schema/mvc


http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd&quot;&gt;

	&lt;context:component-scan base-package=&quot;com.hmkcode.spring.mvc.controllers&quot; /&gt;
 	&lt;mvc:annotation-driven /&gt;
 	&lt;bean id=&quot;multipartResolver&quot;  class=&quot;org.springframework.web.multipart.commons.CommonsMultipartResolver&quot;/&gt;
&lt;/beans&gt;</pre>
<p><strong>( 2 ) Frontend</strong> (HTML, CSS, JS)</p>
<ul>
<li>1 HTML file (index.html)</li>
<li>1 JS file (myuploadfunction.js)</li>
<li>1 CSS file (dropzone.css)</li>
</ul>
<p><span style="color: #999999;"><em>Other .js, .css, images files are downloaded</em></span></p>
<p><img alt="" src="data:image/png;base64,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" /></p>
<ul>
<li>/scr/main/webapp/<strong>index.html</strong></li>
</ul>
<pre class="brush: html; gutter: true">&lt;!DOCTYPE HTML&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;jQuery File Upload Example&lt;/title&gt;
&lt;script src=&quot;js/jquery.1.9.1.min.js&quot;&gt;&lt;/script&gt;

&lt;script src=&quot;js/vendor/jquery.ui.widget.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/jquery.iframe-transport.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/jquery.fileupload.js&quot;&gt;&lt;/script&gt;

&lt;!-- bootstrap just to have good looking page --&gt;
&lt;script src=&quot;bootstrap/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;
&lt;link href=&quot;bootstrap/css/bootstrap.css&quot; type=&quot;text/css&quot; rel=&quot;stylesheet&quot; /&gt;

&lt;!-- we code these --&gt;
&lt;link href=&quot;css/dropzone.css&quot; type=&quot;text/css&quot; rel=&quot;stylesheet&quot; /&gt;
&lt;script src=&quot;js/myuploadfunction.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;h1&gt;Spring MVC - jQuery File Upload&lt;/h1&gt;
&lt;div style=&quot;width:500px;padding:20px&quot;&gt;

    &lt;input id=&quot;fileupload&quot; type=&quot;file&quot; name=&quot;files[]&quot; data-url=&quot;rest/controller/upload&quot; multiple&gt;

    &lt;div id=&quot;dropzone&quot;&gt;Drop files here&lt;/div&gt;

    &lt;div id=&quot;progress&quot;&gt;
        &lt;div style=&quot;width: 0%;&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;table id=&quot;uploaded-files&quot;&gt;
        &lt;tr&gt;
            &lt;th&gt;File Name&lt;/th&gt;
            &lt;th&gt;File Size&lt;/th&gt;
            &lt;th&gt;File Type&lt;/th&gt;
            &lt;th&gt;Download&lt;/th&gt;
        &lt;/tr&gt;
    &lt;/table&gt;

&lt;/div&gt;
&lt;/body&gt; 
&lt;/html&gt;</pre>
<ul>
<li>/scr/main/webapp/js/<strong>myuploadfunction.js</strong></li>
</ul>
<pre class="brush: javascript; gutter: true">$(function () {
    $(&#039;#fileupload&#039;).fileupload({
        dataType: &#039;json&#039;,

        done: function (e, data) {
        	$(&quot;tr:has(td)&quot;).remove();
            $.each(data.result, function (index, file) {

                $(&quot;#uploaded-files&quot;).append(
                		$(&#039;&lt;tr/&gt;&#039;)
                		.append($(&#039;&lt;td/&gt;&#039;).text(file.fileName))
                		.append($(&#039;&lt;td/&gt;&#039;).text(file.fileSize))
                		.append($(&#039;&lt;td/&gt;&#039;).text(file.fileType))
                		.append($(&#039;&lt;td/&gt;&#039;).html(&quot;&lt;a href=&#039;rest/controller/get/&quot;+index+&quot;&#039;&gt;Click&lt;/a&gt;&quot;))
                		)//end $(&quot;#uploaded-files&quot;).append()
            }); 
        },

        progressall: function (e, data) {
	        var progress = parseInt(data.loaded / data.total * 100, 10);
	        $(&#039;#progress .bar&#039;).css(
	            &#039;width&#039;,
	            progress + &#039;%&#039;
	        );
   		},

		dropZone: $(&#039;#dropzone&#039;)
    });
});</pre>
<ul>
<li>/scr/main/webapp/css/<strong>dropzone.css</strong></li>
</ul>
<pre class="brush: css; gutter: true">#dropzone {
    background: #ccccc;
    width: 150px;
    height: 50px;
    line-height: 50px;
    text-align: center;
    font-weight: bold;
}
#dropzone.in {
    width: 600px;
    height: 200px;
    line-height: 200px;
    font-size: larger;
}
#dropzone.hover {
    background: lawngreen;
}
#dropzone.fade {
    -webkit-transition: all 0.3s ease-out;
    -moz-transition: all 0.3s ease-out;
    -ms-transition: all 0.3s ease-out;
    -o-transition: all 0.3s ease-out;
    transition: all 0.3s ease-out;
    opacity: 1;
}</pre>
<p><strong>( 3 ) Run the Example</strong></p>
<pre>./spring-mvc-jquery-file-upload&gt;mvn jetty:run</pre>
<p>http://localhost:8080/spring-mvc-jquery-file-upload/</p>
<p><img alt="" src="data:image/png;base64,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" width="467" height="259" /></p>
<p>Source Code @ <a href="https://github.com/hmkcode/Spring-Framework/tree/master/spring-mvc-jquery-file-upload">github</a></p>
<p>Try Demo deployed on <a href="http://hmkcode.jelastic.servint.net/">Jelastic </a></p>
]]></content:encoded>
			<wfw:commentRss>http://hmkcode.com/spring-mvc-jquery-file-upload-multiple-dragdrop-progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create Your Own Maven archetype (Spring MVC)</title>
		<link>http://hmkcode.com/create-your-own-maven-archetype-template/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=create-your-own-maven-archetype-template</link>
		<comments>http://hmkcode.com/create-your-own-maven-archetype-template/#comments</comments>
		<pubDate>Wed, 08 May 2013 20:43:38 +0000</pubDate>
		<dc:creator>hani.hmk</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[archetype]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[Spring MVC]]></category>

		<guid isPermaLink="false">http://hmkcode.com/?p=309</guid>
		<description><![CDATA[Maven gives the ability to build a new project from a predefined archetype templates i.e. it generates for us the basic files so we can start coding right away. However, sometimes we need to have our customized version of these templates, fortunately Maven gives us the ability to create those templates which will be used [...]]]></description>
				<content:encoded><![CDATA[<p>Maven gives the ability to build a new project from a predefined <strong><em>archetype</em> </strong>templates i.e. it generates for us the basic files so we can start coding right away. However, sometimes we need to have our customized version of these templates, fortunately Maven gives us the ability to create those templates which will be used to build our projects.</p>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/05/maven-logo.png"><img class="aligncenter size-full wp-image-302" alt="maven-logo" src="http://hmkcode.com/wp-content/uploads/2013/05/maven-logo.png" width="307" height="105" /></a></p>
<p><strong>Objectives:</strong></p>
<ul>
<li>How to create a new Maven archetype?</li>
<li>Build Spring MVC archetype.</li>
</ul>
<p><span id="more-309"></span></p>
<p><strong>Environment:</strong></p>
<ul>
<li>Maven</li>
</ul>
<p>To create a new archetype, we need the following files and directories:</p>
<ul>
<li><strong>pom.xml</strong>: just like any other Maven project we need pom.xml for this archetype to be recognized by Maven. This will be placed under [<em>root_directory</em>]/pom.xml.</li>
<li><strong>archetype-metadata.xml</strong> : this will define the structure of our Maven project and what files should be created &amp; in which location. This will be placed under [<em>root_directory</em>]/src/main/resources/META-INF/maven/archetype-metadata.xml.</li>
<li>Prototypes files &#8220;files that will be generated for us&#8221; should be located under [<em>root_directory</em>]/src/main/resources/archetype-resources/&#8230;</li>
</ul>
<p><span style="color: #999999;">For this example [<em>root_directory</em>] will be <strong>archetype-spring-mvc</strong></span></p>
<p><span style="color: #888888;"><em>Minimum directory structure and files</em></span></p>
<p><img alt="" src="data:image/png;base64,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" /></p>
<p>Create a new folder &#8220;<strong>archetype-spring-mvc</strong>&#8221;</p>
<p><strong>( 1 ) pom.xml</strong></p>
<p><span style="color: #999999;">archetype-spring-mvc/pom.xml</span></p>
<pre class="brush: xml; gutter: true">&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

  &lt;groupId&gt;com.hmkcode.archetypes&lt;/groupId&gt;
  &lt;artifactId&gt;spring-mvc&lt;/artifactId&gt;
  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
  &lt;packaging&gt;jar&lt;/packaging&gt;

&lt;/project&gt;</pre>
<ul>
<li>&lt;groupId&gt; &amp; &lt;artificatId&gt; pick your own names. These will be used later to call this archetype when generating a new Maven project.</li>
</ul>
<p><strong>( 2 ) archetype-metadata.xml</strong></p>
<p>We want our archetype to generate for us some basic sample working files, so we can run the generated Maven project directory after it get generated.</p>
<p>As, we know to run webapp we need <strong>web.xml</strong> and a single <strong>index.jsp</strong>. For Spring MVC we need spring xml configuration file &#8220;<strong>spring-servlet.xml</strong>&#8221; and a single controller &#8220;<strong>MyController.java</strong>&#8220;. Also, we need to get our<strong> pom.xml</strong> generated with the needed dependencies.</p>
<p><img alt="" src="data:image/png;base64,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" /></p>
<p>Now, in <strong>archetype-metadata.xml </strong>we need to specify what files we want to be generated for us, and where Maven can find them in our arhcetype template.</p>
<pre class="brush: xml; gutter: true">&lt;archetype-descriptor name=&quot;spring-mvc&quot;
    xmlns=&quot;http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0&quot;
    xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
    xsi:schemaLocation=&quot;http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 
    http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd&quot;&gt;
    &lt;fileSets&gt;
        &lt;fileSet filtered=&quot;true&quot; packaged=&quot;true&quot;&gt;
            &lt;directory&gt;src/main/java&lt;/directory&gt;
            &lt;includes&gt;
                &lt;include&gt;**/*.java&lt;/include&gt;
            &lt;/includes&gt;
        &lt;/fileSet&gt;
        &lt;fileSet filtered=&quot;true&quot;&gt;
        &lt;directory&gt;src/main/resources&lt;/directory&gt;
        &lt;/fileSet&gt;
        &lt;fileSet filtered=&quot;false&quot; encoding=&quot;UTF-8&quot;&gt;
            &lt;directory&gt;src/main/webapp&lt;/directory&gt;
        &lt;/fileSet&gt;
        &lt;fileSet filtered=&quot;true&quot; packaged=&quot;true&quot;&gt;
            &lt;directory&gt;src/test/java&lt;/directory&gt;
        &lt;includes&gt;
            &lt;include&gt;**/*.java&lt;/include&gt;
        &lt;/includes&gt;
        &lt;/fileSet&gt;
        &lt;fileSet filtered=&quot;true&quot;&gt;
            &lt;directory&gt;src/test/resources&lt;/directory&gt;
        &lt;/fileSet&gt;
    &lt;/fileSets&gt;
&lt;/archetype-descriptor&gt;</pre>
<p>&nbsp;</p>
<p><strong>( 3 ) Prototypes Files</strong></p>
<p>All files we want to be generated for us are prototypes files, i.e. all files specified in the <strong>archetype-metadata.xml. </strong>One more important files that not needed to be specified in the archetype-meta.xml is <strong>pom.xml</strong> but one thing to notice is that &lt;groupdId&gt;, &lt;artifactId&gt; &amp; &lt;version&gt; should be set as variables.</p>
<p><strong>pom.xml</strong></p>
<pre>&lt;groupId&gt;${groupId}&lt;/groupId&gt;
  &lt;artifactId&gt;${artifactId}&lt;/artifactId&gt;
  &lt;version&gt;${version}&lt;/version&gt;</pre>
<p><em>For, java files we can add a <strong>$package</strong> variable to set the package for them on generation.</em></p>
<p><strong>( 4 ) Install</strong></p>
<p>Now, we need to install this new archetype to our local maven repository so we can call later.</p>
<pre>./archetype-spring-mvc&gt; mvn install</pre>
<p><strong>( 5 ) Create Maven Project</strong></p>
<pre>&gt;mvn archetype:generate 
-DarchetypeGroupId=com.hmkcode.archetypes 
-DarchetypeArtifactId=spring-mvc 
-DarchetypeVersion=1.0-SNAPSHOT 
-DgroupId=com.hmkcode //this can be changed
-DartifactId=my-spring-mvc //this can be changed</pre>
<p><strong>( 6 ) Run</strong></p>
<ul>
<li>The pom.xml includes Jetty plugin so that you can directly run the generated project.</li>
<li>It also include Jackson dependency so controller can return json.</li>
</ul>
<pre>./my-spring-mvc&gt; mvn jetty:run</pre>
<p><img alt="" src="data:image/png;base64,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" /></p>
<p>Source Code @ <a href="https://github.com/hmkcode/Maven/tree/master/archetype-spring-mvc">github</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hmkcode.com/create-your-own-maven-archetype-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create Web App Using Maven, Add Jetty Plugin &amp; Convert to Eclipse</title>
		<link>http://hmkcode.com/create-web-app-using-maven-jetty-eclipse/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=create-web-app-using-maven-jetty-eclipse</link>
		<comments>http://hmkcode.com/create-web-app-using-maven-jetty-eclipse/#comments</comments>
		<pubDate>Tue, 07 May 2013 19:33:33 +0000</pubDate>
		<dc:creator>hani.hmk</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[eclipse:eclipse]]></category>
		<category><![CDATA[jetty]]></category>
		<category><![CDATA[jetty:run]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[maven-archetype-webapp]]></category>

		<guid isPermaLink="false">http://hmkcode.com/?p=301</guid>
		<description><![CDATA[Using Maven you can create the foundation for a java web project with a simple command. Also, you can run it easily using Jetty Maven plugin. Objectives: How to create web app project using maven? How to run it using Jetty Maven plugin? How to convert Maven project into Eclipse project? Environment: Apache Maven Eclipse JDK [...]]]></description>
				<content:encoded><![CDATA[<p>Using Maven you can create the foundation for a java web project with a simple command. Also, you can run it easily using Jetty Maven plugin.</p>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/05/maven-jetty-eclipse.png"><img class="aligncenter size-full wp-image-304" alt="maven-jetty-eclipse" src="http://hmkcode.com/wp-content/uploads/2013/05/maven-jetty-eclipse.png" width="487" height="69" /></a></p>
<p><strong>Objectives:</strong></p>
<ul>
<li>How to create web app project using maven?</li>
<li>How to run it using Jetty Maven plugin?</li>
<li>How to convert Maven project into Eclipse project?</li>
</ul>
<p><span id="more-301"></span></p>
<p><strong>Environment:</strong></p>
<ul>
<li>Apache Maven</li>
<li>Eclipse</li>
<li>JDK 1.6</li>
</ul>
<p><strong>( 1 ) Create an Empty Web App from Maven Template</strong></p>
<ul>
<li>Open command prompt</li>
<li>Navigate to the location where you want to create the project at e.g. &#8220;C:\Workspace\Maven_Projects&#8221;</li>
<li>Type the following command and press enter.</li>
</ul>
<pre>&gt;mvn archetype:generate 
-DgroupId=com.hmkcode //enter your group id
-DartifactId=hello-webapp //enter your articfact id
-DarchetypeArtifactId=maven-archetype-webapp //this should be the same
-DinteractiveMode=false</pre>
<p><img alt="" src="data:image/png;base64,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" /></p>
<ul>
<li>Now, you should get the following project created with the same directory structure and 3 files &#8220;web.xml, index.js and pom.xml&#8221;</li>
</ul>
<p><img alt="" src="data:image/png;base64,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" /></p>
<p><strong>( 2 ) Add Jetty Maven Plugin</strong></p>
<ul>
<li>To add Jetty Maven plugin we need to add the following &lt;plugin&gt; to pom.xml</li>
</ul>
<pre>&lt;build&gt;
	  &lt;finalName&gt;hello-webapp&lt;/finalName&gt;
	  &lt;plugins&gt;
		  &lt;plugin&gt;        
			  &lt;groupId&gt;org.mortbay.jetty&lt;/groupId&gt;        
			  &lt;artifactId&gt;maven-jetty-plugin&lt;/artifactId&gt;        
			  &lt;version&gt;6.1.10&lt;/version&gt;        
			  &lt;configuration&gt;
				&lt;scanIntervalSeconds&gt;10&lt;/scanIntervalSeconds&gt;                  
			  &lt;/configuration&gt;        
		  &lt;/plugin&gt;
	  &lt;/plugins&gt;
  &lt;/build&gt;</pre>
<ul>
<li>The final pom.xml should look like this</li>
</ul>
<pre class="brush: xml; gutter: true">&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;com.hmkcode&lt;/groupId&gt;
  &lt;artifactId&gt;hello-webapp&lt;/artifactId&gt;
  &lt;packaging&gt;war&lt;/packaging&gt;
  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
  &lt;name&gt;hello-webapp Maven Webapp&lt;/name&gt;
  &lt;url&gt;http://maven.apache.org&lt;/url&gt;
  &lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;junit&lt;/groupId&gt;
      &lt;artifactId&gt;junit&lt;/artifactId&gt;
      &lt;version&gt;3.8.1&lt;/version&gt;
      &lt;scope&gt;test&lt;/scope&gt;
    &lt;/dependency&gt;
  &lt;/dependencies&gt;
  &lt;build&gt;
	  &lt;finalName&gt;hello-webapp&lt;/finalName&gt;
	  &lt;plugins&gt;
		  &lt;plugin&gt;        
			  &lt;groupId&gt;org.mortbay.jetty&lt;/groupId&gt;        
			  &lt;artifactId&gt;maven-jetty-plugin&lt;/artifactId&gt;        
			  &lt;version&gt;6.1.10&lt;/version&gt;        
			  &lt;configuration&gt;
				&lt;scanIntervalSeconds&gt;10&lt;/scanIntervalSeconds&gt;                  
			  &lt;/configuration&gt;        
		  &lt;/plugin&gt;
	  &lt;/plugins&gt;
  &lt;/build&gt;

&lt;/project&gt;</pre>
<p><strong>( 3 ) Jetty:Run</strong></p>
<ul>
<li>Now, to run jetty just type the following command</li>
</ul>
<pre>&gt;mvn jetty:run</pre>
<p><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcEAAAAYCAIAAAANn9HsAAADRUlEQVR4nO2ZS3brIBBEWbdWx478mdjDTJx3MP2rBhnpxXVHMobq6sLpgVIul8vj8di2rZRSSqm11lqLQK53K+3HUASvQgghp+Z6vcoZqs5HZ2gWMR/9KSm/8k8RQshJ6WYoIYSQBJyhhBAyDmcoIYSMg7wPTeG/Ns3qnP/16F797kUV7KU5rzPvIWXDCuGQl+8LKh5+TYcbOIZ2hrYRhHFY3+44U051JX6/9f3/aQt9mZbk8y6CwwrzO8dsWKfW39SCisf+/PDqzl/TfnZWcbvdns/ntm3+7JPTAfxp/qUZ6vTbsdqcZkk+H0XKg7OZM/Q8VWbY8UZO8RdnzdAO1at6xJmh6pRpV8KzoY5qVd0/vK7224H4tPp1FmV1FbVEqwDmg1hKbU7pOH3h/hE1UMc/3n5E8gn9d81W90Idb1Vg7fFNImngfVl+/CiKffXqyuf6fQOcoRbyVNtAEVeunur2yG1IFv5X/gZQP9XvXnXDpiT1HdVq9+zrT/pMZRIe6WyH/pGmwl46nONgDohV3xLYXfuA+ETELUCd0DMoG9qov4Desv2+mJyhsnD2zkrUqjSWzbq+g4hYpZ1+B+o6m8P9DmFrBbsXpCnEGyKLfKuWs/xkq2dzbg2AfqwSY/sdq1ZQ0ueAOJIJnoN1PGwntLGg3xfD70OlafkR9Bpmp26Qi2qJbF74Jfm9ZO8M8YN4A6VS+pO5+bbxg6qNMBPQcDbn1gDoJ/QPWvKtWiKOT1zcBzwL3ggiW38JdT7R74t/M3TAa2gR9JrKDtRJeRjIVNVP+UTM435Ub8g6oj+ZW5gJkrP1HOqAaczknM0B9D8TtWpSPTufQ8pwMXp31i2r7bplI+Ut2++LdoY6XhGkFTUjZLGIdOSzH7RaYkAn7Fet5deVH526VgiOq2xT2bozJcD93TapIJ99fWs/ouMYq/blqotqFO2K49PqS5ZQTSIfVQNgCJa44wpfz/oJxeWD+ixRSnYz9L8GifjPkLjjCX35TJZhxX6q61j2O1nc9TfO0E/MkS+HkR6IFf4JL+Wjlo7q9xtnKCGEHABnKCGEjHO/3zlDCSFkEM5QQggZhzOUEELG4QwlhJBxOEMJIWQczlBCCBnmB3vqbLI8masvAAAAAElFTkSuQmCC" /></p>
<ul>
<li>Once Jetty is up, open your web browser and type: <a href="http://localhost:8080/hello-webapp/">http://localhost:8080/hello-webapp/</a></li>
</ul>
<p><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW0AAABrCAIAAAAzTUTcAAAgAElEQVR4nO29eZTcxnkv2ue8P5KTm/C8d/3iRNZVbFqk5XHiXN/oRrGll8uIFmk7jiRybA5FmqRokaYUkibjKysvtt95PkfDmLpXV08yZUqWSMkUh+KiGVKLKYrL7NP7vgDoHd1oAL2hG0DvszTQ748qbL0Mhxpqs/Gbmu5C1VdffR+A+vVXBTTaUOWLVa5QZgt8Ic8y+SLDMEw+zzCZTHZ6xjg9M1MsFpvNZkuHDhWazSbD5MfGRt+7fCmOx/BEPJHE43gsjsdi8WgsHo3GIpFYOBINhyOhUDgYDGPBEIYFUTSIoBiCoAEEDQQQvx/x+wM+X8Dn83u9fq/X5/H4PB6vGyaf2+Pz+Hxen9/nD/j8iD+A+ANoAEEDCIagGIIGQUKlDIKggQDq9yM+X8Dr9Xs9PrfT7bA7bRab2WQ1zZimp2YmJ6bGxyfHxsZHR8euXR27cm3syrWxK6PjV0bHro5NXB2fvDY5PTo5PT5jmrBYp+0Oo8tt8frs/oADwdzBkDcY9oUjvkjUH4kGIhF/OOILhb1o0BNAnV6/3e21OF1Gm33KbJ2YMY1OTl+dmLoyNvHetfF3r45evDL62yuj71y59vblq29fvvbOldF3ro7+9trYO2PjF8cnL01MvTc1c3nGdNVsGbXYxm2OSadr2u01+vyWAGpDMUco7I7GvHgikCTQFBmi6Ggmi2eyiUw2kc0lc3kik03S6QRJ4SkylkhEYvFQOIJimD+A+Hw+t9vjdDptdofVarNYLCaT2QiTyWgyGc1mk8VqttosNrvV6XJ4PC6fzxsI+LAgGomG4vFYkkjQNJnLZQqFPM+z5Qpfq1VmZxvz83MGPkexGbJAp3JkIkMmaZIgU0QymTSazCazWRTFj/qM1fHxhSiKU1OT4xNjsXgUT8YTSRwkPBHHE3HAKdFYJBINh2VCCcmEgqIYgmBg5Ldzis/v9YF8ADIIggLiQLEgioUwoCcYxoLhoDZBtkIwBMECfsTv8/s8PrfL47S77DaH1WIzmyxGo3lmxjg9NTM5NTOhTePTxokZ06TRPGm2TFvtRofL7PZYfX5HAHGjQU8o7AtF/OFoIBILRGJIJBIIR/yhsDcY8iCYy+e3u71Wp8tkc8yYrRNG09jUzLXJ6avjk5cBlVwbe/fa2MVrY7+9Nvbba2MXR8cvjk5cHJt4d2Lq0uT05Snj5RnTVZNl1GIdtzkmHa5pl8fo8Zn9AQuC2rCgIxR2R2LeOB5IJFEiFSSpSDoTS2fi6QyeySayOSKdSdLpBEXjJBVPEjEcD0djwVAYQTF/IACpxOV2OJ12u8Nms1nkZLVZ7Harw2F3uhwut9Pr9fj8PgQJABLB8ViSwCkqlcmm80yOZQvlMl+tlhuN2uzs7MLCnIFJhLJ4kIqiqQiSCCHxEBoNBxEEOXPmzPz8/Ed9our4uGN+fv7MmdNYCE0k8SSRkJNMKCo2iYSj4RAMTxRCwYIoimmCFE1SRR9YEA2GgqFwMBQJheUESEqVQpFgKBwEQRAWwiRC8Xn9HkAoDpfd7rTZnTar3WK1my02s8VmMltNZovRbJ0ByWIzWu1Gu9Pscls9Xrvf7wygHizoDUX8oUggHEUiMSQSlXnEh4U8COry+u1uj9XhMtnsM2brpNE8Nj1zbXL62sTUFUAlYxPvjU1cGpu4NDZ5aWziEohBJqffm565Mm28ajRfkyMRiURMvoAlgFhRzB4MuUIRdyTqjeEBPIEmiSBJhik6ls7E0hkcUEkmm6DTCYpOkFScSMUSiWgcD0eiwVAYxbBAAPH5/F6fz+P1uj0el8vtVCe3x+X1ukH0F0D8GIaGwsFoNIzjcYJIQBLJ54osUypx1Wq5Xq/Ozjbm5mYXFuYNNOpIIfa41xL1mEMeK+px+Fz2y5cvmc3mj/oU1fHJgM1mnZyaiMaiRCqZIgkilSRSRJJIEqkkIBTAJtF4NBKNhCMgMOnKJkqEIiVEZhAQg4TCkDsiIMUiIEXlFI9E45FILAwTYK5IMBQOYiEMxCkB1O8L+HwBMI1yu70ut9fp8jgcLpvDZXM4rXanxe60OJxWp9vm9ti9Poc/4EJQLxb0hSKBcCQQjiCRKBKJIeFIIBT2BUNeNOgJIE6v3+72WBxOk9U+Y7ZOGU3j0zPXpmauTU5fAxOciakrk9NXJqcvT05dmZy+MjVzddp4dcZ41WgeNVnGLLYJm2PC5piSIxFAIghqx0LOUNgdjngiUW8s7scTSCKJEakQSUVIKkqnY3Q6ns7gdDpBpxN0OknRiRSJE0QMT0TieCQaC4UjwVAIxbAAigYQxB8I+Px+TQoE/AgaAHs7HA5FYxEcjyUSeCpF0Gkqm8swTJ5lC6USV6mW640aIJH5+blmc8GQcIxHrWNB8yhqGvWbRl3GcfPU+MsvvVgsFttOl2xh9ta17K33sv/7HbnPrGW//N9nv7S/0ffP9S8+Wl/9cHXV9urqHdXV26qrd1S/uKueLcx+FKe0jo8APM+/fvpUKBzCE3EiRaTIFEml4njM5XbZHXab3WqxWswWs9lsMpmNM6aZGeP09Mz09MzU1PTU1PTk1PTk5NTk5NTExOTExOT4+OT4+MTY+MTY+MT4xNTEjGnG5XZhQTQYwkAwEg4DEolEoloSiUfB0kxMWqOJ4TGYwJJNHMrDmCUir9ogKBZAUL8/4PX63R6fy+11utwOl8fh9jo8PqfX7/QH3AjqxYL+UNgfCgdC4UAoDEjEjwW9KOZBULfP7/B4bU632e4wWu3TZuukyTw+PTM2PTM6NXMNpGnjtWnjtRnTtWnj6IxpzGQeM1vGLNZxi23C5piyO6cdrmmn2+j2mrx+iz9gDaA2FLWjQWcw5AIkEo35YvEAnkASSTRJBFNkOEVGSSpG0XGJRBJ0OilTSSqFJ4k4nojheDQWj0Sj4Ug0FAYhWwiTUjAUDoYjoUg0HI1FYvEojseTyUSKJCiaBGFIocBwXLFU4qvVcr2ukMjCwoIgNA3hqXewiXcCE+94x992jL5lvvrOpbeGXzvxaufp8qm/zH/qy/lP/23hP/5l/nMPhv7in16/dd2pz3x96LZvvf7ZDZNfeKS2+uHqqq3V1TuqX/xBve/R+od/Quv4qDByfsRut0WikWQyAajE7XGH8WSMoKMEFU3CFEmSkURnSoXlhGtSKEb4sZDZYjFbzFgQk6kkFA5FIlJIAhNgE5lHYnE8Fk/E8QSeSOIJIpEgEkkiCedc2plXDAfTrlAwjGFBBBCKz+/2+txev8vnd/n8bn/AE0C8KObHgv5gyB8M+UMhfzAUwDAvgnoCiMvnd3q8dpfbYnearLYZi3XKZJk0msZnjGPTM2PTxtEZ4+iMadRoHjNZxs3WCbN1wmKbtNonJfqYcbpn3B6j22v2+iy+gDWA2BDUjmJOLOgKht2hiCcc9Uajvlg8EMcDcRzFE1iSCBGpUCoVSZFRio5TNJ5OJ9LpRDpDpDMEnSboNEHRBEUlU2SCSCWSBJ5I4okEjifiON6eEgk8mUwQRDKVIiiKTKfpbDaTz+eYAsOyRZ7nKpVSrVZpNGpgbXV+fn5hYaHZbAqCYECunvVfOee5fM7x7mnzxbMTvz336gtHAn5f57lyx8PVz/eXblvP3fL3xT/926duW3HLltX3bFl9zz23fvlP73rqCztrq7ZXb3+osnpb9Yu76317dB75PUIkEnnzzTeDISyOx8G8xuV2RfAUGk0i0QQSSSCRRCCMg+QPx/2hrinmD8V8quQPx9BoIoQTJqvNZrOiGIoFUSyIBYNgjhMMhcEUKQQ+SwGbxOJRcAkJT8QTyUSSSBIkQVIpkiLpNEWnaTpDw0yaomgyRRIEkQScEo2FQ+EgYBME9fkDXn/AA0gkgHgR1Idifin5UMyHoB6/3+31OTxeu8ttdThMVpvRbJk2mSeNpokZwCPG8RnTmNE8brJMWKyTVvuUzTFtd844nEan2+jymNwes9tr8fotvoA1ELAFUAeCObCgEwu6giF3KOwJR7yRqC8a80fjgTiOxHEE8EgiGUwmQ0QqQlJRkorTgEcyyXSGyGRTmSyZyVKZLJXJkOkMlc5Q6TRJp0maJimapKgUTDRJ0SRNk3SaSmfoTDadzWXy+RzDMIUiZJByuVStVrRhyHyzCUikKQiCwffua553X3P+9oTlrRPTF167/Mar/+vffz43N9d5rvzVvvoXH6ndto7787sLf3TL3if+em3z71c0/37FE3+99lN/c/iWNUO3/LehP7vn5H/6xvgXdta+8HBN2/p8v6HvkHs556qsYfmq2tQCyDqxQytBSf/5G5CRcLzfsPb8ko38gJxSY/qpDfvfTn4QmhXMz88fP37M4/WEI+FEAicIAkERBAthMULikV4kIrFGsGcKROLBaGJ0dBRcQUBQBEURDEMxiVawIIhTQlJkHo3FYzgOeYRIESSVomiKTtOZbCaby+byuVw+l2fgayabSWdokkqlSCKRTOB4LBINhUJYMIRiQQRBfQHEhyA+BFW9Ir4A4gkgHr/f5fU5PV6Hy2VzOMw2m8limTGZp0ymSaNpcsY4PmMcN5omTOZJs3XSapuyOWYcTqPTZXJ5LG6vxeO1en02X8DuRxwB1IGgTjTowkLuYNgTinhCEW846otE/dFYIBZHYnEkjqMSg2CJJJZIBJPJEEFEpKlNIp1JZjJEJktmc1QuR+fy6TyTYZhsnskyTI5hcnl1yufyTI5hcgyTZ5g8wzCFAlMoMkW2wHEsoI9KpVytVWUGmZubA3OZZrMJIhFBEERRMHjeecX51nHbhVeMI8fGzx17/YWnL//2rVar1WqJrZbYarXkK7+rt1RWb6189p/4W7/OGgyG5/7rfSNfXTPy1TW3rbhFiU0+8+U///uh1durq7dVZR1iSwTjZNDdAtugRvMqwvJWC1xrVteD2hEw0kRRGXKi/C9fnhblhqIIr1pLJUpDxbXzaw19+7CW2God7zesHMRaLWxfn2HtSAtmzrdaQAZttcTW8X7DykOYXCW2UCgjdSRih1YCN2Ff13PtfL+h75AL2jboUly+QdfkEd1+1Fri9FMb9r+TFFUCGohyE62O2bnZ4eFhlWutiYmJRY7a1NTUlatXMAyLx2NJIonjuM3uCMVSbfGIhkG6sEbUF4x6tckXjGLRpNlqM1vMcFEw4A8E/AgSUNNKMIiFQsFwJByJgpAETGoAj5B0ms5ms7l8rlAsFNkiSCzHsizLFJg8k8tKbJIkEngiBmY6IDZBsQCK+lEUXELyBQI+f8Dr93t8frfX5/R4HC63zemy2uwmi9VoNk+bTJBHjKYJo2nCZJk0W6et9hm70+h0mV1ui8dr8/nt/oAjgDoR1IVibizoCYY8wZA3FIE3p0RjMn2gcRzFcRRPgIQlEsFEIphIBhPJUCIZThIRIhUlqTjkEUAigEEKuUIxV2SZIstwXIHjitrEchzL8SzPczzP8SW+VOLL5VK5Uq5WK7VatV6vNRp1FYPMq8IQBaIoGtxvH3e+ecw88uvpcy9cO/WrXz75bxmaEkV4/ojwTBFFUbz9u+XPPVj63AOl//hXvzEYDM3/awVIBoNh5KtrQH7L6ntu+W9Dd+ys3fH9GjjbRaACjGFXS9Ymiqp6tSA8rUExGHngbQQwEVA16JZGEqgUWyodioKWrFbW4FK7hh5a2TfoEkVRbLkP9a08hIro4EpD/zFRbIkt96E+Q//5Fja4su+QW2yJLdF1qG/lICqih4AMKDH0jwADWmLLPdi3dkQUW6I4Ihm5uGuSWAvyiGz4DbomQpLqOGqiOPXUhv1vJ+S9DIe+RGkS06t6Ae/DwyPf+ta3nn76aVD/9NNPr1+/fnx8otdRY5j8iRMn/AF/OBJOJBIEkXS5XcEIjkaTXXmkWwwS9QajXqxL8ofiPiQ0OnrN6/V6fV6fz+vz+Xx+XyDgDwQCCBJAUQQDPBIORaKRWDwWx2EwkiJTFE2lM+lcPlcoFFiW5XiuVOJLEjieK7LFQoHJ5XOZTJqiSSJFgNvqYrFIOBIKhrBgEIXLseBKB+ARn8fjdboBjzitdofZajWZLTMm05TJNGUyT5nMkybzpMU2bbMbHU6Ty21xe21ev8OPOBHMhQbdEnd45RvbojEl7ojjWBwP4gkMh6wBuSOZDCWSoWQynCTCSSJMEFEiFSOpOEUnMxkimyUBiRSLOZZlWK7I88VSmSuV+UqlVKmUK9VypVquVsvVagWmWrVWqwLiqNfrjUa9MduYnZ2VAxBpKUSZyMiRCDgLDJ53XrVfeNk88uvJ08+/8/L/fPn/+4XYHa3VWyuf/075s/eX/mTlvi2r72nes6J5z4qRr64BPCLHJresGfrirlrfo3X5bJd5BIxY0T3YB6cJhv7jsn50cKVUeEwURXFkrSS09rwoitLIlIboMaikbx8Ku3AdUtQeA2VqnSPS3MRgWDsiHus3rBxERVE81m8w9I+II/2w1Yhip5w/rpWRx7woSn7BUYXu64NddzdSFF2y7/0jSnOZ44Ajg1pHWgqZtOCekfabyloXoDBRdA1+5Q//8NOf/vTq1ftGxRbkkcm3/989e5544okXL+VBS2rmzbGxMafLqT3ILfVRGxoa2rBhwzPPPPPMM89s2LDh5MmT7SSixenTp00mUygUwnE8RaZCoZDH5w/GiZ5U0i0e8XZjE18wGooR165ds9ttXq/H6/X6fD6fT8UjGBoMgvXXSDQGg5EkkUyRYFmEzmQzeSZfKBY4niuXy5VKpVqtVCqVarVaqVRKJZ7j2GKxmM/nMtkMnaZIMgUWTeJ4LBoNR6Sb6FAMQVB/APH7Az6/3+vzS1TisjucVrvdYrWazBajxWK0WI0Wq9Fqm7E7TE6Xxe2xe/0OX8AZQF1o0BMM+8IRfyQaiESRKAw6MEAZEmuEkslwIhlWU4Y2RQkppcgYSeEUnUinU9kclc9nCoUcyzIcXyyVuEqlBJZI5RCj0ag3Zuuzsw0pzc7OQdaQIdNH2yxGjkHUMHguvmZ/6xXL8EsTp4688tRPPDaTKAgi5BlJWhBFUbx9oLx6e/Wz95f++LaNz915X/PuFc27VzzxV2tXrOr/489u/OO/2PjHn934J5/duPI74Tu+X/viD2ravqQzXhjuNxj6jwmCKArOwT5D36BTBCTStw9RmkCmEwRlqKgzBi0LiII0yAUBjNW+QZcoHus3rB1WeQA1CKAh0CDIXAMG9ki/oX9YFAV112oZAfQFhGWdYG8N9xv6R0RBEEVBaDdyWJCEnaIoiOKx/r59qMqpYbV3kIxkR4B6+bBAvwTxWH/fyj5AUujevr59KLD5MIiDzu397lNxUZx6asOGHY+/TYuiQF57cfBFW071OSIU5X0tCqIAe1Hw+uunBgYGBgYGXj/1ughdg0k+TnITDMPOXziPBTE8gZMkSVGU1WqN4CQaTbZTiXaVZNElkijIIFHc7nJPTU3KwYjfD2c3GIYGQ8FwOByNRuPxWDwexxN4MpmEMxqazmQy2RwMRkqlUqVaqalQrVXLlXKpxPM8V2SLeSafzWXTmTRNQzbBE/F4PBaLRSLRcAjEJhiiugvD4/O5vV6X2+NwuuwOh8VuN9sdZrvD4nBaHE6L223zeO0+vxNB3SjmCYZ84Yg/GpO5I4gnQtIMRQ4xIgQRJVJRNVl0TalULJWKp1JxksQpOplOpzJZOp/PFAp5livwPAtuPAWrpOCmj1mZL+YBWUDKANOWhQWZO2T6aGOQdhIRRdHgu3LWeXHIPHJs9OQvn/1//qVRr0pnh3xeCeB/9bbq5zeVV2+rGgyGkb9b0/zaiubXVtxzy5dv+5Nbtqy6Z8uqe+655cu3rBn6/ED5iz+of+mf66IoKv0Kw3AIuQb7DP3DAjxxh9ca+o8JonOwDw5ReGIKAhh+cHVz0CmKAhiEgiDIo1GAal2SBniiCyq1hr69iDQ84FhVuYYMrjT0HxNEURTgaId2CoIgAHknnOkIgiBqZIBrMtcAakDgqBIkfpHpwyUKqkADhEVSF5Jt0v4ZAXtcckTVsH9YEETXYN/KQVQURtb2DR4DeWRwZd+gC1Cz4Q9hPLL6zkdHQTzyVgIeRfTk4MWAIIiCgFtGR8ecTocoQCYAXWqPmnD8lVd27ty5c+fO468cl1yDew+eTqqj1mjMHjt2DEEQHMfBVALFUCQUDsYJLEZ0ssmi126UKzhSimMR/L3L70krI2BZBAsGZQaJ42AuQxCpVIqkSIqm0ul0JpvJ5XIMwxTZIsdx5XK5VqvV6/V6vd5oNBqNRr1eq9VqlUqlVCrxPFcsFpkCk8/nslnIJikpNsHxeDwejcYi0j3+qLx6giA+cLXY43W5PQ63x+HxODxeh8fr8AdcAcSDYt5gyB8OI5EoEo1jcUAfiXAiGUkSUSIVI1JRIhWTeCGWSsVTZDyVihOpOJGKp7SJUMrxFImTZIIkkxSVTKdTWcAjxTzLFjiOlS+1gJUOSBntfAEpQ0Ybd3SNQbQ8Mvqm890z5gsnho/+4r3zr0unURd8flN51dbKbd8aNxgMza+uaH51BfG1VQaDYeSuNWBzy6p7bvvm67dvrnx+oHzbt3hBkEaDMiYFwQl5RFCPE22hIICR0z8sCoKADK4Eg1YevXJGlVdpEGW1giAIArK3zwAjIHVDuXn/MDQTdAS7EwVZJ5QR2mRcgiCo+5Xt1BrWaaQoWakRW2T/KEdEyoG+hvtXDiICMriyf9g12LdyEJHsuaDyUBQmn9qw/y0cbKWnnx+8GBAExnv1vDkrCIJQFTohdfPMM88MDAycO3fu3LlzAwMDzzzzTLtEWztRnJiYmJiYiMfj6XQ6m82SFOlwuSNJOhhPYTEVm8iLrxE8IF3K6ZHiIPnD8WCcMJotTqcjFAqGQqFwGFzojcbj8UQCJ4gkScLrMulMGlyayefBZYhCkS3yPF8qlarVKmCQWQmAU6rVaqVSLpVKPM+zLFsoFhiGAdOcdBrEJmQqRRBEMpHAcTwWj0djsQiY8oTDwVAYrqEgqD+A+AKIF0G8COoFd68FQ4FQBIlEsWgsGMODeCKcSEYSRDRJxAjAFyROUnGJERKkkkmkUolUCl80JUgySZJJkkrRNJXN0rlchmFyLAviERh/NRr1ubnZufk59VSlF2Wojuli9KHwiH/6suvqm+Z3Xn/x33+WTiWbQKmkvinlBUFY9b3qHbvrn/qbp+655cvNv1vR/LsVI3et+d/+4Nbn/st9I3etGblrzW1/csuf3f3a5zeV/+Lb/OceLDWFptAE+ppwnDgEoTm80SANcueTqkFo6NsbEOS+j/UbVg4iTTAw+p50KCOt2RzuN/Q9KQ3RjYa+J51CUxjeaDBsfFloCk3BOdhn2DgMdQnNZjOwt69vL9KENjSbgtCE+mVjmvIADuztM6wdbjabyN4+w73DQHP/MaEpCIJDJXPvsNAUkL19hrXDAqi6d1g1hdTwyEaJLDaC+Eg6dk1VVb/kprx/mpJJTeAIPN7NpiAge/v6Vvb17Q2A/Ma1G/v2IkKzCaz9ykFUPmqCMPnUhg3/doIUBKGZuvrC4BvhZlMIjV24HCwJQrNCCoJ0iKBJ8KidPPnahg0bTp06BapOnTq1YcOGt99+W3vaydNm+J7L5c6cOROLxTKZTD6fLxQKPr8/EidCOBmMp2Q2kQmlIyUQkCJdEhpNIsHIzMxMPB5XJi+EtJKaTmezgDjyTIEpFArFYpFlWY7jOJ7nS6VypVytVWu1GiAReSFgdna20ajX6/VarVqplMvlMs/zHMexbLFQLDAFJp/PZ7PZDOATmiLJFCCUZDKRSOKJRBzHY3E8Fo9Ho9FwJBIMhzElRbBIJBiNBWPxUBwP44lIIhlJErEkiCYAX1AJikpQdIKikxSlJMAOqVQylUosmpIkSZBkkqJSNE1mMjS4AaRYLHAcWyrxlUoZsOfs7CyYv3SudwiCIIhLZY0uPIJYppxj744Ov/bKkadFUWw2m/A8gl3B/6Yg9D1W7/vnusFgeOJLa5t3rWjetWLL7ff8h1s3/tGfb/ijP9/wh//ng//h1g23fSvYt6f2+U3lVd+raAOl4Y2GvicdQrPZbDqelKL0vicdsv7hjVK8v/HlZlMIPAmWJFb2b1zZ96SjKSgaQKYptQK1TaFNrSA0X1ZUDgMjwNrtvcPNlzcaVj4ZaAoqYwwbXwamIlLXTwaabQbLMgGVTBNQlVQF9p3KX0h2zTZVhnuHgdigQy0vtO0fQToIgvoTxPFkn7wTQN4pyTie/M9/8Aef/vSnV61adeejo83mxOEH9z33i//7Bz/4weOPP37OBRQWsffOj42N2b2RpkqxGqVS6b333pNPgmazaTQa5xfmZSOkzzKVAqEpiuK5c+e8Xi9FUfl8nud5giCwYDhK0CGcBAkSSpyQOaVrQmNdiCaapI1GE47jJEnCW0IyMO4AQQfHcTwPeKNUKpfK5XK5UgYLqrVarS6FIeAqJoBEJQ2JSiqQSgCZsGyxWGQYJp/P53K5bDabyWQymTRNUxRFUhRJkimSJGCoItEKjkfj8UgsHonFI3E8gieiiWQsScSShEQfVCJFyQySpOgkTRM0TdB0iqIIKaUoiiBJgiSJVCrZO0EZkoT3oWYymVwuyzB5cBdZqVSqVCq1Wm12dla9etoWSy4HhoDD4pwePfvKr70OW1MQpJkSDHsWFuSZ08KX9jfu2FM3GAzNv13R/NsVlrv+q8Fg+LO7T656qHLbeu4za9hP/ed83w9qf7m/fscj1du3qHkExlELzQVJo6y1ubDQbEqLOgugS5UB7VgA7RfkXLPNYjmv9CIvGfV0TVOv0aKYKVu7oO1qYWGh2RzeuPLJwO+mazd21ARBwDDs8uXLqVSKYRiO40qlktvjwVOZcIIKJ6hQgpIJJYSTQZwM4qkgngLk0pmwOKFmnEiC8iEogiC5XC6fzzMFpgCCDp4rlUrlcnnRzQYAAB90SURBVLkKUKvCRdS6hEajoaUPeTgBKgFrJaBRpVIpS3Mcjuc4jisWi4VCoVBgGIbJ5QCfSJSSSafTNAhVKCpFkkSKJFKpJEEkkgSeJHCCwIlUIkXCRFIJkkpSNCEnOk3Q6RSdTtFpkk6TFC3daUqRFJUiSZAAm3RLkESAPEnD0AyuCrEsy/M82DMgJJHuBLm5POJx26enjj77v+r12sLCQhMuvCzAs0h+bS707Wus/n5NvVD4B5+6a/XWyuotlc9+m/9P67j/40u51durf7m/8YWd1dsfqkjNF8BpKOWk7IKqrtmUBZrqN3lTbtZsNtVNFQ3KKJRO9IW2tou4BoaeIqaysqnuW9Gmu9bTtUZj9uTJk/F4HMQj1WqVIIhQOBIj0oBK1CmUoEIJMpQg1eTSNQVxMoiToQQZIyi73c5Ks5USvIhbBaTRUK98wMuZ8oXMefkrIYonzebCwgKoAlFJrVYDF4PL5TK4wYTnebBowrLFYrFYLBYY8LgviBxkllw2k8mkM3Q6TdNpiqZJikqRFEHC289TFJ2i0jADWEPOgJROUyDRNEXRpBTvAEBCUTEIhFxFkimShDwCZnkMwxSLBcDmICQBu6czJFkuj/i9vssX37186VKz2ZyXdi5YzpX+F8B73/7G6p21O35Qu2N3bfW26u2bK7cPVO74fu0L26srHyzdei/7p3/D3Hof+9ePz67eVvlcf0leEAbv0jUlSZ1Ss9B9a0Huen4eHmpYAurmoTLV0rO2ubp8cdckhW0ZrVq5vw6TddfU+prN5sTEhMViyWQy8vWRWCyGYsFoIhVLpqMEDVKEoCMEFSGoSPL6KZykwkkynCSjiZTX661UFe6oNxrSfVOqcEPtosq2roHgQkdU0kYlMDbh4EwHMEoBgpEASCWbzWWy2Uwmm85k0pAXpAS+56LNk3ATJhDa0DRN0TQlQcMmbWjjEUAl4Go3vFBVhGvMMpXIIUlTtUqyLB5xuQOvnRgiSUrem/KJKB2N+fn5hfn5+WxhdvUjtdu3VVftqK7aVr39ocqqrZU7vl9b9VDl8/3l1Vsrn/kH9k/vZO74fnX1tmq2MAsVzEvvC/MLSlYulj4L4KhSzgH5eva86kSe17SRx6J8IQue9kA7aAsEFndNPu3kHlV9KKNd0jWvu7aIawsLC+l0+vz58yRJMgxTqVRAOJ3L5RAEcTqdNgnWbrBYrRarBcBsMcswScnt8RRZVo47pPsg5hdhCgVtS8QqKgEuqBZKulBJqVTiJMjBCSAUhUuYfD6fy+dzObicks1k0yClpUwmm05naJDoNJ3ulgCVUHQ7kSyFRyiKomkahCSdsxuZSuQ9tnwqMUxOWU68dkp1Js/Pz4M7U+bm5dtT5tTl822Sc+pWXfPaMq38nLayS1Ot1rmumrt11UNOd23+A3dtYWHh7NmzPp8PhCQylVQlVHqjDC6ZlMvlcrlULpVKJV6aWYAV1Eqlop6oaOij/QrEdbAIlQAeqVar0JL2qESJTGQqaY9NYHiSy+ayWbA+q0rpTDqdAQFLGkyFpKQAUkl7TJJSzXG680gblYAr3+rZjbxQAvbe8hdKDCeGznp9gYWFhfm5ufl5QO4wI73JjA9rwcu8sjE/P6/dhm2l9vOqV5X++fk5bT9yG6liDg4vReucenteeZtX96C2TmOK7tqH49rCwgKGYSMjI2C1Vb5rA8zMrzvem9IIl+ddEkmq5i1q/rhB+ujFJpAQVZdvpLvmS2oeWTKVSOEJo2ITVeqklTbQEhankk4SkXlETSXFYrFtoWSu2+zm/VGJ4cy58/Nz87Nzc+D+erAqJb3OSoWzSimomp2VCmZVtbNSszlJwawkLN2/Dwpkgbm5uY4b++eU5urcrEZoVm3SrNogtS1Qh+7ah+7a/Pz8W2+9dfbsWbvdHg6H4/F4MpkkSTKdToNLLYsjp70oIn1wg0/vTCaTyYC6XG5xbbkOLCIDVIJOwLhNpVJJCbgK4AaWWCwWVSESiYR7IBQOyQjCFARPPAAJxVCYOoAgCIIggUAgEAj42wG+ZiQ/G1GDQCAA2mIYBm7bi0ajOI4nEgmCIEiSBCwD9qV6zzA3DoP6bJVXuOEpJBXJp6skMDs7Nydn5Tby+5xSpRKQsrKwkpmFGpVNzYZaobrvOU19m4o5jbm6ax+ya3Nzc/Nzc4EAcv78+TclvCXh7esBiIFWFy5cOH/+/AjA+fPnz5+/cOHChQ6dnXizA70MUDe5cOHChQsXRkZGhoeH33jjjXPnzp09e/bs2bNnzpw5c+bMaQmvv/46eFXjlApDQ0NDp4aGTp0aOjXUCydVeK03Tpw4ceLEbwBeXTKA/IkTJ1577bWTJ08ODQ2dOnXq9OnTZ8+ePXfu3BtvvAF2p7wvl3JcesEAvuw325idnYWr3g3w35idBYvg8DKacjWtAUSAEJCZbUiFki5VFgAIyTqk5tJSe0OpbbTbpPQjmSa3aAAR2Vq5G9ka3bWP0DVwFzZkGxj8yPSkBFNyuDMrRzlSSASjtVk5yFJFaqoQaFbWLAVas4qyWSVMgmpnZ+XulCBQpkjFUE2Ipdik9KO7Bl4MDRVmG51oL5vtKdWlvJvo+xNSZGd7GtGma7ZXRa8y3bXeCt+fkCKru/a77Zqh0QDPLanX6426lG80GvVGowELwJcPYBmsrYP3RqNRrzfA/YKyAlgGpFSNoaBSJ79DTQ3Yex02qjekBCSljutSP5LFdUWuLjkCpHXXdNd01z541wx1LWqq/3bUOnO1HgLtxT1qere5jmRHvlar12tScXedumvdDdNdW0qb60j+vrtmgN9BqNXh1xGkDHivy1ngsfSFhVpN0Qbr65r29Vpd2pAUQo1qlQoUFUq9lKnDziQhYEhd6h4aU2uzQ/56xcfMNeWgKJ8qkPjljx/l86LekD8UpM8A+ZOgofrUUT4eZAn54wcKKx9dDXWX6vYN2SZZIdSoVqnxQP48q7c10l37fXLNAL7QBL7VJH23qVqt1WrKV52UAiBblR7nqGqi3ZSqq2pdVU0PVUWsClVqyqpVqadqTeoQmgQaywqrVZUFVcnwqqrkY+JapVq12mwjw8NDp04NDQ2dGjo1dGpo6BRY0T81BNf4wVo/+IdbsO4UlBpSlcivUHhI3lQKZM1D7U20m0OqjmRdQ6fUPQwpYkOSD+qyId2130/XDPDbkVq0b2vLe9Uu3nbpAkCoh1jv1rWuGx8j19xut8fjmV/QfzVZx+8aDJVqpVKpVqpV8OBbkKtUq9WK6ublqnQnc1XKQqlKtVKtQBXqthVFW7UqPVFXFpRqq6C+KimqSn3Ib1V1/1VJp9K13E7VRPbkY+VatVqdnp5ZWFj4qI+4Dh03HwbpKw2VSqVSLqu+5ABfVN97KJfLkkhZLoMZzbu2YRvKGgGtvJSBHZW7dNBVo9xOeS/Lqj8erlWq1ZmZmY/6cOvQ8YHAUG5HBb7CkQTzsKJSVvJleVspAqNNJSgr0yhXqtTKpSq5Vi0nK1FqtXbIMtLIV4IOTYtK9Wa5BjqpSiyzuGuVStWo84iO31EYwOPnSmXwNKkyyJfLyj/MVORvYgLJUqlcLsni4IuZ4DF2sGEZVJXKkmJJVOpA0lAuVSqVUrlcrlRKZVkblJCVyp1Im3Je6kEy0+F0/vu///uOHTs2bty4Y8eOX/ziF06nqwKUV8pPP/10uVJRu1aSrVuCa5VyZWZmpgI7K99///0PPfRQpVLu5ZpkeblSrRhnjJ0HYGFhoesd06VS6cM/G3ToeH8wlBYB/MkxnuO4n/70p3fdddeRI0fK5XKJh1/m1kj1bt+zmIdUYDabR0ZGrFZruVRuq12COohyuZxOpx9//PGvfe1r69ate+CBBzZs2PDAAw/cd999X/3qV3/yk58wDPPss8/eeeedkgu9+ujpWrlcfvXVV7/yla+89NKvAa0MDAzs3LmzLH+vvLfxlXJ3HqlWqydPDqlL6vX6Cy+8cPKkTiU6PjEw8PCb0LySAVulEihiOfbHP/7xfffd9+CDDz7wwANluYKHz4WQRh/UUeJ55YkRsmr4Vyq11fA8z/OX3nvParG89957FotFEVAJgsJSSeqS18iAl1wut3nz5nXr1m3dunX79u179uz50X//0Z49e7Zv375169b169c/+OCD69at+8d//MdyuaxqCbSWVMZ3d61cKg2/8ca99967cePGe++99/Tp06VS6fDhw3v37i2Xyr1cU5qXy0ZjFx7hef611062Wi35sUK1Wu2FF15otVqvvXZycSq5tMdw93PRm3tCqHRGn7vbsOfSzVWvATb8cwnDWNfyo1PMMuSV6qNTTIuZOqpttgTzZH3q/IeDD7/H5XRp4DjlnOc4nuPAwxV4UMwWi//6r/+6fv36Xbt27dix45VXXilJD7/lefBcbk5qCgrlcp7nOZVyjlfKOLk5x/GlEo+hmM1m8/l8V65csVisfKnEKX1IrTn4xF2pTw6+AJv50r/95N++/e1v79ix40c/+tHk5GSlUqnXG+VyeWJi4l/+5V927dq1fft28ApJAroqmykZ3c01vsRfvHjx3nvv3bZt2969e7dt27Z27dp33323VCr9+tcvliSFba6pfSiXy0ajqfMA8Dz/m9+caLVa8teqZB5ptVq/+c2JRajkk8EjPazEhpVhr84zU0elPDN1VGGMG5WXINOHziOL44b3jxoGrjeKEons3r179+7dx44dq1Qqi8i/b5RKJQzDbDab1+u9fPmy1WrlVY+KWQocDsf69esfeeSRgwcPkiSptrNSqbzyyiu7d+8+ePDgD3/4wx07dtyocp7nR0dH77vvvq1bt+7fv//gwYP79+/funXrunXrAGEtRUm5XDaZuvPIq6/+ptVqSd+6n6vVas+p8Oqrv+l1tfiTzCPas1bZwoZ/3rX8RuWvp2EJ+P3ikWXRSMvAyg+uZVmWhVscyxaLxSeeeAKQyJ49e1QkAuMWjgNvYFCyUjtJG8eyHMtxHKcUcLCA55TggoPRT6lcRlHU4XR4PJ7Lly/brFae4znFIlmjpEvRyXIc9z//x/8YGBh45JFHrl27ViqVoAjHcRx35MiRDRs27N279+DBgwcOHNi+fTvP8VqXlS4UBzi4yfOcyWRat27d5s2bAYkA7N+//6GHHlq/fr3JZOI5Xt4BnGycsks4jmVL5ZLZbO48ADzPHz/+SqvVku44bhQKRZpOy+n48Veq1WrXg9c2QqPP3a08y19LAOoqWKMuUmnp4BFZTkMGPfu6tEetVNkCYqrgQT1OlOL2s1mhiRuVVyThNsgyU0e7TIHkUnX5Ijyiku+MgHpZo9lSG75I70pVr+5V5Ys0WUxbhz3vAwaWZdkifDgczBZZjuN+9tOfARI5cODA/v37N23atGbNmjvvvPO/aHHnnXceOXKEVT9FG6pji5JiVZ6zWq0jHTh//vy77747NTUFnuDkcrkuv3fZ6XTKSqFZkpoiq7Ga49j9+/fv2rXr+9//fqFQkGs5jnvppZcefPDB3bt2/fCHPwQ8smfPHo7likAntLVYVLQVi0VYUSyyHMc5nM5vfOMbAwMD+/btO6jFvn37BgYG1n/jGw6nE7JGEWiTTQPaWJZleb4njxw7dlwUxVo3iKJ47Nhxnue7Hjw1j0Sfu1s1oDVbbRvPXQLve7o2beMRmT4u7TFoK7r1FX3ublno0nNSRmWlikfgsgYc2aoZS8cAV89sbkS+1Uk+P1exWLeZkWaw9+IR7fSp62SqW/9gFUfljBIm9ej951obVbwz3NWWRZosUtV1P94oDGDkw/EjPf+aZdlvfvObu3btOnDggDz8Hn744W1afO973/vud797//33s6pnZy8CjmUvXrxoNpvlJ4bb7PDd4XD4fD5Egt1uv3r1qlYtK7+22cuy7GOPPfboo48++uijHMepG5Qr5boWtVqth7UdhWzR7/c/8MAD/f39cjjzqASwZ/bt29ff33///fcH/P7F9ZVKJYvF0nkAeJ5/6aWXRVGU7orVJFEUX3rp5SXwSMfkQZmUXNrTHp0sUZGaFdoU9uir60yo9+xL+XiUz+luvNDGBEuX19ZqqzQzo/bP+s4KVb5jyC3yUa6Nv4anpo62R2OL9d4RWXUb6lrLejW5jrZlT6IMxUKhWCwUCsViATyotlgsFFiW/eUvf7l79+6DB+Dfo71x+vRplmXhU26BlmIRKi0UoeJisVgssCyLIIjVarHarDar1WazWsHPD9is4HcIIIsEELPZjKIoy7IFybRiAWgGBhZBX+CFZdnHH3/8scce27x5czabkSW7ugZegGWyfYqUbH2xUCwUOY6r1Wrbtm07cODAgYMHdu/efeHNN3mef/PNN3fv3n3g4MEDBw9s27atVqtxHAdaKf0Wpc1isVgs8Dzfi0defPHXoihKt/FokiiKL7746+vzSBeukCp704hmbtKDR5SWMqss0pekUlN9Q+usveOLG5XvqOxcYTk6xWguArXNVLrzSPuIbGlJoU2H3CmIPyTJri16997pjWZi1ZPhNFYvom35azEGhil0RalUev755/fs2XPgwIHHHnvs+PHj8q8OaZ6OUKuVSqVCgWEKDFMogJcC+JnmLmDAlQvVzWowx5dKKILY7bYAglitVgzDeI4rFJiCrEk2lFFvFAoFhmXZoy+8sGvXroGBgeGRkaLyE4pQoihNLqSqgkaXYr2qRsqxbHHLli0HDhwAayvFQpEpFDiO2759OyjcsmULy7IFjccaJcBenuctVmvnAeB5/ujRF0RR5LhSZxJF8ejRFz4AHrm0R73i0TseuUEekSUNXWdKCnqta7SPUmn7RuVhvsdSSauNR7pHEzfOI10Ae2VgJAJsYtRxyRJ61xZgw+oFjsUipSXySNuOej8wSA98LjAF8CZtFws8D6lk3759mzZtOnz4MBidTIFRhGE7qaAgF7ehIBcV5OZKScFqtY5PjPt8PovFiqIoz3GKVllDN72gvc/n27Fjx86dO/v7+4PBYLFYlCWLRTaABDZt2rR5YCCZTCp2M6pXxZR214rF4qZNmwBlDAwMFItFUDgwMAAKN23aVGSLvVyT1fI8b+3BI7/61VFRFKVVak0SRfFXvzp6fR7RTkGkEnmu0TGOe1BEayk8skhf2iKF4zp5pOd6aI8Y4kblu8w2evBIr/lCLx7plF98iZKZOnp0ClMTx/CU1sqevXdnyB5+LNZk0aplrrACGBiGyefzTD7PMEwe/BgYA3+6FJz9zx95fvfu3bt27Vq3bt2hQ4eKBdWPm8ot8gxoL/36D9yEuTz8FQ+lmSLPFIpFk8l08eJFp9NpNptQBOE4Ls+AaoaRu4Em5mVtsskMwxTZ4rPPPvfII4985zvf+fY//dPp06fpNF0sFimKGhoa+uY3v7l+/fqvf/3rb7/zTkFRCduCrNxDm2vFgoZHCoVinmHUhZs2bSoUC11dy0u/AcswDM9zth48cuTI86IoFuC0SpNEUTxy5PmlrLNe2mNoW/vsXgXWWdX1muXUJfDIIn1d2qNe24V5dfyinPXqaYpm3U9V0T5GbkR+sSvAbbJw/VauGO7y8d6xYKpZZ110UtCxxHn0qNqQRXrXLsv28lI73et+w80iVTeFRlqGXD6fy8NfEoTvKjAMw/P8kSNHdu/evXPnzgcffLBQKMi/+6GSzrW9a38gpHdVPs8whUuX3rXb7SajCQEkshTkNErBp/5Pf/rThx9+eGBgYM2aNXfffffX77vva1/72j/8wz8MDAxs3779xz/+cSaTWZJylWuFAqOhjEIhn88XCgVNIVPoriWXl/cqz/M2m63zAPA8/8tfHhFFkWGKnUkUxV/+8shSeKTV80oulGyrUYTvfi56Q/OaRfpSlXbOc9qu+3ZbTWi1V/Qovr68MnOQ0ftzXKu6F3cs4cJrd2gGdLfrO717x5R+VE00l2/b5zXdm/Ss6rKj3g8M6l8IyuXz+Rz4XVLpP5fL5/Mcxx07dmzPnj1DJ4cYppAHxeqfFpKkVaV5qDGnLgfveUUil2MYJhAImE1mBEE5ls23iUsN8uoNRYdcmyswTDabff755x955JFt27Zt3bp18+bNW7Zs2bZt2yOP7HrhhRfA/ELtmuqnkXL5XF42T627wGh4hGGYXC7PdCvsdA3u1Fw+l8vzHGfvwSPPPvvcIr9U9uyzz/XiER29sPyFw08iFvG6V9XN2lGGXDaby+WyUgL5XDabk4pBPc/z1WqF47gcrAUCcmu5IfyDyEo5dQfgJwpVylmW5XiuyLJq1Yo9ijbYWPOShV2CXwQr8SUUw06ePHno0KGf/exnhw8ffv3118ORCF8q5fP5rq4pqru5Bihjz549e/bs2bRpE5NnAPe1F/ZwTS7iOM5q6z6v+cUvDg8OHuqVDh9+SueRG8TvJ428Dx65aTvKIP0aYQd6lWtqcl2Lu5cuFddrkevYzMmluWwWBlAl6dEDYKK0xB46Xcvn8+pnIzL5fGdhu/5u4DjOZrN3HoBqtZpMJsHPVnYClPe6n1WHDjXeRzxys2DIZLPZbAb+ZcEGyGUymUw2A39MFeSyWemHVeX3bFb6qVWgJguks7CJokrRkM0qxVlJVmqsVi21klTJCkACWUkjVCqZLKn5uLjGcZzd3mVes7CwUK1WO74mrKBarepPY9TxMYchk85Iv8OcAb96LiGtymdksUx72fWh1ZNub7WIljR8TWfSGsF0R6MuStIfK9dYlnU6naIoftRHXIeOmw9DOpNOp9OZtDxcwWgAG+l0RvqJd62UJAOrgJQkm86kNUVyeYdKeZDLVVC7ShEYnGkVHSgGSUrkjjJyJqMq/Di4VigUwpEwjuOCIHzUB12HjpsMQzpNp2n4kk6n0zT8B29yDa0qhRmYp9NpmqbTaZpWl6ZhOS0rlXSrxNKwqbZbuUrVG9Cv6ppuE6TbzKQVrz4ermUyGY7jotGI0+m02+x2u90mvdltNmkDFshvNjusBXKgwgbyNrvSyqZpJ9fYVKWyfjvszWYDXdvVEqDc1m6ITWudWkKtV3nRXfv9cs1A02kaDgo4bGgZYDCAnLpcrqfTUkt5Q6nTiqZleXV7pUhuDPtUKVLUa7Wn1Zl2s1TyHxfXMtksy7Ll8qLPnNeh4xMIA01RNEXTNEWBf5qmKWU4UBRF0bScYCVF0xSskuoULRQltwf1khhUL4nSlKRL6Qi2kjWroailFQWUlKclM2An0BTdNd013bUPwTUDBbap7u+LZOQCJU/Lr3RnrdyO1sjT7XLSPlOV0l20UIuA7rahu9beXncNmq27ppS+T9cMJEWSJEVSJEVRFElSFEmSFAU24RvclvOwiiSBvNRCbgvLYCVsDCVVGkm5S0rdIWxFajqTWkpdyhaRimmSE6rmumu6a7prH4ZrBhLYCC1Tg2or1GY10hoxyQmlFHqg1QTdl63V9kGpBdtaStttBlNqSUr9rrumu6a79oG6ZnjjjWE96UlPelpOMnzUF5516NDxiYfOIzp06FgudB7RoUPHcqHziA4dOpYLnUd06NCxXOg8okOHjuVC5xEdOnQsFzqP6NChY7nQeUSHDh3Lhc4jOnToWC50HtGhQ8dyofOIDh06lgudR3To0LFcdOGRzJnNhq7YfCazeOV1oW0Nm3QtfD+wHO5hVrcKg+GwpZtVcunysCSn2namWkqqWsbu0KHjQ0PPeERzjrefzYtWXgfKoFY17Fr4PrCIYWoy6UIWlsM3fcwuzanr7A+dSXR8AtB7XqMekh3jbtHKxfGB8oiWLtp0qao6bbYcvukDdmlOKbtS5xEdn1QsiUc6T+WPL49oTOtNJG01mTObb/54vTk8cpMmWjp0fID43eORxWYwvYjkA6GR5fCI0lYPR3R8AvAB8ciSZhdL4hHNGukSB1UvIum1etKDRhbruts6qiQvifZ0SkNnlq48oq+z6vgk4QPgEThKQLFmQ129FB6RetGoWsrI6m5e5szmzYcPd3plOdx7AWixrjVGd2HOrk7Jph22tBZbF4Y1+qxGxycBS1tnXRSaU73jcxQWKGNkyTzSS9VSBle3RRIQdXTSYxcaWVrXndeLgRuLxSPtMUtvurYc1mlExycFNzkekYdOx80Z6k//JfFIlxWCTu1LsR4qyJzZ3B4CSDeX9Iiortf1onuoq1NKC02U1F3JB3AlWoeODwY3l0cWi2EksSXyiFKi6O9W1hNta6oSjbQ7thiNXKdrlaKu9izNqZ48olisQ8fHHB8Uj/T+JP2weES72npGNSjVnm3e3Knrxnmku7fL5JGW5Ywejuj4ZOADi0d6jvQPjUd6X2+5zo3wHxce0aHjk4IPan2kY9XwTMe6xw2vj3RbXVgUPV24Dt8tsesb55FuLXQe0fHJx82+L14TA0g1mpn+kq/X9L60seRlA7lFzy8IdVe1tK5vnEe68VF3LTfuqw4dHx1u/vf0un25tnvIct37R6RSzU0cNzSyet6FASquv4qzWNfXu191cU+19661Serfr9HxicIH89yAXrezdrY+bOle2FXV+/l0thzu3ipzZvP1huhiXXfZD13vo+lWrQ3mOm6w0cro8YiOTwD05xjp0KFjudB5RIcOHcuFziM6dOhYLnQe0aFDx3Kh84gOHTqWC51HdOjQsVzoPKJDh47lQucRHTp0LBc6j+jQoWO50HlEhw4dy4XOIzp06FgudB7RoUPHcqHziA4dOpYLnUd06NCxXOg8okOHjuVC5xEdOnQsFzqP6NChY7nQeUSHDh3Lxf8Pmj+jnhzrBu4AAAAASUVORK5CYII=" /></p>
<p><strong>( 3 ) Convert to Eclipse</strong></p>
<ul>
<li>To have better editing for the project you can imported to Eclipse.</li>
<li>To convert Maven based project into Eclipse project we can run the following Maven command:</li>
</ul>
<pre>&gt;mvn eclipse:eclipse -Dwtpversion=2.0</pre>
<p><span style="color: #888888;"><em>Before, executing the command add the following to pom.xml under &lt;plugins&gt;</em></span></p>
<pre class="brush: xml; gutter: true">&lt;plugin&gt;
          &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
          &lt;configuration&gt;
                &lt;source&gt;1.6&lt;/source&gt;
                &lt;target&gt;1.6&lt;/target&gt;
          &lt;/configuration&gt;
&lt;/plugin&gt;</pre>
<p><img alt="" src="data:image/png;base64,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" /></p>
<ul>
<li>Now, open Eclipse&gt; File &gt;&gt; Import.. &gt;&gt; General &gt;&gt; Existing Project into Workspace</li>
<li>Select the project &#8220;hello-webapp&#8221;</li>
<li>Finish</li>
</ul>
<p><img alt="" src="data:image/png;base64,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" /></p>
<p><span style="color: #888888;"><em>You can Import it as an existing <strong>General</strong> project or as an existing <strong>Maven</strong> project if you have <strong>m2e</strong> Maven eclipse plugin installed on your eclipse.</em></span></p>
]]></content:encoded>
			<wfw:commentRss>http://hmkcode.com/create-web-app-using-maven-jetty-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mybatis + Spring (XML &#124; Annotation) Mapper</title>
		<link>http://hmkcode.com/mybatis-spring-xml-annotation-mapper/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mybatis-spring-xml-annotation-mapper</link>
		<comments>http://hmkcode.com/mybatis-spring-xml-annotation-mapper/#comments</comments>
		<pubDate>Fri, 03 May 2013 19:43:34 +0000</pubDate>
		<dc:creator>hani.hmk</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[myBatis]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[@Insert]]></category>
		<category><![CDATA[@Select]]></category>
		<category><![CDATA[H2]]></category>
		<category><![CDATA[mybatis-spring]]></category>

		<guid isPermaLink="false">http://hmkcode.com/?p=292</guid>
		<description><![CDATA[Here we will see what we need to do to connect to a relational database &#8220;MySql, Oracle, H2..etc&#8221; using myBatis with Spring framework &#38; how to implement mappers using xml or annotation such as @Select, @Insert,&#8230;.etc. For the sake of simplicity I have used H2 embedded database so you can run the sample code. However, [...]]]></description>
				<content:encoded><![CDATA[<p>Here we will see what we need to do to connect to a relational database &#8220;MySql, Oracle, H2..etc&#8221; using myBatis with Spring framework &amp; how to implement mappers using xml or annotation such as @Select, @Insert,&#8230;.etc. For the sake of simplicity I have used <a href="http://www.h2database.com/html/main.html">H2 embedded database</a> so you can run the sample code. <em>However, you can use this sample code to run with MySql or any other relational database.</em></p>
<p><strong>Source Code @ <a href="https://github.com/hmkcode/Spring-Framework/tree/master/spring-mybatis">github</a></strong></p>
<pre>Note: If you have Maven you can run this sample code directly using 
../spring-mybatis&gt;mvn exec:java</pre>
<p><a href="http://hmkcode.com/wp-content/uploads/2013/04/mybatis-spring.png"><img class="aligncenter size-full wp-image-293" alt="mybatis-spring" src="http://hmkcode.com/wp-content/uploads/2013/04/mybatis-spring.png" width="528" height="84" /></a></p>
<p><strong>Objectives</strong>:</p>
<ul>
<li>How to use MyBatis with Spring framework?</li>
<li>How to implement mapper using xml or annotation @Select, @Insert&#8230;?</li>
</ul>
<p><span id="more-292"></span></p>
<p><strong>Environment</strong>:</p>
<ul>
<li>Eclipse</li>
<li>Maven (optional to get need jar files)</li>
<li>H2 embedded database (MySql or Oralce)</li>
</ul>
<p><strong>Libraries:</strong></p>
<ul>
<li><a href="http://www.springsource.org/spring-framework">Spring Framework</a></li>
<li><a href="http://code.google.com/p/mybatis/">myBatis</a></li>
<li><a href="http://code.google.com/p/mybatis/downloads/list?can=3&amp;q=Product%3DSpring">myBatis for Spring</a></li>
<li><a href="http://www.h2database.com/h2-2013-03-17.zip">H2 library </a></li>
</ul>
<p><span style="color: #888888;"><em>refer to <a href="https://github.com/hmkcode/Spring-Framework/tree/master/spring-mybatis">pom.xml or .classes</a> for the complete list of dependencies/jar files.</em></span></p>
<p>To use mybatis + Spring you need two things;</p>
<ol>
<li>Spring xml config files to create &#8220;datasoruce, sqlSessionFactory &amp; Mapper&#8221;</li>
<li>Java interface or &#8220;Mapper&#8221; + (<em>if needed) an xml file &#8220;contains sql statements&#8221;</em></li>
</ol>
<p><strong>( 1 ) Java Project Structure</strong></p>
<p>The structure is following Maven default structure, however you can change it.</p>
<p><img alt="" src="data:image/png;base64,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" /></p>
<ul>
<li><em>Database table structure for this example is as following</em></li>
</ul>
<pre>CREATE TABLE person (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255));</pre>
<p><strong>( 2 ) Spring-config.xml</strong></p>
<p>Here we need to define 3 beans</p>
<ol>
<li>datasource</li>
<li>sqlSessionFactory</li>
<li>Mapper</li>
</ol>
<pre class="brush: xml; gutter: true">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans.....&gt;

  &lt;context:annotation-config /&gt;
  &lt;tx:annotation-driven /&gt;

      &lt;!-- step 1 datasource --&gt;
    &lt;jdbc:embedded-database id=&quot;dataSource&quot; type=&quot;H2&quot; &gt;
        &lt;jdbc:script location=&quot;classpath:schema.sql&quot;/&gt;
        &lt;jdbc:script location=&quot;classpath:test-data.sql&quot;/&gt;
    &lt;/jdbc:embedded-database&gt;

     &lt;!-- step 2 sqlSessionFactory --&gt;
    &lt;bean id=&quot;sqlSessionFactory&quot; class=&quot;org.mybatis.spring.SqlSessionFactoryBean&quot;&gt;
    	&lt;property name=&quot;dataSource&quot; ref=&quot;dataSource&quot; /&gt;
  	&lt;/bean&gt;

     &lt;!-- step 3 mapper --&gt;
  	&lt;bean id=&quot;mapper&quot; class=&quot;org.mybatis.spring.mapper.MapperFactoryBean&quot; &gt;
    	&lt;property name=&quot;mapperInterface&quot; value=&quot;com.hmkcode.spring.mybatis.mapper.Mapper&quot; /&gt;
    	&lt;property name=&quot;sqlSessionFactory&quot; ref=&quot;sqlSessionFactory&quot; /&gt;
  	&lt;/bean&gt;

  &lt;bean id=&quot;service&quot; class=&quot;com.hmkcode.spring.mybatis.service.Service&quot; /&gt;

&lt;/beans&gt;</pre>
<p><strong>For step 1:</strong></p>
<p>It is the only place you need to change if you would like to use another database. For example if we want to use <em><strong>MySql</strong> </em>we will change the <em>datasource</em> part as following:</p>
<p><em>Note: If you want to use MySql do not forget to add the <a href="http://dev.mysql.com/downloads/connector/j/">mysql jdbc driver</a> &#8220;jar&#8221; to the classpath or <a href="http://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.24">dependency to pom.xml</a>.</em></p>
<pre>    &lt;!-- bean id=&quot;dataSource&quot;&gt;
       &lt;property name=&quot;driverClassName&quot; value=&quot;com.mysql.jdbc.Driver&quot; /&gt;  
       &lt;property name=&quot;url&quot; value=&quot;jdbc:mysql://localhost:3306/database&quot; /&gt;  
       &lt;property name=&quot;username&quot; value=&quot;root&quot; /&gt;  
       &lt;property name=&quot;password&quot; value =&quot;&quot; /&gt; 
    &lt;/bean --&gt;</pre>
<p><strong>For step 2:</strong></p>
<p>We are passing datasource created in step 1 as property of SqlSessionFactoryBean class. Nothing else need to be done! really easy</p>
<p><strong>For step 3:</strong></p>
<p>Here we will pass two things the sqlSessionFactory from step 2 + java interface &#8220;Mapper.java&#8221; which we are going to code!</p>
<p><strong>( 3 ) Mapper.java (Java Interface) + <em>XML file (if needed)</em></strong></p>
<ul>
<li>Mapper is the place where we are going to link to our SQL statement written within xml file or in annotations.</li>
<li> If you need to write SQL statement in XML, then you need to add the xml file in the same class path as the java interface.</li>
</ul>
<p><strong>Mapper.java</strong></p>
<pre class="brush: java; gutter: true">package com.hmkcode.spring.mybatis.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.hmkcode.spring.mybatis.vo.Person;


public interface Mapper {

	  
	/******************************************
	* Retrieves the List of person 
	* @return person list
	*/
	//SQL query in xml &quot;Mapper.xml&quot;
	public List&lt;Person&gt; selectAllPerson();
	/******************************************
    * Retrieves a person 
    * @param person id
    * @return person
    */
    //SQL query using annotation
    @Select(&quot;SELECT * FROM person&quot;)
    public List&lt;Person&gt; selectAllPerson2();
  
    /******************************************
    * Retrieves a person 
    * @param person id
    * @return person
    */
    //SQL query using annotation
    @Select(&quot;SELECT * FROM person WHERE id = #{id}&quot;)
    public Person selectPerson(@Param(&quot;id&quot;) int id);
  
    /******************************************
    * Insert a person 
    * @param person
    * @return int
    */
    @Insert(&quot;INSERT INTO person (name) VALUES (#{name})&quot;)
    public int insertPerson(Person person);
}

</pre>
<ul>
<li>For the method selectAllPerson() the SQL statement is going to be in the xml file.</li>
</ul>
<p><strong>Mapper.xml</strong></p>
<pre class="brush: xml; gutter: true">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE mapper PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot; &quot;http://mybatis.org/dtd/mybatis-3-mapper.dtd&quot;&gt;
 
&lt;!-- Mapper.java namespace --&gt;
&lt;mapper namespace=&quot;com.hmkcode.spring.mybatis.mapper.Mapper&quot;&gt;
&lt;!-- Person.java namespace --&gt;
    &lt;resultMap type=&quot;com.hmkcode.spring.mybatis.vo.Person&quot; id=&quot;Person&quot;&gt;
        &lt;!-- map table &quot;person&quot;column to class &quot;Person&quot; property --&gt;
        &lt;id column=&quot;ID&quot; property=&quot;id&quot;  /&gt;
        &lt;result property=&quot;NAME&quot; column=&quot;name&quot;/&gt;   
    &lt;/resultMap&gt;
    
    &lt;select id=&quot;selectAllPerson&quot; resultMap=&quot;Person&quot;&gt;
    	SELECT * FROM person
    &lt;/select&gt;
&lt;/mapper&gt;</pre>
<p><strong>( 4 ) Other .java &amp; .sql files</strong></p>
<ul>
<li><strong>Service.java</strong>: is just a helper java class wrapping Mapper.java methods.</li>
</ul>
<pre class="brush: java; gutter: true">package com.hmkcode.spring.mybatis.service;

import ...

public class Service {
  
  @Autowired 
  private Mapper mapper;
 
  public List&lt;Person&gt; selectAllPerson() {
  	return mapper.selectAllPerson();
  }
  public Person selectPerson(int id) {
  	return mapper.selectPerson(id);
  }
  public int insertPerson(Person person){
	return mapper.insertPerson(person);
  }
}</pre>
<ul>
<li><strong>Person.java</strong>: is POJO plain java object to map data from/to it.</li>
</ul>
<pre class="brush: java; gutter: true">package com.hmkcode.spring.mybatis.vo;


public class Person 
{
  
  private int id;
  private String name;
  
 //getters &amp; setters
}</pre>
<ul>
<li><strong>App.java</strong>: runs the application, load spring-config.xml and perform some db operations.</li>
</ul>
<pre class="brush: java; gutter: true">package com.hmkcode.spring.mybatis;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.hmkcode.spring.mybatis.service.Service;
import com.hmkcode.spring.mybatis.vo.Person;


public class App 
{
  private static Log log = LogFactory.getLog(App.class);

    public static void main( String[] args )
    {

      ApplicationContext cxt = new ClassPathXmlApplicationContext(&quot;spring-config.xml&quot;);
      Service service = (Service) cxt.getBean(&quot;service&quot;);
  	
      log.info(&quot;Running App...&quot;);

        System.out.println(&quot;List&lt;Person&gt; persons = service.selectAllPerson()&quot;);
        List&lt;Person&gt; persons = service.selectAllPerson();
        System.out.println(&quot;-&gt; &quot;+persons+&quot;\n&quot;);
                          
        System.out.println(&quot;Person person = service.selectPerson(2)&quot;);
        Person person = service.selectPerson(2);
        System.out.println(&quot;-&gt; &quot;+person+&quot;\n&quot;);
                                                  
        System.out.println(&quot;service.insertPerson(person)&quot;);
        person.setName(&quot;Inserted person&quot;);
        service.insertPerson(person);
        System.out.println(&quot;-&gt; inserted...&quot;+&quot;\n&quot;);
                                                                                
        System.out.println(&quot;List&lt;Person&gt; persons = service.selectAllPerson()&quot;);
        persons = service.selectAllPerson();
        System.out.println(&quot;-&gt; &quot;+persons+&quot;\n&quot;);

    }
}</pre>
<ul>
<li>schema.sql &amp; test-data.sql: used by H2 database to build data temporarily in the memory.</li>
</ul>
<pre class="brush: sql; gutter: true">schema.sql
CREATE TABLE person (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255));

test-data.sql
INSERT INTO person (id,name) VALUES (1, &#039;person-1 name&#039;)
INSERT INTO person (id,name) VALUES (2, &#039;person-2 name&#039;)
INSERT INTO person (id,name) VALUES (3, &#039;person-3 name&#039;)
INSERT INTO person (id,name) VALUES (4, &#039;person-4 name&#039;)
INSERT INTO person (id,name) VALUES (5, &#039;person-5 name&#039;)
INSERT INTO person (id,name) VALUES (6, &#039;person-6 name&#039;)</pre>
<p>Note: If you have Maven you can run this sample code directly using Maven command below.</p>
<pre>
../spring-mybatis&gt;mvn exec:java</pre>
<p><strong>Source Code @ <a href="https://github.com/hmkcode/Spring-Framework/tree/master/spring-mybatis">github</a></strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://hmkcode.com/mybatis-spring-xml-annotation-mapper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Run &#8220;Execute&#8221; Java Main Class Using Maven Command</title>
		<link>http://hmkcode.com/how-to-run-execute-java-main-class-using-maven-command/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-run-execute-java-main-class-using-maven-command</link>
		<comments>http://hmkcode.com/how-to-run-execute-java-main-class-using-maven-command/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 15:30:53 +0000</pubDate>
		<dc:creator>hani.hmk</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[exec:java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://hmkcode.com/?p=288</guid>
		<description><![CDATA[If you create a java project using Maven you can run it using Maven. Objective: How to run java main class using Maven? Environment: Maven ( 1 ) The Command project_folder&#62;mvn exec:java ( 2 ) pom.xml &#8220;needs to know about the main class&#8220; As we can see from the command we did not mention the [...]]]></description>
				<content:encoded><![CDATA[<p>If you create a java project using Maven you can run it using Maven.</p>
<p><img id="irc_mi" alt="" src="http://t2.gstatic.com/images?q=tbn:ANd9GcQK9jeZ9aNjpSVaAwO8XoGolzjCr9D7AU-nqzHbkuLYjc2GD7tXVg" width="235" height="90" /></p>
<p><strong>Objective:</strong></p>
<ul>
<li>How to run java main class using Maven?</li>
</ul>
<p><span id="more-288"></span></p>
<p><strong>Environment:</strong></p>
<ul>
<li>Maven</li>
</ul>
<p><strong>( 1 ) The Command</strong></p>
<pre>project_folder&gt;mvn exec:java</pre>
<p><strong>( 2 ) pom.xml &#8220;<em>needs to know about the main class</em>&#8220;</strong></p>
<ul>
<li>As we can see from the command we did not mention the main class, so how Maven knows which class to run? The answer in the pom.xml.</li>
<li>We need to add some instruction to the pom.xml to be able to execute the main class.</li>
<li>We need to add the below xml segment to the pom.xml.</li>
</ul>
<pre class="brush: xml; gutter: true">...
&lt;build&gt;
    &lt;plugins&gt;
    	&lt;plugin&gt;
      	&lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
      	&lt;version&gt;2.0.2&lt;/version&gt;
      	&lt;configuration&gt;
        		&lt;source&gt;1.6&lt;/source&gt;
        		&lt;target&gt;1.6&lt;/target&gt;
      	&lt;/configuration&gt;
     &lt;/plugin&gt;
     	&lt;plugin&gt;
      	&lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
      	&lt;artifactId&gt;exec-maven-plugin&lt;/artifactId&gt;
      	&lt;configuration&gt;
             &lt;mainClass&gt;com.hmkcode.MainClassName&lt;/mainClass&gt;
      	&lt;/configuration&gt;
     	&lt;/plugin&gt;
    &lt;/plugins&gt;
   &lt;/build&gt;
...</pre>
<p><strong>( 3 ) Example</strong></p>
<p>If we have the following simple project with a main class &#8220;App.java&#8221;</p>
<p><span style="color: #888888;"><em>&#8220;I have converted Maven project to Eclipse just to show the structure&#8221;</em></span></p>
<p><img alt="" src="data:image/png;base64,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" /></p>
<p>Now I will open the pom.xml file and add the above xml segment to the it.</p>
<pre class="brush: xml; gutter: true">&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

  &lt;groupId&gt;com.hmkcode&lt;/groupId&gt;
  &lt;artifactId&gt;maven-run-main-class&lt;/artifactId&gt;
  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
  &lt;packaging&gt;jar&lt;/packaging&gt;

  &lt;name&gt;maven-run-main-class&lt;/name&gt;
  &lt;url&gt;http://maven.apache.org&lt;/url&gt;

  &lt;properties&gt;
    &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
  &lt;/properties&gt;

  &lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;junit&lt;/groupId&gt;
      &lt;artifactId&gt;junit&lt;/artifactId&gt;
      &lt;version&gt;3.8.1&lt;/version&gt;
      &lt;scope&gt;test&lt;/scope&gt;
    &lt;/dependency&gt;
  &lt;/dependencies&gt;

  &lt;build&gt;
    &lt;plugins&gt;
    	&lt;plugin&gt;
      	&lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
      	&lt;version&gt;2.0.2&lt;/version&gt;
      	&lt;configuration&gt;
        		&lt;source&gt;1.6&lt;/source&gt;
        		&lt;target&gt;1.6&lt;/target&gt;
      	&lt;/configuration&gt;
     &lt;/plugin&gt;
     	&lt;plugin&gt;
      	&lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
      	&lt;artifactId&gt;exec-maven-plugin&lt;/artifactId&gt;
      	&lt;configuration&gt;
             &lt;mainClass&gt;com.hmkcode.App&lt;/mainClass&gt;
      	&lt;/configuration&gt;
     	&lt;/plugin&gt;
    &lt;/plugins&gt;
   &lt;/build&gt;

&lt;/project&gt;</pre>
<p>Now, go to the project directory &#8220;<em>maven-run-main-class</em>&#8221; using the command prompt type the command:</p>
<pre>..\maven-run-main-class&gt;mvn exec:java</pre>
<p><a href="http://mojo.codehaus.org/exec-maven-plugin/">For more info about exec Maven plugin&#8230;</p>
<p></a></p>
]]></content:encoded>
			<wfw:commentRss>http://hmkcode.com/how-to-run-execute-java-main-class-using-maven-command/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
