package br.com.caelum.calopsita.infra.vraptor; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import javax.servlet.ServletContext; import br.com.caelum.iogi.Instantiator; import br.com.caelum.vraptor.ComponentRegistry; import br.com.caelum.vraptor.http.ParametersProvider; import br.com.caelum.vraptor.http.iogi.IogiParametersProvider; import br.com.caelum.vraptor.http.iogi.VRaptorInstantiator; import br.com.caelum.vraptor.ioc.spring.SpringProvider; import br.com.caelum.vraptor.util.hibernate.SessionFactoryCreator; public class CalopsitaProvider extends SpringProvider { private ComponentRegistry registry; @Override protected void registerCustomComponents(ComponentRegistry registry) { this.registry = registry; this.registry.register(SessionFactoryCreator.class, SessionFactoryCreator.class); this.registry.register(ParametersProvider.class, IogiParametersProvider.class); this.registry.register(Instantiator.class, VRaptorInstantiator.class); } private void move(InputStream input, FileOutputStream writer) throws IOException { BufferedInputStream bis = new BufferedInputStream(input); byte[] content = new byte[1024*10]; int len; while((len = bis.read(content))!=-1) { writer.write(content, 0, len); } } @Override public void start(ServletContext context) { String messages = context.getRealPath("/messages.properties"); String calopsitas = context.getRealPath("/calopsita.properties"); try { FileOutputStream writer = new FileOutputStream(new File(messages), false); move(new FileInputStream(calopsitas), writer); writer.close(); } catch (IOException e) { e.printStackTrace(); } File libDirectory = new File(context.getRealPath("/WEB-INF/lib")); File[] files = libDirectory.listFiles(new JarFilter()); CalopsitaPluginParser jarParser = new CalopsitaPluginParser(registry, context); for (File file : files) { jarParser.parse(file); } super.start(context); } static class JarFilter implements FilenameFilter { public boolean accept(File dir, String name) { return name.endsWith(".jar"); } } }