sexta-feira, 16 de dezembro de 2011

Primeiro post: um teste

Estou testando o novo blog!
Vamos ver se a inserção de script funciona.

Isso aí! Agora todos os posts que tiverem código fonte serão bonitos e bem formatados, graças às facilidades de compartilhamento via script do github:gist.
Pelo que vi é "só" muito melhor que o mecanismo lento e restrito do wordpress. Aqui posso até adicionar scripts no post, sem strip-tags. A interface de edição é fácil e rápida. Muito bom!
Vamos ver como é a inclusão de imagens.
Imagem RS

Beleza!
Acho que vou mudar pra cá. Aqui tenho a liberdade que preciso.
Portanto estou importando todos os posts interessantes para este provedor. Para isso, existe a aplicação wordpress2blogger que presta uma grande ajuda, e sabe fazer tudo direitinho.


Valeu!

Acessar parâmetros da JVM de dentro do programa

Existem alguams situação em que achamos que nunca cairemos. Ultimamente me ocorreu uma: precisei passar parâmetros para minha aplicação web, em sua inicialização, sem que os valores destes parâmetros ficassesm dentro do pacote ".war", e sem que fossem lidos de arquivo ou base de dados. Para isso foi adotada a estratégia de adicionar parâmetros na inicialização da JVM, e acessá-los a partir da aplicação.
A maior dúvida que tive foi, como acessar os parâmetros da JVM de dentro da aplicação.
Para isto a dica é simples: a classe RuntimeMXBean fornece o acesso a estes parâmetros.
Sua utilização é muito simples conforme a seguir:

RuntimeMXBean runtimemxBean = ManagementFactory.getRuntimeMXBean();
List arguments = runtimemxBean.getInputArguments();

Na lista "arguments" temos a lista de todos os parametros passados na inicialização da JVM junto com seus respectivos valores em cada linha. No meu caso, tive que passar parametros personalizados, que nao são da lista de parâmetros nativos da JVM. Fiz isto configurando o servidor de aplicação para adicionar aos parametros passados para a JVM a seguinte entrada:

-DismaelParametro="valor"

Com isto, na lista "arguments" procurei por uma linha que começasse com "-DismaelParametro" e lá estava!

Muito obrigado!


Referência:
RuntimeMXBean

terça-feira, 13 de dezembro de 2011

Manipulação de XSD no Eclipse

XML é um importante formato de marcação, utilizado para os mais diversos fins, e se tornou um padrão para troca de dados.
Neste post será vista a construção do XSD que é o elemento base para a composição do XML, pois é usado para efetuar sua validação. Para tanto, será utilizado o plugin XSD Editor da IDE Eclipse.
A seguir, um passo a passo, de como construir um XSD no eclipse:

Criar um diretorio META-INF dentro do diretorio src no projeto.

Clicar com o botão direito em cima do diretório e seguir: New->Other...->XML->XML Schema
Clicar em next e definir um nome para oa arquivo. Neste exemplo o nome é "pessoa.xsd".
Será aberto o editor XSD. Alterne entre as abas Design e Source para se ambientar. Iremos trabalhar na aba Design.
Iremos construir o objeto pessoa, que segue o seguinte esquema de atributos:
Pessoa
->nome
->endereco
-->>rua
-->>numero
-->>cidade
->telefones

Como percebemos dois atributos não são primitivos. É o caso de "endereco", que é um tipo composto e "telefones" que é uma lista. Precisamos definir estes tipos então.
Na seçao Types, na aba Design, clique com o botão direito e em Add Complex Type. Nomeie com endereço e clique duplo no item criado.
[caption id="attachment_142" align="aligncenter" width="640" caption="Adicionando Complex Type"]Adicionando Complex Type[/caption]

Na tela que se abre clique com o direito no quadro endereço e clique em add element, e nomeie o elemento criado como rua.
[caption id="attachment_143" align="aligncenter" width="640" caption="Adicionando item no tipo complexo"]Adicionando item no tipo complexo[/caption]

Repita o processo de forma a contemplar o esquema definido anteriormente. No esqueça de trocar o tipo do item numero para int.
[caption id="attachment_144" align="aligncenter" width="640" caption="Tipo complexo resultante"]Tipo complexo resultante[/caption]

Clique no botao superior, no XSD Editor, para voltar à tela principal.

Da mesma forma como ja criado, adicione um segundo complex type, chamado listaTelefones. Clique duplo no item criado. Clique com o direito no quadro listaTelefones, em seguida, Add Element.
Defina o nome do item como telefone, e na aba propriedades, defina os valores: Minimum Occurence=0 e Maximum Occurence=unbounded. Desta forma definimos uma lista com ocorrência minima de zero e sem limitação no número de itens.
[caption id="attachment_145" align="aligncenter" width="640" caption="Tipo Lista"]Tipo Lista[/caption]

Clique no botao superior, no XSD Editor, para voltar à tela principal.

Agora crie outro complex type chamado pessoaData. Clique duplo no item criado e adicione os atributos "nome", "endereco" e "telefones", conforme ja definido. Para selecionar o tipo do atributo "endereço", clique na caixa de seleção de tipo e selecione "Browse...".
[caption id="attachment_149" align="aligncenter" width="624" caption="Selecionando tipo complexo"]Selecionando tipo complexo[/caption]

Na caixa que se abre, selecione o tipo endereco e confirme. Logo após, repita o processo e selecione o tipo "listaTelefones" para o atributo "telefones".
[caption id="attachment_150" align="aligncenter" width="640" caption="Caixa de seleção de tipo complexo"]Caixa de seleção de tipo complexo[/caption]


O esquema de complex types deve ficar desta forma:
[caption id="attachment_148" align="aligncenter" width="640" caption="Esquema final"]Esquema final[/caption]

Clique no botao superior, no XSD Editor, para voltar à tela principal.

Na seção Elements, na aba Design, clique com o botão direito em Add Element, e defina o nome do elemento para "pessoa".
[caption id="attachment_146" align="aligncenter" width="640" caption="Adicionando Elemento raiz"]Adicionando Elemento raiz[/caption]

Clique duplo no elemento. No quadro pessoa, clique com o direito, em seguida Set Type->Browse...
Na caixa que aparece selecione o tipo pessoaData e clique em OK.
[caption id="attachment_151" align="aligncenter" width="640" caption="Seleção do tipo criado"]Seleção do tipo criado[/caption]


O esquema do elemento deve ficar desta forma.
[caption id="attachment_147" align="aligncenter" width="471" caption="Esquema do elemento"]Esquema do elemento[/caption]

Por fim, temos o documento XSD resultante de nossa configuração.
[caption id="attachment_155" align="aligncenter" width="640" caption="XSD Resultante"]XSD Resultante[/caption]

quarta-feira, 30 de novembro de 2011

Acessando SpringBeans no contexto do Servlet

Uma forma muito simples de se acessar SpringBeans a partir de um Servlet se dá adicionando dois trechos de código à sua aplicação.
Digamos que você tenha um SpringBean da classe "Pessoa" e você queira acessá-lo através de um Servlet. Então temos o seguinte código no ApplicationContext.xml.

<bean id="pessoaBean" class="com.wordpress.ifsantos.Pessoa"/>


Para possibilitar o acesso através do Servlet, primeiro, dentro do ApplicationContext.xml adicione a seguinte entrada:

<bean class="org.springframework.web.context.support.ServletContextAttributeExporter">
<property name="attributes">
<map>
<entry key="pessoaBean" value-ref="pessoaBean" />
</map>
</property>
</bean>

O código acima, adiciona o SpringBean "Pessoa" no mapa de atributos do contexto de Servlets, tornando-o acessível a partir de qualquer Servlet da aplicação.

Agora, dentro do Servlet, adicione o seguinte trecho de código:

Pessoa pessoaBean = (Pessoa) getServletContext().getAttribute("pessoaBean");


Pronto! O SpringBean "Pessoa" foi exportado para o contexto do Servlet e agora é possível acessá-lo sem problemas.

Gracias!

quarta-feira, 14 de setembro de 2011

Limpar password do Subclipse

Muito fácil! Muito simples! Quando você manipula o gerenciamento de versões via Eclipse, com o plugin Subclipse, tradicionalmente opta por salvar as credenciais do servidor SVN na sua máquina. Se precisar trocar o usuário, você se depara com uma feature (ou a inexistência dela). O fato é que, pela interface do Eclipse, o plugin não torna possível "zerar" suas credenciais de acesso ao servidor SVN. Para isto, é necessário executar os passos a seguir. Mas antes se deve verificar qual cliente SVN esta sendo usado pelo Subclipse (vá em Preferences > Team > SVN > SVN interface).

  • Usando Subclipse com JavaHL:

  • Existe um arquivo chamado "svn.simple". Nele se encontram o username e password utilizado. Basta apagar estas informações dentro do arquivo.
    Sistemas Unix-like:
    ~/.subversion/auth/svn.simple
    Windows 7:
    C:\Users\[usuario]\AppData\Roaming\Subversion\auth\svn.simple
    Windows XP:
    C:\Documents and Settings\[usuario]\Application Data\subversion\auth\svn.simple


  • Usando Subclipse com SVNKit:

  • DELETAR o arquvo no seguinte caminho:
    [eclipse_home]/configuration/org.eclipse.core.runtime/.keyring

    Thanks ;-)

    sexta-feira, 9 de setembro de 2011

    Escrita de arquivos em Java: FileWriter e FileOutputStream

    Em Java existem diferentes formas de se escrever dados em arquivos. Duas delas são através da utilização das classes FileWriter e FileOutputStream. Mas se exitem diferentes formas de escrita, qual é a diferença entre elas? FileOutputStream se destina à escrita fluxos de raw-bytes (bytes individuais que isoladamente não representam valores, e por sua vez, precisam ser agrupados para constituir informação), tais como dados de imagem, música ou arquivos executáveis, ao passo que, para escrever streams de caracteres, considere usar FileWriter.

    Abaixo, exemplos de utilização destas duas abordagens:
    FileOutputStream:

    FileWriter:

    No primeiro código, temos a escrita de 1024 bytes em um arquivo binário. No Segundo código, temos a escrita de 1024 caracteres em um arquivo texto. Caso o array de bytes do primeiro código, fosse escrito em disco, utilizando-se FileWriter do segundo código, o arquivo iria possuir valor diferente, em função da codificação de caracteres utilizada pelo FileWriter. Entretanto, se você tiver um array de caracteres, poderá utilizar o FileOutputStream porque este, ao efetuar a escrita, não re-codifica os bytes recebidos na entrada.

    Abraço,
    Até mais!

    Referências:
    FileOutputStream Javadoc
    FileWriter Javadoc

    quinta-feira, 11 de agosto de 2011

    Instalando dependências Maven manualmente

    Por questões de licença, as vezes não se tem acesso a pacotes de software através de repositórios Maven. Nestes casos torna-se necessário baixar e instalar manualmente estes pacotes, para se poder utilizá-los em projetos Maven. A seguir, um exemplo de como instalar um driver Oracle, que pelas quastões já mencioandas, não está em repositórios Maven.

    1. Coloque o arquivo "ojdbc5.jar" em um diretório vazio;

    2. Entre neste diretório através do prompt de comando;

    3. Informe o seguinte comando:


    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc5 -Dversion=5.0 -Dpackaging=jar -Dfile=ojdbc5.jar -DgeneratePom=true

    Pronto! Agora esta dependência está disponível para ser utilizada no arquivo POM de sua aplicação, da seguinte forma:
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc5</artifactId>
        <version>5.0</version>
    </dependency>


    Thanks!