- URIResolver for XSLT Themes now works (and with that xsl:import etc. in the XSL files)
- Fixed ambiguous URL patterns in Images


git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5261 8810af33-2d31-482b-a856-94f89814c4df
pull/2/head
jensp 2018-02-08 13:41:00 +00:00
parent fb88f19840
commit 96a67c2978
5 changed files with 44 additions and 17 deletions

View File

@ -80,6 +80,9 @@
<Logger name="org.libreccm.security.Shiro"
level="debug">
</Logger>
<Logger name="org.libreccm.theming.xslt.CcmUriResolver"
level="debug">
</Logger>
<Logger name="org.libreccm.ui.admin.usersgroupsroles.RolesController"
level="debug">
</Logger>
@ -93,10 +96,10 @@
level="debug">
</Logger>
<Logger name="org.librecms.contentsection.rs.Images"
level="debug">
level="debug">
</Logger>
<Logger name="com.arsdigita.web.DefaultApplicationFileResolver"
level="debug">
<Logger name="com.arsdigita.web.DefaultApplicationFileResolver"
level="debug">
</Logger>
</Loggers>
</Configuration>

View File

@ -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) {

View File

@ -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);
}

View File

@ -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

View File

@ -4,10 +4,12 @@
xmlns:ccm="http://xmlns.libreccm.org"
exclude-result-prefixes="ccm xsl">
<xsl:import href="footer.xsl" />
<xsl:output method="html"
doctype-system="about:legacy-compat"
indent="yes"
encoding="utf-8"/>
doctype-system="about:legacy-compat"
indent="yes"
encoding="utf-8"/>
<xsl:template match="page">
@ -51,7 +53,8 @@
</div>
<!--<xsl:apply-templates select="greetingItem" />-->
</main>
<footer>
<xsl:call-template name="footer" />
<!--<footer>
<ul>
<li>
<a href="/impressum">Impressum</a>
@ -60,8 +63,7 @@
<a href="/privacy">Privacy</a>
</li>
</ul>
</footer>
</footer>-->
</body>
</html>
</xsl:template>