| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 16:32:13
|
lfcdtv
JavaBaby
Membro desde: 26/05/2009 09:03:56
Mensagens: 88
Offline
|
Pesoal,
Tenho alguns métodos em um controller que estão fazendo mais de uma coisa e estou querendo refatorá-los para um observer. É um problema bem parecido com a classe GeradorDeNotaFiscal desse post:http://blog.caelum.com.br/tdd-e-sua-influencia-no-acoplamento-e-coesao/
No caso esse controller seria observado e os observadores seriam recebidos no construtor:
No controller também teriam os métodos para adicionar observer e notificação.
Tem outra forma de implementar esse observer no controller ou dessa forma está ok?
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 19:29:02
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Online
|
como vc pensa em fazer com que requisições sejam transformadas em observers?
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 20:22:58
|
lfcdtv
JavaBaby
Membro desde: 26/05/2009 09:03:56
Mensagens: 88
Offline
|
Os observers só iriam salvar ou atualizar alguns dados no banco.
This message was edited 1 time. Last update was at 25/03/2011 20:23:50
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 22:07:01
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Online
|
pode dar um exemplo mais concreto?
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 22:26:03
|
lfcdtv
JavaBaby
Membro desde: 26/05/2009 09:03:56
Mensagens: 88
Offline
|
Imagina um controller parecido com essa classe GeradorDeNotaFiscal:
Agora sap e EnviadorDeEmails seriam Observers:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 22:30:01
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Online
|
se vc recebe o Sap e o EnviadorDeEmails como dependência, vc não deveria dar new neles:
esse controller é um @Resource?
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 22:37:22
|
lfcdtv
JavaBaby
Membro desde: 26/05/2009 09:03:56
Mensagens: 88
Offline
|
É porque em Sap eu teria que receber o controller no construtor.
Algo assim:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 23:05:05
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Online
|
aí que está, vc não precisa do adicionaObservador, já que vc tá recebendo o Sap no construtor do controller... o ideal na verdade é vc criar uma interface: e fazer com que o Sap e o EnviadorDeEmails implementem essa interface. Eles também devem ser anotados com @Component. Daí vc pode receber no controller uma List<NotaFiscalObserver>: ou algo do tipo. Assim, se vc precisar adicionar outro observer é só criar uma classe anotada com @Component que implementa NotaFiscalObserver, não precisa modificar o controller. Lembrando: o Sap e o EnviadorDeEmails não precisam receber o controller!
This message was edited 1 time. Last update was at 25/03/2011 23:05:58
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/03/2011 01:34:03
|
Edufa
JavaEvangelist
![[Avatar]](/images/avatar/5747a0021eb349e9c8d3667cf1a5e9ec.jpg)
Membro desde: 18/04/2006 10:20:03
Mensagens: 315
Localização: Curitiba, PR
Offline
|
Lucas Cavalcanti wrote:aí que está, vc não precisa do adicionaObservador, já que vc tá recebendo o Sap no construtor do controller...
o ideal na verdade é vc criar uma interface:
e fazer com que o Sap e o EnviadorDeEmails implementem essa interface. Eles também devem ser anotados com @Component.
Daí vc pode receber no controller uma List<NotaFiscalObserver>:
Curiosidade
observers vai receber todos as classes que implementam NotaFiscalObserver ?
|
Edufa
Curitiba, PR
--
"O estado sou eu". - Luís XIV
"O estado somos nós."- Lênin
"O estado somos eu." - Lula
--
O mundo é deles mas a amazônia é nossa
O petróleo é nosso, mas o gás é deles.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/03/2011 10:29:44
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Online
|
exato!
isso só funciona automaticamente se vc usa o Spring como DI (se vc está com os jars do spring no WEB-INF/lib), pro Guice tem que fazer uma configuraçãozinha e pro Pico eu não tenho certeza, mas é possível que funcione também.
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/03/2011 12:15:14
|
Edufa
JavaEvangelist
![[Avatar]](/images/avatar/5747a0021eb349e9c8d3667cf1a5e9ec.jpg)
Membro desde: 18/04/2006 10:20:03
Mensagens: 315
Localização: Curitiba, PR
Offline
|
Isto é muito legal !
poderia ver o q tem de fazer no Guice, atualmente estou usando apenas ele.
[]s
|
Edufa
Curitiba, PR
--
"O estado sou eu". - Luís XIV
"O estado somos nós."- Lênin
"O estado somos eu." - Lula
--
O mundo é deles mas a amazônia é nossa
O petróleo é nosso, mas o gás é deles.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/03/2011 10:59:43
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Online
|
no guice vc precisa configurar essa List<...> explicitamente...
tem um jeito relativamente fácil de fazer isso, mas tá protected no VRaptor...
se vc não se importar de usar snapshots, posso gerar um pra vc com essa alteração
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/03/2011 16:19:43
|
Edufa
JavaEvangelist
![[Avatar]](/images/avatar/5747a0021eb349e9c8d3667cf1a5e9ec.jpg)
Membro desde: 18/04/2006 10:20:03
Mensagens: 315
Localização: Curitiba, PR
Offline
|
eu gostaria sim, se não for incomodo, com o snapshot não posso colocar em produção, mas poderei testar internamente.
[]
|
Edufa
Curitiba, PR
--
"O estado sou eu". - Luís XIV
"O estado somos nós."- Lênin
"O estado somos eu." - Lula
--
O mundo é deles mas a amazônia é nossa
O petróleo é nosso, mas o gás é deles.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/03/2011 19:13:56
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Online
|
Testa aí
| Nome do arquivo |
vraptor-3.3.2-SNAPSHOT.jar |
Download
|
| Descrição |
snapshot com o binding List<Classe> |
| Tamanho |
497 Kbytes
|
| Baixado: |
47 vez(es) |
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/03/2011 23:45:04
|
Edufa
JavaEvangelist
![[Avatar]](/images/avatar/5747a0021eb349e9c8d3667cf1a5e9ec.jpg)
Membro desde: 18/04/2006 10:20:03
Mensagens: 315
Localização: Curitiba, PR
Offline
|
Apareceu um erro estranho
Usando eclipse+maven+jetty7
Arranquei o fragment e voltou a funcionar...
mas não sei se teve a ver a atualização ou algumas mexidas que eu tinha feito no pom
|
Edufa
Curitiba, PR
--
"O estado sou eu". - Luís XIV
"O estado somos nós."- Lênin
"O estado somos eu." - Lula
--
O mundo é deles mas a amazônia é nossa
O petróleo é nosso, mas o gás é deles.
|
|
|
 |
|
|