[xwiki-devs] [xwiki-notifications] r24354 - platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx
Hey Sergiu, line 58 is failing checkstyle for being 2 characters too long. * @return HTML code linking to the pulled resource (eg: <script type="text/javascript" src="/this/url.js"></script>) Thanks again, Caleb sdumitriu (SVN) wrote:
Author: sdumitriu Date: 2009-10-10 01:04:21 +0200 (Sat, 10 Oct 2009) New Revision: 24354
Added: platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/AbstractResourceSkinExtensionPlugin.java Modified: 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 Log: XSKINX-29: Refactor duplicate code Refactor JsResourceSkinExtensionPlugin and CssResourceSkinExtensionPlugin. Patch from Caleb James DeLisle, applied with several changes.
Added: platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/AbstractResourceSkinExtensionPlugin.java =================================================================== --- platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/AbstractResourceSkinExtensionPlugin.java (rev 0) +++ platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/AbstractResourceSkinExtensionPlugin.java 2009-10-09 23:04:21 UTC (rev 24354) @@ -0,0 +1,102 @@ +/* + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package com.xpn.xwiki.plugin.skinx; + +import java.util.Collections; +import java.util.Set; + +import com.xpn.xwiki.XWikiContext; +import com.xpn.xwiki.XWikiException; + +/** + * Skin Extension plugin to use extension files from JAR resources. + * @version $Id$ + */ +public abstract class AbstractResourceSkinExtensionPlugin extends AbstractSkinExtensionPlugin +{ + /** + * XWiki plugin constructor. + * + * @param name The name of the plugin, which can be used for retrieving the plugin API from velocity. Unused. + * @param className The canonical classname of the plugin. Unused. + * @param context The current request context. + * @see com.xpn.xwiki.plugin.XWikiDefaultPlugin#XWikiDefaultPlugin(String,String,com.xpn.xwiki.XWikiContext) + */ + public AbstractResourceSkinExtensionPlugin(String name, String className, XWikiContext context) + { + super(name, className, context); + } + + /** + * Get the action which the url should specify for calling this resource. + * + * @return String Action name. + */ + protected abstract String getAction(); + + /** + * Takes a URL string and outputs a link which will cause the browser to load the url. + * + * @param url String representation of the url to load (eg: "/this/url.js") + * @return HTML code linking to the pulled resource (eg: <script type="text/javascript" src="/this/url.js"></script>) + */ + protected abstract String generateLink(String url); + + /** + * {@inheritDoc} + * + * @see AbstractSkinExtensionPlugin#getLink(String, XWikiContext) + */ + public String getLink(String resourceName, XWikiContext context) + { + // If the current user has access to Main.WebHome, we will use this document in the URL + // to serve the resource. This way, the resource can be efficiently cached, since it has a + // common URL for any page. + try { + String page = context.getWiki().getDefaultWeb(context) + "." + context.getWiki().getDefaultPage(context); + if (!context.getWiki().getRightService().hasAccessLevel("view", context.getUser(), page, context)) { + page = context.getDoc().getFullName(); + } + return generateLink(context.getWiki().getURL(page, getAction(), + "resource=" + resourceName + parametersAsQueryString(resourceName, context), context)); + } catch (XWikiException e) { + // Do nothing here; we can't access the wiki, so don't link to this resource at all. + return ""; + } + } + + /** + * {@inheritDoc} + * <p> + * There is no support for always used resource-based extensions yet. + * </p> + * + * @see AbstractSkinExtensionPlugin#getAlwaysUsedExtensions(XWikiContext) + */ + @Override + public Set<String> getAlwaysUsedExtensions(XWikiContext context) + { + // There is no mean to define an always used extension for something else than a document extension now, + // so for resources-based extensions, we return an emtpy set. + // An idea for the future could be to have an API for plugins and components to register always used resources + // extensions. + return Collections.emptySet(); + } +}
Property changes on: platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/AbstractResourceSkinExtensionPlugin.java ___________________________________________________________________ Name: svn:keywords + Id Name: svn:eol-style + native
Modified: 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/CssResourceSkinExtensionPlugin.java 2009-10-09 18:28:50 UTC (rev 24353) +++ platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/CssResourceSkinExtensionPlugin.java 2009-10-09 23:04:21 UTC (rev 24354) @@ -20,11 +20,7 @@ */ package com.xpn.xwiki.plugin.skinx;
-import java.util.Collections; -import java.util.Set; - import com.xpn.xwiki.XWikiContext; -import com.xpn.xwiki.XWikiException;
/** * Skin Extension plugin to use css files from JAR resources. @@ -32,7 +28,7 @@ * @version $Id$ * @since 1.3 */ -public class CssResourceSkinExtensionPlugin extends AbstractSkinExtensionPlugin +public class CssResourceSkinExtensionPlugin extends AbstractResourceSkinExtensionPlugin { /** * XWiki plugin constructor. @@ -45,7 +41,6 @@ public CssResourceSkinExtensionPlugin(String name, String className, XWikiContext context) { super(name, className, context); - init(context); }
/** @@ -61,47 +56,22 @@
/** * {@inheritDoc} - * - * @see AbstractSkinExtensionPlugin#getLink(String, XWikiContext) + * + * @see AbstractSkinExtensionPlugin#getAction() */ - @Override - public String getLink(String documentName, XWikiContext context) + protected String getAction() { - String result = ""; - // If the current user has access to Main.WebHome, we will use this document in the URL - // to serve the css resource. This way, the resource can be efficiently cached, since it has a - // common URL for any page. - try { - String page = context.getWiki().getDefaultWeb(context) + "." + context.getWiki().getDefaultPage(context); - if (!context.getWiki().getRightService().hasAccessLevel("view", context.getUser(), page, context)) { - page = context.getDoc().getFullName(); - } - String url = - context.getWiki().getURL(page, "ssx", - "resource=" + documentName + parametersAsQueryString(documentName, context), context); - result = "<link rel='stylesheet' type='text/css' href='" + url + "'/>"; - } catch (XWikiException e) { - // Do nothing here; we can't access the wiki, so don't link to this resource at all. - } - return result; + return "ssx"; }
/** * {@inheritDoc} - * <p> - * There is no support for always used resource-based extensions yet. - * </p> - * - * @see AbstractSkinExtensionPlugin#getAlwaysUsedExtensions(XWikiContext) + * + * @see AbstractSkinExtensionPlugin#generateLink() */ - @Override - public Set<String> getAlwaysUsedExtensions(XWikiContext context) + protected String generateLink(String url) { - // There is no mean to define an always used extension for something else than a document extension now, - // so for resources-based extensions, we return an emtpy set. - // An idea for the future could be to have an API for plugins and components to register always used resources - // extensions. - return Collections.emptySet(); + return "<link rel='stylesheet' type='text/css' href='" + url + "'/>\n"; }
/**
Modified: platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/JsResourceSkinExtensionPlugin.java =================================================================== --- platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/JsResourceSkinExtensionPlugin.java 2009-10-09 18:28:50 UTC (rev 24353) +++ platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/plugin/skinx/JsResourceSkinExtensionPlugin.java 2009-10-09 23:04:21 UTC (rev 24354) @@ -20,11 +20,7 @@ */ package com.xpn.xwiki.plugin.skinx;
-import java.util.Collections; -import java.util.Set; - import com.xpn.xwiki.XWikiContext; -import com.xpn.xwiki.XWikiException;
/** * Skin Extension plugin that allows pulling javascript files from JAR resources. @@ -32,7 +28,7 @@ * @version $Id$ * @since 1.3 */ -public class JsResourceSkinExtensionPlugin extends AbstractSkinExtensionPlugin +public class JsResourceSkinExtensionPlugin extends AbstractResourceSkinExtensionPlugin { /** * XWiki plugin constructor. @@ -44,57 +40,42 @@ */ public JsResourceSkinExtensionPlugin(String name, String className, XWikiContext context) { - super("jsrx", className, context); - init(context); + super(name, className, context); }
/** * {@inheritDoc} * - * @see AbstractSkinExtensionPlugin#getLink(String, XWikiContext) + * @see com.xpn.xwiki.plugin.XWikiDefaultPlugin#getName() */ @Override - public String getLink(String documentName, XWikiContext context) + public String getName() { - String result = ""; - // If the current user has access to Main.WebHome, we will use this document in the URL - // to serve the js resource. This way, the resource can be efficiently cached, since it has a - // common URL for any page. - try { - String page = context.getWiki().getDefaultWeb(context) + "." + context.getWiki().getDefaultPage(context); - if (!context.getWiki().getRightService().hasAccessLevel("view", context.getUser(), page, context)) { - page = context.getDoc().getFullName(); - } - String url = - context.getWiki().getURL(page, "jsx", - "resource=" + documentName + parametersAsQueryString(documentName, context), context); - result = "<script type=\"text/javascript\" src=\"" + url + "\"></script>"; - } catch (XWikiException e) { - // Do nothing here; we can't access the wiki, so don't link to this resource at all. - } - return result; + return "jsrx"; }
/** * {@inheritDoc} - * <p> - * There is no support for always used resource-based extensions yet. - * </p> - * - * @see AbstractSkinExtensionPlugin#getAlwaysUsedExtensions(XWikiContext) + * + * @see AbstractSkinExtensionPlugin#getAction() */ - @Override - public Set<String> getAlwaysUsedExtensions(XWikiContext context) + protected String getAction() { - // There is no mean to define an always used extension for something else than a document extension now, - // so for resources-based extensions, we return an emtpy set. - // An idea for the future could be to have an API for plugins and components to register always used resources - // extensions. - return Collections.emptySet(); + return "jsx"; }
/** * {@inheritDoc} + * + * @see AbstractSkinExtensionPlugin#generateLink() + */ + protected String generateLink(String url) + { + return "<script type=\"text/javascript\" src=\"" + url + "\"></script>\n"; + } + + /** + * {@inheritDoc} * <p> * We must override this method since the plugin manager only calls it for classes that provide their own * implementation, and not an inherited one.
_______________________________________________ notifications mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/notifications
On Oct 10, 2009, at 7:16 AM, Caleb James DeLisle wrote:
Hey Sergiu, line 58 is failing checkstyle for being 2 characters too long.
* @return HTML code linking to the pulled resource (eg: <script type="text/javascript" src="/this/url.js"></script>)
and you could/should use {@code <code here>} I think otherwise the script element will get evaluated in the javadoc. Thanks -Vincent
Thanks again, Caleb
sdumitriu (SVN) wrote:
Author: sdumitriu Date: 2009-10-10 01:04:21 +0200 (Sat, 10 Oct 2009) New Revision: 24354
Added: platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/ plugin/skinx/AbstractResourceSkinExtensionPlugin.java Modified: 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 Log: XSKINX-29: Refactor duplicate code Refactor JsResourceSkinExtensionPlugin and CssResourceSkinExtensionPlugin. Patch from Caleb James DeLisle, applied with several changes.
Added: platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/ xwiki/plugin/skinx/AbstractResourceSkinExtensionPlugin.java =================================================================== --- platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/ plugin/skinx/ AbstractResourceSkinExtensionPlugin.java (rev 0) +++ platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/ plugin/skinx/AbstractResourceSkinExtensionPlugin.java 2009-10-09 23:04:21 UTC (rev 24354) @@ -0,0 +1,102 @@ +/* + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package com.xpn.xwiki.plugin.skinx; + +import java.util.Collections; +import java.util.Set; + +import com.xpn.xwiki.XWikiContext; +import com.xpn.xwiki.XWikiException; + +/** + * Skin Extension plugin to use extension files from JAR resources. + * @version $Id$ + */ +public abstract class AbstractResourceSkinExtensionPlugin extends AbstractSkinExtensionPlugin +{ + /** + * XWiki plugin constructor. + * + * @param name The name of the plugin, which can be used for retrieving the plugin API from velocity. Unused. + * @param className The canonical classname of the plugin. Unused. + * @param context The current request context. + * @see com .xpn .xwiki .plugin .XWikiDefaultPlugin #XWikiDefaultPlugin(String,String,com.xpn.xwiki.XWikiContext) + */ + public AbstractResourceSkinExtensionPlugin(String name, String className, XWikiContext context) + { + super(name, className, context); + } + + /** + * Get the action which the url should specify for calling this resource. + * + * @return String Action name. + */ + protected abstract String getAction(); + + /** + * Takes a URL string and outputs a link which will cause the browser to load the url. + * + * @param url String representation of the url to load (eg: "/ this/url.js") + * @return HTML code linking to the pulled resource (eg: <script type="text/javascript" src="/this/url.js"></script>) + */ + protected abstract String generateLink(String url); + + /** + * {@inheritDoc} + * + * @see AbstractSkinExtensionPlugin#getLink(String, XWikiContext) + */ + public String getLink(String resourceName, XWikiContext context) + { + // If the current user has access to Main.WebHome, we will use this document in the URL + // to serve the resource. This way, the resource can be efficiently cached, since it has a + // common URL for any page. + try { + String page = context.getWiki().getDefaultWeb(context) + "." + context.getWiki().getDefaultPage(context); + if (! context.getWiki().getRightService().hasAccessLevel("view", context.getUser(), page, context)) { + page = context.getDoc().getFullName(); + } + return generateLink(context.getWiki().getURL(page, getAction(), + "resource=" + resourceName + parametersAsQueryString(resourceName, context), context)); + } catch (XWikiException e) { + // Do nothing here; we can't access the wiki, so don't link to this resource at all. + return ""; + } + } + + /** + * {@inheritDoc} + * <p> + * There is no support for always used resource-based extensions yet. + * </p> + * + * @see AbstractSkinExtensionPlugin#getAlwaysUsedExtensions(XWikiContext) + */ + @Override + public Set<String> getAlwaysUsedExtensions(XWikiContext context) + { + // There is no mean to define an always used extension for something else than a document extension now, + // so for resources-based extensions, we return an emtpy set. + // An idea for the future could be to have an API for plugins and components to register always used resources + // extensions. + return Collections.emptySet(); + } +}
Property changes on: platform/xwiki-plugins/trunk/skinx/src/main/ java/com/xpn/xwiki/plugin/skinx/ AbstractResourceSkinExtensionPlugin.java ___________________________________________________________________ Name: svn:keywords + Id Name: svn:eol-style + native
Modified: 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/CssResourceSkinExtensionPlugin.java 2009-10-09 18:28:50 UTC (rev 24353) +++ platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/ plugin/skinx/CssResourceSkinExtensionPlugin.java 2009-10-09 23:04:21 UTC (rev 24354) @@ -20,11 +20,7 @@ */ package com.xpn.xwiki.plugin.skinx;
-import java.util.Collections; -import java.util.Set; - import com.xpn.xwiki.XWikiContext; -import com.xpn.xwiki.XWikiException;
/** * Skin Extension plugin to use css files from JAR resources. @@ -32,7 +28,7 @@ * @version $Id$ * @since 1.3 */ -public class CssResourceSkinExtensionPlugin extends AbstractSkinExtensionPlugin +public class CssResourceSkinExtensionPlugin extends AbstractResourceSkinExtensionPlugin { /** * XWiki plugin constructor. @@ -45,7 +41,6 @@ public CssResourceSkinExtensionPlugin(String name, String className, XWikiContext context) { super(name, className, context); - init(context); }
/** @@ -61,47 +56,22 @@
/** * {@inheritDoc} - * - * @see AbstractSkinExtensionPlugin#getLink(String, XWikiContext) + * + * @see AbstractSkinExtensionPlugin#getAction() */ - @Override - public String getLink(String documentName, XWikiContext context) + protected String getAction() { - String result = ""; - // If the current user has access to Main.WebHome, we will use this document in the URL - // to serve the css resource. This way, the resource can be efficiently cached, since it has a - // common URL for any page. - try { - String page = context.getWiki().getDefaultWeb(context) + "." + context.getWiki().getDefaultPage(context); - if (! context.getWiki().getRightService().hasAccessLevel("view", context.getUser(), page, context)) { - page = context.getDoc().getFullName(); - } - String url = - context.getWiki().getURL(page, "ssx", - "resource=" + documentName + parametersAsQueryString(documentName, context), context); - result = "<link rel='stylesheet' type='text/css' href='" + url + "'/>"; - } catch (XWikiException e) { - // Do nothing here; we can't access the wiki, so don't link to this resource at all. - } - return result; + return "ssx"; }
/** * {@inheritDoc} - * <p> - * There is no support for always used resource-based extensions yet. - * </p> - * - * @see AbstractSkinExtensionPlugin#getAlwaysUsedExtensions(XWikiContext) + * + * @see AbstractSkinExtensionPlugin#generateLink() */ - @Override - public Set<String> getAlwaysUsedExtensions(XWikiContext context) + protected String generateLink(String url) { - // There is no mean to define an always used extension for something else than a document extension now, - // so for resources-based extensions, we return an emtpy set. - // An idea for the future could be to have an API for plugins and components to register always used resources - // extensions. - return Collections.emptySet(); + return "<link rel='stylesheet' type='text/css' href='" + url + "'/>\n"; }
/**
Modified: platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/ xwiki/plugin/skinx/JsResourceSkinExtensionPlugin.java =================================================================== --- platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/ plugin/skinx/JsResourceSkinExtensionPlugin.java 2009-10-09 18:28:50 UTC (rev 24353) +++ platform/xwiki-plugins/trunk/skinx/src/main/java/com/xpn/xwiki/ plugin/skinx/JsResourceSkinExtensionPlugin.java 2009-10-09 23:04:21 UTC (rev 24354) @@ -20,11 +20,7 @@ */ package com.xpn.xwiki.plugin.skinx;
-import java.util.Collections; -import java.util.Set; - import com.xpn.xwiki.XWikiContext; -import com.xpn.xwiki.XWikiException;
/** * Skin Extension plugin that allows pulling javascript files from JAR resources. @@ -32,7 +28,7 @@ * @version $Id$ * @since 1.3 */ -public class JsResourceSkinExtensionPlugin extends AbstractSkinExtensionPlugin +public class JsResourceSkinExtensionPlugin extends AbstractResourceSkinExtensionPlugin { /** * XWiki plugin constructor. @@ -44,57 +40,42 @@ */ public JsResourceSkinExtensionPlugin(String name, String className, XWikiContext context) { - super("jsrx", className, context); - init(context); + super(name, className, context); }
/** * {@inheritDoc} * - * @see AbstractSkinExtensionPlugin#getLink(String, XWikiContext) + * @see com.xpn.xwiki.plugin.XWikiDefaultPlugin#getName() */ @Override - public String getLink(String documentName, XWikiContext context) + public String getName() { - String result = ""; - // If the current user has access to Main.WebHome, we will use this document in the URL - // to serve the js resource. This way, the resource can be efficiently cached, since it has a - // common URL for any page. - try { - String page = context.getWiki().getDefaultWeb(context) + "." + context.getWiki().getDefaultPage(context); - if (! context.getWiki().getRightService().hasAccessLevel("view", context.getUser(), page, context)) { - page = context.getDoc().getFullName(); - } - String url = - context.getWiki().getURL(page, "jsx", - "resource=" + documentName + parametersAsQueryString(documentName, context), context); - result = "<script type=\"text/javascript\" src=\"" + url + "\"></script>"; - } catch (XWikiException e) { - // Do nothing here; we can't access the wiki, so don't link to this resource at all. - } - return result; + return "jsrx"; }
/** * {@inheritDoc} - * <p> - * There is no support for always used resource-based extensions yet. - * </p> - * - * @see AbstractSkinExtensionPlugin#getAlwaysUsedExtensions(XWikiContext) + * + * @see AbstractSkinExtensionPlugin#getAction() */ - @Override - public Set<String> getAlwaysUsedExtensions(XWikiContext context) + protected String getAction() { - // There is no mean to define an always used extension for something else than a document extension now, - // so for resources-based extensions, we return an emtpy set. - // An idea for the future could be to have an API for plugins and components to register always used resources - // extensions. - return Collections.emptySet(); + return "jsx"; }
/** * {@inheritDoc} + * + * @see AbstractSkinExtensionPlugin#generateLink() + */ + protected String generateLink(String url) + { + return "<script type=\"text/javascript\" src=\"" + url + "\"></script>\n"; + } + + /** + * {@inheritDoc} * <p> * We must override this method since the plugin manager only calls it for classes that provide their own * implementation, and not an inherited one.
_______________________________________________ notifications mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/notifications
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
participants (2)
-
Caleb James DeLisle -
Vincent Massol