diff --git a/ccm-bundle-devel-wildfly-web/src/main/webapp/WEB-INF/web.xml b/ccm-bundle-devel-wildfly-web/src/main/webapp/WEB-INF/web.xml
index 4390f3b4e..fcb05ca5c 100644
--- a/ccm-bundle-devel-wildfly-web/src/main/webapp/WEB-INF/web.xml
+++ b/ccm-bundle-devel-wildfly-web/src/main/webapp/WEB-INF/web.xml
@@ -21,10 +21,6 @@
ShiroFilter
/*
-
diff --git a/ccm-bundle-devel-wildfly-web/src/site/apt/index.apt b/ccm-bundle-devel-wildfly-web/src/site/apt/index.apt
new file mode 100644
index 000000000..494ab2cc9
--- /dev/null
+++ b/ccm-bundle-devel-wildfly-web/src/site/apt/index.apt
@@ -0,0 +1,12 @@
+ --------------
+ Overview
+ --------------
+ Jens Pelzetter
+ --------------
+ 2016-03-18
+ --------------
+
+LibreCCM Bundle Web for Wildfly
+
+ This module provides the web application part of the the LibreCCM devel
+ bundle for the Wildfly application server.
diff --git a/ccm-bundle-devel-wildfly-web/src/site/site.xml b/ccm-bundle-devel-wildfly-web/src/site/site.xml
new file mode 100644
index 000000000..c18a2230c
--- /dev/null
+++ b/ccm-bundle-devel-wildfly-web/src/site/site.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ccm-bundle-devel-wildfly/src/site/apt/index.apt b/ccm-bundle-devel-wildfly/src/site/apt/index.apt
new file mode 100644
index 000000000..53e0853d3
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/site/apt/index.apt
@@ -0,0 +1,13 @@
+ --------------
+ Overview
+ --------------
+ Jens Pelzetter
+ --------------
+ 2016-03-18
+ --------------
+
+LibreCCM Bundle for Wildfly
+
+ This module provides the LibreCCM devel bundle for the Wildfly application
+ server.
+
diff --git a/ccm-bundle-devel-wildfly/src/site/site.xml b/ccm-bundle-devel-wildfly/src/site/site.xml
new file mode 100644
index 000000000..c862aebae
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/site/site.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ccm-core/pom.xml b/ccm-core/pom.xml
index b6f157ccd..219629e18 100644
--- a/ccm-core/pom.xml
+++ b/ccm-core/pom.xml
@@ -284,7 +284,7 @@
report
-
+
@@ -1005,6 +1005,10 @@
arquillian-jacoco
1.0.0.Alpha8
+
+ net.sf.saxon
+ Saxon-HE
+
diff --git a/ccm-core/src/main/java/com/arsdigita/xml/CCMTransformerFactory.java b/ccm-core/src/main/java/com/arsdigita/xml/CCMTransformerFactory.java
index 766d66615..64cdb9cb2 100644
--- a/ccm-core/src/main/java/com/arsdigita/xml/CCMTransformerFactory.java
+++ b/ccm-core/src/main/java/com/arsdigita/xml/CCMTransformerFactory.java
@@ -50,7 +50,7 @@ public class CCMTransformerFactory extends TransformerFactory {
super();
//Get an XMLConfig instance
- final XmlConfig config = XmlConfig.getConfig();
+ final XmlConfig config = retrieveXmlConfig();
//Get the classname
final String classname = config.getXslTransformerFactoryClassname();
LOGGER.warn(String.format("XSL Transformer Factory classname is %s",
@@ -69,6 +69,18 @@ public class CCMTransformerFactory extends TransformerFactory {
} else {
factory = TransformerFactory.newInstance(classname, null);
}
+
+ }
+
+ private XmlConfig retrieveXmlConfig() {
+ try {
+ return XmlConfig.getConfig();
+ } catch (IllegalStateException ex) {
+ LOGGER.warn(
+ "Failed to access registry (CDI container not available?).",
+ ex);
+ return new XmlConfig();
+ }
}
@Override
diff --git a/ccm-core/src/main/java/org/libreccm/categorization/CategoryRepository.java b/ccm-core/src/main/java/org/libreccm/categorization/CategoryRepository.java
index 42a32ebd4..750303c0f 100644
--- a/ccm-core/src/main/java/org/libreccm/categorization/CategoryRepository.java
+++ b/ccm-core/src/main/java/org/libreccm/categorization/CategoryRepository.java
@@ -24,10 +24,10 @@ import org.libreccm.core.AbstractEntityRepository;
import java.util.List;
import java.util.Optional;
+import java.util.UUID;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
-import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;
/**
@@ -53,6 +53,11 @@ public class CategoryRepository extends AbstractEntityRepository
return entity.getObjectId() == 0;
}
+ @Override
+ public void initNewEntity(final Category category) {
+ category.setUuid(UUID.randomUUID().toString());
+ }
+
/**
* Retrieves a list of all top level categories (Categories without a parent
* category).
diff --git a/ccm-core/src/main/java/org/libreccm/cdi/utils/CdiUtil.java b/ccm-core/src/main/java/org/libreccm/cdi/utils/CdiUtil.java
index a1a101c05..a256e6a68 100644
--- a/ccm-core/src/main/java/org/libreccm/cdi/utils/CdiUtil.java
+++ b/ccm-core/src/main/java/org/libreccm/cdi/utils/CdiUtil.java
@@ -54,8 +54,6 @@ public class CdiUtil {
} catch(NamingException ex) {
throw new IllegalStateException("Unable to lookup BeanManager.", ex);
}
-
-
}
@SuppressWarnings("unchecked")
diff --git a/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java b/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java
index 60f43467b..b33859086 100644
--- a/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java
+++ b/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java
@@ -29,7 +29,6 @@ import java.util.Optional;
import javax.inject.Inject;
import javax.persistence.EntityGraph;
import javax.persistence.EntityManager;
-import javax.persistence.Query;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
@@ -277,12 +276,24 @@ public abstract class AbstractEntityRepository {
*/
public void save(final E entity) {
if (isNew(entity)) {
+ initNewEntity(entity);
entityManager.persist(entity);
} else {
entityManager.merge(entity);
}
}
+ /**
+ * Overwrite this method to initialise new entities with default values.
+ * One example is assigning a (random) UUID to new entity which implements
+ * the {@link Identifiable} interface.
+ *
+ * @param entity The entity to init.
+ */
+ public void initNewEntity(final E entity) {
+ //Empty default implementation
+ }
+
/**
* Deletes an entity from the database.
*
diff --git a/ccm-core/src/main/java/org/libreccm/core/CcmObjectRepository.java b/ccm-core/src/main/java/org/libreccm/core/CcmObjectRepository.java
index dad566a2c..745ff2cc9 100644
--- a/ccm-core/src/main/java/org/libreccm/core/CcmObjectRepository.java
+++ b/ccm-core/src/main/java/org/libreccm/core/CcmObjectRepository.java
@@ -23,6 +23,8 @@ package org.libreccm.core;
import static org.libreccm.core.CoreConstants.*;
+import java.util.UUID;
+
import javax.enterprise.context.RequestScoped;
/**
@@ -52,6 +54,9 @@ public class CcmObjectRepository extends AbstractEntityRepositoryJens Pelzetter
*/
-class ModuleEvent {
+public class ModuleEvent {
private EntityManager entityManager;
diff --git a/ccm-core/src/test/java/org/libreccm/categorization/CategoryManagerTest.java b/ccm-core/src/test/java/org/libreccm/categorization/CategoryManagerTest.java
index 84d16cb60..ff22fda38 100644
--- a/ccm-core/src/test/java/org/libreccm/categorization/CategoryManagerTest.java
+++ b/ccm-core/src/test/java/org/libreccm/categorization/CategoryManagerTest.java
@@ -201,7 +201,7 @@ public class CategoryManagerTest {
@ShouldMatchDataSet(
value = "datasets/org/libreccm/categorization/"
+ "CategoryManagerTest/after-add-subcategory.yml",
- excludeColumns = {"object_id"})
+ excludeColumns = {"object_id", "uuid"})
@InSequence(2100)
public void addSubCategoryToCategory() {
final Category category = new Category();
@@ -242,7 +242,8 @@ public class CategoryManagerTest {
"datasets/org/libreccm/categorization/CategoryManagerTest/data.yml")
@ShouldMatchDataSet(
value = "datasets/org/libreccm/categorization/CategoryManagerTest/"
- + "after-create-multiple-categories.yml")
+ + "after-create-multiple-categories.yml",
+ excludeColumns = {"object_id", "uuid"})
@InSequence(3100)
public void createMultipleCategories() {
final Domain domain = domainRepo.findByDomainKey("test");
diff --git a/ccm-core/src/test/java/org/libreccm/configuration/ConfigurationManagerTest.java b/ccm-core/src/test/java/org/libreccm/configuration/ConfigurationManagerTest.java
index 657fc53a6..0c68a2f13 100644
--- a/ccm-core/src/test/java/org/libreccm/configuration/ConfigurationManagerTest.java
+++ b/ccm-core/src/test/java/org/libreccm/configuration/ConfigurationManagerTest.java
@@ -202,8 +202,9 @@ public class ConfigurationManagerTest {
@UsingDataSet(
"datasets/org/libreccm/configuration/ConfigurationManagerTest/data.yml")
@ShouldMatchDataSet(
- "datasets/org/libreccm/configuration/ConfigurationManagerTest/"
- + "after-save-new.yml")
+ value = "datasets/org/libreccm/configuration/"
+ + "ConfigurationManagerTest/after-save-new.yml",
+ excludeColumns = {"object_id", "uuid"})
@InSequence(2200)
public void saveNewConfiguration() {
configurationManager.saveConfiguration(new TestConfiguration());
diff --git a/ccm-core/src/test/java/org/libreccm/core/CcmObjectRepositoryTest.java b/ccm-core/src/test/java/org/libreccm/core/CcmObjectRepositoryTest.java
index 290acc341..49a38ec2c 100644
--- a/ccm-core/src/test/java/org/libreccm/core/CcmObjectRepositoryTest.java
+++ b/ccm-core/src/test/java/org/libreccm/core/CcmObjectRepositoryTest.java
@@ -18,7 +18,6 @@
*/
package org.libreccm.core;
-import static org.libreccm.core.CoreConstants.*;
import static org.hamcrest.CoreMatchers.*;
@@ -255,7 +254,7 @@ public class CcmObjectRepositoryTest {
"datasets/org/libreccm/core/CcmObjectRepositoryTest/data.yml")
@ShouldMatchDataSet(value
= "datasets/org/libreccm/core/CcmObjectRepositoryTest/after-save-new.yml",
- excludeColumns = {"object_id"})
+ excludeColumns = {"object_id", "uuid"})
@InSequence(300)
public void saveNewCcmObject() {
final CcmObject obj = new CcmObject();
diff --git a/ccm-core/src/test/java/org/libreccm/security/ShiroTest.java b/ccm-core/src/test/java/org/libreccm/security/ShiroTest.java
index 98cc3a682..0c03c2fa6 100644
--- a/ccm-core/src/test/java/org/libreccm/security/ShiroTest.java
+++ b/ccm-core/src/test/java/org/libreccm/security/ShiroTest.java
@@ -115,6 +115,12 @@ public class ShiroTest {
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class
.getPackage())
.addPackage(org.libreccm.l10n.LocalizedString.class.getPackage())
+ .addClass(org.libreccm.modules.CcmModule.class)
+ .addClass(org.libreccm.modules.ModuleEvent.class)
+ .addClass(org.libreccm.modules.InitEvent.class)
+ .addClass(org.libreccm.modules.InstallEvent.class)
+ .addClass(org.libreccm.modules.UnInstallEvent.class)
+ .addClass(org.libreccm.modules.ShutdownEvent.class)
.addPackage(org.libreccm.security.User.class.getPackage())
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
.getPackage())
@@ -124,6 +130,7 @@ public class ShiroTest {
.addPackage(com.arsdigita.kernel.KernelConfig.class.getPackage())
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
.getPackage())
+ .addClass(org.libreccm.security.authorization.LabBean.class)
.addAsLibraries(libs)
.addAsResource("test-persistence.xml",
"META-INF/persistence.xml")
diff --git a/ccm-core/src/test/resources/test-web.xml b/ccm-core/src/test/resources/test-web.xml
index e0d5ce427..d2e2a0773 100644
--- a/ccm-core/src/test/resources/test-web.xml
+++ b/ccm-core/src/test/resources/test-web.xml
@@ -7,4 +7,17 @@
CcmCoreTest
+
+ ShiroFilter
+ org.apache.shiro.web.servlet.ShiroFilter
+
+
+
+ ShiroFilter
+ /*
+
+
+
+ org.apache.shiro.web.env.EnvironmentLoaderListener
+
diff --git a/ccm-theme-foundry/pom.xml b/ccm-theme-foundry/pom.xml
index 18802b804..80239e518 100644
--- a/ccm-theme-foundry/pom.xml
+++ b/ccm-theme-foundry/pom.xml
@@ -20,6 +20,7 @@
org.libreccm
ccm-theme-foundry
+ 7.0.0-SNAPSHOT
LibreCCM Foundry Theming Engine
diff --git a/pom.xml b/pom.xml
index a45ce0c0e..807ec83c7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -134,7 +134,7 @@
org.apache.maven.plugins
maven-site-plugin
- 3.4
+ 3.5
org.apache.maven.plugins
diff --git a/src/site/site.xml b/src/site/site.xml
index f0833a747..f00406138 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -34,7 +34,7 @@
org.apache.maven.skins
maven-fluido-skin
- 1.4
+ 1.5