Académique Documents
Professionnel Documents
Culture Documents
VRaptor 3
Java 7 e CDI 1.1
Beans.xml
Como agora o VRaptor usa o CDI como container, para ele conseguir escanear
suas classes voc precisa adicionar o arquivo beans.xml dentro da pasta METAINF/beans.xml de seu projeto. Se voc usa maven, adicione
em/src/main/resources/META-INF. Voc pode usar como exemplo o
arquivo beans.xml do nosso blank-project.
Containers IoC
/**
* @deprecated CDI eyes only
*/
protected MeuController() {
this(null);
}
@Inject
public MeuController(MeuComponente meuComponente) {
this.meuComponente = meuComponente;
}
Static scanning
Se voc usava este recurso, ele no mais necessrio, pois o scanning de
classes feito de forma otmizada pelo CDI. Basta remover as configuraes do
seu build.
Eventos de inicializao
No VRaptor 3, quando voc anotava um componente com @ApplicationScoped,
o cdigo era executado na inicializao do sistema. Com o uso do CDI, agora
necessrio usar a anotao @Observes:
@ApplicationScoped
public class PrintLog {
public void whenApplicationStarts(@Observes ServletContext context) {
logger.info("My application is UP");
}
}
OGNL
Se voc usava o OGNL, ele no mais suportado no VRaptor 4. Atualmente
suportado apenas o IOGI, que possui todas as funcionalidades do OGNL, alm
de suporte a Set e objetos imutveis.
Validao
A validao fluente foi removida, e agora voc pode usar o Bean Validation.
Para compatibilidade voc pode usar os mtodos Validator.check(boolean,
Message) para efetuar validaes mais simples.
A interface Validator foi alterada de pacote, e agora est localizada
embr.com.caelum.vraptor.validator.Validator.
As classes filhas de Message foram alteradas. A classe ValidationMessage agora
SimpleMessage e o construtor foi alterado para SimpleMessage(String param,
String message, Object... params), mantendo assim compatibilidade com as
demais implementaes.
Converters
Os converters localizados agora fazem parte do pacote padro, e so
registrados automaticamente. Portanto se voc tiver a declarao do
pacote br.com.caelum.vraptor.converter.l10 no seu web.xml, remova-o.
Os converters sofreram alteraes, e agora no recebem mais o
objeto ResourceBundle no mtodo convert. Se voc precisa usar algo baseado
no Locale, voc deve injet-lo no construtor.
A interface Converter foi alterada de pacote, e agora est localizada em
br.com.caelum.vraptor.converter.Converter.
@javax.enterprise.context.RequestScoped
@javax.enterprise.context.SessionScoped
@javax.enterprise.context.ApplicationScoped
@javax.enterprise.context.ConversationScoped
@javax.enterprise.context.Dependent
Fabricando de componentes
A interface ComponentFactory no existe mais. Desta forma voc deve usar
o @Produces do CDI. Veja mais no captulo de componentes.
Sobrescrevendo componentes
No VRaptor3 para sobrescrever os componentes era necessario apenas
implementar ou estender a interface ou classe do componente. Por limitaes
no CDI necessrio agora anotar a sua classe com @Specializes.
@Inject
private ResourceBundle bundle;
localization.getBundle().getMessage("key");
LinkTo
A funcionalidade LinkTo foi atualizada e agora suporta o uso de mtodos nas
chamadas. Sendo assim voc deve converter todas as chamadas de $
{linkTo[Controller].metodo[0, 1]} para ${linkTo[Controller].metodo(0, 1)}. Veja
mais informaes no captulo sobre Views.
Pra facilitar a migrao deixamos um .sh aqui, que voc pode baixar e executar
um sed de atualizao da sintaxe (para linux e mac, em breve faremos algo pra
windows).
Serializao e deserializao
Restfulie