You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@click.apache.org by sa...@apache.org on 2010/04/09 12:20:25 UTC
svn commit: r932337 - in /click/trunk/click/framework/src/org/apache/click:
Control.java Page.java control/AbstractContainer.java
control/AbstractControl.java control/FieldSet.java util/ClickUtils.java
util/PageImports.java
Author: sabob
Date: Fri Apr 9 10:20:25 2010
New Revision: 932337
URL: http://svn.apache.org/viewvc?rev=932337&view=rev
Log:
removed getHtmlImports. CLK-647
Modified:
click/trunk/click/framework/src/org/apache/click/Control.java
click/trunk/click/framework/src/org/apache/click/Page.java
click/trunk/click/framework/src/org/apache/click/control/AbstractContainer.java
click/trunk/click/framework/src/org/apache/click/control/AbstractControl.java
click/trunk/click/framework/src/org/apache/click/control/FieldSet.java
click/trunk/click/framework/src/org/apache/click/util/ClickUtils.java
click/trunk/click/framework/src/org/apache/click/util/PageImports.java
Modified: click/trunk/click/framework/src/org/apache/click/Control.java
URL: http://svn.apache.org/viewvc/click/trunk/click/framework/src/org/apache/click/Control.java?rev=932337&r1=932336&r2=932337&view=diff
==============================================================================
--- click/trunk/click/framework/src/org/apache/click/Control.java (original)
+++ click/trunk/click/framework/src/org/apache/click/Control.java Fri Apr 9 10:20:25 2010
@@ -146,39 +146,6 @@ public interface Control extends Seriali
public Context getContext();
/**
- * Return the HTML import string to be included in the page.
- * <p/>
- * Implement this method to specify JavaScript and CSS includes for the
- * page. For example:
- *
- * <pre class="codeJava">
- * <span class="kw">protected static final</span> String HTML_IMPORT =
- * <span class="st">"<script type=\"text/javascript\" src=\"{0}/click/custom.js\"></script>"</span>;
- *
- * <span class="kw">public</span> String getHtmlImports() {
- * <span class="kw">return</span> ClickUtils.createHtmlImport(HTML_IMPORTS, getResourceVersionIndicator(), getContext());
- * } </pre>
- *
- * <b>Note</b> multiple import lines should be separated by a
- * <tt>'\n'</tt> char, as the {@link org.apache.click.util.PageImports} will
- * parse multiple import lines on the <tt>'\n'</tt> char and ensure that
- * imports are not included twice.
- * <p/>
- * The order in which JS and CSS files are included will be preserved in the
- * page.
- * <p/>
- * <b>Also note:</b> a common problem when overriding getHtmlImports in
- * subclasses is forgetting to call <em>super.getHtmlImports</em>. Consider
- * carefully whether you should call <em>super.getHtmlImports</em> or not.
- *
- * @deprecated use the new {@link #getHeadElements()} instead
- *
- * @return the HTML includes statements for the control stylesheet and
- * JavaScript files, or null if no includes are available
- */
- public String getHtmlImports();
-
- /**
* Return the list of HEAD {@link org.apache.click.element.Element elements}
* to be included in the page. Example HEAD elements include
* {@link org.apache.click.element.JsImport JsImport},
Modified: click/trunk/click/framework/src/org/apache/click/Page.java
URL: http://svn.apache.org/viewvc/click/trunk/click/framework/src/org/apache/click/Page.java?rev=932337&r1=932336&r2=932337&view=diff
==============================================================================
--- click/trunk/click/framework/src/org/apache/click/Page.java (original)
+++ click/trunk/click/framework/src/org/apache/click/Page.java Fri Apr 9 10:20:25 2010
@@ -616,50 +616,13 @@ public class Page implements Serializabl
}
/**
- * Return the HTML import string to include in the page, by default
- * this method returns null.
- * <p/>
- * Override this method to specify JavaScript and CSS includes for the
- * page. For example:
- *
- * <pre class="prettyprint">
- * public MyPage extends Page {
- *
- * // Define a constant for the Page Javascript import.
- * protected static final String JAVASCRIPT_IMPORT =
- * "<script type='text/javascript' src='{0}/click/my-page.js'></script>\n";
- *
- * // Define a constant for the Page CSS import
- * protected static final String CSS_IMPORT =
- * "<link type='text/css' rel='stylesheet' href='text/css' src='{0}/click/my-page.css'/>\n";
- *
- * ...
- *
- * // Override getHtmlImports and return the Javascript and CSS imports.
- * public String getHtmlImports() {
- * Context context = getContext();
- *
- * // Concatenate Javascript and CSS imports
- * return ClickUtils.createHtmlImport(MyPage.JAVASCRIPT_IMPORT, ClickUtils.getResourceVersionIndicator(), context)
- * + ClickUtils.createHtmlImport(MyPage.CSS_IMPORT, ClickUtils.getResourceVersionIndicator(), context);
- * }
- * } </pre>
- *
- * <b>Note</b> multiple import lines should be separated by a
- * <tt>'\n'</tt> char, as the {@link org.apache.click.util.PageImports} will
- * parse multiple import lines on the <tt>'\n'</tt> char and ensure that
- * imports are not included twice.
- * <p/>
- * The order in which JS and CSS files are included will be preserved in the
- * page.
+ * @deprecated use the new {@link #getHeadElements()} instead
*
* @return the HTML includes statements for the control stylesheet and
- * JavaScript files, by default this method returns null
- *
- * @deprecated use the new {@link #getHeadElements()} instead
+ * JavaScript files
*/
- public String getHtmlImports() {
- return null;
+ public final String getHtmlImports() {
+ throw new UnsupportedOperationException("Use getHeadElements instead");
}
/**
Modified: click/trunk/click/framework/src/org/apache/click/control/AbstractContainer.java
URL: http://svn.apache.org/viewvc/click/trunk/click/framework/src/org/apache/click/control/AbstractContainer.java?rev=932337&r1=932336&r2=932337&view=diff
==============================================================================
--- click/trunk/click/framework/src/org/apache/click/control/AbstractContainer.java (original)
+++ click/trunk/click/framework/src/org/apache/click/control/AbstractContainer.java Fri Apr 9 10:20:25 2010
@@ -264,29 +264,6 @@ public abstract class AbstractContainer
}
/**
- * @see org.apache.click.Control#getHtmlImports()
- *
- * @deprecated use the new {@link #getHeadElements()} instead
- *
- * @return the HTML includes statements for the container and child Controls,
- * or null if no includes are available
- */
- @Override
- public String getHtmlImports() {
- if (hasControls()) {
- HtmlStringBuffer buffer = new HtmlStringBuffer(0);
- for (Control control : getControls()) {
- String htmlImports = control.getHtmlImports();
- if (htmlImports != null) {
- buffer.append(htmlImports);
- }
- }
- return buffer.toString();
- }
- return null;
- }
-
- /**
* Render the HTML representation of the container and all its child
* controls to the specified buffer.
* <p/>
Modified: click/trunk/click/framework/src/org/apache/click/control/AbstractControl.java
URL: http://svn.apache.org/viewvc/click/trunk/click/framework/src/org/apache/click/control/AbstractControl.java?rev=932337&r1=932336&r2=932337&view=diff
==============================================================================
--- click/trunk/click/framework/src/org/apache/click/control/AbstractControl.java (original)
+++ click/trunk/click/framework/src/org/apache/click/control/AbstractControl.java Fri Apr 9 10:20:25 2010
@@ -533,15 +533,13 @@ public abstract class AbstractControl im
}
/**
- * @see org.apache.click.Control#getHtmlImports()
- *
* @deprecated use the new {@link #getHeadElements()} instead
*
* @return the HTML includes statements for the control stylesheet and
* JavaScript files
*/
- public String getHtmlImports() {
- return null;
+ public final String getHtmlImports() {
+ throw new UnsupportedOperationException("Use getHeadElements instead");
}
/**
@@ -951,9 +949,9 @@ public abstract class AbstractControl im
if (token.charAt(keyEnd + 1) == ';') {
continue;
}
- String name = token.substring(0, keyEnd);
- String value = token.substring(keyEnd + 1);
- stylesMap.put(name, value);
+ String styleName = token.substring(0, keyEnd);
+ String styleValue = token.substring(keyEnd + 1);
+ stylesMap.put(styleName, styleValue);
}
return stylesMap;
Modified: click/trunk/click/framework/src/org/apache/click/control/FieldSet.java
URL: http://svn.apache.org/viewvc/click/trunk/click/framework/src/org/apache/click/control/FieldSet.java?rev=932337&r1=932336&r2=932337&view=diff
==============================================================================
--- click/trunk/click/framework/src/org/apache/click/control/FieldSet.java (original)
+++ click/trunk/click/framework/src/org/apache/click/control/FieldSet.java Fri Apr 9 10:20:25 2010
@@ -609,34 +609,6 @@ public class FieldSet extends Field impl
}
/**
- * Return the HTML head import statements for contained fields.
- *
- * @see org.apache.click.Control#getHtmlImports()
- *
- * @deprecated use {@link #getHeadElements()} instead
- *
- * @return the HTML head import statements for the contained field stylesheet
- * and JavaScript files
- */
- @Override
- public String getHtmlImports() {
- if (hasControls()) {
- HtmlStringBuffer buffer = new HtmlStringBuffer(512);
-
- for (int i = 0, size = getControls().size(); i < size; i++) {
- Control control = (Control) getControls().get(i);
- String htmlImports = control.getHtmlImports();
- if (htmlImports != null) {
- buffer.append(htmlImports);
- }
- }
- return buffer.toString();
- }
-
- return null;
- }
-
- /**
* Return the fieldset Legend element value: <legend>
* <p/>
* If the legend value is null, this method will attempt to find a
Modified: click/trunk/click/framework/src/org/apache/click/util/ClickUtils.java
URL: http://svn.apache.org/viewvc/click/trunk/click/framework/src/org/apache/click/util/ClickUtils.java?rev=932337&r1=932336&r2=932337&view=diff
==============================================================================
--- click/trunk/click/framework/src/org/apache/click/util/ClickUtils.java (original)
+++ click/trunk/click/framework/src/org/apache/click/util/ClickUtils.java Fri Apr 9 10:20:25 2010
@@ -37,7 +37,6 @@ import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.MessageDigest;
-import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
@@ -93,12 +92,11 @@ public class ClickUtils {
* <tt>enable-resource-version</tt>.
* <p/>
* If this attribute is set to <tt>true</tt> and Click is running in
- * <tt>production</tt> or <tt>profile</tt> mode, resources returned from
- * {@link org.apache.click.Control#getHtmlImports()} will have a
+ * <tt>production</tt> or <tt>profile</tt> mode, Click resources returned
+ * from {@link org.apache.click.Control#getHeadElements()} will have a
* <tt>version indicator</tt> added to their path.
*
- * @see org.apache.click.Control#getHtmlImports()
- * @see org.apache.click.util.ClickUtils#createHtmlImport(String, Context)
+ * @see org.apache.click.Control#getHeadElements()
* @see org.apache.click.util.ClickUtils#getResourceVersionIndicator(Context)
*/
public static final String ENABLE_RESOURCE_VERSION = "enable-resource-version";
@@ -831,28 +829,6 @@ public class ClickUtils {
}
/**
- * Create an HTML import statement from the given string pattern and
- * versionIndicator, formatted with the request context path.
- * <p/>
- * <b>Remember</b>: the version indicator will only be added in
- * <tt>production</tt> and <tt>profile</tt> modes, and only if the
- * request attribute {@link #ENABLE_RESOURCE_VERSION}
- * is set to <tt>"true"</tt>.
- *
- * @param pattern the HTML import pattern string to format
- * @param context the request context
- * @return the formatted HTML import statement
- */
- public static String createHtmlImport(String pattern, Context context) {
- Object[] args = {
- context.getRequest().getContextPath(),
- getResourceVersionIndicator(context)
- };
-
- return MessageFormat.format(pattern, args);
- }
-
- /**
* Creates a template model of key/value pairs which can be used by template
* engines such as Velocity and Freemarker.
* <p/>
Modified: click/trunk/click/framework/src/org/apache/click/util/PageImports.java
URL: http://svn.apache.org/viewvc/click/trunk/click/framework/src/org/apache/click/util/PageImports.java?rev=932337&r1=932336&r2=932337&view=diff
==============================================================================
--- click/trunk/click/framework/src/org/apache/click/util/PageImports.java (original)
+++ click/trunk/click/framework/src/org/apache/click/util/PageImports.java Fri Apr 9 10:20:25 2010
@@ -21,7 +21,6 @@ package org.apache.click.util;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.StringTokenizer;
import javax.servlet.http.HttpServletRequest;
@@ -35,9 +34,7 @@ import org.apache.click.element.CssStyle
import org.apache.click.element.Element;
import org.apache.click.element.JsImport;
import org.apache.click.element.JsScript;
-import org.apache.click.element.ResourceElement;
import org.apache.click.service.LogService;
-import org.apache.commons.lang.StringUtils;
/**
* Provides a utility object for rendering a Page's HEAD elements and
@@ -198,56 +195,6 @@ public class PageImports {
}
/**
- * Add the given HTML import line to the Page HTML imports.
- *
- * @deprecated use the new {@link #add(org.apache.click.element.Element)}
- * instead
- *
- * @param value the HTML import line to add
- */
- public void addImport(String value) {
- if (value == null || value.length() == 0) {
- return;
- }
-
- String[] lines = StringUtils.split(value, '\n');
-
- for (int i = 0; i < lines.length; i++) {
- String line = lines[i].trim().toLowerCase();
- if (line.startsWith("<link") && line.indexOf("text/css") != -1) {
- CssImport cssImport = asCssImport(lines[i]);
-
- // Remove Click's version indicator from src attribute
- removeVersionIndicator(cssImport, "href");
-
- add(cssImport);
-
- } else if (line.startsWith("<style") && line.indexOf("text/css") != -1) {
- CssStyle cssStyle = asCssStyle(lines[i]);
- setUnique(cssStyle, cssStyle.getContent().toString());
- add(cssStyle);
-
- } else if (line.startsWith("<script")) {
- if (line.indexOf(" src=") != -1) {
- JsImport jsImport = asJsImport(lines[i]);
-
- // Remove Click's version indicator from src attribute
- removeVersionIndicator(jsImport, "src");
- add(jsImport);
-
- } else {
- JsScript jsScript = asJsScript(lines[i]);
- setUnique(jsScript, jsScript.getContent().toString());
- add(jsScript);
-
- }
- } else {
- throw new IllegalArgumentException("Unknown include type: " + lines[i]);
- }
- }
- }
-
- /**
* Return true if the page imports have been initialized.
*
* @return true if the page imports have been initialized
@@ -394,9 +341,6 @@ public class PageImports {
public void processControls(List<Control> controls) {
for (Control control : controls) {
- // import from getHtmlImports
- addImport(control.getHtmlImports());
-
// import from getHeadElement
processControl(control);
}
@@ -557,8 +501,6 @@ public class PageImports {
}
}
- addImport(page.getHtmlImports());
-
processHeadElements(page.getHeadElements());
}
@@ -591,6 +533,7 @@ public class PageImports {
*
* @return a string representing miscellaneous head and CSS elements
*/
+ @Override
public String toString() {
processPageControls();
HtmlStringBuffer buffer = new HtmlStringBuffer(
@@ -615,6 +558,7 @@ public class PageImports {
*
* @return a string representing all includes
*/
+ @Override
public String toString() {
processPageControls();
HtmlStringBuffer buffer = new HtmlStringBuffer(
@@ -638,6 +582,7 @@ public class PageImports {
*
* @return a string representing all JavaScript elements
*/
+ @Override
public String toString() {
processPageControls();
HtmlStringBuffer buffer = new HtmlStringBuffer(
@@ -661,6 +606,7 @@ public class PageImports {
*
* @return a string representing all CSS elements
*/
+ @Override
public String toString() {
processPageControls();
HtmlStringBuffer buffer = new HtmlStringBuffer(
@@ -670,214 +616,4 @@ public class PageImports {
return buffer.toString();
}
}
-
- // -------------------------------------------------------- Private Methods
-
- /**
- * Convert the given HTML import line to a {@link CssImport} instance.
- *
- * @param line the HTML import line to convert to a CssImport instance
- * @return a CssImport instance
- */
- private CssImport asCssImport(String line) {
- CssImport cssImport = new CssImport();
- copyAttributes(cssImport, line);
- return cssImport;
- }
-
- /**
- * Convert the given HTML import line to a {@link CssStyle} instance.
- *
- * @param line the HTML import line to convert to a Css instance
- * @return a Css instance
- */
- private CssStyle asCssStyle(String line) {
- CssStyle cssStyle = new CssStyle();
- copyAttributes(cssStyle, line);
- cssStyle.setContent(extractCssContent(line));
- return cssStyle;
- }
-
- /**
- * Convert the given HTML import line to a {@link JsImport} instance.
- *
- * @param line the HTML import line to convert to a JavaScriptImport instance
- * @return a JsImport instance
- */
- private JsImport asJsImport(String line) {
- JsImport jsImport = new JsImport();
- copyAttributes(jsImport, line);
- return jsImport;
- }
-
- /**
- * Convert the given HTML import line to a {@link JsScript} instance.
- *
- * @param line the HTML import line to convert to a JavaScript instance
- * @return a JsScript instance
- */
- private JsScript asJsScript(String line) {
- JsScript jsScript = new JsScript();
- copyAttributes(jsScript, line);
- jsScript.setContent(extractJsContent(line, jsScript));
- return jsScript;
- }
-
- /**
- * Extract the CSS content from the given HTML import line.
- *
- * @param line the HTML import line
- * @return the CSS content contained in the HTML import line
- */
- private String extractCssContent(String line) {
- if (line.endsWith("/>")) {
- // If tag has no content, exit early
- return "";
- }
-
- // Find index where tag ends
- int start = line.indexOf('>');
- if (start == -1) {
- throw new IllegalArgumentException(line + " is not a valid element");
- }
- int end = line.lastIndexOf("</style>");
- if (end == -1) {
- return "";
- }
- return line.substring(start + 1, end);
- }
-
- /**
- * Extract the JavaScript content from the given HTML import line.
- *
- * @param line the HTML import line
- * @param jsScript the JsScript to replace the line with
- */
- private String extractJsContent(String line, JsScript jsScript) {
- if (line.endsWith("/>")) {
- // If tag has no content, exit early
- return "";
- }
-
- // Find index where tag ends
- int start = line.indexOf('>');
- if (start == -1) {
- throw new IllegalArgumentException(line + " is not a valid element");
- }
- int end = line.lastIndexOf("</script>");
- if (end == -1) {
- return "";
- }
- line = line.substring(start + 1, end).trim();
-
- // Strip addLoadEvent function
- int addLoadEventStart = line.indexOf("addLoadEvent");
- if (addLoadEventStart == 0) {
- start = line.indexOf("{", addLoadEventStart);
- line = line.substring(start + 1);
- end = line.lastIndexOf("});");
- line = line.substring(0, end);
- jsScript.setExecuteOnDomReady(true);
- }
-
- return line;
- }
-
- /**
- * Copy all available attributes from HTML import line to the Element
- * instance.
- *
- * @param element the HTML head element to copy the attributes to
- * @param line the HTML import line to copy attributes from
- */
- private void copyAttributes(Element element, String line) {
- // Find index where attributes start: the first space
- int start = line.indexOf(' ');
- if (start == -1) {
- // If no attributes found, exit early
- return;
- }
-
- // Find index where attributes end: closing tag
- int end = line.indexOf("/>");
- if (end == -1) {
- end = line.indexOf(">");
- }
- if (end == -1) {
- throw new IllegalArgumentException(line + " is not a valid HTML import");
- }
-
- line = line.substring(start, end);
- StringTokenizer tokens = new StringTokenizer(line, " ");
- while (tokens.hasMoreTokens()) {
- String token = tokens.nextToken();
- StringTokenizer attribute = new StringTokenizer(token, "=");
- String key = attribute.nextToken();
- String value = attribute.nextToken();
- element.setAttribute(key, StringUtils.strip(value, "'\""));
- }
- }
-
- /**
- * Ensure the given element and content will be unique.
- *
- * @deprecated use {@link org.apache.click.element.Element#setId(java.lang.String) ID}
- * instead
- *
- * @param element sets whether the HEAD element should be unique or not
- * @param content sets whether the HEAD element should be unique or not
- */
- private void setUnique(Element element, String content) {
- String id = element.getId();
- // If Element is unique and ID is not defined, derive the ID from the
- // content
- if (StringUtils.isBlank(id) && content.length() > 0) {
- int hash = Math.abs(content.hashCode());
- element.setId("c_" + Integer.toString(hash));
- }
- }
-
- /**
- * Removes all occurrences of a substring from within the source string.
- *
- * @deprecated use {@link org.apache.click.element.Element)} instead
- *
- * @param source the source String to search
- * @param remove the string to remove
- * @return the substring with the string removed if found
- */
- private String remove(String source, String remove) {
- int start = source.lastIndexOf(remove);
- if (start == -1) {
- return source;
- }
- int end = start + remove.length();
- HtmlStringBuffer buffer = new HtmlStringBuffer(source.length());
- buffer.append(source.substring(0, start));
- buffer.append(source.substring(end));
- return buffer.toString();
- }
-
- /**
- * Remove Click's version indicator from the attribute of the given element.
- *
- * @deprecated use {@link org.apache.click.element.Element)} instead
- *
- * @param element the element
- * @param attribute the attribute to remove the version indicator from
- */
- private void removeVersionIndicator(ResourceElement element, String attribute) {
- String value = element.getAttribute(attribute);
-
- // Store current length of value before removing version indicator
- int length = value.length();
-
- value = remove(value, ClickUtils.RESOURCE_VERSION_INDICATOR);
-
- // Check if Click version indicator was removed from value
- if (value.length() != length) {
- element.setAttribute(attribute, value);
- element.setVersionIndicator(ClickUtils.RESOURCE_VERSION_INDICATOR);
- }
- }
}