From aaae068e740ee2c6ab776e72b717ef56db333f65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juraci=20Paix=C3=A3o=20Kr=C3=B6hling?= Date: Thu, 30 Apr 2015 16:09:27 +0200 Subject: [PATCH] HAWKULAR-171 - Added Liquibase for database migration --- accounts/pom.xml | 18 +++ .../accounts/backend/control/MsgLogger.java | 8 + .../control/SetupHawkularAccountsImpl.java | 38 ++++- .../hawkular/accounts/db/db.changelog-1.0.xml | 148 ++++++++++++++++++ .../accounts/db/db.changelog-master.xml | 27 ++++ accounts/src/main/webapp/WEB-INF/web.xml | 23 +++ .../main/resources/META-INF/persistence.xml | 4 +- pom.xml | 10 ++ 8 files changed, 265 insertions(+), 11 deletions(-) create mode 100644 accounts/src/main/resources/org/hawkular/accounts/db/db.changelog-1.0.xml create mode 100644 accounts/src/main/resources/org/hawkular/accounts/db/db.changelog-master.xml diff --git a/accounts/pom.xml b/accounts/pom.xml index 1800ba2..65dad7b 100644 --- a/accounts/pom.xml +++ b/accounts/pom.xml @@ -68,6 +68,16 @@ cdi-api provided + + org.jboss.spec.javax.servlet + jboss-servlet-api_3.1_spec + provided + + + org.jboss.spec.javax.transaction + jboss-transaction-api_1.2_spec + provided + org.jboss.spec.javax.ejb jboss-ejb-api_3.2_spec @@ -92,6 +102,14 @@ jboss-logging-processor provided + + org.liquibase + liquibase-core + + + com.mattbertolini + liquibase-slf4j + junit diff --git a/accounts/src/main/java/org/hawkular/accounts/backend/control/MsgLogger.java b/accounts/src/main/java/org/hawkular/accounts/backend/control/MsgLogger.java index 1c6cc74..3b4da85 100644 --- a/accounts/src/main/java/org/hawkular/accounts/backend/control/MsgLogger.java +++ b/accounts/src/main/java/org/hawkular/accounts/backend/control/MsgLogger.java @@ -38,4 +38,12 @@ public interface MsgLogger { @LogMessage(level = Logger.Level.INFO) @Message(id = 110001, value = "Finished setting up Hawkular Accounts") void infoFinishedSetupAccounts(); + + @LogMessage(level = Logger.Level.INFO) + @Message(id = 110002, value = "Starting database update") + void infoStartedDatabaseUpdated(); + + @LogMessage(level = Logger.Level.INFO) + @Message(id = 110003, value = "Finished database update") + void infoFinishedDatabaseUpdate(); } diff --git a/accounts/src/main/java/org/hawkular/accounts/backend/control/SetupHawkularAccountsImpl.java b/accounts/src/main/java/org/hawkular/accounts/backend/control/SetupHawkularAccountsImpl.java index 4e705dd..d3752c3 100644 --- a/accounts/src/main/java/org/hawkular/accounts/backend/control/SetupHawkularAccountsImpl.java +++ b/accounts/src/main/java/org/hawkular/accounts/backend/control/SetupHawkularAccountsImpl.java @@ -21,12 +21,14 @@ import org.hawkular.accounts.api.internal.adapter.HawkularAccounts; import org.hawkular.accounts.api.model.Role; -import javax.annotation.PostConstruct; -import javax.annotation.security.PermitAll; +import javax.annotation.Resource; import javax.ejb.Singleton; -import javax.ejb.Startup; import javax.inject.Inject; import javax.persistence.EntityManager; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import javax.transaction.SystemException; +import javax.transaction.UserTransaction; import java.util.HashSet; import java.util.Set; @@ -36,10 +38,7 @@ * * @author Juraci Paixão Kröhling */ -@Startup -@Singleton -@PermitAll -public class SetupHawkularAccountsImpl { +public class SetupHawkularAccountsImpl implements ServletContextListener { private final MsgLogger logger = MsgLogger.LOGGER; @Inject @@ -52,9 +51,32 @@ public class SetupHawkularAccountsImpl { @Inject OperationService operationService; + @Resource + UserTransaction tx; + Set roles = new HashSet<>(7); - @PostConstruct + @Override + public void contextInitialized(ServletContextEvent servletContextEvent) throws RuntimeException { + try { + tx.begin(); + setup(); + tx.commit(); + } catch (Exception e) { + try { + tx.rollback(); + } catch (SystemException e1) { + // couldn't rollback... but let's ignore this one, as we've got another more important exception to log + } + throw new RuntimeException(e); + } + } + + @Override + public void contextDestroyed(ServletContextEvent servletContextEvent) { + + } + public void setup() { logger.infoStartedSetupAccounts(); roles.add(monitor); diff --git a/accounts/src/main/resources/org/hawkular/accounts/db/db.changelog-1.0.xml b/accounts/src/main/resources/org/hawkular/accounts/db/db.changelog-1.0.xml new file mode 100644 index 0000000..62c73a8 --- /dev/null +++ b/accounts/src/main/resources/org/hawkular/accounts/db/db.changelog-1.0.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/accounts/src/main/resources/org/hawkular/accounts/db/db.changelog-master.xml b/accounts/src/main/resources/org/hawkular/accounts/db/db.changelog-master.xml new file mode 100644 index 0000000..d034a78 --- /dev/null +++ b/accounts/src/main/resources/org/hawkular/accounts/db/db.changelog-master.xml @@ -0,0 +1,27 @@ + + + + + + \ No newline at end of file diff --git a/accounts/src/main/webapp/WEB-INF/web.xml b/accounts/src/main/webapp/WEB-INF/web.xml index 43f22b1..10a43cc 100644 --- a/accounts/src/main/webapp/WEB-INF/web.xml +++ b/accounts/src/main/webapp/WEB-INF/web.xml @@ -23,6 +23,29 @@ version="3.0"> Hawkular Accounts + + liquibase.changelog + org/hawkular/accounts/db/db.changelog-master.xml + + + + liquibase.datasource + java:jboss/datasources/HawkularDS + + + + liquibase.onerror.fail + true + + + + liquibase.integration.servlet.LiquibaseServletListener + + + + org.hawkular.accounts.backend.control.SetupHawkularAccountsImpl + + REST endpoints diff --git a/api/src/main/resources/META-INF/persistence.xml b/api/src/main/resources/META-INF/persistence.xml index 251c941..ec02d78 100644 --- a/api/src/main/resources/META-INF/persistence.xml +++ b/api/src/main/resources/META-INF/persistence.xml @@ -23,6 +23,7 @@ http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> + java:jboss/datasources/HawkularDS org.hawkular.accounts.api.model.BaseEntity org.hawkular.accounts.api.model.HawkularUser @@ -35,8 +36,5 @@ http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> org.hawkular.accounts.api.model.PersonaResourceRole org.hawkular.accounts.api.model.Resource org.hawkular.accounts.api.model.Role - - - \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3310601..3cd4d74 100644 --- a/pom.xml +++ b/pom.xml @@ -181,6 +181,16 @@ + + org.liquibase + liquibase-core + 3.3.3 + + + com.mattbertolini + liquibase-slf4j + 1.2.1 + com.h2database