Re: [xwiki-devs] [xwiki-notifications] r14062 - in platform: core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx
jvelociter (SVN) wrote:
Author: jvelociter Date: 2008-11-09 20:00:37 +0100 (Sun, 09 Nov 2008) New Revision: 14062
Added: platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/ platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/AbstractSxAction.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/CssExtension.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/Extension.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/JsExtension.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/SxCompressor.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/SxDocumentSource.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/SxResourceSource.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/SxSource.java platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/CssResourceSkinExtensionPlugin.java platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/JsResourceSkinExtensionPlugin.java Modified: platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/JsxAction.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/SsxAction.java Log: XSKINX-12 Ability to load extension files from JAR resources
You forgot to modify this one to support resource extensions:
Modified: platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/SsxAction.java =================================================================== --- platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/SsxAction.java 2008-11-08 18:00:54 UTC (rev 14061) +++ platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/SsxAction.java 2008-11-09 19:00:37 UTC (rev 14062) @@ -20,23 +20,20 @@ */ package com.xpn.xwiki.web;
-import java.io.IOException; -import java.io.StringReader; -import java.io.StringWriter; -import java.util.Date; +import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.lang.BooleanUtils; -import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory;
-import com.xpn.xwiki.XWiki; import com.xpn.xwiki.XWikiContext; import com.xpn.xwiki.XWikiException; -import com.xpn.xwiki.doc.XWikiDocument; -import com.xpn.xwiki.objects.BaseObject; -import com.yahoo.platform.yui.compressor.CssCompressor;
+import com.xpn.xwiki.web.sx.AbstractSxAction; +import com.xpn.xwiki.web.sx.CssExtension; +import com.xpn.xwiki.web.sx.Extension; +import com.xpn.xwiki.web.sx.SxDocumentSource; +import com.xpn.xwiki.web.sx.SxSource; + /** * <p> * Action for serving css skin extensions. @@ -45,22 +42,11 @@ * @version $Id$ * @since 1.4M2 */ -public class SsxAction extends XWikiAction +public class SsxAction extends AbstractSxAction { - enum CachePolicies - { - LONG, SHORT, DEFAULT, FORBID - } - - protected static final long LONG_CACHE_DURATION = 30 * 24 * 3600 * 1000L; - - protected static final long SHORT_CACHE_DURATION = 1 * 24 * 3600 * 1000L; - /** Logging helper. */ private static final Log LOG = LogFactory.getLog(SsxAction.class); - - public static final String SSX_CLASS_NAME = "XWiki.StyleSheetExtension"; - + /** * {@inheritDoc} * @@ -69,77 +55,25 @@ @Override public String render(XWikiContext context) throws XWikiException { - XWiki xwiki = context.getWiki(); - XWikiRequest request = context.getRequest(); - XWikiResponse response = context.getResponse(); - XWikiDocument doc = context.getDoc(); - - if (doc.isNew()) { - response.setStatus(404); + if (context.getDoc().isNew()) { + context.getResponse().setStatus(HttpServletResponse.SC_NOT_FOUND); return "docdoesnotexist"; }
- CachePolicies finalCache = CachePolicies.LONG; - StringBuilder resultBuilder = new StringBuilder(); + SxSource sxSource;
- if (doc.getObjects(SSX_CLASS_NAME) != null) { - for (BaseObject sxObj : doc.getObjects(SSX_CLASS_NAME)) { - String sxContent = sxObj.getLargeStringValue("code"); - int parse = sxObj.getIntValue("parse"); - try { - CachePolicies cache = - CachePolicies.valueOf(StringUtils.upperCase(StringUtils.defaultIfEmpty(sxObj - .getStringValue("cache"), "LONG"))); - if (cache.compareTo(finalCache) > 0) { - finalCache = cache; - } - } catch (Exception ex) { - LOG.warn(String.format("JSX object [%s#%s] has an invalid cache policy: [%s]", doc.getFullName(), - sxObj.getStringValue("name"), sxObj.getStringValue("cache"))); - } + Extension sxType = new CssExtension();
- if (parse == 1) { - sxContent = xwiki.getRenderingEngine().interpretText(sxContent, doc, context); - } - // Also add a newline, in case the different object contents don't end with a blank - // line, and could cause syntax errors when concatenated. - resultBuilder.append(sxContent + "\n"); - } - } + sxSource = new SxDocumentSource(context, sxType);
- String result = resultBuilder.toString(); - - response.setContentType("text/css; charset=UTF-8"); - response.setDateHeader("Last-Modified", doc.getDate().getTime()); - if (finalCache != CachePolicies.FORBID) { - response.setHeader("Cache-Control", "public"); - } - - if (finalCache == CachePolicies.LONG) { - // Cache for one month (30 days) - response.setDateHeader("Expires", (new Date()).getTime() + LONG_CACHE_DURATION); - } else if (finalCache == CachePolicies.SHORT) { - // Cache for one day - response.setDateHeader("Expires", (new Date()).getTime() + SHORT_CACHE_DURATION); - } else if (finalCache == CachePolicies.FORBID) { - response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); - } - if (BooleanUtils.toBoolean(StringUtils.defaultIfEmpty(request.get("minify"), "true"))) { - try { - CssCompressor compressor = new CssCompressor(new StringReader(result)); - StringWriter out = new StringWriter(); - compressor.compress(out, -1); - result = out.toString(); - } catch (IOException ex) { - LOG.warn(String.format("Exception compressing the SSX code for [%s]", doc.getFullName()), ex); - } - } - try { - response.setContentLength(result.getBytes("UTF-8").length); - response.getOutputStream().write(result.getBytes("UTF-8")); - } catch (IOException ex) { - LOG.warn("Failed to send SSX content: " + ex.getMessage()); - } + super.renderExtension(sxSource, sxType, context); return null; }
-- Sergiu Dumitriu http://purl.org/net/sergiu/
Sergiu Dumitriu wrote:
jvelociter (SVN) wrote:
Author: jvelociter Date: 2008-11-09 20:00:37 +0100 (Sun, 09 Nov 2008) New Revision: 14062
Added: platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/ platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/AbstractSxAction.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/CssExtension.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/Extension.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/JsExtension.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/SxCompressor.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/SxDocumentSource.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/SxResourceSource.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/sx/SxSource.java platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/CssResourceSkinExtensionPlugin.java platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/JsResourceSkinExtensionPlugin.java Modified: platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/JsxAction.java platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/SsxAction.java Log: XSKINX-12 Ability to load extension files from JAR resources
You forgot to modify this one to support resource extensions:
Fixed. Thanks ! Jerome.
Modified: platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/SsxAction.java =================================================================== --- platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/SsxAction.java 2008-11-08 18:00:54 UTC (rev 14061) +++ platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/SsxAction.java 2008-11-09 19:00:37 UTC (rev 14062) @@ -20,23 +20,20 @@ */ package com.xpn.xwiki.web;
-import java.io.IOException; -import java.io.StringReader; -import java.io.StringWriter; -import java.util.Date; +import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.lang.BooleanUtils; -import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory;
-import com.xpn.xwiki.XWiki; import com.xpn.xwiki.XWikiContext; import com.xpn.xwiki.XWikiException; -import com.xpn.xwiki.doc.XWikiDocument; -import com.xpn.xwiki.objects.BaseObject; -import com.yahoo.platform.yui.compressor.CssCompressor;
+import com.xpn.xwiki.web.sx.AbstractSxAction; +import com.xpn.xwiki.web.sx.CssExtension; +import com.xpn.xwiki.web.sx.Extension; +import com.xpn.xwiki.web.sx.SxDocumentSource; +import com.xpn.xwiki.web.sx.SxSource; + /** * <p> * Action for serving css skin extensions. @@ -45,22 +42,11 @@ * @version $Id$ * @since 1.4M2 */ -public class SsxAction extends XWikiAction +public class SsxAction extends AbstractSxAction { - enum CachePolicies - { - LONG, SHORT, DEFAULT, FORBID - } - - protected static final long LONG_CACHE_DURATION = 30 * 24 * 3600 * 1000L; - - protected static final long SHORT_CACHE_DURATION = 1 * 24 * 3600 * 1000L; - /** Logging helper. */ private static final Log LOG = LogFactory.getLog(SsxAction.class); - - public static final String SSX_CLASS_NAME = "XWiki.StyleSheetExtension"; - + /** * {@inheritDoc} * @@ -69,77 +55,25 @@ @Override public String render(XWikiContext context) throws XWikiException { - XWiki xwiki = context.getWiki(); - XWikiRequest request = context.getRequest(); - XWikiResponse response = context.getResponse(); - XWikiDocument doc = context.getDoc(); - - if (doc.isNew()) { - response.setStatus(404); + if (context.getDoc().isNew()) { + context.getResponse().setStatus(HttpServletResponse.SC_NOT_FOUND); return "docdoesnotexist"; }
- CachePolicies finalCache = CachePolicies.LONG; - StringBuilder resultBuilder = new StringBuilder(); + SxSource sxSource;
- if (doc.getObjects(SSX_CLASS_NAME) != null) { - for (BaseObject sxObj : doc.getObjects(SSX_CLASS_NAME)) { - String sxContent = sxObj.getLargeStringValue("code"); - int parse = sxObj.getIntValue("parse"); - try { - CachePolicies cache = - CachePolicies.valueOf(StringUtils.upperCase(StringUtils.defaultIfEmpty(sxObj - .getStringValue("cache"), "LONG"))); - if (cache.compareTo(finalCache) > 0) { - finalCache = cache; - } - } catch (Exception ex) { - LOG.warn(String.format("JSX object [%s#%s] has an invalid cache policy: [%s]", doc.getFullName(), - sxObj.getStringValue("name"), sxObj.getStringValue("cache"))); - } + Extension sxType = new CssExtension();
- if (parse == 1) { - sxContent = xwiki.getRenderingEngine().interpretText(sxContent, doc, context); - } - // Also add a newline, in case the different object contents don't end with a blank - // line, and could cause syntax errors when concatenated. - resultBuilder.append(sxContent + "\n"); - } - } + sxSource = new SxDocumentSource(context, sxType);
- String result = resultBuilder.toString(); - - response.setContentType("text/css; charset=UTF-8"); - response.setDateHeader("Last-Modified", doc.getDate().getTime()); - if (finalCache != CachePolicies.FORBID) { - response.setHeader("Cache-Control", "public"); - } - - if (finalCache == CachePolicies.LONG) { - // Cache for one month (30 days) - response.setDateHeader("Expires", (new Date()).getTime() + LONG_CACHE_DURATION); - } else if (finalCache == CachePolicies.SHORT) { - // Cache for one day - response.setDateHeader("Expires", (new Date()).getTime() + SHORT_CACHE_DURATION); - } else if (finalCache == CachePolicies.FORBID) { - response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); - } - if (BooleanUtils.toBoolean(StringUtils.defaultIfEmpty(request.get("minify"), "true"))) { - try { - CssCompressor compressor = new CssCompressor(new StringReader(result)); - StringWriter out = new StringWriter(); - compressor.compress(out, -1); - result = out.toString(); - } catch (IOException ex) { - LOG.warn(String.format("Exception compressing the SSX code for [%s]", doc.getFullName()), ex); - } - } - try { - response.setContentLength(result.getBytes("UTF-8").length); - response.getOutputStream().write(result.getBytes("UTF-8")); - } catch (IOException ex) { - LOG.warn("Failed to send SSX content: " + ex.getMessage()); - } + super.renderExtension(sxSource, sxType, context); return null; }
participants (2)
-
Jerome Velociter -
Sergiu Dumitriu