se vc recebe o Sap e o EnviadorDeEmails como dependência, vc não deveria dar new neles:
public class GeradorDeNotaFiscalController {
private final Sap sap;
private final EnviadorDeEmails enviador;
public GeradorDeNotaFiscalController(Sap sap, EnviadorDeEmails enviador) {
this.sap = sap;
this.enviador = enviador;
}
}
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:
public interface NotaFiscalObserver /*extends Observer?*/ {
//...
}
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:
@Resource
public class GeradorDeNotaFiscalController {
public GeradorDeNotaFiscalController(List<NotaFiscalObserver> observers) {
this.observers = observers;
}
public void notifica(Fatura fatura) {
for (NotaFiscalObserver obs : this.observers) {
obs.notifica(fatura);
}
}
}
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!
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.
2011-03-28 22:51:11.861:INFO::jetty-7.3.0.v20110203
2011-03-28 22:51:13.554:WARN::Failed startup of context o.m.j.p.JettyWebAppContext{/,file:/E:/trabalho/workspace/aws2/src/main/webapp/},file:/E:/trabalho/workspace/aws2/src/main/webapp/
java.lang.IllegalStateException: Duplicate fragment name: @@-NAMELESS-@@0 for jar:file:/E:/trabalho/repositorio/br/com/caelum/vraptor/3.3.2-SNAPSHOT/vraptor-3.3.2-SNAPSHOT.jar!/META-INF/web-fragment.xml and jar:file:/E:/trabalho/workspace/aws2/src/main/webapp/WEB-INF/lib/vraptor-3.3.1.jar!/META-INF/web-fragment.xml
at org.eclipse.jetty.webapp.MetaData.addFragment(MetaData.java:244)
at org.eclipse.jetty.webapp.FragmentConfiguration.findWebFragments(FragmentConfiguration.java:72)
...
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
Obrigado o maven estava com um lixo … mas agora testando surgiu este erro, com a versão 3.3.1 funciona com a 3.3.2-SNAPSHOT ele aparece …
2011-03-30 15:17:20.997:WARN::Error for /
java.lang.NoClassDefFoundError: br/com/caelum/vraptor/vraptor2/Info
at br.com.caelum.vraptor.util.StringUtils.lowercaseFirst(StringUtils.java:35)