diff --git a/ccm-bundle-devel-wildfly-web/src/main/resources/log4j2.xml b/ccm-bundle-devel-wildfly-web/src/main/resources/log4j2.xml
index 4927cf628..ad3d929fb 100644
--- a/ccm-bundle-devel-wildfly-web/src/main/resources/log4j2.xml
+++ b/ccm-bundle-devel-wildfly-web/src/main/resources/log4j2.xml
@@ -80,6 +80,9 @@
+
+
@@ -93,10 +96,10 @@
level="debug">
+ level="debug">
-
+
diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/rs/Images.java b/ccm-cms/src/main/java/org/librecms/contentsection/rs/Images.java
index 8a8ee55ee..220e5bf06 100644
--- a/ccm-cms/src/main/java/org/librecms/contentsection/rs/Images.java
+++ b/ccm-cms/src/main/java/org/librecms/contentsection/rs/Images.java
@@ -161,7 +161,7 @@ public class Images {
* @return A {@link Response} containing the scaled image or an error value.
*/
@GET
- @Path("/{path:.+}")
+ @Path("/{path:^(?!uuid).+$}")
public Response getImage(
@PathParam("content-section")
final String sectionName,
@@ -220,7 +220,7 @@ public class Images {
* image.
*/
@GET
- @Path("/{path:.*}/properties")
+ @Path("/{path:^(?!uuid).+$}/properties")
public Response getImageProperties(
@PathParam("content-section") final String sectionName,
@PathParam("path") final String path) {
diff --git a/ccm-core/src/main/java/org/libreccm/theming/xslt/CcmUriResolver.java b/ccm-core/src/main/java/org/libreccm/theming/xslt/CcmUriResolver.java
index 23b388c65..3421fd416 100644
--- a/ccm-core/src/main/java/org/libreccm/theming/xslt/CcmUriResolver.java
+++ b/ccm-core/src/main/java/org/libreccm/theming/xslt/CcmUriResolver.java
@@ -18,12 +18,13 @@
*/
package org.libreccm.theming.xslt;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.libreccm.theming.ThemeProvider;
import org.libreccm.theming.ThemeVersion;
import java.io.InputStream;
import java.util.Objects;
-import java.util.Optional;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
@@ -36,6 +37,9 @@ import javax.xml.transform.stream.StreamSource;
*/
class CcmUriResolver implements URIResolver {
+ private static final Logger LOGGER = LogManager
+ .getLogger(CcmUriResolver.class);
+
private final String theme;
private final ThemeVersion version;
private final ThemeProvider themeProvider;
@@ -48,6 +52,13 @@ class CcmUriResolver implements URIResolver {
Objects.requireNonNull(version);
Objects.requireNonNull(themeProvider);
+ LOGGER.debug("Creating new instance of {} with these parameters:",
+ getClass().getName());
+ LOGGER.debug("\ttheme = {}", theme);
+ LOGGER.debug("\tversion = {}", Objects.toString(version));
+ LOGGER.debug("\tthemeProvider = {}",
+ themeProvider.getClass().getName());
+
this.theme = theme;
this.version = version;
this.themeProvider = themeProvider;
@@ -57,12 +68,17 @@ class CcmUriResolver implements URIResolver {
public Source resolve(final String href,
final String base) throws TransformerException {
+ LOGGER.debug("Resolving href = \"{}\" using base = \"{}\"...",
+ href,
+ base);
+
final String path;
if (base == null) {
path = href;
} else {
- path = String.join("/", href, base);
+ path = String.join("/", base, href);
}
+ LOGGER.debug("Using path \"{}\"...", path);
final InputStream inputStream = themeProvider
.getThemeFileAsStream(theme, version, path)
@@ -76,6 +92,9 @@ class CcmUriResolver implements URIResolver {
version,
themeProvider.getClass().getName())));
+ LOGGER.debug("Resolved href = \"{}\" with base \"{}\" successfully.",
+ href,
+ path);
return new StreamSource(inputStream);
}
diff --git a/ccm-core/src/main/java/org/libreccm/theming/xslt/XsltThemeProcessor.java b/ccm-core/src/main/java/org/libreccm/theming/xslt/XsltThemeProcessor.java
index 0746a55f7..cf5d407ee 100644
--- a/ccm-core/src/main/java/org/libreccm/theming/xslt/XsltThemeProcessor.java
+++ b/ccm-core/src/main/java/org/libreccm/theming/xslt/XsltThemeProcessor.java
@@ -137,7 +137,7 @@ public class XsltThemeProcessor implements ThemeProcessor {
} catch (ParserConfigurationException ex) {
throw new UnexpectedErrorException(ex);
}
-
+
final Document document;
try {
final InputStream xmlBytesStream = new ByteArrayInputStream(
@@ -201,6 +201,9 @@ public class XsltThemeProcessor implements ThemeProcessor {
final TransformerFactory transformerFactory = TransformerFactory
.newInstance(TransformerFactoryImpl.class.getName(),
getClass().getClassLoader());
+ transformerFactory.setURIResolver(new CcmUriResolver(theme.getName(),
+ theme.getVersion(),
+ themeProvider));
final TransformerFactoryImpl transformerFactoryImpl
= (TransformerFactoryImpl) transformerFactory;
final Configuration configuration = transformerFactoryImpl
@@ -215,9 +218,9 @@ public class XsltThemeProcessor implements ThemeProcessor {
final Transformer transformer;
try {
transformer = transformerFactory.newTransformer(xslFileStreamSource);
- transformer.setURIResolver(new CcmUriResolver(theme.getName(),
- theme.getVersion(),
- themeProvider));
+// transformer.setURIResolver(new CcmUriResolver(theme.getName(),
+// theme.getVersion(),
+// themeProvider));
transformer.setErrorListener(new ErrorListener() {
@Override
diff --git a/ccm-core/src/main/resources/themes/ccm/category-page.xsl b/ccm-core/src/main/resources/themes/ccm/category-page.xsl
index 1da2b8e4d..fbcdc1a5b 100644
--- a/ccm-core/src/main/resources/themes/ccm/category-page.xsl
+++ b/ccm-core/src/main/resources/themes/ccm/category-page.xsl
@@ -4,10 +4,12 @@
xmlns:ccm="http://xmlns.libreccm.org"
exclude-result-prefixes="ccm xsl">
+
+
+ doctype-system="about:legacy-compat"
+ indent="yes"
+ encoding="utf-8"/>
@@ -51,7 +53,8 @@
-