You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2008/09/11 17:38:06 UTC
svn commit: r694309 -
/incubator/sling/trunk/servlets/get/src/main/java/org/apache/sling/servlets/get/DefaultGetServlet.java
Author: cziegeler
Date: Thu Sep 11 08:38:01 2008
New Revision: 694309
URL: http://svn.apache.org/viewvc?rev=694309&view=rev
Log:
SLING-650 : Add support for aliases.
Modified:
incubator/sling/trunk/servlets/get/src/main/java/org/apache/sling/servlets/get/DefaultGetServlet.java
Modified: incubator/sling/trunk/servlets/get/src/main/java/org/apache/sling/servlets/get/DefaultGetServlet.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/servlets/get/src/main/java/org/apache/sling/servlets/get/DefaultGetServlet.java?rev=694309&r1=694308&r2=694309&view=diff
==============================================================================
--- incubator/sling/trunk/servlets/get/src/main/java/org/apache/sling/servlets/get/DefaultGetServlet.java (original)
+++ incubator/sling/trunk/servlets/get/src/main/java/org/apache/sling/servlets/get/DefaultGetServlet.java Thu Sep 11 08:38:01 2008
@@ -19,6 +19,7 @@
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import java.util.StringTokenizer;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
@@ -29,11 +30,15 @@
import org.apache.sling.api.resource.ResourceNotFoundException;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.apache.sling.commons.osgi.OsgiUtil;
import org.apache.sling.servlets.get.helpers.HtmlRendererServlet;
import org.apache.sling.servlets.get.helpers.JsonRendererServlet;
import org.apache.sling.servlets.get.helpers.PlainTextRendererServlet;
import org.apache.sling.servlets.get.helpers.StreamRendererServlet;
import org.apache.sling.servlets.get.helpers.XMLRendererServlet;
+import org.osgi.service.component.ComponentContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* A SlingSafeMethodsServlet that renders the current Resource as simple HTML
@@ -46,19 +51,35 @@
*
* Use this as a default servlet for Sling
* @scr.property name="sling.servlet.resourceTypes"
- * value="sling/servlet/default"
+ * value="sling/servlet/default" private="true"
*
* Generic handler for all get requests
- * @scr.property name="sling.servlet.methods" value="GET"
+ * @scr.property name="sling.servlet.methods" value="GET" private="true"
*/
public class DefaultGetServlet extends SlingSafeMethodsServlet {
private static final long serialVersionUID = -5815904221043005085L;
+ private final Logger logger = LoggerFactory.getLogger(getClass());
+
private Map<String, Servlet> rendererMap = new HashMap<String, Servlet>();
private Servlet streamerServlet;
+ /** @scr.property */
+ private static final String ALIAS_PROPERTY = "aliases";
+
+ /** Additional aliases. */
+ private String[] aliases;
+
+ protected void activate(ComponentContext ctx) {
+ this.aliases = OsgiUtil.toStringArray(ctx.getProperties().get(ALIAS_PROPERTY));
+ }
+
+ protected void deactivate(ComponentContext ctx) {
+ this.aliases = null;
+ }
+
@Override
public void init() throws ServletException {
super.init();
@@ -75,6 +96,24 @@
setupServlet(rendererMap, XMLRendererServlet.EXT_XML,
new XMLRendererServlet());
+ // check additional aliases
+ if ( this.aliases != null ) {
+ for(final String m : aliases) {
+ final int pos = m.indexOf(':');
+ if ( pos != -1 ) {
+ final String type = m.substring(0, pos);
+ final Servlet servlet = rendererMap.get(type);
+ if ( servlet != null ) {
+ final String extensions = m.substring(pos+1);
+ final StringTokenizer st = new StringTokenizer(extensions, ",");
+ while ( st.hasMoreTokens() ) {
+ final String ext = st.nextToken();
+ rendererMap.put(ext, servlet);
+ }
+ }
+ }
+ }
+ }
// use the servlet for rendering StreamRendererServlet.EXT_RES as the
// streamer servlet
streamerServlet = rendererMap.get(StreamRendererServlet.EXT_RES);
@@ -123,7 +162,7 @@
try {
servlet.destroy();
} catch (Throwable t) {
- // TODO: log
+ logger.error("Error while destroying servlet " + servlet, t);
}
}
@@ -139,7 +178,7 @@
servlet.init(getServletConfig());
rendererMap.put(key, servlet);
} catch (Throwable t) {
- // TODO: log
+ logger.error("Error while initializing servlet " + servlet, t);
}
}
}