You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2011/10/20 23:45:24 UTC
svn commit: r1187069 - in /myfaces/core/trunk:
impl/src/main/java/org/apache/myfaces/application/
impl/src/main/java/org/apache/myfaces/resource/
shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/
shared/src/main/java/org/apache/myface...
Author: lu4242
Date: Thu Oct 20 21:45:23 2011
New Revision: 1187069
URL: http://svn.apache.org/viewvc?rev=1187069&view=rev
Log:
MYFACES-3361 jsf.js: code restructuration for size and speed improvlements
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/DefaultResourceHandlerSupport.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/resource/InternalClassLoaderResourceLoader.java
myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/ResourceUtils.java
myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/resource/ClassLoaderResourceLoader.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/DefaultResourceHandlerSupport.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/DefaultResourceHandlerSupport.java?rev=1187069&r1=1187068&r2=1187069&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/DefaultResourceHandlerSupport.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/DefaultResourceHandlerSupport.java Thu Oct 20 21:45:23 2011
@@ -22,10 +22,12 @@ import javax.faces.application.ProjectSt
import javax.faces.context.FacesContext;
import org.apache.myfaces.resource.InternalClassLoaderResourceLoader;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
import org.apache.myfaces.shared.resource.BaseResourceHandlerSupport;
import org.apache.myfaces.shared.resource.ClassLoaderResourceLoader;
import org.apache.myfaces.shared.resource.ExternalContextResourceLoader;
import org.apache.myfaces.shared.resource.ResourceLoader;
+import org.apache.myfaces.shared.util.WebConfigParamUtils;
/**
* A ResourceHandlerSupport implementation for use with standard Java Servlet engines,
@@ -37,6 +39,10 @@ import org.apache.myfaces.shared.resourc
public class DefaultResourceHandlerSupport extends BaseResourceHandlerSupport
{
+ private static final String META_INF_RESOURCES = "META-INF/resources";
+ private static final String RESOURCES = "/resources";
+ private static final String META_INF_INTERNAL_RESOURCES = "META-INF/internal-resources";
+
private ResourceLoader[] _resourceLoaders;
public DefaultResourceHandlerSupport()
@@ -48,21 +54,27 @@ public class DefaultResourceHandlerSuppo
{
if (_resourceLoaders == null)
{
+ FacesContext facesContext = FacesContext.getCurrentInstance();
//The ExternalContextResourceLoader has precedence over
//ClassLoaderResourceLoader, so it goes first.
- if (FacesContext.getCurrentInstance().isProjectStage(ProjectStage.Development))
+ String renderedJSFJS = WebConfigParamUtils.getStringInitParameter(facesContext.getExternalContext(),
+ InternalClassLoaderResourceLoader.MYFACES_JSF_MODE,
+ ResourceUtils.JSF_MYFACES_JSFJS_NORMAL);
+
+ if (facesContext.isProjectStage(ProjectStage.Development) ||
+ !renderedJSFJS.equals(ResourceUtils.JSF_MYFACES_JSFJS_NORMAL))
{
_resourceLoaders = new ResourceLoader[] {
- new ExternalContextResourceLoader("/resources"),
- new ClassLoaderResourceLoader("META-INF/resources"),
- new InternalClassLoaderResourceLoader("META-INF/internal-resources")
+ new ExternalContextResourceLoader(RESOURCES),
+ new InternalClassLoaderResourceLoader(META_INF_INTERNAL_RESOURCES),
+ new ClassLoaderResourceLoader(META_INF_RESOURCES)
};
}
else
{
_resourceLoaders = new ResourceLoader[] {
- new ExternalContextResourceLoader("/resources"),
- new ClassLoaderResourceLoader("META-INF/resources")
+ new ExternalContextResourceLoader(RESOURCES),
+ new ClassLoaderResourceLoader(META_INF_RESOURCES)
};
}
}
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/resource/InternalClassLoaderResourceLoader.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/resource/InternalClassLoaderResourceLoader.java?rev=1187069&r1=1187068&r2=1187069&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/resource/InternalClassLoaderResourceLoader.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/resource/InternalClassLoaderResourceLoader.java Thu Oct 20 21:45:23 2011
@@ -21,6 +21,7 @@ package org.apache.myfaces.resource;
import java.io.InputStream;
import java.net.URL;
+import javax.faces.application.ProjectStage;
import javax.faces.context.FacesContext;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
@@ -30,10 +31,10 @@ import org.apache.myfaces.shared.resourc
import org.apache.myfaces.shared.resource.ResourceMetaImpl;
import org.apache.myfaces.shared.util.ClassUtils;
import org.apache.myfaces.shared.util.WebConfigParamUtils;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
/**
* A resource loader implementation which loads resources from the thread ClassLoader.
- *
*/
public class InternalClassLoaderResourceLoader extends ResourceLoader
{
@@ -44,16 +45,36 @@ public class InternalClassLoaderResource
* all in just one file, to preserve line numbers and make javascript
* debugging of the default jsf javascript file more simple.
*/
- @JSFWebConfigParam(since="2.0.1",defaultValue="false",expectedValues="true,false", group="render")
+ @JSFWebConfigParam(since = "2.0.1", defaultValue = "false", expectedValues = "true,false", group = "render")
public static final String USE_MULTIPLE_JS_FILES_FOR_JSF_UNCOMPRESSED_JS = "org.apache.myfaces.USE_MULTIPLE_JS_FILES_FOR_JSF_UNCOMPRESSED_JS";
+
+ /**
+ * Define the mode used for jsf.js file:
+ * <ul>
+ * <li>normal : contains everything, including jsf-i18n.js, jsf-experimental.js and jsf-legacy.js</li>
+ * <li>minimal-modern : is the core jsf with a baseline of ie9+, without jsf-i18n.js, jsf-experimental.js and jsf-legacy.js</li>
+ * <li>minimal: which is the same with a baseline of ie6, without jsf-i18n.js, jsf-experimental.js</li>
+ * </ul>
+ * <p>If org.apache.myfaces.USE_MULTIPLE_JS_FILES_FOR_JSF_UNCOMPRESSED_JS param is set to true and project stage
+ * is Development, this param is ignored.</p>
+ */
+ @JSFWebConfigParam(since = "2.0.10,2.1.4", defaultValue = "normal", expectedValues = "normal, minimal-modern, minimal",
+ group = "render")
+ public static final String MYFACES_JSF_MODE = "org.apache.myfaces.JSF_JS_MODE";
private final boolean _useMultipleJsFilesForJsfUncompressedJs;
+ private final String _jsfMode;
+ private final boolean _developmentStage;
public InternalClassLoaderResourceLoader(String prefix)
{
super(prefix);
_useMultipleJsFilesForJsfUncompressedJs = WebConfigParamUtils.getBooleanInitParameter(FacesContext.getCurrentInstance().getExternalContext(),
USE_MULTIPLE_JS_FILES_FOR_JSF_UNCOMPRESSED_JS, false);
+
+ _jsfMode = WebConfigParamUtils.getStringInitParameter(FacesContext.getCurrentInstance().getExternalContext(), MYFACES_JSF_MODE,
+ ResourceUtils.JSF_MYFACES_JSFJS_NORMAL);
+ _developmentStage = FacesContext.getCurrentInstance().isProjectStage(ProjectStage.Development);
}
@Override
@@ -65,7 +86,7 @@ public class InternalClassLoaderResource
@Override
public InputStream getResourceInputStream(ResourceMeta resourceMeta)
{
- InputStream is = null;
+ InputStream is;
if (getPrefix() != null && !"".equals(getPrefix()))
{
String name = getPrefix() + '/' + resourceMeta.getResourceIdentifier();
@@ -90,7 +111,7 @@ public class InternalClassLoaderResource
@Override
public URL getResourceURL(ResourceMeta resourceMeta)
{
- URL url = null;
+ URL url;
if (getPrefix() != null && !"".equals(getPrefix()))
{
String name = getPrefix() + '/' + resourceMeta.getResourceIdentifier();
@@ -108,7 +129,7 @@ public class InternalClassLoaderResource
{
url = this.getClass().getClassLoader().getResource(resourceMeta.getResourceIdentifier());
}
- return url;
+ return url;
}
}
@@ -123,28 +144,59 @@ public class InternalClassLoaderResource
String resourceName, String resourceVersion)
{
//handle jsf.js
- if (libraryName != null &&
- org.apache.myfaces.shared.renderkit.html.util.ResourceUtils.JAVAX_FACES_LIBRARY_NAME.equals(libraryName) &&
- org.apache.myfaces.shared.renderkit.html.util.ResourceUtils.JSF_JS_RESOURCE_NAME.equals(resourceName))
- {
- if (_useMultipleJsFilesForJsfUncompressedJs)
+ final boolean javaxFacesLib = libraryName != null &&
+ ResourceUtils.JAVAX_FACES_LIBRARY_NAME.equals(libraryName);
+ final boolean javaxFaces = javaxFacesLib &&
+ ResourceUtils.JSF_JS_RESOURCE_NAME.equals(resourceName);
+
+ if (javaxFaces)
+ {
+ if (_developmentStage)
+ {
+ if (_useMultipleJsFilesForJsfUncompressedJs)
+ {
+ return new AliasResourceMetaImpl(prefix, libraryName, libraryVersion,
+ resourceName, resourceVersion, ResourceUtils.JSF_UNCOMPRESSED_JS_RESOURCE_NAME, true);
+ }
+ else
+ {
+ //normall we would have to take care about the standard jsf.js case also
+ //but our standard resource loader takes care of it, because this part is only called in debugging mode
+ //in production only in debugging
+ return new AliasResourceMetaImpl(prefix, libraryName, libraryVersion, resourceName, resourceVersion, "jsf-uncompressed-full.js", false);
+ }
+ }
+ else if (_jsfMode.equals(ResourceUtils.JSF_MYFACES_JSFJS_MINIMAL) )
{
- return new AliasResourceMetaImpl(prefix, libraryName, libraryVersion,
- resourceName, resourceVersion, org.apache.myfaces.shared.renderkit.html.util.ResourceUtils.JSF_UNCOMPRESSED_JS_RESOURCE_NAME, true);
+ return new AliasResourceMetaImpl(prefix, libraryName, libraryVersion, resourceName, resourceVersion,
+ ResourceUtils.JSF_MINIMAL_JS_RESOURCE_NAME, false);
+ }
+ else if (_jsfMode.equals(ResourceUtils.JSF_MYFACES_JSFJS_MINIMAL_MODERN) )
+ {
+ return new AliasResourceMetaImpl(prefix, libraryName, libraryVersion, resourceName, resourceVersion,
+ ResourceUtils.JSF_MINIMAL_MODERN_JS_RESOURCE_NAME, false);
}
else
{
- return new AliasResourceMetaImpl(prefix, libraryName, libraryVersion, resourceName, resourceVersion, "jsf-uncompressed-full.js", false);
+ return null;
}
}
- //handle the oamSubmit.js
- else if (libraryName != null &&
- org.apache.myfaces.shared.renderkit.html.util.ResourceUtils.MYFACES_LIBRARY_NAME.equals(libraryName) &&
- org.apache.myfaces.shared.renderkit.html.util.ResourceUtils.MYFACES_JS_RESOURCE_NAME.equals(resourceName))
+ else if (javaxFacesLib && !_jsfMode.equals(ResourceUtils.JSF_MYFACES_JSFJS_NORMAL) &&
+ (ResourceUtils.JSF_MYFACES_JSFJS_I18N.equals(resourceName) ||
+ ResourceUtils.JSF_MYFACES_JSFJS_EXPERIMENTAL.equals(resourceName) ||
+ ResourceUtils.JSF_MYFACES_JSFJS_LEGACY.equals(resourceName)) )
{
- return new AliasResourceMetaImpl(prefix, libraryName, libraryVersion,
- resourceName, resourceVersion, org.apache.myfaces.shared.renderkit.html.util.ResourceUtils.MYFACES_JS_RESOURCE_NAME_UNCOMPRESSED, true);
- } else if (libraryName != null && libraryName.startsWith("org.apache.myfaces.core"))
+ return new ResourceMetaImpl(prefix, libraryName, libraryVersion, resourceName, resourceVersion);
+ }
+ else if (_developmentStage && libraryName != null &&
+ ResourceUtils.MYFACES_LIBRARY_NAME.equals(libraryName) &&
+ ResourceUtils.MYFACES_JS_RESOURCE_NAME.equals(resourceName))
+ {
+ //handle the oamSubmit.js
+ return new AliasResourceMetaImpl(prefix, libraryName, libraryVersion,
+ resourceName, resourceVersion, ResourceUtils.MYFACES_JS_RESOURCE_NAME_UNCOMPRESSED, true);
+ }
+ else if (_developmentStage && libraryName != null && libraryName.startsWith("org.apache.myfaces.core"))
{
return new ResourceMetaImpl(prefix, libraryName, libraryVersion, resourceName, resourceVersion);
}
@@ -157,7 +209,7 @@ public class InternalClassLoaderResource
/**
* Returns the ClassLoader to use when looking up resources under the top level package. By default, this is the
* context class loader.
- *
+ *
* @return the ClassLoader used to lookup resources
*/
protected ClassLoader getClassLoader()
Modified: myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/ResourceUtils.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/ResourceUtils.java?rev=1187069&r1=1187068&r2=1187069&view=diff
==============================================================================
--- myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/ResourceUtils.java (original)
+++ myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/ResourceUtils.java Thu Oct 20 21:45:23 2011
@@ -19,6 +19,7 @@
package org.apache.myfaces.shared.renderkit.html.util;
import java.io.IOException;
+import java.lang.String;
import java.util.HashMap;
import java.util.Map;
@@ -27,6 +28,7 @@ import javax.faces.component.UIComponent
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
+import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
import org.apache.myfaces.shared.config.MyfacesConfig;
import org.apache.myfaces.shared.renderkit.JSFAttr;
import org.apache.myfaces.shared.renderkit.html.HTML;
@@ -45,10 +47,21 @@ public class ResourceUtils {
public final static String MYFACES_LIBRARY_NAME = "org.apache.myfaces";
private final static String RENDERED_MYFACES_JS = "org.apache.myfaces.RENDERED_MYFACES_JS";
+ public final static String JSF_MYFACES_JSFJS_MINIMAL = "minimal";
+ public final static String JSF_MYFACES_JSFJS_MINIMAL_MODERN = "minimal-modern";
+ public final static String JSF_MYFACES_JSFJS_NORMAL = "normal";
+
public final static String JSF_UNCOMPRESSED_JS_RESOURCE_NAME = "jsf-uncompressed.js";
+ public final static String JSF_MINIMAL_JS_RESOURCE_NAME = "jsf-minimal.js";
+ public final static String JSF_MINIMAL_MODERN_JS_RESOURCE_NAME = "jsf-minimal-modern.js";
+
+ public final static String JSF_MYFACES_JSFJS_I18N = "jsf-i18n.js";
+ public final static String JSF_MYFACES_JSFJS_EXPERIMENTAL = "jsf-experimental.js";
+ public final static String JSF_MYFACES_JSFJS_LEGACY = "jsf-legacy.js";
+
private final static String RENDERED_STYLESHEET_RESOURCES_SET = "org.apache.myfaces.RENDERED_STYLESHEET_RESOURCES_SET";
private final static String RENDERED_SCRIPT_RESOURCES_SET = "org.apache.myfaces.RENDERED_SCRIPT_RESOURCES_SET";
- private final static String RENDERED_JSF_JS = "org.apache.myfaces.RENDERED_JSF_JS";
+ public final static String RENDERED_JSF_JS = "org.apache.myfaces.RENDERED_JSF_JS";
public final static String HEAD_TARGET = "head";
public final static String BODY_TARGET = "body";
public final static String FORM_TARGET = "form";
Modified: myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/resource/ClassLoaderResourceLoader.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/resource/ClassLoaderResourceLoader.java?rev=1187069&r1=1187068&r2=1187069&view=diff
==============================================================================
--- myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/resource/ClassLoaderResourceLoader.java (original)
+++ myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/resource/ClassLoaderResourceLoader.java Thu Oct 20 21:45:23 2011
@@ -73,12 +73,9 @@ public class ClassLoaderResourceLoader e
}
};*/
- private final boolean _developmentStage;
-
public ClassLoaderResourceLoader(String prefix)
{
super(prefix);
- _developmentStage = FacesContext.getCurrentInstance().isProjectStage(ProjectStage.Development);
}
@Override
@@ -434,21 +431,21 @@ public class ClassLoaderResourceLoader e
public ResourceMeta createResourceMeta(String prefix, String libraryName, String libraryVersion,
String resourceName, String resourceVersion)
{
- if (_developmentStage && libraryName != null &&
- ResourceUtils.JAVAX_FACES_LIBRARY_NAME.equals(libraryName) &&
- ResourceUtils.JSF_JS_RESOURCE_NAME.equals(resourceName))
- {
+ //if (_developmentStage && libraryName != null &&
+ // ResourceUtils.JAVAX_FACES_LIBRARY_NAME.equals(libraryName) &&
+ // ResourceUtils.JSF_JS_RESOURCE_NAME.equals(resourceName))
+ //{
// InternalClassLoaderResourceLoader will serve it, so return null in this case.
- return null;
- } else if (_developmentStage && libraryName != null &&
- ResourceUtils.MYFACES_LIBRARY_NAME.equals(libraryName) &&
- ResourceUtils.MYFACES_JS_RESOURCE_NAME.equals(resourceName)) {
+ // return null;
+ //} else if (_developmentStage && libraryName != null &&
+ // ResourceUtils.MYFACES_LIBRARY_NAME.equals(libraryName) &&
+ // ResourceUtils.MYFACES_JS_RESOURCE_NAME.equals(resourceName)) {
// InternalClassLoaderResourceLoader will serve it, so return null in this case.
- return null;
- } else
- {
+ // return null;
+ //} else
+ //{
return new ResourceMetaImpl(prefix, libraryName, libraryVersion, resourceName, resourceVersion);
- }
+ //}
}
/**