<?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>Valdemar Jr</title>
	<atom:link href="http://valdemarjr.net/feed" rel="self" type="application/rss+xml" />
	<link>http://valdemarjr.net</link>
	<description></description>
	<lastBuildDate>Sun, 11 Sep 2011 21:22:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Templates de projetos com archetype:generate do maven</title>
		<link>http://valdemarjr.net/2011/09/11/templates-de-projetos-com-archetypegenerate-do-maven.html</link>
		<comments>http://valdemarjr.net/2011/09/11/templates-de-projetos-com-archetypegenerate-do-maven.html#comments</comments>
		<pubDate>Sun, 11 Sep 2011 21:22:06 +0000</pubDate>
		<dc:creator>Valdemar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://valdemarjr.net/?p=224</guid>
		<description><![CDATA[Percebo alguns desenvolvedores e gerentes reclamando sobre criar projetos web em java: &#8220;É muito complexo&#8220;, &#8220;Dá muito trabalho devido aos arquivos de configuração&#8220;, &#8220;Demora para começar a desenvolver&#8220;, posso até concordar, mas existe uma alternativa: Archetype Maven Plugin. Archetype consiste em um jar de projeto desenvolvido com Apache Velocity.  É uma forma bastante interessante para criar projetos maven, baseados em [...]]]></description>
			<content:encoded><![CDATA[<p>Percebo alguns desenvolvedores e gerentes reclamando sobre criar projetos <del>web</del> em java: &#8220;<em>É muito complexo</em>&#8220;, &#8220;<em>Dá muito trabalho devido aos arquivos de configuração</em>&#8220;, &#8220;<em>Demora para começar a desenvolver</em>&#8220;, posso até concordar, mas existe uma alternativa: <a href="http://maven.apache.org/archetype/maven-archetype-plugin/" target="_blank">Archetype Maven Plugin</a>.</p>
<p>Archetype consiste em um jar de projeto desenvolvido com <a href="http://velocity.apache.org/" target="_blank">Apache Velocity</a>.  É uma forma bastante interessante para criar projetos <a href="http://maven.apache.org/" target="_blank">maven</a>, baseados em templates/modelos, rapidamente, onde são informados apenas a hierarquia de pacotes, nome do projeto(archetype) e a versão.</p>
<p>Eu utilizo muito os <a href="http://maven.apache.org/archetype/maven-archetype-plugin/" target="_blank">Archetypes</a> quando quero testar algum framework, tentar simular algum erro postado em listas de discussões ou criar exemplos para o blog. Podendo ser utilizado até mesmo em um projeto da sua empresa.</p>
<p>Se você quer padronizar o desenvolvimento de seus projetos, você pode utilizar uma das opções de archetypes disponíveis. Para criar seu projeto ou ver os archetypes disponíveis para executar o comando:</p>
<blockquote><p>mvn archetype:generate</p></blockquote>
<p>Após executar esse comando irão aparece os archtypes dos projetos, existentes em <a href="http://www.springsource.com/" target="_blank">Spring</a>, JSF, <a href="http://www.oracle.com/technetwork/java/javaee/ejb/index.html" target="_blank">EJB</a>, SWING, desenvolvimento de plugins, javascript, <a href="http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html" target="_blank">Spring-MVC</a>, <a href="http://seamframework.org/Weld" target="_blank">Weld</a> e a integração entre esses projetos. Bastando apenas definir a hierarquia de pacote, a versão e o nome do projeto. Veja:</p>
<p><a href="http://valdemarjr.net/2011/09/11/templates-de-projetos-com-archetypegenerate-do-maven.html/screenshot" rel="attachment wp-att-225"><img class="alignleft size-medium wp-image-225" title="Screenshot" src="http://valdemarjr.net/wp-content/uploads/2011/09/Screenshot-300x95.png" alt="" width="300" height="95" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Crie seus projetos utilizando <a href="http://maven.apache.org/archetype/maven-archetype-plugin/" target="_blank">Archetype Maven Plugin</a> e altere como quiser.</p>
]]></content:encoded>
			<wfw:commentRss>http://valdemarjr.net/2011/09/11/templates-de-projetos-com-archetypegenerate-do-maven.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testes de unidade do Selenium no eclipse</title>
		<link>http://valdemarjr.net/2011/05/03/testes-de-unidade-do-selenium-no-eclipse.html</link>
		<comments>http://valdemarjr.net/2011/05/03/testes-de-unidade-do-selenium-no-eclipse.html#comments</comments>
		<pubDate>Wed, 04 May 2011 02:17:20 +0000</pubDate>
		<dc:creator>Valdemar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Testes]]></category>
		<category><![CDATA[apache tomcat]]></category>
		<category><![CDATA[Cargo]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[Testes de unidade]]></category>

		<guid isPermaLink="false">http://valdemarjr.net/?p=218</guid>
		<description><![CDATA[Mais uma vez falando sobre o Selenium. Como citei em outro post sobre como executar testes do Selenium dentro do ciclo de vida do maven, mas implementar um novo teste de uma tela, por exemplo, não é muito eficiente executar todos os testes, como são executados dentro do ciclo de vida do maven, para executar [...]]]></description>
			<content:encoded><![CDATA[<p>Mais uma vez falando sobre o <a href="http://seleniumhq.org/" target="_blank">Selenium</a>. Como citei em outro post sobre como executar testes do <a href="http://seleniumhq.org/" target="_blank">Selenium</a> <a href="http://valdemarjr.net/2011/03/03/testes-funcionais-com-selenium-2-0-e-cargo-maven-plugin.html" target="_blank">dentro do ciclo de vida do maven</a>, mas implementar um novo teste de uma tela, por exemplo, não é muito eficiente executar todos os testes, como são executados <a href="http://valdemarjr.net/2011/03/03/testes-funcionais-com-selenium-2-0-e-cargo-maven-plugin.html">dentro do ciclo de vida do maven</a>, para executar seus testes.</p>
<p>Para resolver esse problema seria executar um teste específico do <a href="http://seleniumhq.org/" target="_blank">Selenium</a> dentro do Eclipse como se fosse um teste de unidade do <a href="http://valdemarjr.net/2011/03/31/converter-testes-com-junit-3-e-4-por-testng.html" target="_blank">JUnit</a> ou <a href="http://valdemarjr.net/2010/02/02/tao-simples-quanto-criar-um-teste-testng.html" target="_blank">TestNG</a>.</p>
<p>Inicialmente vamos criar uma classe abstrata onde todos os testes do <a href="http://seleniumhq.org/" target="_blank">Selenium</a> deverão estender essa classe abstrata. Essa classe terá toda a infra-estrutura para que os testes sejam executados. Exemplos de configurações feitas por essa classe serão iniciar/finalizar a execução do servidor de aplicação onde será feito o deploy da aplicação e configurar o <a href="http://seleniumhq.org/" target="_blank">Selenium</a> server para que seja instanciado sua engine.</p>
<p>Para o gerenciamento do servidor de aplicação iremos utilizar as classes do <a href="http://valdemarjr.net/2011/03/03/testes-funcionais-com-selenium-2-0-e-cargo-maven-plugin.html" target="_blank">Cargo</a> e o servidor de aplicação utilizado será o <a href="http://tomcat.apache.org/download-60.cgi" target="_blank">Tomcat 6x</a>. Em seguida será necessário adicionar as dependências do <a href="http://valdemarjr.net/2011/03/03/testes-funcionais-com-selenium-2-0-e-cargo-maven-plugin.html" target="_blank">Cargo</a> e o <a href="http://seleniumhq.org/" target="_blank">Selenium</a> com o escopo de teste para ambos. Essas dependências poderão ser adicionadas no classpath do Eclipse ou ao pom.xml do <a href="http://maven.apache.org/" target="_blank">maven</a>. Nesse exemplo foram adicionados ao pom.xml do <a href="http://maven.apache.org/" target="_blank">maven</a>, conforme abaixo:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;dependency&gt;
   &lt;groupId&gt;org.codehaus.cargo&lt;/groupId&gt;
   &lt;artifactId&gt;cargo-core-container-tomcat&lt;/artifactId&gt;
   &lt;version&gt;1.0.6&lt;/version&gt;
   &lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
   &lt;dependency&gt;
   &lt;groupId&gt;org.seleniumhq.selenium&lt;/groupId&gt;
   &lt;artifactId&gt;selenium&lt;/artifactId&gt;
   &lt;version&gt;2.0a4&lt;/version&gt;
   &lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
</pre>
<p>Em seguida vamos criar um método para recuperar a instância de um Tomcat existente:</p>
<pre class="brush: java; title: ; notranslate">
 /**
 * Método responsável para setar todas as configurações iniciais que o tomcat precisa para startar.
 * Aqui que devem ser configurados, caso necessário, variáveis de ambiente, novas propriedades, datasources etc.
 */
 private TomcatExistingLocalConfiguration InitTomcatConfig() {
    String tomcatHome = System.getenv(&quot;TOMCAT_HOME&quot;);
    if (tomcatHome == null) {
       throw new IllegalArgumentException(&quot;The system property TOMCAT_HOME must be defined.&quot;);
    }
    TomcatExistingLocalConfiguration localTomcatConfiguration = new TomcatExistingLocalConfiguration(tomcatHome);
    return localTomcatConfiguration;
  }
</pre>
<p>No método implementado irá buscar o local onde está instalado o <a href="http://tomcat.apache.org/download-60.cgi" target="_blank">Tomcat</a> através da variável de ambiente TOMCAT_HOME e criar uma instância uma desse <a href="http://tomcat.apache.org/download-60.cgi" target="_blank">Tomcat</a>, representada pela classe <a href="http://cargo.codehaus.org/maven-site/cargo-core/apidocs/org/codehaus/cargo/container/tomcat/TomcatExistingLocalConfiguration.html" target="_blank">TomcatExistingLocalConfiguration</a>.</p>
<p>Agora é criar um método para iniciar o <a href="http://tomcat.apache.org/download-60.cgi" target="_blank">Tomcat</a> antes de todas as suites de testes. A minha implementação foi como a seguir:</p>
<pre class="brush: java; title: ; notranslate">
// Método que será executado antes de todos os testes
 /**
 * Método onde serão implementados todas as configurações iniciais para a realização
 * de todos os testes
 */
 @BeforeSuite
 public void setUp() {
    LocalConfiguration tomcatConfiguration = InitTomcatConfig();

    // Configurações do Container utilizado(&quot;tomcat6x&quot;) e caminho do WAR
    war = new DefaultDeployableFactory().createDeployable(&quot;tomcat6x&quot;, &quot;target/exemplo.war&quot;,
        DeployableType.WAR);
    tomcatConfiguration.addDeployable(war);

    // Configurações do Tomcat
    container = new Tomcat6xInstalledLocalContainer(tomcatConfiguration);
    container.setHome(tomcatConfiguration.getHome());

    // Start o container
    container.start();

 }
</pre>
<p>Agora todas as suas classes de teste precisam herdar essa classe e executá-la como um teste de unidade pela sua engine de teste favorita. No meu exemplo foi utilizado a do <a href="http://valdemarjr.net/2010/02/02/tao-simples-quanto-criar-um-teste-testng.html" target="_blank">TestNG</a>.</p>
<p>Dê mais credibilidade ao seu código criando testes e façam a manutenção de sistemas serem menos dolorosas.</p>
]]></content:encoded>
			<wfw:commentRss>http://valdemarjr.net/2011/05/03/testes-de-unidade-do-selenium-no-eclipse.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Converter testes com JUnit 3 e 4 por TestNG</title>
		<link>http://valdemarjr.net/2011/03/31/converter-testes-com-junit-3-e-4-por-testng.html</link>
		<comments>http://valdemarjr.net/2011/03/31/converter-testes-com-junit-3-e-4-por-testng.html#comments</comments>
		<pubDate>Thu, 31 Mar 2011 03:34:06 +0000</pubDate>
		<dc:creator>Valdemar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Ferramentas]]></category>
		<category><![CDATA[Testes]]></category>
		<category><![CDATA[TestNG]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ferramenta]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[JUnit]]></category>
		<category><![CDATA[testNG]]></category>

		<guid isPermaLink="false">http://valdemarjr.net/?p=212</guid>
		<description><![CDATA[Como sou um evangelista de testes em softwares, mais uma vez estou falando sobre testes, mais especificamente de testes de unidade. Um dos frameworks que mais utilizo é o TestNG, considero o melhor. Já trabalhei em projetos legados que utilizavam o JUnit como frameworks de testes de unidade, mas sempre sugeria para migrarmos para o TestNG devido as [...]]]></description>
			<content:encoded><![CDATA[<p>Como sou um evangelista de testes em softwares, mais uma vez estou falando sobre testes, mais especificamente de testes de unidade. Um dos frameworks que mais utilizo é o <a href="http://testng.org/" target="_blank">TestNG</a>, considero o melhor.</p>
<p>Já trabalhei em projetos legados que utilizavam o <a href="http://www.junit.org/" target="_blank">JUnit</a> como frameworks de testes de unidade, mas sempre sugeria para migrarmos para o <a href="http://testng.org/" target="_blank">TestNG</a> devido as suas <a href="http://valdemarjr.net/2010/02/02/tao-simples-quanto-criar-um-teste-testng.html" target="_blank">vantagens</a> em relação ao <a href="http://www.junit.org/" target="_blank">JUnit</a>.</p>
<p>Escrevi até um <a href="http://valdemarjr.net/2010/02/02/tao-simples-quanto-criar-um-teste-testng.html" target="_blank">post</a> falando sobre o framework e também criei um <a href="http://valdemarjr.net/wp-content/uploads/2010/02/testng-demo.rar" target="_blank">projeto simples</a> apresentando alguns de seus annotations.</p>
<p>Existe um <a href="http://testng.org/doc/eclipse.html" target="_blank">plugin para o eclipse</a> para executar os testes do <a href="http://testng.org/" target="_blank">TestNG</a>. Além de todas as <a href="http://testng.org/doc/eclipse.html#eclipse-quickfix">features do plugin</a> existe a funcionalidade de converter testes feitos com <a href="http://www.junit.org/" target="_blank">JUnit</a>3 e <a href="http://www.junit.org/" target="_blank">JUnit</a>4 por testes do <a href="http://testng.org/" target="_blank">TestNG</a>.</p>
<p>Para isso basta <a href="http://testng.org/doc/eclipse.html#eclipse-installation" target="_blank">instalar o plugin</a>, clicar com o botão direito do mouse em cima do teste: <em><strong>TestNG &gt; Converter to TestNG</strong></em>. Como você pode ver na imagem abaixo:</p>
<p><img class="aligncenter size-full wp-image-216" title="testNG_Converter" src="http://valdemarjr.net/wp-content/uploads/2011/03/testNG_Converter.jpg" alt="" width="616" height="568" /></p>
<p>Todos os annotations e imports serão convertidos para os do <a href="http://testng.org/" target="_blank">TestNG</a>. Agora é só aproveitar as vantagens e programar.</p>
<p>Bons testes.</p>
]]></content:encoded>
			<wfw:commentRss>http://valdemarjr.net/2011/03/31/converter-testes-com-junit-3-e-4-por-testng.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando Sonar no maven</title>
		<link>http://valdemarjr.net/2011/03/20/configurando-sonar-com-maven.html</link>
		<comments>http://valdemarjr.net/2011/03/20/configurando-sonar-com-maven.html#comments</comments>
		<pubDate>Sun, 20 Mar 2011 16:48:02 +0000</pubDate>
		<dc:creator>Valdemar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Ferramentas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[integração contínua]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[sonar]]></category>
		<category><![CDATA[teamcity]]></category>

		<guid isPermaLink="false">http://valdemarjr.net/?p=211</guid>
		<description><![CDATA[Sonar é um projeto open source que gerência a qualidade do código do seu software que cobre sete categorias de qualidade código como: arquitetura e design, comentários, códigos duplicados, testes de unidade, complexidade, possíveis bugs e regras de código. Foi desenvolvido em Java e cobre projetos desenvolvidos em Java, Flex, PHP, PL/SQL, Cobol e Visual Basic 6. Possui uma interface bastante [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sonarsource.org/" target="_blank">Sonar</a> é um projeto open source que gerência a qualidade do código do seu software que cobre sete categorias de qualidade código como: arquitetura e design, comentários, códigos duplicados, testes de unidade, complexidade, possíveis bugs e regras de código. Foi desenvolvido em Java e cobre projetos desenvolvidos em Java, <a href="http://docs.codehaus.org/display/SONAR/Sonar+Flex+Plugin">Flex</a>, <a href="http://docs.codehaus.org/display/SONAR/PHP+Plugin">PHP</a>, <a href="http://www.sonarsource.com/plugins/plugin-plsql/">PL/SQL</a>, <a href="http://www.sonarsource.com/plugins/plugin-cobol/overview/">Cobol</a> e <a href="http://www.sonarsource.com/plugins/visualbasic-6-plugin/overview/">Visual Basic 6</a>.</p>
<p>Possui uma interface bastante amigável, uma navegabilidade simples e oferece um visão de relatório onde é possível acompanhar a evolução da qualidade código do projeto e compará-los.</p>
<p>Existe um projeto chamado <a href="http://nemo.sonarsource.org/" target="_blank">Nemo</a> dedicado a projetos open sources onde é possível ver projetos open source como <a title="org.eclipse.jetty:jetty-project" href="http://nemo.sonarsource.org/dashboard/index/137615?period=3" target="_blank">Jetty</a>, <a title="org.apache:lucene" href="http://nemo.sonarsource.org/dashboard/index/267086?period=3">Apache Lucene</a> e <a title="org.apache:tomcat" href="http://nemo.sonarsource.org/dashboard/index/50544?period=3">Apache Tomcat</a>.</p>
<p>Então, vamos comprar o <a href="http://www.sonarsource.org/" target="_blank">Sonar</a> para funcionar junto com o <a href="http://maven.apache.org" target="_blank">maven</a>. A primeira coisa a se fazer é setar as configurações do <a href="http://www.sonarsource.org/" target="_blank">Sonar</a> no arquivo de configurações do maven <a href="http://maven.apache.org/settings.html" target="_blank">settings.xml</a> adicionando:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;profile&gt;
   &lt;id&gt;sonar&lt;/id&gt;
   &lt;activation&gt;
      &lt;activeByDefault&gt;true&lt;/activeByDefault&gt;
   &lt;/activation&gt;
   &lt;properties&gt;
      &lt;sonar.jdbc.url&gt;jdbc:postgresql://localhost/sonar&lt;/sonar.jdbc.url&gt;
      &lt;sonar.jdbc.driver&gt;org.postgresql.Driver&lt;/sonar.jdbc.driver&gt;
      &lt;sonar.jdbc.username&gt;user&lt;/sonar.jdbc.username&gt;
      &lt;sonar.jdbc.password&gt;password&lt;/sonar.jdbc.password&gt;
      &lt;!-- SERVER ON A REMOTE HOST --&gt;
      &lt;sonar.host.url&gt;http://localhost:9000&lt;/sonar.host.url&gt;
   &lt;/properties&gt;
&lt;/profile&gt;
</pre>
<p>O server do <a href="http://www.sonarsource.org/" target="_blank">Sonar</a> tem que está executando e o endereço deve ser definido no parâmetro <strong>sonar.host.url</strong>. Nesse exemplo, a URL do servidor do <a href="http://www.sonarsource.org/" target="_blank">Sonar</a> está definido localmente e com no endereço e portas padrão <a href="http://localhost:9000" target="_blank">http://localhost:9000</a>. É necessário também configurar o banco de dados utilizado pelo <a href="http://www.sonarsource.org/" target="_blank">Sonar</a>, definindo URL, usuário e senha do banco de dados. Para instalar localmente o <a href="http://www.sonarsource.org/" target="_blank">Sonar</a> Server veja <a href="http://docs.codehaus.org/display/SONAR/Install+Sonar" target="_blank">este link</a>.</p>
<p>Depois de configurado, para executar, analisar e salvar os resultados no banco de dados do <a href="http://www.sonarsource.org/" target="_blank">Sonar</a> apenas execute no maven <strong><em>mvn sonar:sonar</em></strong><em>. </em>Você pode configurar o <a href="http://www.sonarsource.org/" target="_blank">Sonar</a> para executar na sua aplicação de integração continua como <a href="http://java.net/projects/hudson/" target="_blank">Hudson</a> que é  <a href="http://meera-subbarao.blogspot.com/2009/11/hudson-sonar-perfect-match.html" target="_blank">perfeitamente compatível</a>, por que tem um <a href="http://wiki.hudson-ci.org/display/HUDSON/Sonar+plugin" target="_blank">Plugin para o Sonar</a>.</p>
<p>Veja o resultado gerado pelo <a href="http://www.sonarsource.org/" target="_blank">Sonar</a>:</p>
<p><img title="Sonar prinscreen" src="http://mojo.codehaus.org/sonar-maven-plugin/images/projects.jpg" alt="" width="600" height="336" /></p>
<p><img title="Sonar printscreen" src="http://mojo.codehaus.org/sonar-maven-plugin/images/dashboard.jpg" alt="" width="600" height="448" /></p>
<p>Como ferramenta de integração contínua eu prefiro o <a href="http://www.jetbrains.com/teamcity/" target="_blank">Teamcity</a>, mas não existe plugin estável de acordo com a <a href="http://docs.codehaus.org/display/SONAR/Build+Stability+Plugin" target="_blank">matriz de compatibilidade</a>. Mas para resolver esse problemas, basta adicionar <strong>sonar:sonar</strong> no comando executado pelo <a href="http://www.jetbrains.com/teamcity/" target="_blank">Teamcity</a>.</p>
<p><a href="http://www.sonarsource.org/" target="_blank">Sonar</a> é uma ferramenta essencial para seu projeto para ajudá-lo a avaliar suas classes, com relação a complexidade, duplicidade, definição de regras de códigos, cobertura dos testes, gerando relatórios e registrando a evolução do seu código.</p>
]]></content:encoded>
			<wfw:commentRss>http://valdemarjr.net/2011/03/20/configurando-sonar-com-maven.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Breakpoint condicional no Eclipse</title>
		<link>http://valdemarjr.net/2011/03/09/breakpoint-condicional-no-eclipse.html</link>
		<comments>http://valdemarjr.net/2011/03/09/breakpoint-condicional-no-eclipse.html#comments</comments>
		<pubDate>Thu, 10 Mar 2011 02:30:01 +0000</pubDate>
		<dc:creator>Valdemar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Ferramentas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Tudo]]></category>
		<category><![CDATA[breakpoint]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://valdemarjr.net/?p=208</guid>
		<description><![CDATA[Esse será um post curto, mas bastante útil. O eclipse tem a habilidade de executar a aplicação interativamente, linha por linha no modo debug, onde você pode definir um ponto específico no código onde a aplicação irá parar, representado por uma bola azul chamado breakpoint. Como você pode ver na documentação do eclipse: &#8220;A breakpoint [...]]]></description>
			<content:encoded><![CDATA[<p>Esse será um post curto, mas bastante útil. O <a href="http://www.eclipse.org/" target="_blank">eclipse</a> tem a habilidade de executar a aplicação interativamente, linha por linha no modo debug, onde você pode definir um ponto específico no código onde a aplicação irá parar, representado por uma bola azul chamado <strong>breakpoint</strong>. Como você pode ver na <a href="http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.user/reference/views/breakpoints/ref-breakpoints_view.htm" target="_blank">documentação do eclipse:</a><br/><br />
<blockquote>&#8220;<em>A breakpoint suspends the execution of a program at the location where the breakpoint is set</em>&#8220;.</p></blockquote>
<p><br/>Mas quando você está debugando uma aplicação, às vezes, você não quer parar em cada breakpoint todas as vezes, por exemplo, em um trecho de código que tenha um loop com muitos objetos.<br/><br />
Uma solução para esses casos é o <strong>breakpoint condicional</strong>. Você pode definir um breakpoint, que a aplicação será suspensa naquele ponto apenas se a condição for verdadeira. Para configurar um breakpoint condicional, clique com o botão direito do mouse no círculo azul e clicar em &#8220;breakpoint properties..&#8221; no menu. Como na tela abaixo:<br/><br />
<a href="http://english.valdemarjr.net/files/2011/03/breakpoint_properties2.jpg"><img title="breakpoint_properties" src="http://english.valdemarjr.net/files/2011/03/breakpoint_properties2.jpg" alt="" width="650" height="401" /></a><br/><br />
Em seguida será apresentado a tela a seguir:<br/><br />
<img src="http://english.valdemarjr.net/files/2011/03/screen_BP_eclipse.jpg" alt="" width="642" height="401" /><br/><br />
Então você pode configurar uma condição para que o breakpoint pare a execução da aplicação naquele ponto. Na tela acima, foi definido que a aplicação suspensa quando o método de requisição for &#8220;POST&#8221;.<br/><br />
Existem outras formas de condição para o breakpoint, por exemplo, o número de repetições que o código passou naquele ponto ou definir uma variável, para quando o valor dela mudar a aplicação pare naquele ponto.<br/><br />
Então é isso. Você conhecia essa dica ou conhece alguma dica interessante do eclipse? Comente sobre isso.</p>
]]></content:encoded>
			<wfw:commentRss>http://valdemarjr.net/2011/03/09/breakpoint-condicional-no-eclipse.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testes funcionais com Selenium 2.0 e cargo-maven-plugin</title>
		<link>http://valdemarjr.net/2011/03/03/testes-funcionais-com-selenium-2-0-e-cargo-maven-plugin.html</link>
		<comments>http://valdemarjr.net/2011/03/03/testes-funcionais-com-selenium-2-0-e-cargo-maven-plugin.html#comments</comments>
		<pubDate>Thu, 03 Mar 2011 03:59:13 +0000</pubDate>
		<dc:creator>Valdemar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache tomcat]]></category>
		<category><![CDATA[cargo-maven-plugin]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[webdriver]]></category>

		<guid isPermaLink="false">http://valdemarjr.net/?p=206</guid>
		<description><![CDATA[O Selenium e o Webdriver se uniram para criar um poderoso framework de código aberto para testes de aceitação baseado em javascript para as aplicações web. Os testes podem ser realizados com um browser normal, instanciado e aberto como também pode fornecer um driver leve, super rápido que simula um browser baseado no HtmlUnit dando [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://seleniumhq.org/" target="_blank">Selenium</a> e o <a href="http://code.google.com/p/selenium/wiki/GettingStarted" target="_blank">Webdriver</a> <a href="http://google-opensource.blogspot.com/2009/05/introducing-webdriver.html" target="_blank">se uniram</a> para criar um poderoso framework de código aberto para testes de aceitação baseado em javascript para as aplicações web. Os testes podem ser realizados com um browser normal, instanciado e aberto como também pode fornecer um driver leve, super rápido que simula um browser baseado no <a href="http://htmlunit.sourceforge.net/" target="_blank">HtmlUnit</a> dando suporte para situações comuns que poderiam ser testadas em uma aplicação web.<br/><br />
Se você quiser fazer uns testes, basta <a href="http://code.google.com/p/webdriver/downloads/list" target="_blank">baixar os .jars</a> e adicionar ao classpath do seu projeto.<br/><br />
Nesse &#8220;how-to&#8221; irei desenvolver testes de integração com o <a href="http://seleniumhq.org/" target="_blank">Selenium</a> e o <a href="http://code.google.com/p/selenium/wiki/GettingStarted" target="_blank">Webdriver</a>, que serão executados no <a href="http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference" target="_blank">ciclo de vida do maven</a>, configurados através do <a href="http://cargo.codehaus.org/Maven2+plugin" target="_blank">cargo-maven-plugin</a>.<br/><br />
O <a href="http://cargo.codehaus.org/Maven2+plugin" target="_blank">cargo-maven-plugin</a> é utilizado frequentemente para deploy de aplicações utilizando o maven. O cargo instala o container e as dependências necessárias para o deploy da sua aplicação. Pode ser configurado para diversos containers como <a href="http://tomcat.apache.org/" target="_blank">Tomcat</a>, <a href="http://www.jboss.org/" target="_blank">JBoss</a>, <a href="http://cargo.codehaus.org/Jetty+7.x">Jetty</a>(embedded), <a href="http://glassfish.java.net/" target="_blank">GlashFish</a> entre outros. Ele levantará o container configurado e irá fazer o deploy da aplicação e em seguida os testes do <a href="http://seleniumhq.org/" target="_blank">Selenium</a> serão executados.<br/><br />
Para exemplifcar melhor, irei utilizar o projeto cadastro <a href="https://github.com/valdemarjuniorr/Cadastro-Modelos-Celular" target="_blank">Modelos de Celulares</a> desenvolvido no <a href="http://valdemarjr.net/2011/02/18/exemplo-spring-mvc-integrado-com-struts-tiles.html" target="_blank">post anterior</a> e adicionar simplesmente os testes do <a href="http://seleniumhq.org/" target="_blank">Selenium</a> e as configurações do <a href="http://cargo.codehaus.org/Maven2+plugin" target="_blank">cargo-maven-plugin</a>.<br/><br />
Primeiramente vamos adicionar a dependência do <a href="http://cargo.codehaus.org/Maven2+plugin" target="_blank">cargo-maven-plugin</a> que irá levantar o container para a execução dos testes e então vamos configurá-lo para fazê-lo na fase <em>pre-integration-test</em> do <a href="http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference" target="_blank">ciclo de vida do maven</a> e desligar o container no <em>post-integration-test</em>. O container utilizado no exemplo foi o <a href="http://tomcat.apache.org/" target="_blank">Tomcat</a> 6x que deve está instalado localmente e definido no atributo <strong>&lt;home&gt;</strong>. <br/><br />
Será necessário adicionarmos mais um plugin para que todos os testes sejam executados quando o container estiver levantado. O plugin que utilizaremos é o <a href="http://maven.apache.org/plugins/maven-surefire-plugin/" target="_blank">maven-surefire-plugin</a>.<br/><br />
Segue abaixo a configuração dos plugins <a href="http://cargo.codehaus.org/Maven2+plugin" target="_blank">cargo-maven-plugin</a> e <a href="http://maven.apache.org/plugins/maven-surefire-plugin/" target="_blank">maven-surefire-plugin</a> que devem ser configurados no pom.xml:<br />
<br/></p>
<pre class="brush: xml; title: ; notranslate">
&lt;plugin&gt;
   &lt;groupId&gt;org.codehaus.cargo&lt;/groupId&gt;
   &lt;artifactId&gt;cargo-maven2-plugin&lt;/artifactId&gt;
   &lt;version&gt;1.0.6&lt;/version&gt;
   &lt;configuration&gt;
      &lt;wait&gt;false&lt;/wait&gt;
      &lt;!-- Container configuration --&gt;
      &lt;container&gt;
         &lt;type&gt;installed&lt;/type&gt;
         &lt;containerId&gt;tomcat6x&lt;/containerId&gt;
         &lt;home&gt;${TOMCAT_HOME}&lt;/home&gt;
      &lt;/container&gt;
   &lt;/configuration&gt;
   &lt;executions&gt;
      &lt;execution&gt;
         &lt;id&gt;start-container&lt;/id&gt;
         &lt;phase&gt;pre-integration-test&lt;/phase&gt;
         &lt;goals&gt;
            &lt;goal&gt;start&lt;/goal&gt;
         &lt;/goals&gt;
      &lt;/execution&gt;
      &lt;execution&gt;
         &lt;id&gt;stop-container&lt;/id&gt;
         &lt;phase&gt;post-integration-test&lt;/phase&gt;
         &lt;goals&gt;
           &lt;goal&gt;stop&lt;/goal&gt;
         &lt;/goals&gt;
      &lt;/execution&gt;
   &lt;/executions&gt;
&lt;/plugin&gt;
&lt;plugin&gt;
   &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
   &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
   &lt;configuration&gt;
   &lt;!-- Skip the normal tests,
                 we'll run them in the integration-test phase --&gt;
      &lt;skip&gt;true&lt;/skip&gt;
   &lt;/configuration&gt;
   &lt;executions&gt;
      &lt;execution&gt;
         &lt;phase&gt;integration-test&lt;/phase&gt;
         &lt;goals&gt;
            &lt;goal&gt;test&lt;/goal&gt;
         &lt;/goals&gt;
         &lt;configuration&gt;
            &lt;skip&gt;false&lt;/skip&gt;
         &lt;/configuration&gt;
      &lt;/execution&gt;
   &lt;/executions&gt;
&lt;/plugin&gt;
</pre>
<p>Em seguida vamos adicionar a dependência do <a href="http://seleniumhq.org/" target="_blank">Selenium</a> para implementarmos os testes de aceitação. Basta adicionar ao pom.xml<br/></p>
<pre class="brush: xml; light: true; title: ; notranslate">
&lt;dependency&gt;
   &lt;groupId&gt;org.seleniumhq.selenium&lt;/groupId&gt;
   &lt;artifactId&gt;selenium&lt;/artifactId&gt;
   &lt;version&gt;2.0a4&lt;/version&gt;
   &lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
</pre>
<p>Após adicionar a dependência vamos a classe de teste. Os objetos do browser são acessados através de quatro drivers oficiais: <a href="http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/firefox/FirefoxDriver.html" target="_blank">FirefoxDriver</a>, que o driver mais maduro e o utilizado no exemplo, <a href="http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/ie/InternetExplorerDriver.html" target="_blank">Internet Explorer Driver</a>, testado com as versões IE6, IE7 no windows Vista e XP e aparentemente é o mais lento dos drivers. Tem também o <a href="http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/chrome/ChromeDriver.html" target="_blank">ChromeDriver</a>, relativamente um driver mais novo e o <a href="http://htmlunit.sourceforge.net/" target="_blank">HtmlUnit</a> como o mais leve e rápido dos drivers por que ele emula um browser onde não é necessário instanciá-lo.<br/><br />
Agora vamos interagir com o browser através de métodos da classe <a href="http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/firefox/FirefoxDriver.html" target="_blank">FirefoxDriver</a> utilizando métodos como <em>&#8220;findElement&#8221;</em> passando um <a href="http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebElement.html" target="_blank">WebElement</a>, podendo ser recuperado através da classe <a href="http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/By.html" target="_blank">By</a>. Como podemos ver no método <em>tentaCadastrarSemNenhumDado</em>:<br/></p>
<pre class="brush: java; title: ; notranslate">
public void tentaCadastrarSemNenhumDado()  {
    driver.get(&quot;http://localhost:8080/CadastroCelular&quot;);
	driver.findElement(By.id(&quot;botaoSubmit&quot;)).click();

	String mensagemErroNome = driver.findElement(By.id(&quot;mensagemErroNome&quot;)).getText();
	Assert.assertEquals(&quot;Campo Nome Obrigatório&quot;, mensagemErroNome);

	String mensagemErroDescricao = driver.findElement(By.id(&quot;mensagemErroDescricao&quot;)).getText();
	Assert.assertEquals(&quot;Campo Descrição Obrigatório&quot;, mensagemErroDescricao);

	driver.close();
}
</pre>
<p>O método de teste acima tenta inserir um modelo de celular sem preencher nenhum campo e verifica se as mensagens de campos obrigatórios são exibidas.<br/><br />
Através da classe <a href="http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/By.html" target="_blank">By</a> é possível recuperar os elementos da aplicação acessando links, pelo nome, tag html, css ou pelo nome do link. Nessa versão do <a href="http://seleniumhq.org/" target="_blank">Selenium</a> existe também a annotation <a href="http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/support/FindBy.html" target="_blank">@FindBy</a> que foi uma forma de deixar o código mais limpo e de fácil manutenção. Com essa annotation é uma alternativa para localizar um <a href="http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebElement.html" target="_blank">WebElement</a>. No caso, o método anterior foi desenvolvido sem a utilização da annotation, agora veja o mesmo método desenvolvido com a annotation <a href="http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/support/FindBy.html" target="_blank">@FindBy</a>:<br/></p>
<pre class="brush: java; title: ; notranslate">
     @FindBy(id = &quot;botaoSubmit&quot;)
	private WebElement botaoSubmit;

	@FindBy(id = &quot;mensagemErroNome&quot;)
	private WebElement msgErroNome;

	@FindBy(id = &quot;mensagemErroDescricao&quot;)
	private WebElement msgErroDescricao;

	@Test
	public void tentaCadastrarSemNenhumDado() {
	    driver.get(&quot;http://localhost:8080/CadastroCelular&quot;);
		botaoSubmit.click();

		Assert.assertEquals(&quot;Campo Nome Obrigatório&quot;, msgErroNome.getText());

		Assert.assertEquals(&quot;Campo Descrição Obrigatório&quot;, msgErroDescricao.getText());

		driver.close();
	}</pre>
<p>Perceba que no exemplo final o código final ficou bem mais simples e limpo. A configuração e a implementação dos testes funcionais são tão simples que não existem desculpas para não testar suas aplicações. Bons testes a todos.</p>
]]></content:encoded>
			<wfw:commentRss>http://valdemarjr.net/2011/03/03/testes-funcionais-com-selenium-2-0-e-cargo-maven-plugin.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exemplo Spring MVC integrado com Struts Tiles</title>
		<link>http://valdemarjr.net/2011/02/18/exemplo-spring-mvc-integrado-com-struts-tiles.html</link>
		<comments>http://valdemarjr.net/2011/02/18/exemplo-spring-mvc-integrado-com-struts-tiles.html#comments</comments>
		<pubDate>Fri, 18 Feb 2011 13:00:16 +0000</pubDate>
		<dc:creator>Valdemar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[Spring MVC]]></category>
		<category><![CDATA[tiles]]></category>

		<guid isPermaLink="false">http://valdemarjr.net/?p=202</guid>
		<description><![CDATA[Uma forma de aprender uma nova linguagem de programação ou um novo framework é fazer um &#8220;Hello World&#8221; ou um CRUD, para entender o básico da tecnologia, como ciclo de vida, dependências, configurações, limitações e etc. Como precisaria aprender como utilizar o Spring MVC e o Struts Tiles, antiga biblioteca do Struts que virou um [...]]]></description>
			<content:encoded><![CDATA[<p>Uma forma de aprender uma nova linguagem de programação ou um novo  framework é fazer um <a href="http://valdemarjr.net/2010/12/07/a-maldicao-do-hello-world.html" target="_blank">&#8220;Hello World&#8221;</a> ou um CRUD, para entender o básico da  tecnologia, como ciclo de vida, dependências, configurações, limitações  e etc.<br/><br />
Como precisaria aprender como utilizar o <a href="http://static.springsource.org/spring/docs/3.0.3.RELEASE/spring-framework-reference/html/mvc.html" target="_blank">Spring MVC</a> e o <a href="http://struts.apache.org/1.x/struts-tiles/index.html" target="_blank">Struts Tiles</a>, antiga biblioteca do Struts que virou um projeto independente, então desenvolvi um CRUD para praticar e resolvi disponibilizá-lo, tentando explicar o seu funcionamento.<br/><br />
O projeto é um CRUD de cadastro de Modelos de Celulares com apenas dois campos. Simples assim! Quero descrever apenas a parte do <a href="http://static.springsource.org/spring/docs/3.0.3.RELEASE/spring-framework-reference/html/mvc.html" target="_blank">Spring MVC</a> e o <a href="http://struts.apache.org/1.x/struts-tiles/index.html" target="_blank">Struts Tiles</a>, as outras partes da aplicação não serão o foco do post.<br/><br />
O projeto faz conexão com o banco via <a href="http://download.oracle.com/javase/1.3/docs/guide/jdbc/index.html" target="_blank">JDBC</a> e também possui uma infraestrutura para os testes das camadas de DAO e Controller. Utiliza também maven e o framework Spring para Injeção de dependência versão <a href="http://repo1.maven.org/maven2/org/springframework/spring-core/3.0.3.RELEASE/spring-core-3.0.3.RELEASE-sources.jar" target="_blank">3.0.3.RELEASE</a>.<br/><br />
O <a href="http://static.springsource.org/spring/docs/3.0.3.RELEASE/spring-framework-reference/html/mvc.html" target="_blank">Spring MVC</a> para tratar as requisições entre a interface e o Controller, permitindo a utilização de objetos em um formulário web. Ele é como outros frameworks MVC web para facilitar o desenvolvimento, com a vantagem de ser integrado totalmente com o container <a href="http://static.springsource.org/spring/docs/2.0.x/reference/beans.html" target="_blank">Spring IoC</a>, proporcionando todas as <a href="http://www.springsource.org/about">vantagens</a> que o Spring proporciona.<br/><br />
Para configurá-lo inicialmente é preciso mapear o servlet <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/servlet/DispatcherServlet.html" target="_blank">DispatcherServlet </a>no web.xml do projeto. Por exemplo:<br />
<br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;web-app<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>spring-mvc<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.springframework.web.servlet.DispatcherServlet<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;load-on-startup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/load-on-startup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>spring-mvc<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/web-app<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Na  inicialização o servlet &#8216;spring-mvc&#8217; <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/servlet/DispatcherServlet.html" target="_blank">DispatcherServlet</a> irá procurar pelo arquivo spring-mvc-servlet.xml ( [Nome do Servlet]-servlet.xml ) dentro da pasta WEB-INF do seu projeto. No exemplo acima, todas as requisições serão tratadas  também pelo servlet &#8216;spring-mvc&#8217; <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/servlet/DispatcherServlet.html" target="_blank">DispatcherServlet</a>.<br/><br />
Sobre os Controllers, o Spring possui tipos específicos de  controllers de formulário(form-specific controllers), command-based controllers e etc. Para definir que uma classe como Controller basta anotá-la como <a href="http://static.springsource.org/spring/docs/2.5.x/api/index.html?org/springframework/web/servlet/mvc/Controller.html" target="_blank">@Controller</a> como temos no exemplo da classe CelularController<br />
<br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>3
4
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">@Controller
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CelularController <span style="color: #009900;">&#123;</span></pre></td></tr></table></div>

<p>As classes anotadas como <a href="http://static.springsource.org/spring/docs/2.5.x/api/index.html?org/springframework/web/servlet/mvc/Controller.html" target="_blank">@Controller</a> irão interpretar e transformar em dados vindos de um formulário em dados do modelo.<br/><br />
Na CelularController existe outra anotação chamada <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/RequestMapping.html">@RequestMapping</a>, onde você mapeia qual o endereço da URL que precisará acessar para que o método seja chamado, através do parâmetro &#8220;value&#8221;. O parâmetro &#8220;method&#8221; existe para definir como vai ser o método de request(GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE). Na classe CelularController temos como exemplo:<br />
<br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>3
4
5
6
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">@RequestMapping<span style="color: #009900;">&#40;</span>value <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;/cadastro/remove&quot;</span>, method <span style="color: #339933;">=</span> RequestMethod.<span style="color: #006633;">POST</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> removerModelo<span style="color: #009900;">&#40;</span>@RequestParam<span style="color: #009900;">&#40;</span>value <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;nome&quot;</span>, required <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #003399;">String</span> nome,
    @ModelAttribute Celular celular, WebRequest request<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">Exception</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Existe também a anotação <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/ModelAttribute.html" target="_blank">@ModelAttribute</a>. Definindo um atributo com essa anotação o Spring irá fazer o bind dos parâmetros vindo do request para os atributos desse objeto.<br/><br />
A grande mágica acontece quando você cria um método é anota como <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/InitBinder.html">@InitBinder</a>, assim no exemplo:<br />
<br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>3
4
5
6
7
8
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">    @InitBinder
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> initBinder<span style="color: #009900;">&#40;</span>WebDataBinder binder<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        binder.<span style="color: #006633;">registerCustomEditor</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span>.<span style="color: #000000; font-weight: bold;">class</span>, <span style="color: #000000; font-weight: bold;">new</span> StringTrimmerEditor<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        binder.<span style="color: #006633;">setValidator</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>org.<span style="color: #006633;">springframework</span>.<span style="color: #006633;">validation</span>.<span style="color: #006633;">Validator</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">validator</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/InitBinder.html">@InitBinder</a> permite identificar métodos que inicializarão o WebDataBinder que é utilizado para popular os atributos vindos do formulário com os atributos dos objetos anotados com <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/ModelAttribute.html" target="_blank">@ModelAttribute</a>.<br />
Para que essas classes mapeadas com <a href="http://static.springsource.org/spring/docs/2.5.x/api/index.html?org/springframework/web/servlet/mvc/Controller.html" target="_blank">@Controller</a>, <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/ModelAttribute.html" target="_blank">@ModelAttribute</a> ou <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/InitBinder.html">@InitBinder</a> sejam Injetadas pelo container do Spring é preciso que no arquivo spring-mvc-servlet.xml seja mapeado o pacote onde essas classes estarão. No caso do exemplo:<br />
<br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>3
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;context:component-scan</span> <span style="color: #000066;">base-package</span>=<span style="color: #ff0000;">&quot;net.valdemarjr&quot;</span> <span style="color: #000066;">scoped-proxy</span>=<span style="color: #ff0000;">&quot;targetClass&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></td></tr></table></div>

<p>Para fazer a configuração do <a href="http://struts.apache.org/1.x/struts-tiles/index.html" target="_blank">Struts Tiles</a> com <a href="http://static.springsource.org/spring/docs/3.0.3.RELEASE/spring-framework-reference/html/mvc.html" target="_blank">Spring MVC</a> será necessário definir dois beans no spring-mvc-servlet.xml:<br />
<br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>3
4
5
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bean</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;tilesViewResolver&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.springframework.web.servlet.view.UrlBasedViewResolver&quot;</span></span>
<span style="color: #009900;"><span style="color: #000066;">p:viewClass</span>=<span style="color: #ff0000;">&quot;org.springframework.web.servlet.view.tiles2.TilesView&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bean</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;tilesConfigurer&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.springframework.web.servlet.view.tiles2.TilesConfigurer&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></td></tr></table></div>

<p>E então fazer os métodos das classes de controle retornar a String mapeada no arquivo tiles.xml. Por exemplo no método &#8220;processarFormulario&#8221;, o retorno no método é &#8220;cadastro.formulario&#8221;, que está definido como:<br />
<br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>3
4
5
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;definition</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;cadastro.formulario&quot;</span> <span style="color: #000066;">extends</span>=<span style="color: #ff0000;">&quot;titulo&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;put-attribute</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;conteudo&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;/WEB-INF/jsp/cadastro/formulario.jsp&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/definition<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Fazendo com que a página seja retornada para o JSP &#8220;formulario.jsp&#8221;.<br />
<br/><br/><br />
Nunca tinha utilizado o <a href="http://static.springsource.org/spring/docs/3.0.3.RELEASE/spring-framework-reference/html/mvc.html" target="_blank">Spring MVC</a>, achei legal utilizar todo o poder do Spring para um framework MVC e integrado com <a href="http://struts.apache.org/1.x/struts-tiles/index.html" target="_blank">Struts Tiles</a> que potencializa a capacidade de componentização da camada de apresentação. Bom é isso, o projeto está no <a href="https://github.com/valdemarjuniorr/Cadastro-Modelos-Celular">github</a> e pode ser baixando, testado e alterado.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><a href="http://apollo89.com/java/spring-framework-2.5.3/api/org/springframework/web/servlet/DispatcherServlet.html" target="_blank">http://apollo89.com/java/spring-framework-2.5.3/api/org/springframework/web/servlet/DispatcherServlet.html</a></div>
]]></content:encoded>
			<wfw:commentRss>http://valdemarjr.net/2011/02/18/exemplo-spring-mvc-integrado-com-struts-tiles.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Maldição do Hello World</title>
		<link>http://valdemarjr.net/2010/12/07/a-maldicao-do-hello-world.html</link>
		<comments>http://valdemarjr.net/2010/12/07/a-maldicao-do-hello-world.html#comments</comments>
		<pubDate>Wed, 08 Dec 2010 02:06:07 +0000</pubDate>
		<dc:creator>Valdemar</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Humor]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://valdemarjr.net/?p=200</guid>
		<description><![CDATA[Já tinha ouvido falar de macumbas, feitiçarias, superstições, mágicas e outras maldições, mas nunca a maldição do Hello World. Conversando com um amigo, comentei dos meus estudos sobre desenvolver em Android, então ele comentou sobre essa maldição, então resolvi pesquisar. A maldição diz: &#8220;aquele programador que não fazer aparecer magicamente uma tela preta escrita Hello [...]]]></description>
			<content:encoded><![CDATA[<p>Já tinha ouvido falar de macumbas, feitiçarias, superstições, mágicas e outras maldições, mas nunca a <a href="http://forums.otserv.com.br/f17/a-maldicao-do-hello-world-147788/" target="_blank">maldição do Hello World</a>. Conversando com um amigo, comentei dos meus estudos sobre desenvolver em <a href="http://developer.android.com/index.html" target="_blank">Android</a>, então ele comentou sobre essa maldição, então resolvi pesquisar.<br/><br/></p>
<p>A maldição diz: &#8220;aquele programador que não fazer aparecer magicamente uma tela preta escrita Hello World, não vai aprender a linguagem que está estudando .&#8221; O algorítimo da maldição seria algo parecido com:<br/><br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>3
4
5
6
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;">Se (programadorstart != ‘Hello World’)
 {
   Linguagemaprender = false;
}</pre></td></tr></table></div>

<p>Lógico que isso é uma brincadeira entre os programadores e que você não vai deixar de aprender uma linguagem por não ter desenvolvido um &#8220;Hello World&#8221; ou um &#8220;Alô mundo&#8221;, mas nunca se sabe&#8230;<br/><br/></p>
<p>Então como iniciei meus estudos em <a href="http://developer.android.com/index.html" target="_blank">Android</a> e meu primeiro exemplo foi um Hello World, lógico, então para evitar essa maldição resolvi postar meu exemplo no <a href="https://github.com/valdemarjuniorr/Hello-World-Android" target="_blank">github</a>.<br/><br/></p>
<p>Aproveitando para mostrar o livro que estou lendo <a href="http://www.submarino.com.br/produto/1/21615343?franq=251673" target="_blank">Android para desenvolvedores</a>. A versão do android do livro é um pouco antiga 1.5, mas é uma boa referência para ter uma base como principais componentes, exemplos e ciclos de vida dos objetos.<br/><br/></p>
<p>Fica a dica e o <a href="https://github.com/valdemarjuniorr/Hello-World-Android" target="_blank">meu exemplo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://valdemarjr.net/2010/12/07/a-maldicao-do-hello-world.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven3 + Flexmojos4 + Flexunit4 + Flex4</title>
		<link>http://valdemarjr.net/2010/11/08/maven3-flexmojos4-flexunit4-flex4.html</link>
		<comments>http://valdemarjr.net/2010/11/08/maven3-flexmojos4-flexunit4-flex4.html#comments</comments>
		<pubDate>Tue, 09 Nov 2010 02:03:56 +0000</pubDate>
		<dc:creator>Valdemar</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[Flex4]]></category>
		<category><![CDATA[Flexmojos4]]></category>
		<category><![CDATA[Flexunit4]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[Maven3]]></category>

		<guid isPermaLink="false">http://valdemarjr.net/?p=194</guid>
		<description><![CDATA[Começo com esse monte de versões, de vários frameworks do adobe flex, de plugins do maven, que por sinal saiu a notícia no InfoQ sobre a nova release 3.0. Mas o que quero mesmo destacar nesse post é um exemplo de aplicação com adobe flex e Flexunit4. Utilizo também o plugin do maven Flexmojos4, que [...]]]></description>
			<content:encoded><![CDATA[<p>Começo com esse monte de versões, de vários frameworks do <a href="http://www.adobe.com/products/flex/" target="_blank">adobe flex</a>, de plugins do <a href="http://maven.apache.org/" target="_blank">maven</a>, que  por sinal <a href="http://www.infoq.com/br/news/2010/10/maven-30-released" target="_blank">saiu a notícia no InfoQ sobre a nova release 3.0</a>. Mas o que quero mesmo destacar nesse post é um exemplo de aplicação com <a href="http://www.adobe.com/products/flex/" target="_blank">adobe flex</a> e <a href="http://docs.flexunit.org/index.php?title=FlexUnit4FeatureOverview" target="_blank">Flexunit4</a>. Utilizo também o plugin do maven <a href="http://flexmojos.sonatype.org/" target="_blank">Flexmojos4</a>, que precisa da <a href="http://maven.apache.org/download.html" target="_blank">versão 3.0 do maven</a> para funcionar.<br/><br/></p>
<p>Estou subentendendo que o java e maven estão devidamente configurados. Caso tenham dúvida como configurar o maven, procure a sessão <strong>Installation Instructions</strong> <a href="http://maven.apache.org/download.html" target="_blank">aqui</a>. Só um detalhe, a versão do flashplayer tem que ser a versão com debug  que pode ser baixada <a href="http://www.adobe.com/support/flashplayer/downloads.html" target="_blank">aqui</a>.<br/><br/></p>
<p>Então, vamos criar um projeto de aplicação em flex utilizando <a href="http://flexmojos.sonatype.org/" target="_blank">Flexmojos4</a>.  Irei utilizar a versão 4.0-alpha-5. <br/><br/></p>
<p>Execute o comando abaixo para criar um projeto do tipo Application:<br/><br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>4
5
6
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;">mvn archetype:generate -DarchetypeRepository=http://repository.sonatype.com/content/groups/flexgroup 
-DarchetypeGroupId=org.sonatype.flexmojos -DarchetypeArtifactId=flexmojos-archetypes-application 
-DarchetypeVersion=4.0-alpha-5</pre></td></tr></table></div>

<p>O maven irá baixar as dependências necessárias e informar qual será o groupId (geralmente a mesma hierarquia de pacotes), artifactId (nome do seu projeto), versão e o package (hierarquia de pacotes). O exemplo feito está como na imagem abaixo:<br/><br/></p>
<p><img title="maven_prompt" src="http://www.valdemarjr.net/wp-content/uploads/2010/11/maven_prompt1.jpg" alt="" width="649" height="131" /><br/><br/></p>
<p>&#8220;Y&#8221; para confirmar, então o projeto será criado.<br/><br/></p>
<p>Iremos utilizar a <a href="http://opensource.adobe.com/wiki/display/flexunit/FlexUnit+4+Beta+2+Release+Notes" target="_blank">versão 4.0-beta-2 do flexunit</a>. Edite o arquivo pom.xml e mude a versão da dependência do flexunit de 0.85 para 4.0-beta-2, ficando como abaixo:<br/><br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.adobe.flexunit<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>flexunit<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>4.0-beta-2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;type<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>swc<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/type<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>test<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Será necessário mudar o teste gerado pelo flexmojos, pois ele não utilizar os <a href="http://docs.flexunit.org/index.php?title=FlexUnit4FeatureOverview" target="_blank">metadatas</a> do <a href="http://docs.flexunit.org/index.php?title=FlexUnit4FeatureOverview" target="_blank">Flexunit4</a>. Basta remover o trecho &#8220;<em>extends TestCase</em>&#8221; e adicionar o metadata &#8220;[Test]&#8221; (sem aspas) em cima do método <em>testNothing().</em><br/><br/></p>
<p>Agora execute o comando &#8220;mvn clean install&#8221; para que rode o teste que foi criado automaticamente pelo flexmojos. O maven novamente irá baixar todas as dependências necessárias (que não são poucas).<br/><br/></p>
<p>Após executar o comando, deve acontecer o seguinte erro: <strong>Cannot run program &#8220;FlashPlayer.exe&#8221;</strong>. Isso acontece por que você deve dizer para o flexmojos o caminho do flashplayer que será utilizado nos testes. No meu caso está no caminho <em>C:\java\Flex Builder 3 Plug-in\Player\10\win\FlashPlayer.exe. </em>Isso é resolvido adicionando a propriedade <em>flex.flashPlayer.command</em> ao pom.xml:<br/><br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>3
4
5
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;flex.flashPlayer.command<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>C:\java\Flex Builder 3 Plug-in\Player\10\win\FlashPlayer.exe<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/flex.flashPlayer.command<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Execute novamente o comando &#8220;mvn clean install&#8221;, então flashplayer será executado e o teste de unidade do flex será realizado com sucesso!<br/><br/></p>
<p>O código do exemplo pode ser baixado no <a href="https://github.com/valdemarjuniorr/Flexunit4Example/tree/master/Flexunit4Example/" target="_blank">github</a>.<br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://valdemarjr.net/2010/11/08/maven3-flexmojos4-flexunit4-flex4.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problema com Helios e Flex Builder 3</title>
		<link>http://valdemarjr.net/2010/10/05/problema-com-helios-e-flex-builder-3.html</link>
		<comments>http://valdemarjr.net/2010/10/05/problema-com-helios-e-flex-builder-3.html#comments</comments>
		<pubDate>Tue, 05 Oct 2010 04:04:40 +0000</pubDate>
		<dc:creator>Valdemar</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://valdemarjr.net/?p=192</guid>
		<description><![CDATA[Essa semana passei por um problema. Queria desenvolver em Adobe Flex utilizando a versão do eclipse, o Helios com o plugin do Flex Builder 3 do eclipse. Percebi que a perspectiva flex não aparecia. Depois de algumas pesquisas, descobri um problema de compatibilidade de versões e achei uma solução, então resolvi postá-lo. A primeira que [...]]]></description>
			<content:encoded><![CDATA[<p>Essa semana passei por um problema. Queria desenvolver em <a href="http://www.adobe.com/products/flex/" target="_blank">Adobe Flex</a> utilizando a versão do <a href="http://www.eclipse.org/helios/" target="_blank">eclipse, o Helios</a> com o plugin do <a href="http://www.adobe.com/support/documentation/en/flex/3/releasenotes_flex3_fb.html" target="_blank">Flex Builder 3 do eclipse</a>. Percebi que a perspectiva flex não aparecia. Depois de algumas pesquisas, descobri um problema de compatibilidade de versões e achei uma solução, então resolvi postá-lo.<br/><br/></p>
<p>A primeira que tem que ser verificada é tentar instalar o <a href="http://www.eclipse.org/helios/" target="_blank">eclipse, o Helios</a> e depois o plugin do <a href="http://www.adobe.com/support/documentation/en/flex/3/releasenotes_flex3_fb.html" target="_blank">Flex Builder 3 do eclipse</a> caso não funcione, temos algumas alternativas:<br/><br/></p>
<ul>
<li>Após o <a href="http://www.adobe.com/support/documentation/en/flex/3/releasenotes_flex3_fb.html" target="_blank">Flex Builder 3 plugin</a> ser instalado, é criado um novo diretório dentro do diretório do eclipse chamado &#8220;links&#8221;. Dentro tem um arquivo chamado &#8220;com.adobe.flexbuilder.feature.core.link&#8221;. Edite esse arquivo. Irá perceber que tem o caminho onde foi instalado o <a href="http://www.adobe.com/support/documentation/en/flex/3/releasenotes_flex3_fb.html" target="_blank">Flex Builder 3 plugin</a>. Caso não tenha o atributo &#8220;path=&#8221; antes do caminho do plugin, adicione e reinicie o eclipse.<br/><br/></li>
</ul>
<p>Fiz um teste e fazendo a primeira parte resolve o problema. Mas caso não funcione, quando reiniciar o eclipse deverá lançar uma exception. Para resolver esse problema é preciso:<br/><br/></p>
<ul>
<li>Baixar o <a href="http://www.jamesward.com/downloads/ProblemManager.zip" target="_blank">ProblemManager patch</a>. Ir no diretório &#8220;<em>Flex Builder 3 Plug-in\eclipse\plugins\com.adobe.flexbuilder.project_3.0.214193\</em>&#8220;. Descompactar, com <a href="http://www.baixaki.com.br/download/winrar.htm" target="_blank">Winrar</a> ou similar, dentro do arquivo &#8220;<em>zornproject.jar</em>&#8220;, no caminho &#8220;<em>com/adobe/flexbuilder/project/compiler/internal</strong></em>&#8220;.</li>
</ul>
<p><br/><br/><br />
Reinicie o eclipse e basta ir em &#8220;Window &gt; Open Perspective &gt; Other&#8221; e <em>Voilá</em>! Depois de alguns testes, não consegui identificar nenhum problema. O plugin parece funcionar normalmente.<br/><br/></p>
<p style="text-align: right;">Valdemar Jr ( Tentando resolver os problemas, para uma codificação melhor )</p>
]]></content:encoded>
			<wfw:commentRss>http://valdemarjr.net/2010/10/05/problema-com-helios-e-flex-builder-3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

