SLING-6790 : Enable aliases even if referenced format is disabled
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1792588 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java b/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java
index df7a82c..fd5c4bb 100644
--- a/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java
+++ b/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java
@@ -174,32 +174,42 @@
this.indexFiles = null;
}
+ private Servlet getDefaultRendererServlet(final String type) {
+ if ( StreamRendererServlet.EXT_RES.equals(type) ) {
+ return new StreamRendererServlet(index, indexFiles);
+ } else if ( HtmlRendererServlet.EXT_HTML.equals(type) ) {
+ return new HtmlRendererServlet();
+ } else if ( PlainTextRendererServlet.EXT_TXT.equals(type) ) {
+ return new PlainTextRendererServlet();
+ } else if (JsonRendererServlet.EXT_JSON.equals(type) ) {
+ return new JsonRendererServlet(jsonMaximumResults);
+ } else if ( XMLRendererServlet.EXT_XML.equals(type) ) {
+ return new XMLRendererServlet();
+ }
+ return null;
+ }
+
@Override
public void init() throws ServletException {
super.init();
// Register renderer servlets
- setupServlet(rendererMap, StreamRendererServlet.EXT_RES,
- new StreamRendererServlet(index, indexFiles));
+ setupServlet(rendererMap, StreamRendererServlet.EXT_RES);
if (enableHtml) {
- setupServlet(rendererMap, HtmlRendererServlet.EXT_HTML,
- new HtmlRendererServlet());
+ setupServlet(rendererMap, HtmlRendererServlet.EXT_HTML);
}
if (enableTxt) {
- setupServlet(rendererMap, PlainTextRendererServlet.EXT_TXT,
- new PlainTextRendererServlet());
+ setupServlet(rendererMap, PlainTextRendererServlet.EXT_TXT);
}
if (enableJson) {
- setupServlet(rendererMap, JsonRendererServlet.EXT_JSON,
- new JsonRendererServlet(jsonMaximumResults));
+ setupServlet(rendererMap, JsonRendererServlet.EXT_JSON);
}
if (enableXml) {
- setupServlet(rendererMap, XMLRendererServlet.EXT_XML,
- new XMLRendererServlet());
+ setupServlet(rendererMap, XMLRendererServlet.EXT_XML);
}
// use the servlet for rendering StreamRendererServlet.EXT_RES as the
@@ -212,7 +222,10 @@
final int pos = m.indexOf(':');
if (pos != -1) {
final String type = m.substring(0, pos);
- final Servlet servlet = rendererMap.get(type);
+ Servlet servlet = rendererMap.get(type);
+ if ( servlet == null ) {
+ servlet = setupServlet(rendererMap, type);
+ }
if (servlet != null) {
final String extensions = m.substring(pos + 1);
final StringTokenizer st = new StringTokenizer(
@@ -221,6 +234,8 @@
final String ext = st.nextToken();
rendererMap.put(ext, servlet);
}
+ } else {
+ logger.warn("Unable to enable renderer alias(es) for {} - type not supported", m);
}
}
}
@@ -300,13 +315,17 @@
super.destroy();
}
- private void setupServlet(Map<String, Servlet> rendererMap, String key,
- Servlet servlet) {
- try {
- servlet.init(getServletConfig());
- rendererMap.put(key, servlet);
- } catch (Throwable t) {
- logger.error("Error while initializing servlet " + servlet, t);
+ private Servlet setupServlet(final Map<String, Servlet> rendererMap,
+ final String key) {
+ final Servlet servlet = getDefaultRendererServlet(key);
+ if ( servlet != null ) {
+ try {
+ servlet.init(getServletConfig());
+ rendererMap.put(key, servlet);
+ } catch (Throwable t) {
+ logger.error("Error while initializing servlet " + servlet, t);
+ }
}
+ return servlet;
}
}