<?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>blog.caelum.com.br &#187; vidageek</title>
	<atom:link href="http://blog.caelum.com.br/tag/vidageek/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.caelum.com.br</link>
	<description>blog dos desenvolvedores da Caelum</description>
	<lastBuildDate>Thu, 09 Feb 2012 13:04:59 +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>Mirror DSL: facilitando o uso da API de reflection</title>
		<link>http://blog.caelum.com.br/mirror-dsl-facilitando-o-uso-da-api-de-reflection/</link>
		<comments>http://blog.caelum.com.br/mirror-dsl-facilitando-o-uso-da-api-de-reflection/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 15:25:32 +0000</pubDate>
		<dc:creator>Jonas Abreu</dc:creator>
				<category><![CDATA[Inovação]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[mirror]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[reflection]]></category>
		<category><![CDATA[vidageek]]></category>

		<guid isPermaLink="false">http://blog.caelum.com.br/?p=426</guid>
		<description><![CDATA[No último domingo foi feito o primeiro release público do projeto Mirror (versão 1.2). O Mirror é um projeto que tem por objetivo facilitar o uso da Java Reflection API, removendo boa parte da burocracia (como as diversas checked exceptions que são lançadas) e utilizando uma DSL para melhorar a legibilidade do código. Com essa <a href="http://blog.caelum.com.br/mirror-dsl-facilitando-o-uso-da-api-de-reflection/#more-426'" class="more-link">more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>No último domingo foi feito o primeiro release público do projeto Mirror (versão 1.2).</p>
<p>O <a href="http://projetos.vidageek.net/mirror/" target="_blank">Mirror</a> é um projeto que tem por objetivo facilitar o uso da <a href="http://java.sun.com/javase/6/docs/api/java/lang/reflect/package-summary.html" target="_blank">Java Reflection API</a>, removendo boa parte da burocracia (como as diversas checked exceptions que são lançadas) e utilizando uma <a href="http://en.wikipedia.org/wiki/Domain-specific_language" target="_blank">DSL</a> para melhorar a legibilidade do código.</p>
<p>Com essa remoção de burocracia e a DSL, é possível transformar o seguinte código:</p>
<pre class="brush: java; title: ; notranslate">
Field toSet = null;
for (Field f : target.getClass().getDeclaredFields()) {
    if (f.getName().equals(&quot;field&quot;)) {
        toSet = f;
    }
}
if (toSet != null &amp;&amp; ((toSet.getModifiers() &amp; Modifier.STATIC) == 0)
        &amp;&amp; ((toSet.getModifiers() &amp; Modifier.FINAL) == 0)) {
    toSet.setAccessible(true);
    toSet.set(target, value);
}
</pre>
<p>em algo mais legível e expressivo: </p>
<pre class="brush: java; title: ; notranslate">
Mirror.on(target).set().field(&quot;fieldName&quot;).withValue(value);
</pre>
<p>Atualmente o Mirror possui suporte para lidar com as operações reflectivas mais comuns (como instanciar objetos, invocar métodos, ler ou escrever atributos, etc). Ele foi desenvolvido por Adriano Almeida, Diego Feitosa e eu, todos consultores/instrutores aqui da Caelum, enquanto enfretavamos problemas comuns no dia a dia.</p>
<p>Esperamos que possa ser útil para vocês também!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.caelum.com.br/mirror-dsl-facilitando-o-uso-da-api-de-reflection/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

