diff --git a/ccm-core/pom.xml b/ccm-core/pom.xml
index 6b2cc7ed4..4a301c7ea 100644
--- a/ccm-core/pom.xml
+++ b/ccm-core/pom.xml
@@ -8,7 +8,6 @@
UTF-8
-
@@ -114,7 +113,6 @@
org.libreccmccm-testutils${project.parent.version}
-
test
@@ -247,7 +245,7 @@
-
+
de.jpdigital
@@ -284,7 +282,7 @@
-
+
@@ -1002,7 +999,6 @@
-
@@ -1086,7 +1082,6 @@
-
diff --git a/ccm-core/src/main/java/org/libreccm/core/modules/CcmModuleContextListener.java b/ccm-core/src/main/java/org/libreccm/core/modules/CcmModuleContextListener.java
new file mode 100644
index 000000000..92f6c09d3
--- /dev/null
+++ b/ccm-core/src/main/java/org/libreccm/core/modules/CcmModuleContextListener.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2015 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package org.libreccm.core.modules;
+
+import javax.inject.Inject;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import javax.servlet.annotation.WebListener;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.libreccm.core.modules.ModuleManager;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@WebListener
+public class CcmModuleContextListener implements ServletContextListener {
+
+ private static final Logger LOGGER = LogManager.getLogger(
+ CcmModuleContextListener.class);
+
+ @Inject
+ private transient ModuleManager moduleManager;
+
+ @Override
+ public void contextInitialized(final ServletContextEvent event) {
+ LOGGER.info("ServletContext initalised. Initalising modules...");
+ moduleManager.initModules();
+ }
+
+ @Override
+ public void contextDestroyed(final ServletContextEvent event) {
+ LOGGER.info("ServletContext destroyed. Shutting modules down...");
+ moduleManager.shutdownModules();
+ }
+
+}
diff --git a/ccm-core/src/main/java/org/libreccm/messaging/Attachment.java b/ccm-core/src/main/java/org/libreccm/messaging/Attachment.java
index 10933f807..cc4d87bb0 100644
--- a/ccm-core/src/main/java/org/libreccm/messaging/Attachment.java
+++ b/ccm-core/src/main/java/org/libreccm/messaging/Attachment.java
@@ -47,7 +47,7 @@ public class Attachment implements Serializable {
private static final long serialVersionUID = 2063934721452863106L;
@Id
- @Column(name = "message_id")
+ @Column(name = "attachment_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private long attachmentId;
diff --git a/ccm-core/src/main/resources/db/migrations/org/libreccm/core/CcmCore/pgsql/V1_0_0_0_create_tables.sql b/ccm-core/src/main/resources/db/migrations/org/libreccm/core/CcmCore/pgsql/V1_0_0_0_create_tables.sql
index 6ee82064e..c5209705b 100644
--- a/ccm-core/src/main/resources/db/migrations/org/libreccm/core/CcmCore/pgsql/V1_0_0_0_create_tables.sql
+++ b/ccm-core/src/main/resources/db/migrations/org/libreccm/core/CcmCore/pgsql/V1_0_0_0_create_tables.sql
@@ -16,7 +16,7 @@
);
create table ccm_core.attachments (
- message_id int8 not null,
+ attachment_id int8 not null,
attachment_data oid,
description varchar(255),
mime_type varchar(255),
@@ -632,7 +632,7 @@
alter table ccm_core.attachments
add constraint FK_r3hibvgfo1dmawqig8c563xau
- foreign key (message_id)
+ foreign key (attachment_id)
references ccm_core.messages;
alter table ccm_core.categories
diff --git a/ccm-core/src/main/resources/index.jsp b/ccm-core/src/main/resources/index.jsp
new file mode 100644
index 000000000..c38169bb9
--- /dev/null
+++ b/ccm-core/src/main/resources/index.jsp
@@ -0,0 +1,5 @@
+
+
+
Hello World!
+
+
diff --git a/ccm-core/src/test/java/org/libreccm/core/modules/CcmModulesTest.java b/ccm-core/src/test/java/org/libreccm/core/modules/CcmModulesTest.java
index 545d71ace..10ea98e0a 100644
--- a/ccm-core/src/test/java/org/libreccm/core/modules/CcmModulesTest.java
+++ b/ccm-core/src/test/java/org/libreccm/core/modules/CcmModulesTest.java
@@ -51,6 +51,7 @@ import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.sql.DataSource;
+import org.jboss.arquillian.persistence.CreateSchema;
import static org.junit.Assert.*;
@@ -58,10 +59,11 @@ import static org.junit.Assert.*;
*
* @author Jens Pelzetter
*/
-@Category(IntegrationTest.class)
+//@Category(IntegrationTest.class)
@RunWith(Arquillian.class)
@PersistenceTest
@Transactional(TransactionMode.COMMIT)
+@CreateSchema({"clearup_schema.sql"})
public class CcmModulesTest {
@PersistenceContext(name = "LibreCCM")
@@ -89,10 +91,10 @@ public class CcmModulesTest {
@Deployment
public static WebArchive createDeployment() {
final PomEquippedResolveStage pom = Maven
- .resolver()
- .loadPomFromFile("pom.xml");
+ .resolver()
+ .loadPomFromFile("pom.xml");
final PomEquippedResolveStage dependencies = pom
- .importCompileAndRuntimeDependencies();
+ .importCompileAndRuntimeDependencies();
final File[] libs = dependencies.resolve().withTransitivity().asFile();
for (File lib : libs) {
@@ -101,40 +103,60 @@ public class CcmModulesTest {
}
return ShrinkWrap
- .create(WebArchive.class,
- "LibreCCM-org.libreccm.core.modules.CcmModulesTest.war")
- .addPackage(CcmCore.class.getPackage())
- .addPackage(CcmModule.class.getPackage())
- .addPackage(org.libreccm.web.Application.class.getPackage())
- .addPackage(org.libreccm.categorization.Category.class.
- getPackage())
- .addPackage(org.libreccm.l10n.LocalizedString.class.getPackage()).
- addPackage(org.libreccm.jpa.EntityManagerProducer.class
- .getPackage())
- .addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class
- .getPackage())
- .addPackage(org.libreccm.testutils.EqualsVerifier.class.
- getPackage())
- .addPackage(org.libreccm.tests.categories.IntegrationTest.class
- .getPackage())
- .addAsLibraries(libs)
- .addAsResource("test-persistence.xml",
- "META-INF/persistence.xml")
- .addAsWebInfResource("test-web.xml", "WEB-INF/web.xml")
- .addAsWebInfResource(EmptyAsset.INSTANCE, "WEB-INF/beans.xml")
- .addAsManifestResource(
- "META-INF/services/org.hibernate.integrator.spi.Integrator")
- .addAsManifestResource(
- "META-INF/services/org.libreccm.core.modules.CcmModule")
- .addAsResource("module-info/org.libreccm.core.CcmCore.properties")
- .addAsResource("ccm-core.config");
+ .create(WebArchive.class,
+ "LibreCCM-org.libreccm.core.modules.CcmModulesTest.war")
+ .addPackage(org.libreccm.auditing.CcmRevision.class.getPackage()).
+ addPackage(org.libreccm.categorization.Category.class.
+ getPackage())
+ .addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
+ .addPackage(org.libreccm.core.CcmCore.class.getPackage())
+ .addPackage(org.libreccm.core.authentication.LoginManager.class.
+ getPackage())
+ .addPackage(org.libreccm.core.modules.CcmModule.class.
+ getPackage())
+ .addPackage(org.libreccm.formbuilder.Component.class.
+ getPackage())
+ .addPackage(
+ org.libreccm.formbuilder.actions.ConfirmEmailListener.class.
+ getPackage())
+ .addPackage(org.libreccm.jpa.EntityManagerProducer.class.
+ getPackage())
+ .addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class
+ .getPackage())
+ .addPackage(org.libreccm.l10n.LocalizedString.class.getPackage()).
+ addPackage(org.libreccm.messaging.Message.class.getPackage())
+ .addPackage(org.libreccm.notification.Notification.class.
+ getPackage())
+ .addPackage(org.libreccm.portal.Portal.class.getPackage())
+ .addPackage(org.libreccm.runtime.Initalizer.class.getPackage())
+ .addPackage(org.libreccm.search.lucene.Document.class.
+ getPackage())
+ .addPackage(org.libreccm.web.Application.class.getPackage())
+ .addPackage(org.libreccm.workflow.Workflow.class.getPackage())
+ .addPackage(org.libreccm.testutils.EqualsVerifier.class.
+ getPackage())
+ .addPackage(org.libreccm.tests.categories.IntegrationTest.class
+ .getPackage())
+ .addAsLibraries(libs)
+ .addAsResource("test-persistence.xml",
+ "META-INF/persistence.xml")
+ .addAsWebInfResource("test-web.xml", "web.xml")
+ .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
+ .addAsResource(
+ "META-INF/services/org.hibernate.integrator.spi.Integrator").
+ addAsResource(
+ "META-INF/services/org.libreccm.core.modules.CcmModule")
+ .addAsResource(
+ "module-info/org.libreccm.core.CcmCore.properties")
+ .addAsResource("db")
+ .addAsResource("ccm-core.config");
}
@Test
public void verifyModules() throws SQLException {
final Object dataSourceObj = entityManager.getEntityManagerFactory()
- .getProperties().get("javax.persistence.jtaDataSource");
+ .getProperties().get("javax.persistence.jtaDataSource");
assertThat(dataSourceObj, is(instanceOf(DataSource.class)));
@@ -144,33 +166,34 @@ public class CcmModulesTest {
assertThat(connection, is(instanceOf(Connection.class)));
final ResultSet ccmObjectTable = connection.getMetaData()
- .getTables(null, "ccm_core", "ccm_objects", null);
+ .getTables(null, "ccm_core", "ccm_objects", null);
if (!ccmObjectTable.next()) {
fail("No metadata for table ccm_core.ccm_objects returned. "
- + "Table does exist?");
+ + "Table does not exist?");
}
final ResultSet installedModulesTable = connection.getMetaData()
- .getTables(null, "ccm_core", "installed_modules", null);
+ .getTables(null, "ccm_core", "installed_modules", null);
if (!installedModulesTable.next()) {
fail("No metadata for table ccm_core.installed_modules returned. "
- + "Table does not exist?");
+ + "Table does not exist?");
}
final Statement statement = connection.createStatement();
final ResultSet installedModules = statement.executeQuery(
- "SELECT module_id, module_class_name, status "
- + "FROM ccm_core.installed_modules"
- + " ORDER BY module_class_name");
+ "SELECT module_id, module_class_name, status "
+ + "FROM ccm_core.installed_modules"
+ + " ORDER BY module_class_name");
final List modulesList = new ArrayList<>();
while (installedModules.next()) {
createInstalledModuleListEntry(installedModules, modulesList);
}
-
+
assertThat(modulesList.size(), is(1));
-
- assertThat(modulesList.get(0)[0],
- is(equalTo(Integer.toString(CcmCore.class.getName().hashCode()))));
+
+ assertThat(modulesList.get(0)[0],
+ is(equalTo(Integer.toString(CcmCore.class.getName().
+ hashCode()))));
assertThat(modulesList.get(0)[1],
is(equalTo(CcmCore.class.getName())));
assertThat(modulesList.get(0)[2],
@@ -179,14 +202,14 @@ public class CcmModulesTest {
}
private void createInstalledModuleListEntry(
- final ResultSet resultSet, final List modulesList)
- throws SQLException {
+ final ResultSet resultSet, final List modulesList)
+ throws SQLException {
final String[] moduleData = new String[3];
moduleData[0] = Integer.toString(resultSet.getInt("module_id"));
moduleData[1] = resultSet.getString("module_class_name");
moduleData[2] = resultSet.getString("status");
-
+
modulesList.add(moduleData);
}
diff --git a/ccm-core/src/test/resources-wildfly8-remote-h2-mem/scripts/create_ccm_core_schema.sql b/ccm-core/src/test/resources-wildfly8-remote-h2-mem/scripts/create_ccm_core_schema.sql
index f2f805118..5274c4fe1 100644
--- a/ccm-core/src/test/resources-wildfly8-remote-h2-mem/scripts/create_ccm_core_schema.sql
+++ b/ccm-core/src/test/resources-wildfly8-remote-h2-mem/scripts/create_ccm_core_schema.sql
@@ -19,7 +19,7 @@ CREATE SCHEMA ccm_core;
);
create table ccm_core.attachments (
- message_id bigint not null,
+ attachment_id bigint not null,
attachment_data blob,
description varchar(255),
mime_type varchar(255),
@@ -635,7 +635,7 @@ CREATE SCHEMA ccm_core;
alter table ccm_core.attachments
add constraint FK_r3hibvgfo1dmawqig8c563xau
- foreign key (message_id)
+ foreign key (attachment_id)
references ccm_core.messages;
alter table ccm_core.categories
diff --git a/ccm-core/src/test/resources-wildfly8-remote-pgsql/scripts/clearup_schema.sql b/ccm-core/src/test/resources-wildfly8-remote-pgsql/scripts/clearup_schema.sql
new file mode 100644
index 000000000..08ee8967d
--- /dev/null
+++ b/ccm-core/src/test/resources-wildfly8-remote-pgsql/scripts/clearup_schema.sql
@@ -0,0 +1,6 @@
+-- Used by the org.libreccm.core.modules.CcmModulesTest to clean up the
+-- schema before the test
+
+DROP SCHEMA IF EXISTS ccm_core;
+
+DROP SEQUENCE IF EXISTS hibernate_sequence;
\ No newline at end of file
diff --git a/ccm-core/src/test/resources-wildfly8-remote-pgsql/scripts/create_ccm_core_schema.sql b/ccm-core/src/test/resources-wildfly8-remote-pgsql/scripts/create_ccm_core_schema.sql
index ace8071e1..fd0f86d37 100644
--- a/ccm-core/src/test/resources-wildfly8-remote-pgsql/scripts/create_ccm_core_schema.sql
+++ b/ccm-core/src/test/resources-wildfly8-remote-pgsql/scripts/create_ccm_core_schema.sql
@@ -19,7 +19,7 @@ CREATE SCHEMA ccm_core;
);
create table ccm_core.attachments (
- message_id int8 not null,
+ attachment_id int8 not null,
attachment_data oid,
description varchar(255),
mime_type varchar(255),
@@ -635,7 +635,7 @@ CREATE SCHEMA ccm_core;
alter table ccm_core.attachments
add constraint FK_r3hibvgfo1dmawqig8c563xau
- foreign key (message_id)
+ foreign key (attachment_id)
references ccm_core.messages;
alter table ccm_core.categories
diff --git a/ccm-shortcuts/src/main/java/org/libreccm/shortcuts/Shortcut.java b/ccm-shortcuts/src/main/java/org/libreccm/shortcuts/Shortcut.java
index 84f9e8002..418f90475 100644
--- a/ccm-shortcuts/src/main/java/org/libreccm/shortcuts/Shortcut.java
+++ b/ccm-shortcuts/src/main/java/org/libreccm/shortcuts/Shortcut.java
@@ -39,7 +39,7 @@ import javax.persistence.Table;
public class Shortcut implements Serializable {
private static final long serialVersionUID = -5674633339633714327L;
-
+
@Id
@Column(name = "shortcut_id")
@GeneratedValue(strategy = GenerationType.AUTO)
diff --git a/ccm-test-bundle/pom.xml b/ccm-test-bundle/pom.xml
new file mode 100644
index 000000000..09aca25b6
--- /dev/null
+++ b/ccm-test-bundle/pom.xml
@@ -0,0 +1,477 @@
+
+
+
+
+ UTF-8
+
+
+ 4.0.0
+
+
+ org.libreccm
+ libreccm-parent
+ 7.0.0-SNAPSHOT
+
+
+ org.libreccm
+ ccm-test-bundle
+
+ war
+
+ LibreCCM Test Bundle
+ http://www.libreccm.org/test-bundle
+
+
+
+ org.libreccm
+ ccm-core
+ ${project.parent.version}
+
+
+
+ junit
+ junit
+ test
+
+
+ org.libreccm
+ ccm-testutils
+ ${project.parent.version}
+ test
+
+
+ org.jboss.arquillian.junit
+ arquillian-junit-container
+ test
+
+
+ org.jboss.arquillian.extension
+ arquillian-persistence-dbunit
+ test
+
+
+ org.jboss.arquillian.extension
+ arquillian-transaction-impl-base
+ test
+
+
+ org.jboss.shrinkwrap.resolver
+ shrinkwrap-resolver-impl-maven
+ test
+
+
+
+
+
+ ccm-test-bundle
+
+
+
+ src/test/resources
+
+
+ ${project.build.directory}/generated-resources
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.3
+
+ 1.7
+ 1.7
+ true
+ true
+ ${project.build.sourceEncoding}
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+
+ org.libreccm
+ ccm-core
+ jar
+
+ index.jsp
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.18.1
+
+ org.libreccm.tests.categories.UnitTest
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.7.5.201505241946
+
+
+ default-prepare-agent
+
+ prepare-agent
+
+
+
+ default-report
+ prepare-package
+
+ report
+
+
+
+ default-check
+
+ check
+
+
+
+
+ BUNDLE
+
+
+ COMPLEXITY
+ COVEREDRATIO
+ 0.60
+
+
+
+
+
+
+
+
+
+ de.jpdigital
+ hibernate4-ddl-maven-plugin
+
+
+ h2
+ mysql5_innodb
+ oracle10g
+ postgresql9
+
+
+ org.libreccm.categorization
+ org.libreccm.core
+ org.libreccm.formbuilder
+ org.libreccm.jpa
+ org.libreccm.l10n
+ org.libreccm.messaging
+ org.libreccm.notification
+ org.libreccm.portal
+ org.libreccm.runtime
+ org.libreccm.search.lucene
+ org.libreccm.web
+ org.libreccm.workflow
+
+ true
+
+
+
+
+ gen-ddl
+
+ process-classes
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.10.3
+
+ true
+ true
+
+ http://docs.oracle.com/javase/7/docs/api/
+ http://docs.oracle.com/javaee/7/api/
+ http://docs.jboss.org/hibernate/orm/4.3/javadocs/
+
+ private
+ true
+ UTF-8
+ UTF-8
+ UTF-8
+ true
+ true
+ true
+ true
+ false
+ org.jboss.apiviz.APIviz
+
+ org.jboss.apiviz
+ apiviz
+ 1.3.2.GA
+
+ true
+
+ -sourceclasspath ${project.build.outputDirectory}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jxr-plugin
+ 2.5
+
+
+ org.apache.maven.plugins
+ maven-surefire-report-plugin
+ 2.18.1
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.7.5.201505241946
+
+
+ org.codehaus.mojo
+ findbugs-maven-plugin
+ 3.0.1
+
+ findbugs-exclude.xml
+
+
+
+ org.apache.maven.plugins
+ maven-pmd-plugin
+ 3.4
+
+ true
+ utf-8
+ 1.7
+
+ /rulesets/java/basic.xml
+ /rulesets/java/braces.xml
+ /rulesets/java/clone.xml
+ /rulesets/java/codesize.xml
+ /rulesets/java/design.xml
+ /rulesets/java/empty.xml
+ /rulesets/java/finalizers.xml
+ /rulesets/java/imports.xml
+ /rulesets/java/javabeans.xml
+ /rulesets/java/junit.xml
+ /rulesets/java/naming.xml
+ /rulesets/java/optimizations.xml
+ /rulesets/java/strictexception.xml
+ /rulesets/java/strings.xml
+ /rulesets/java/sunsecure.xml
+ /rulesets/java/typeresolution.xml
+ /rulesets/java/unnecessary.xml
+ /rulesets/java/unusedcode.xml
+
+
+
+
+ org.codehaus.mojo
+ javancss-maven-plugin
+ 2.1
+
+
+ org.codehaus.mojo
+ jdepend-maven-plugin
+ 2.0
+
+
+ org.codehaus.mojo
+ taglist-maven-plugin
+ 2.4
+
+
+ org.apache.maven.plugins
+ maven-project-info-reports-plugin
+ 2.8
+
+
+
+ dependencies
+
+ license
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+ wildfly8-remote-h2-mem
+
+
+ org.wildfly
+ wildfly-arquillian-container-remote
+ test
+
+
+ org.jacoco
+ org.jacoco.core
+ test
+
+
+
+
+
+
+ src/test/resources
+
+
+ src/test/resources-wildfly8-remote-h2-mem
+
+
+ ${project.build.directory}/generated-resources
+
+
+
+
+
+ de.jpdigital
+ hibernate4-ddl-maven-plugin
+
+
+ h2
+ mysql5_innodb
+ postgresql9
+
+
+ org.libreccm
+
+ true
+
+
+
+
+ gen-ddl
+
+ process-classes
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.18.1
+
+ always
+ 999
+ true
+
+ org.jboss.logmanager.LogManager
+ ${project.basedir}/target/wildfly-8.2.0.Final
+ ${project.basedir}/target/wildfly-8.2.0.Final/modules
+
+ false
+
+ org.libreccm.tests.categories.UnitTest,
+ org.libreccm.tests.categories.IntegrationTest
+
+
+
+
+
+
+
+
+ wildfly8-remote-pgsql
+
+
+ org.wildfly
+ wildfly-arquillian-container-remote
+ test
+
+
+ org.jacoco
+ org.jacoco.core
+ test
+
+
+
+
+
+
+ src/test/resources
+
+
+ src/test/resources-wildfly8-remote-pgsql
+
+
+ ${project.build.directory}/generated-resources
+
+
+
+
+
+ de.jpdigital
+ hibernate4-ddl-maven-plugin
+
+
+ h2
+ mysql5_innodb
+ postgresql9
+
+
+ org.libreccm
+
+ true
+
+
+
+
+ gen-ddl
+
+ process-classes
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.18.1
+
+ always
+ 999
+ true
+
+ org.jboss.logmanager.LogManager
+ ${project.basedir}/target/wildfly-8.2.0.Final
+ ${project.basedir}/target/wildfly-8.2.0.Final/modules
+
+ false
+
+ org.libreccm.tests.categories.UnitTest,
+ org.libreccm.tests.categories.IntegrationTest
+
+
+
+
+
+
+
+
diff --git a/ccm-test-bundle/src/main/resources-wildfly8-remote-h2-mem/arquillian.xml b/ccm-test-bundle/src/main/resources-wildfly8-remote-h2-mem/arquillian.xml
new file mode 100644
index 000000000..fd7c984a5
--- /dev/null
+++ b/ccm-test-bundle/src/main/resources-wildfly8-remote-h2-mem/arquillian.xml
@@ -0,0 +1,40 @@
+
+
+
+
+ target/deployments
+
+
+
+
+
+ java:/comp/env/jdbc/org/libreccm/ccm-test-bundle/h2-mem
+
+
+ NONE
+
+ true
+ target
+
+
+
+ json
+ org.dbunit.ext.h2.H2DataTypeFactory
+ true
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ccm-test-bundle/src/main/resources-wildfly8-remote-h2-mem/scripts/clean_schema.sql b/ccm-test-bundle/src/main/resources-wildfly8-remote-h2-mem/scripts/clean_schema.sql
new file mode 100644
index 000000000..08ee8967d
--- /dev/null
+++ b/ccm-test-bundle/src/main/resources-wildfly8-remote-h2-mem/scripts/clean_schema.sql
@@ -0,0 +1,6 @@
+-- Used by the org.libreccm.core.modules.CcmModulesTest to clean up the
+-- schema before the test
+
+DROP SCHEMA IF EXISTS ccm_core;
+
+DROP SEQUENCE IF EXISTS hibernate_sequence;
\ No newline at end of file
diff --git a/ccm-test-bundle/src/main/resources-wildfly8-remote-h2-mem/test-persistence.xml b/ccm-test-bundle/src/main/resources-wildfly8-remote-h2-mem/test-persistence.xml
new file mode 100644
index 000000000..9d279e870
--- /dev/null
+++ b/ccm-test-bundle/src/main/resources-wildfly8-remote-h2-mem/test-persistence.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+ org.hibernate.jpa.HibernatePersistenceProvider
+
+ java:/comp/env/jdbc/org/libreccm/ccm-test-bundle/h2-mem
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ccm-test-bundle/src/main/resources-wildfly8-remote-pgsql/arquillian.xml b/ccm-test-bundle/src/main/resources-wildfly8-remote-pgsql/arquillian.xml
new file mode 100644
index 000000000..f94d6fd9c
--- /dev/null
+++ b/ccm-test-bundle/src/main/resources-wildfly8-remote-pgsql/arquillian.xml
@@ -0,0 +1,39 @@
+
+
+
+
+ target/deployments
+
+
+
+ java:/comp/env/jdbc/org/libreccm/ccm-test-bundle/pgsql
+
+
+
+ NONE
+
+ true
+ target
+
+
+
+ json
+
+ true
+ true
+
+
+
+
+
+
diff --git a/ccm-test-bundle/src/main/resources-wildfly8-remote-pgsql/scripts/clean_schema.sql b/ccm-test-bundle/src/main/resources-wildfly8-remote-pgsql/scripts/clean_schema.sql
new file mode 100644
index 000000000..08ee8967d
--- /dev/null
+++ b/ccm-test-bundle/src/main/resources-wildfly8-remote-pgsql/scripts/clean_schema.sql
@@ -0,0 +1,6 @@
+-- Used by the org.libreccm.core.modules.CcmModulesTest to clean up the
+-- schema before the test
+
+DROP SCHEMA IF EXISTS ccm_core;
+
+DROP SEQUENCE IF EXISTS hibernate_sequence;
\ No newline at end of file
diff --git a/ccm-test-bundle/src/main/resources-wildfly8-remote-pgsql/test-persistence.xml b/ccm-test-bundle/src/main/resources-wildfly8-remote-pgsql/test-persistence.xml
new file mode 100644
index 000000000..3d574f57f
--- /dev/null
+++ b/ccm-test-bundle/src/main/resources-wildfly8-remote-pgsql/test-persistence.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+ org.hibernate.jpa.HibernatePersistenceProvider
+
+ java:/comp/env/jdbc/org/libreccm/ccm-test-bundle/pgsql
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ccm-test-bundle/src/main/webapp/WEB-INF/web.xml b/ccm-test-bundle/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 000000000..f53ebe797
--- /dev/null
+++ b/ccm-test-bundle/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,10 @@
+
+
+
+ LibreCCM Test Bundle
+
+
diff --git a/ccm-test-bundle/src/test/java/org/libreccm/CcmModulesTest.java b/ccm-test-bundle/src/test/java/org/libreccm/CcmModulesTest.java
new file mode 100644
index 000000000..3851dbf6d
--- /dev/null
+++ b/ccm-test-bundle/src/test/java/org/libreccm/CcmModulesTest.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2015 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package org.libreccm;
+
+import java.io.File;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.sql.DataSource;
+
+import static org.hamcrest.CoreMatchers.*;
+
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.persistence.CreateSchema;
+import org.jboss.arquillian.persistence.PersistenceTest;
+import org.jboss.arquillian.transaction.api.annotation.TransactionMode;
+import org.jboss.arquillian.transaction.api.annotation.Transactional;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;
+import org.jboss.shrinkwrap.resolver.api.maven.PomEquippedResolveStage;
+import org.junit.After;
+import org.junit.AfterClass;
+
+import static org.junit.Assert.*;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+import org.libreccm.core.CcmCore;
+import org.libreccm.core.modules.ModuleStatus;
+import org.libreccm.tests.categories.IntegrationTest;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@Category(IntegrationTest.class)
+@RunWith(Arquillian.class)
+@PersistenceTest
+@Transactional(TransactionMode.COMMIT)
+@CreateSchema({"clean_schema.sql"})
+public class CcmModulesTest {
+
+ @PersistenceContext(name = "LibreCCM")
+ private transient EntityManager entityManager;
+
+ public CcmModulesTest() {
+
+ }
+
+ @BeforeClass
+ public static void setUpClass() {
+ }
+
+ @AfterClass
+ public static void tearDownClass() {
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ @Deployment
+ public static WebArchive createDeployment() {
+ final PomEquippedResolveStage pom = Maven
+ .resolver()
+ .loadPomFromFile("pom.xml");
+ final PomEquippedResolveStage dependencies = pom
+ .importCompileAndRuntimeDependencies();
+ final File[] libs = dependencies.resolve().withTransitivity().asFile();
+
+ for (File lib : libs) {
+ System.err.printf("Adding file '%s' to test archive...%n",
+ lib.getName());
+ }
+
+ return ShrinkWrap
+ .create(WebArchive.class,
+ "LibreCCM-org.libreccm.CcmModulesTest.war")
+ .addAsLibraries(libs)
+ .addAsWebInfResource("web.xml")
+ .addAsWebInfResource("test-persistence.xml")
+ .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
+ }
+
+ @Test
+ public void verifyModules() throws SQLException {
+ final Object dataSourceObj = entityManager.getEntityManagerFactory()
+ .getProperties().get("javax.persistence.jtaDataSource");
+ assertThat(dataSourceObj, is(instanceOf(DataSource.class)));
+
+ final DataSource dataSource = (DataSource) dataSourceObj;
+ final Connection connection = dataSource.getConnection();
+ assertThat(connection, is(instanceOf(Connection.class)));
+
+ final ResultSet ccmObjectTable = connection.getMetaData()
+ .getTables(null, "ccm_core", "ccm_objects", null);
+ if (!ccmObjectTable.next()) {
+ fail("No metadata for table ccm_core.ccm_objects returned. "
+ + "Table does not exist?");
+ }
+
+ final ResultSet installedModulesTable = connection.getMetaData()
+ .getTables(null, "ccm_core", "installed_modules", null);
+ if (!installedModulesTable.next()) {
+ fail("No metadata for table ccm_core.installed_modules returned. "
+ + "Table does not exist?");
+ }
+
+ final Statement statement = connection.createStatement();
+ final ResultSet installedModules = statement.executeQuery(
+ "SELECT module_id, module_class_name, status "
+ + "FROM ccm_core.installed_modules"
+ + " ORDER BY module_class_name");
+ final List modulesData = new ArrayList<>();
+ while (installedModules.next()) {
+ createInstalledModuleListEntry(installedModules, modulesData);
+ }
+
+ assertThat(modulesData.size(), is(1));
+
+ assertThat(Integer.toString(modulesData.get(0).getModuleId()),
+ is(equalTo(Integer.toString(CcmCore.class.getName().
+ hashCode()))));
+ assertThat(modulesData.get(0).getModuleClassName(),
+ is(equalTo(CcmCore.class.getName())));
+ assertThat(modulesData.get(0).getStatus(),
+ is(equalTo(ModuleStatus.INSTALLED.toString())));
+ }
+
+ private void createInstalledModuleListEntry(
+ final ResultSet resultSet, final List modulesData)
+ throws SQLException {
+
+ final InstalledModuleData moduleData = new InstalledModuleData();
+ moduleData.setModuleId(resultSet.getInt("module_id"));
+ moduleData.setModuleClassName(resultSet.getString("module_class_name"));
+ moduleData.setStatus(resultSet.getString("status"));
+
+ modulesData.add(moduleData);
+ }
+
+ private class InstalledModuleData {
+
+ private int moduleId;
+ private String moduleClassName;
+ private String status;
+
+ public int getModuleId() {
+ return moduleId;
+ }
+
+ public void setModuleId(final int moduleId) {
+ this.moduleId = moduleId;
+ }
+
+ public String getModuleClassName() {
+ return moduleClassName;
+ }
+
+ public void setModuleClassName(final String moduleClassName) {
+ this.moduleClassName = moduleClassName;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(final String status) {
+ this.status = status;
+ }
+
+ }
+}
diff --git a/pom.xml b/pom.xml
index 91d89cf48..b3ffcdb7a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,8 +1,5 @@
-
+4.0.0
@@ -42,7 +39,8 @@
ccm-shortcutsccm-testutilsccm-docrepo
-
+ ccm-test-bundle
+