VRaptor 4 com JPA - Integração com Flyway

Boa tarde,

Estou querendo criar um plugin para o vraptor integrando o flyway.

Atualmente eu estou usando JPA, e ao invés de usar o vraptor-jpa, eu copiei as suas classes para o meu projeto para eu poder modificar o o EntityManagerFactoryCreator.

A modificação foi sutil:

         //Criei esta classe que busca .properties através de uma enum CONFIG
	@Inject
	private ApplicationService service;

	@ApplicationScoped
	@Produces
	public EntityManagerFactory getEntityManagerFactory() {
		String persistenceUnit = environment.get("br.com.caelum.vraptor.jpa.persistenceunit", "default");

		// Database configuration
		Properties configs = service.getConfig(Config.DATABASE);
		String user = configs.getProperty("user");
		String pass = configs.getProperty("pass");
		String url = configs.getProperty("url");

		// Migrate database
		Flyway flyway = new Flyway();

		flyway.setDataSource(url, user, pass);
		flyway.setLocations("script");

		flyway.migrate();

		// Create Entity Manager Factory
		Map<String, String> props = createFactoryProperties(configs, user, pass, url);
		return Persistence.createEntityManagerFactory(persistenceUnit, props);

	}

Bom, o código não ficou muito bom não…Mas enfim, minha ideia para o plugin seria: o desenvolvedor configura a dependencia (gradle, maven ou cola o jar na mao, que seja) e o plugin já integra com o flyway (e tambem com os Enviroments do VRaptor). Mas para isso funcionar, o plugin tem que se virar e descobrir a URL/User/Password que o usuário vai usar.

Um jeito seria pegar o persistence.xml (se ele existir), e procurar o “properties”. No caso do Hibernate procurar pelo hibernate.cfg.xml.
Mas pode não ser tão simples, já que mesmo assim os dados de conexão podem estar em outro lugar.

Enfim, o que vcs acham ? Sugestões… Dicas ? Viabilidade deste plugin ? etc e tal
vlw

se a pessoa usa JPA, os dados de conexão geralmente vão estar no persistence.xml

mas talvez estejam também no hibernate.properties ou hibernate.cfg.xml, mesmo usando JPA, então vc tem 3 lugares pra procurar.

mas pode ser que a pessoa esteja usando um DataSource do servidor, ao invés de credenciais, então vc não vai conseguir fazer isso…

o Flyway precisa mesmo desses dados?
não dá pra passar já um datasource ou uma connection pra ele?