You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by jw...@apache.org on 2013/12/03 19:31:34 UTC
svn commit: r1547514 [1/2] - in /myfaces/trinidad/trunk:
trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/
trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/
trinidad-impl/src/main/java/org/apache/myfaces/trinida...
Author: jwaldman
Date: Tue Dec 3 18:31:33 2013
New Revision: 1547514
URL: http://svn.apache.org/r1547514
Log:
TRINIDAD-2433 unnecessary use of FacesContext in SkinProvider API
Thanks to Anand Nath for the patch.
Modified:
myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/CustomMetadata.java
myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinFactory.java
myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinMetadata.java
myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinProvider.java
myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinVersion.java
myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderingContext.java
myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/resource/TranslationsResourceLoader.java
myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinFactoryImpl.java
myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java
myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/SkinPregenerationService.java
myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/provider/BaseSkinProvider.java
myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/provider/ExternalSkinProvider.java
myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/provider/SkinProviderRegistry.java
myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/provider/TrinidadBaseSkinProvider.java
myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/provider/TrinidadSkinProvider.java
myfaces/trinidad/trunk/trinidad-impl/src/test/java/org/apache/myfaces/trinidadinternal/renderkit/RenderKitTestCase.java
Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/CustomMetadata.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/CustomMetadata.java?rev=1547514&r1=1547513&r2=1547514&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/CustomMetadata.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/CustomMetadata.java Tue Dec 3 18:31:33 2013
@@ -24,7 +24,7 @@ import java.util.Map;
/**
* CustomMetadata represents the metadata associated with a Skin.
- * This API makes it convinient to read the content of metadata tag in trinidad-skins.xml
+ * This API makes it convenient to read the content of metadata tag in trinidad-skins.xml
* such as:
* <metadata>
* <visibility>deprecated</visibility>
Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinFactory.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinFactory.java?rev=1547514&r1=1547513&r2=1547514&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinFactory.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinFactory.java Tue Dec 3 18:31:33 2013
@@ -22,29 +22,31 @@ import java.util.Iterator;
import java.util.Map;
import java.util.WeakHashMap;
+import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import org.apache.myfaces.trinidad.logging.TrinidadLogger;
/**
- * All methods in this class dealing with skin management activities such as loading, creating, managing
- * and disposing skins are deprecated. It is recommended to use SkinProvider instead of SkinFactory
- * for the deprecated APIs. SkinProvider introduces lazy / on-demand loading of skins as opposed to eager
- * loading done by SkinFactory. SkinProvider also introduces the flexibility to create and manage external
- * skin repositories. Thus we have better manageability of Skins and clear separation of external skins and
- * trinidad provided / supported skins.
+ * All methods in this class dealing with skin management activities such as loading, creating,
+ * managing and disposing skins are deprecated. It is recommended to use SkinProvider instead of
+ * SkinFactory for the deprecated APIs. SkinProvider introduces lazy / on-demand loading of skins as
+ * opposed to eager loading done by SkinFactory. SkinProvider also introduces the flexibility to
+ * create and manage external skin repositories. Thus we have better manageability of Skins and
+ * clear separation of external skins and trinidad provided / supported skins.
* <p/>
* SkinFactory exists today to provide SkinProvider implementers an easy way to create a Skin object
- * without having to implement Skin interface.This is done using SkinFactory#createSkin API.
- * Skin object created using this API can be used by the SkinProvider implementation's SkinProvider#getSkin methods.
- * SkinProvider implementation should take care of managing the skin and destroy it when required.
+ * without having to implement Skin interface.This is done using SkinFactory#createSkin API. Skin
+ * object created using this API can be used by the SkinProvider implementation's
+ * SkinProvider#getSkin methods. SkinProvider implementation should take care of managing the skin
+ * and destroy it when required.
* <p/>
- * Creating a Skin using this SkinFactory#createSkin API is different from adding a Skin into SkinFactory using
- * SkinFactory#addSkin.
- * With SkinFactory#createSkin the responsibility of managing the Skin and returning is in response to
- * SkinProvider#getSkin calls is with the SkinProvider and with SkinFactory#addSkin, this responsibility is
- * with the SkinFactory.
+ * Creating a Skin using this SkinFactory#createSkin API is different from adding a Skin into
+ * SkinFactory using SkinFactory#addSkin. With SkinFactory#createSkin the responsibility of managing
+ * the Skin and returning is in response to SkinProvider#getSkin calls is with the SkinProvider and
+ * with SkinFactory#addSkin, this responsibility is with the SkinFactory.
+ *
* @see SkinProvider
* @see Skin
* @see SkinMetadata
@@ -81,108 +83,112 @@ abstract public class SkinFactory
}
/**
- * Creates a Skin based on the supplied base skin information and skinMetadata information.
- * This API can be used by SkinProvider implementers to create Skin objects which their SkinProvider implementation
- * supports. As a minimum, the user of this API should pass information to obtain the base skin through
- * 'baseSkinMetadata' and provide information such as id, family, renderkit etc for the new skin through
- * 'skinMetadata'.
- * @param context
- * @param baseSkinMetadata {@link SkinMetadata} metadata to find the base skin for the new skin to be created.
- * The user should pass enough information to pick the base skin
- * with id / family / version / renderkit.
- * Base skin is obtained using SkinProvider#getSkin API.
- * @param skinMetadata {@link SkinMetadata} metadata to create new Skin. The user should pass
- * all information such as id, family, version, renderkit,
- * styleSheetName, features, metadata etc. for the new skin.
- * @return a new skin {@link Skin} object created using the skinMetadata {@link SkinMetadata} supplied
- * @throws IllegalArgumentException if the baseSkinId contained in the supplied skinMetadata
- * did not match the id of the baseSkin obtained using baseSkinMetadata
- * @throws ClassCastException if SkinProvider does not provide as matching base skin as
- * per metadata passed in baseSkinMetadata
- */
- public Skin createSkin(FacesContext context, SkinMetadata baseSkinMetadata, SkinMetadata skinMetadata)
- {
- throw new UnsupportedOperationException(_LOG.getMessage("SKIN_FACTORY_NO_CREATE_SKIN_SUPPORT", this));
+ * Creates a Skin based on the supplied base skin information and skinMetadata information. This
+ * API can be used by SkinProvider implementers to create Skin objects which their SkinProvider
+ * implementation supports. As a minimum, the user of this API should pass information to obtain
+ * the base skin through 'baseSkinMetadata' and provide information such as id, family, renderkit
+ * etc for the new skin through 'skinMetadata'.
+ *
+ * @param externalContext valid ExternalContext
+ * @param baseSkinMetadata {@link SkinMetadata} metadata to find the base skin for the new skin to
+ * be created. The user should pass enough information to pick the base
+ * skin with id / family / version / renderkit. Base skin is obtained
+ * using SkinProvider#getSkin API.
+ * @param skinMetadata {@link SkinMetadata} metadata to create new Skin. The user should pass
+ * all information such as id, family, version, renderkit, styleSheetName,
+ * features, metadata etc. for the new skin.
+ * @return a new skin {@link Skin} object created using the skinMetadata {@link SkinMetadata}
+ * supplied
+ * @throws IllegalArgumentException if the baseSkinId contained in the supplied skinMetadata did
+ * not match the id of the baseSkin obtained using
+ * baseSkinMetadata
+ * @throws ClassCastException if SkinProvider does not provide as matching base skin as per
+ * metadata passed in baseSkinMetadata
+ */
+ public Skin createSkin(
+ ExternalContext externalContext,
+ SkinMetadata baseSkinMetadata,
+ SkinMetadata skinMetadata)
+ {
+ throw new UnsupportedOperationException(_LOG.getMessage("SKIN_FACTORY_NO_CREATE_SKIN_SUPPORT",
+ this));
}
/**
- * Creates a Skin based on the supplied base skin information and skinMetadata information.
- * This API can be used by SkinProvider implementers to create Skin objects which their SkinProvider implementation
- * supports. As a minimum, the user of this API should pass information such as baseSkinId,
- * id, family, renderkit etc for the new skin through 'skinMetadata'.
- * @param context
- * @param skinMetadata {@link SkinMetadata} metadata to create new Skin. The user should pass
- * all information such as baseSkinId, id, family, version, renderkit,
- * styleSheetName, features, metadata etc. for the new skin.
- * baseSkinId is mandatory, since it is used to query the base skin
- * for the new skin using SkinProvider#getSkin API.
- * @return a new skin {@link Skin} object created using the skinMetadata {@link SkinMetadata} supplied
- * @throws IllegalArgumentException if the baseSkinId contained in the supplied
- * skinMetadata did not match the id of the baseSkin obtained from SkinProvider#getSkin
- */
- public Skin createSkin(FacesContext context, SkinMetadata skinMetadata)
- {
- throw new UnsupportedOperationException(_LOG.getMessage("SKIN_FACTORY_NO_CREATE_SKIN_SUPPORT", this));
+ * Creates a Skin based on the supplied base skin information and skinMetadata information. This
+ * API can be used by SkinProvider implementers to create Skin objects which their SkinProvider
+ * implementation supports. As a minimum, the user of this API should pass information such as
+ * baseSkinId, id, family, renderkit etc for the new skin through 'skinMetadata'.
+ *
+ * @param externalContext valid ExternalContext
+ * @param skinMetadata {@link SkinMetadata} metadata to create new Skin. The user should
+ * pass all information such as baseSkinId, id, family, version, renderkit,
+ * styleSheetName, features, metadata etc. for the new skin. baseSkinId is
+ * mandatory, since it is used to query the base skin for the new skin
+ * using SkinProvider#getSkin API.
+ * @return a new skin {@link Skin} object created using the skinMetadata {@link SkinMetadata}
+ * supplied
+ * @throws IllegalArgumentException if the baseSkinId contained in the supplied skinMetadata did
+ * not match the id of the baseSkin obtained from
+ * SkinProvider#getSkin
+ */
+ public Skin createSkin(ExternalContext externalContext, SkinMetadata skinMetadata)
+ {
+ throw new UnsupportedOperationException(_LOG.getMessage("SKIN_FACTORY_NO_CREATE_SKIN_SUPPORT",
+ this));
}
/**
- * Reloads the skins that was registered with this factory.
- * Subclassers can choose to provide the implementation.
- * @deprecated use SkinProvider SPI to deal with externals skins
- * this functionality will now be replaced by having the SkinProvider
- * implementations reloading skins themselves as and when required.
+ * Reloads the skins that was registered with this factory. Subclassers can choose to provide the
+ * implementation.
+ *
+ * @deprecated use SkinProvider SPI to deal with externals skins this functionality will now be
+ * replaced by having the SkinProvider implementations reloading skins themselves as and when
+ * required.
*/
@Deprecated
public void reload()
{
_LOG.warning("SKIN_FACTORY_NO_RELOAD_SUPPORT", this);
}
-
+
/**
- * <p>Register the specified {@link Skin} instance, associated with
- * the specified <code>skinId</code>, to be supported by this
- * {@link SkinFactory}, replacing any previously registered
- * {@link Skin} for this identifier.</p>
+ * <p>Register the specified {@link Skin} instance, associated with the specified
+ * <code>skinId</code>, to be supported by this {@link SkinFactory}, replacing any previously
+ * registered {@link Skin} for this identifier.</p>
*
* @param skinId Identifier of the {@link Skin} to register
- * @param skin {@link Skin} instance that we are registering
- * @deprecated use SkinProvider SPI to deal with externals skins
- * Implementing SkinProvider and exposing skins using SkinProvider#getSkin()
- * method is recommended than using this API to make skins available at runtime.
+ * @param skin {@link Skin} instance that we are registering
+ * @deprecated use SkinProvider SPI to deal with externals skins Implementing SkinProvider and
+ * exposing skins using SkinProvider#getSkin() method is recommended than using this API to make
+ * skins available at runtime.
*/
@Deprecated
public abstract void addSkin(String skinId, Skin skin);
/**
- * <p>Return a {@link Skin} instance for the specified skinId.
- * If there is no registered {@link
- * Skin} for the specified identifier, return
- * <code>null</code>. The set of available skin identifiers
- * is available via the <code>getSkinIds()</code> method.</p>
- *
- * @param context FacesContext for the request currently being
- * processed, or <code>null</code> if none is available.
- * @param skinId Skin identifier of the requested
- * {@link Skin} instance
+ * <p>Return a {@link Skin} instance for the specified skinId. If there is no registered {@link
+ * Skin} for the specified identifier, return <code>null</code>. The set of available skin
+ * identifiers is available via the <code>getSkinIds()</code> method.</p>
+ *
+ * @param context FacesContext for the request currently being processed, or <code>null</code> if
+ * none is available.
+ * @param skinId Skin identifier of the requested {@link Skin} instance
* @deprecated use SkinProvider#getSkin method to query skins
*/
@Deprecated
public abstract Skin getSkin(FacesContext context, String skinId);
/**
- * <p>Return a {@link Skin} instance for the specified skinFamily and
- * renderKitId.
- * If there is no registered {@link
- * Skin} for the specified identifier, return
- * <code>null</code>. The set of available skin identifiers
- * is available via the <code>getSkinIds()</code> method.</p>
- *
- * @param context FacesContext for the request currently being
- * processed, or <code>null</code> if none is available.
- * @param family family of the requested {@link Skin} instance
- * @param renderKitId RenderKit identifier of the requested
- * {@link Skin} instance
+ * <p>Return a {@link Skin} instance for the specified skinFamily and renderKitId. If there is no
+ * registered {@link Skin} for the specified identifier, return <code>null</code>. The set of
+ * available skin identifiers is available via the <code>getSkinIds()</code> method.</p>
+ *
+ * @param context FacesContext for the request currently being processed, or <code>null</code>
+ * if none is available.
+ * @param family family of the requested {@link Skin} instance
+ * @param renderKitId RenderKit identifier of the requested {@link Skin} instance
* @deprecated use SkinProvider#getSkin method to query skins
*/
@Deprecated
@@ -190,24 +196,22 @@ abstract public class SkinFactory
FacesContext context,
String family,
String renderKitId);
-
+
+
/**
- * <p>Return a {@link Skin} instance for the specified skinFamily and
- * renderKitId, and skin version. The best matched skin is returned.
- * If there is no registered {@link
- * Skin} for the specified identifier, return
- * <code>null</code>. The set of available skin identifiers
- * is available via the <code>getSkinIds()</code> method.</p>
- *
- * @param context FacesContext for the request currently being
- * processed, or <code>null</code> if none is available.
- * @param family family of the requested {@link Skin} instance
- * @param renderKitId RenderKit identifier of the requested
- * {@link Skin} instance
- * @param version A string that denotes the skin version name. It can be "default" or
- * the name of the version (see the Skin's SkinVersion#getName) or null which
- * returns the skin with no version set.
+ * <p>Return a {@link Skin} instance for the specified skinFamily and renderKitId, and skin
+ * version. The best matched skin is returned. If there is no registered {@link Skin} for the
+ * specified identifier, return <code>null</code>. The set of available skin identifiers is
+ * available via the <code>getSkinIds()</code> method.</p>
+ *
+ * @param context FacesContext for the request currently being processed, or <code>null</code>
+ * if none is available.
+ * @param family family of the requested {@link Skin} instance
+ * @param renderKitId RenderKit identifier of the requested {@link Skin} instance
+ * @param version A string that denotes the skin version name. It can be "default" or the name
+ * of the version (see the Skin's SkinVersion#getName) or null which returns
+ * the skin with no version set.
* @deprecated use SkinProvider#getSkin method to query skins
*/
@Deprecated
@@ -216,11 +220,11 @@ abstract public class SkinFactory
String family,
String renderKitId,
String version);
-
+
/**
- * <p>Return an <code>Iterator</code> over the set of skin
- * identifiers registered with this factory.
- * </p>
+ * <p>Return an <code>Iterator</code> over the set of skin identifiers registered with this
+ * factory. </p>
+ *
* @deprecated use SkinProvider#getSkinMetadata to get the list of skins supported
*/
@Deprecated
@@ -232,8 +236,8 @@ abstract public class SkinFactory
return Thread.currentThread().getContextClassLoader();
}
- static private final Map<ClassLoader, SkinFactory> _FACTORIES =
+ private static final Map<ClassLoader, SkinFactory> _FACTORIES =
new WeakHashMap<ClassLoader, SkinFactory>();
- private static final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(
- SkinFactory.class);
+ private static final TrinidadLogger _LOG =
+ TrinidadLogger.createTrinidadLogger(SkinFactory.class);
}
Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinMetadata.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinMetadata.java?rev=1547514&r1=1547513&r2=1547514&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinMetadata.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinMetadata.java Tue Dec 3 18:31:33 2013
@@ -24,31 +24,37 @@ import java.util.Map;
import javax.el.ValueExpression;
/**
- * SkinMetadata encapsulates information about a skin. SkinMetadata is instantiated using the nested Builder class.
+ * SkinMetadata encapsulates information about a skin. SkinMetadata is instantiated using the nested
+ * Builder class.
* <pre>
* {@code
- * SkinMetadata mySkinMetadata = new SkinMetadata.Builder().baseSkinId("alta-v1.desktop").id("mySkin.desktop")
- * .family("mySkin").renderKitId(SkinMetadata.RenderKit.DESKTOP)
- * .styleSheetName("my/css/location.css").version(new SkinVersion("v1")).build();
+ * SkinMetadata mySkinMetadata = new SkinMetadata.Builder()
+ * .baseSkinId("alta-v1.desktop")
+ * .id("mySkin.desktop")
+ * .family("mySkin")
+ * .renderKitId(SkinMetadata.RenderKit.DESKTOP)
+ * .styleSheetName("my/css/location.css")
+ * .version(new SkinVersion("v1"))
+ * .build();
* }
* </pre>
- * SkinMetadata is used mainly in two ways:
- * First, as a representation of a Skin.
- * Second, as a means to query Skins.
+ * SkinMetadata is used mainly in two ways: First, as a representation of a Skin. Second, as a means
+ * to query Skins.
* <p/>
- * SkinProvider#getSkinMetadata returns a collection of SkinMetadata.
- * The collection returned from this method can be built by the SkinProvider implementations beforehand, so that
- * it can publish the information about the skins that it supports to callers. Creation of SkinMetadata is a far
- * less costly process than creating a Skin. SkinMetadata created for this purpose should contain all relevant
- * information.
- * SkinProviders can also use SkinMetadata objects to create the actual Skin objects using SkinFactory#createSkin
- * API as well. In this case, SkinMetadata should be well formed with all relevant information so that SkinFactory
- * can create the skin.
+ * SkinProvider#getSkinMetadata returns a collection of SkinMetadata. The collection returned from
+ * this method can be built by the SkinProvider implementations beforehand, so that it can publish
+ * the information about the skins that it supports to callers. Creation of SkinMetadata is a far
+ * less costly process than creating a Skin. SkinMetadata created for this purpose should contain
+ * all relevant information. SkinProviders can also use SkinMetadata objects to create the actual
+ * Skin objects using SkinFactory#createSkin API as well. In this case, SkinMetadata should be well
+ * formed with all relevant information so that SkinFactory can create the skin.
* <p/>
- * SkinMetadata is used as query object to retrieve Skin from a SkinProvider#getSkin. Querying Skins are based on
- * id, family, version and renderkit. For querying Skins, user should set either id or family as mandatory.
- * Other information (even if present) are not relevant while searching for a skin.
+ * SkinMetadata is used as query object to retrieve Skin from a SkinProvider#getSkin. Querying Skins
+ * are based on id, family, version and renderkit. For querying Skins, user should set either id or
+ * family as mandatory. Other information (even if present) are not relevant while searching for a
+ * skin.
* <p/>
+ *
* @see SkinProvider
* @see Builder
* @see Skin
@@ -114,9 +120,8 @@ public final class SkinMetadata
}
/**
- * @return styleSheetName for the Skin. This points to the actual Skin file
- * and is loaded using NameResolver
- * {@link org.apache.myfaces.trinidad.share.io.NameResolver} implementation.
+ * @return styleSheetName for the Skin. This points to the actual Skin file and is loaded using
+ * NameResolver {@link org.apache.myfaces.trinidad.share.io.NameResolver} implementation.
*/
public String getStyleSheetName()
{
@@ -124,9 +129,9 @@ public final class SkinMetadata
}
/**
- * @return resource bundle name for the Skin which contains the translations.
- * If both translationSource and resourceBundleName is provided,
- * resourceBundleName takes the preceedence.
+ * @return resource bundle name for the Skin which contains the translations. If both
+ * translationSource and resourceBundleName is provided, resourceBundleName takes the
+ * precedence.
*/
public String getResourceBundleName()
{
@@ -134,9 +139,9 @@ public final class SkinMetadata
}
/**
- * @return translation source for the Skin, alternate way to specify the translations.
- * If both translationSource and resourceBundleName is provided,
- * resourceBundleName takes the preceedence.
+ * @return translation source for the Skin, alternate way to specify the translations. If both
+ * translationSource and resourceBundleName is provided, resourceBundleName takes the
+ * precedence.
*/
public ValueExpression getTranslationSource()
{
@@ -178,14 +183,24 @@ public final class SkinMetadata
if (_id != null ? !_id.equals(that._id) : that._id != null) return false;
if (_family != null ? !_family.equals(that._family) : that._family != null) return false;
- if (_renderKitId != null ? !_renderKitId.equals(that._renderKitId) : that._renderKitId != null) return false;
- if (_resourceBundleName != null ? !_resourceBundleName.equals(that._resourceBundleName) : that._resourceBundleName != null) return false;
- if (_styleSheetName != null ? !_styleSheetName.equals(that._styleSheetName) : that._styleSheetName != null) return false;
- if (_translationSource != null ? !_translationSource.equals(that._translationSource) : that._translationSource != null) return false;
+ if (_renderKitId != null ? !_renderKitId.equals(that._renderKitId) : that._renderKitId != null)
+ return false;
+ if (_resourceBundleName != null
+ ? !_resourceBundleName.equals(that._resourceBundleName)
+ : that._resourceBundleName != null) return false;
+ if (_styleSheetName != null
+ ? !_styleSheetName.equals(that._styleSheetName)
+ : that._styleSheetName != null) return false;
+ if (_translationSource != null
+ ? !_translationSource.equals(that._translationSource)
+ : that._translationSource != null) return false;
if (_version != null ? !_version.equals(that._version) : that._version != null) return false;
- if (_baseSkinId != null ? !_baseSkinId.equals(that._baseSkinId) : that._baseSkinId != null) return false;
- if (_features != null ? !_features.equals(that._features) : that._features != null) return false;
- if (_metadata != null ? !_metadata.equals(that._metadata) : that._metadata != null) return false;
+ if (_baseSkinId != null ? !_baseSkinId.equals(that._baseSkinId) : that._baseSkinId != null)
+ return false;
+ if (_features != null ? !_features.equals(that._features) : that._features != null)
+ return false;
+ if (_metadata != null ? !_metadata.equals(that._metadata) : that._metadata != null)
+ return false;
return true;
}
@@ -232,7 +247,7 @@ public final class SkinMetadata
toString.append(_features).append(", ");
if (_metadata != null && !_metadata.isEmpty())
toString.append(_metadata).append(", ");
- toString.append(']') ;
+ toString.append(']');
return toString.toString();
}
@@ -279,7 +294,9 @@ public final class SkinMetadata
}
/**
- * Returns the RenderKit instance or <code>null</code> if no id matches or id is passed as null.
+ * Returns the RenderKit instance or <code>null</code> if no id matches or id is passed as
+ * null.
+ *
* @param id of RenderKit to return
* @return RenderKit with the specified id
* @throws IllegalArgumentException if there is no enum with the specified name.
@@ -297,7 +314,8 @@ public final class SkinMetadata
return renderKit;
}
- private static final Map<String, RenderKitId> ID_TO_RENDER_KIT = new HashMap<String, RenderKitId>();
+ private static final Map<String, RenderKitId> ID_TO_RENDER_KIT =
+ new HashMap<String, RenderKitId>();
static
{
@@ -313,13 +331,17 @@ public final class SkinMetadata
}
/**
- * convenience builder class for SkinMetadata
- * SkinMetadata object can be created using this:
+ * convenience builder class for SkinMetadata SkinMetadata object can be created using this:
* <pre>
* {@code
- * SkinMetadata mySkinMetadata = new SkinMetadata.Builder().baseSkinId("alta-v1.desktop").id("mySkin.desktop")
- * .family("mySkin").renderKitId(SkinMetadata.RenderKit.DESKTOP)
- * .styleSheetName("my/css/location.css").version(new SkinVersion("v1")).build();
+ * SkinMetadata mySkinMetadata = new SkinMetadata.Builder()
+ * .baseSkinId("alta-v1.desktop")
+ * .id("mySkin.desktop")
+ * .family("mySkin")
+ * .renderKitId(SkinMetadata.RenderKit.DESKTOP)
+ * .styleSheetName("my/css/location.css")
+ * .version(new SkinVersion("v1"))
+ * .build();
* }
* </pre>
*/
@@ -333,9 +355,9 @@ public final class SkinMetadata
}
/**
- * Mandatory while creating a Skin using SkinFactory#createSkin
- * can be used while querying Skin using SkinProvider#getSkin
- * either this or family is typically set while querying Skin
+ * Mandatory while creating a Skin using SkinFactory#createSkin can be used while querying Skin
+ * using SkinProvider#getSkin either this or family is typically set while querying Skin
+ *
* @param id
* @return
*/
@@ -346,9 +368,9 @@ public final class SkinMetadata
}
/**
- * Mandatory while creating a Skin using SkinFactory#createSkin
- * can be used while querying Skin using SkinProvider#getSkin
- * either this or id is typically set while querying Skin
+ * Mandatory while creating a Skin using SkinFactory#createSkin can be used while querying Skin
+ * using SkinProvider#getSkin either this or id is typically set while querying Skin
+ *
* @param family
* @return
*/
@@ -359,8 +381,9 @@ public final class SkinMetadata
}
/**
- * Recommended to be set while creating a Skin using SkinFactory#createSkin
- * can be used while querying Skin using SkinProvider#getSkin
+ * Recommended to be set while creating a Skin using SkinFactory#createSkin can be used while
+ * querying Skin using SkinProvider#getSkin
+ *
* @param renderKitId
* @return
*/
@@ -371,8 +394,9 @@ public final class SkinMetadata
}
/**
- * Mandatory while creating a Skin using SkinFactory#createSkin
- * Not used while querying Skin using SkinProvider#getSkin
+ * Mandatory while creating a Skin using SkinFactory#createSkin Not used while querying Skin
+ * using SkinProvider#getSkin
+ *
* @param styleSheetName
* @return
*/
@@ -383,8 +407,9 @@ public final class SkinMetadata
}
/**
- * Recommended to be set while creating a Skin using SkinFactory#createSkin
- * Not used while querying Skin using SkinProvider#getSkin
+ * Recommended to be set while creating a Skin using SkinFactory#createSkin Not used while
+ * querying Skin using SkinProvider#getSkin
+ *
* @param resourceBundleName
* @return
*/
@@ -395,8 +420,9 @@ public final class SkinMetadata
}
/**
- * Recommended to be set while creating a Skin using SkinFactory#createSkin
- * Not used while querying Skin using SkinProvider#getSkin
+ * Recommended to be set while creating a Skin using SkinFactory#createSkin Not used while
+ * querying Skin using SkinProvider#getSkin
+ *
* @param translationSource
* @return
*/
@@ -407,8 +433,9 @@ public final class SkinMetadata
}
/**
- * Mandatory while creating a Skin using SkinFactory#createSkin
- * Not used while querying Skin using SkinProvider#getSkin
+ * Mandatory while creating a Skin using SkinFactory#createSkin Not used while querying Skin
+ * using SkinProvider#getSkin
+ *
* @param baseSkinId
* @return
*/
@@ -419,8 +446,9 @@ public final class SkinMetadata
}
/**
- * Recommended to be set while creating a Skin using SkinFactory#createSkin
- * can be used while querying Skin using SkinProvider#getSkin
+ * Recommended to be set while creating a Skin using SkinFactory#createSkin can be used while
+ * querying Skin using SkinProvider#getSkin
+ *
* @param version
* @return
*/
@@ -431,8 +459,9 @@ public final class SkinMetadata
}
/**
- * Recommended to be set (if applicable) while creating a Skin using SkinFactory#createSkin
- * Not used while querying Skin using SkinProvider#getSkin
+ * Recommended to be set (if applicable) while creating a Skin using SkinFactory#createSkin Not
+ * used while querying Skin using SkinProvider#getSkin
+ *
* @param features
* @return
*/
@@ -447,8 +476,9 @@ public final class SkinMetadata
}
/**
- * Recommended to be set (if applicable) while creating a Skin using SkinFactory#createSkin
- * Not used while querying Skin using SkinProvider#getSkin
+ * Recommended to be set (if applicable) while creating a Skin using SkinFactory#createSkin Not
+ * used while querying Skin using SkinProvider#getSkin
+ *
* @param metadata
* @return
*/
@@ -464,6 +494,7 @@ public final class SkinMetadata
/**
* call this method after you have set all the information that you wanted to
+ *
* @return
*/
public SkinMetadata build()
@@ -471,26 +502,26 @@ public final class SkinMetadata
return new SkinMetadata(this);
}
- private String _id;
- private String _family;
- private RenderKitId _renderKitId;
- private String _styleSheetName;
- private String _resourceBundleName;
+ private String _id;
+ private String _family;
+ private RenderKitId _renderKitId;
+ private String _styleSheetName;
+ private String _resourceBundleName;
private ValueExpression _translationSource;
- private String _baseSkinId;
- private SkinVersion _version;
- private SkinFeatures _features;
- private CustomMetadata _metadata;
+ private String _baseSkinId;
+ private SkinVersion _version;
+ private SkinFeatures _features;
+ private CustomMetadata _metadata;
}
- private String _id;
- private String _family;
- private RenderKitId _renderKitId;
- private String _baseSkinId;
- private String _styleSheetName;
- private String _resourceBundleName;
+ private String _id;
+ private String _family;
+ private RenderKitId _renderKitId;
+ private String _baseSkinId;
+ private String _styleSheetName;
+ private String _resourceBundleName;
private ValueExpression _translationSource;
- private SkinVersion _version;
- private SkinFeatures _features;
- private CustomMetadata _metadata;
+ private SkinVersion _version;
+ private SkinFeatures _features;
+ private CustomMetadata _metadata;
}
\ No newline at end of file
Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinProvider.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinProvider.java?rev=1547514&r1=1547513&r2=1547514&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinProvider.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinProvider.java Tue Dec 3 18:31:33 2013
@@ -22,43 +22,44 @@ import java.util.Collection;
import java.util.Collections;
import javax.faces.context.ExternalContext;
-import javax.faces.context.FacesContext;
/**
- * SkinProvider SPI is used to create, load, manage, and dispose skins. SkinProvider introduces lazy / on-demand
- * loading of skins as opposed to eager loading done by SkinFactory. SkinProvider also introduces the flexibility
- * to create and manage external skin repositories. Thus we have better manageability of Skins and clear separation of
- * external skins and trinidad provided / supported skins.
+ * SkinProvider SPI is used to create, load, manage, and dispose skins. SkinProvider introduces lazy
+ * / on-demand loading of skins as opposed to eager loading done by SkinFactory. SkinProvider also
+ * introduces the flexibility to create and manage external skin repositories. Thus we have better
+ * manageability of Skins and clear separation of external skins and trinidad provided / supported
+ * skins.
* <p/>
- * For each such skin repository externally maintained, the user should register their SkinProvider as an SPI.
- * Classes implementing this abstraction should be listed in the jar's /META-INF/services folder
- * inside of a text file named "org.apache.myfaces.trinidad.skin.SkinProvider".
- * These services will then be run by trinidad skin framework and be used for all SkinProvider#getSkin or
+ * For each such skin repository externally maintained, the user should register their SkinProvider
+ * as an SPI. Classes implementing this abstraction should be listed in the jar's /META-INF/services
+ * folder inside of a text file named "org.apache.myfaces.trinidad.skin.SkinProvider". These
+ * services will then be run by trinidad skin framework and be used for all SkinProvider#getSkin or
* SkinProvider#getSkinMetadata calls.
* <p/>
- * A SkinProvider implementation shall return a Skin object in response to SkinProvider#getSkin API call,
- * if a Skin matching the skinMetadata requested is available in the particular implementation.
- * The SkinProvider implementer can make use of SkinFactory#createSkin API to create a Skin object
- * instead of implementing the abstract Skin APIs. For this, information about the new skin and its base skin
- * has to be passed to SkinFactory#createSkin. See SkinFactory#createSkin documentation for details.
- * SkinProvider#getSkin API implementation can decide to return a cached skin or a new skin object for
- * subsequent request for the same Skin. It can also choose not to return a skin for a criteria which it served
- * before (if the implementation finds that the Skin is now deleted or discontinued).
- * Thus the SkinProvider implementation needs to manage the lifecycle of the Skin by creating, modifying
- * and destroying it.
- *
- * If a Skin supported by the implementation is modified (by the Skin file change or any other change
- * in Skin properties), the SkinProvider implementation needs to convey this to trinidad skinning framework
- * so that the Skin can be reloaded. This can be done using Skin.setDirty() method.
- * Calling this method sets the Skin as dirty and trinidad skinning framework will reload the skin and
- * regenerate the css for the skin.
+ * A SkinProvider implementation shall return a Skin object in response to SkinProvider#getSkin API
+ * call, if a Skin matching the skinMetadata requested is available in the particular
+ * implementation. The SkinProvider implementer can make use of SkinFactory#createSkin API to create
+ * a Skin object instead of implementing the abstract Skin APIs. For this, information about the new
+ * skin and its base skin has to be passed to SkinFactory#createSkin. See SkinFactory#createSkin
+ * documentation for details. SkinProvider#getSkin API implementation can decide to return a cached
+ * skin or a new skin object for subsequent request for the same Skin. It can also choose not to
+ * return a skin for a criteria which it served before (if the implementation finds that the Skin is
+ * now deleted or discontinued). Thus the SkinProvider implementation needs to manage the lifecycle
+ * of the Skin by creating, modifying and destroying it.
+ * <p/>
+ * If a Skin supported by the implementation is modified (by the Skin file change or any other
+ * change in Skin properties), the SkinProvider implementation needs to convey this to trinidad
+ * skinning framework so that the Skin can be reloaded. This can be done using Skin.setDirty()
+ * method. Calling this method sets the Skin as dirty and trinidad skinning framework will reload
+ * the skin and regenerate the css for the skin.
* <p/>
* SkinProvider implementation can optionally publish a list of supported skins by returning a
- * Collection of SkinMetadata objects from SkinProvider#getSkinMetadata API. The collection can be built by the
- * SkinProvider implementations beforehand. This also helps in publishing the information about the skins
- * that it intends to support. See SkinMetadata documentation for details.
- * SkinMetadata created for this method should be done without creating the actual Skin objects.
- * Thus the implementation will support lazy loading of Skins.
+ * Collection of SkinMetadata objects from SkinProvider#getSkinMetadata API. The collection can be
+ * built by the SkinProvider implementations beforehand. This also helps in publishing the
+ * information about the skins that it intends to support. See SkinMetadata documentation for
+ * details. SkinMetadata created for this method should be done without creating the actual Skin
+ * objects. Thus the implementation will support lazy loading of Skins.
+ *
* @see SkinFactory
* @see SkinMetadata
*/
@@ -66,53 +67,52 @@ public abstract class SkinProvider
{
/**
* Returns the Skin for the given skin metadata
+ * <p/>
+ * The returned skin is not cached by the framework and thus it is the responsibility of the
+ * provider to return the same instance of the skin should it desire so.
*
- * The returned skin is not cached by the framework and thus it
- * is the responsibility of the provider to return the same instance
- * of the skin should it desire so.
- * @param context
- * @param skinMetadata search criteria object containing the information of skin to be queried
- * id, family, renderKit, version are the information used from skin metadata
- * to perform search for the skin requested.
- * Other fields do not participate in the search.
+ * @param context valid ExternalContext
+ * @param skinMetadata search criteria object containing the information of skin to be queried id,
+ * family, renderKit, version are the information used from skin metadata to
+ * perform search for the skin requested. Other fields do not participate in
+ * the search.
* @return Skin matching the search criteria
*/
- public abstract Skin getSkin(FacesContext context, SkinMetadata skinMetadata);
+ public abstract Skin getSkin(ExternalContext context, SkinMetadata skinMetadata);
/**
* A provider can optionally return information about some or all of the skins it provides.
- * Typically this information is generated without loading the skins
- * as this is a quick way to find out about the Skins in the provider and also thereby
- * supporting lazy loading of Skins.
- * SkinMetadata for a Skin should contain only features and metadata that it
- * explicitly supports. It should not contain the features and metadata that
- * belongs only to its parent skins.
- * @param context
- * @return
+ * Typically this information is generated without loading the skins as this is a quick way to
+ * find out about the Skins in the provider and also thereby supporting lazy loading of Skins.
+ * SkinMetadata for a Skin should contain only features and metadata that it explicitly supports.
+ * It should not contain the features and metadata that belongs only to its parent skins.
+ *
+ * @param context valid ExternalContext
+ * @return Collection of SkinMetadata representing the Skins supported by this SkinProvider
*/
- public Collection<SkinMetadata> getSkinMetadata(FacesContext context)
+ public Collection<SkinMetadata> getSkinMetadata(ExternalContext context)
{
return Collections.emptyList();
}
/**
- * static factory method to get hold of the current SkinProvider instance.
- * This can be used to get a SkinProvider to query for a skin or metadata
- * @param ec
- * @return
+ * static factory method to get hold of the current SkinProvider instance. This can be used to get
+ * a SkinProvider to query for a skin or metadata
+ *
+ * @param externalContext valid ExternalContext
+ * @return SkinProvider instance
*/
- public static SkinProvider getCurrentInstance(ExternalContext ec)
+ public static SkinProvider getCurrentInstance(ExternalContext externalContext)
{
- if (ec == null)
+ if (externalContext == null)
throw new NullPointerException("ExternalContext is passed as null");
- SkinProvider sp = (SkinProvider) ec.getApplicationMap().get(SKIN_PROVIDER_INSTANCE_KEY);
-
- return sp;
+ return (SkinProvider) externalContext.getApplicationMap().get(SKIN_PROVIDER_INSTANCE_KEY);
}
/**
* Key for the SkinProvider stored in ExternalContext
*/
- public static final String SKIN_PROVIDER_INSTANCE_KEY = "org.apache.myfaces.trinidad.skin.SKIN_PROVIDER_INSTANCE";
+ public static final String SKIN_PROVIDER_INSTANCE_KEY =
+ "org.apache.myfaces.trinidad.skin.SKIN_PROVIDER_INSTANCE";
}
\ No newline at end of file
Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinVersion.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinVersion.java?rev=1547514&r1=1547513&r2=1547514&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinVersion.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinVersion.java Tue Dec 3 18:31:33 2013
@@ -32,8 +32,9 @@ final public class SkinVersion
{
/**
* Constructor that takes a version name.
- * @param name the name of the version, like "v1". If name is "default" then we set default as true and name to null.
- * If name is null, it is converted to "".
+ *
+ * @param name the name of the version, like "v1". If name is "default" then we set default as
+ * true and name to null. If name is null, it is converted to "".
*/
public SkinVersion(String name)
{
@@ -43,26 +44,28 @@ final public class SkinVersion
/**
* Constructor that takes a name and a defaultVersion.
- * @param name the name of the version, like "v1". If name is null, it is converted to "".
- * @param defaultVersion true if this skin is the default version for all skins with the
- * same skin family
+ *
+ * @param name the name of the version, like "v1". If name is null, it is converted to
+ * "".
+ * @param defaultVersion true if this skin is the default version for all skins with the same skin
+ * family
*/
public SkinVersion(
String name,
boolean defaultVersion)
{
- if(name == null)
+ if (name == null)
name = "";
-
+
_default = defaultVersion;
_name = name;
}
-
+
public boolean isDefault()
{
return _default;
}
-
+
public String getName()
{
return _name;
@@ -77,20 +80,20 @@ final public class SkinVersion
{
return false;
}
- SkinVersion test = (SkinVersion)o;
+ SkinVersion test = (SkinVersion) o;
return (test.isDefault() == this.isDefault()) &&
- (test.getName().equals(this.getName()));
+ (test.getName().equals(this.getName()));
}
-
+
@Override
final public int hashCode()
{
int hash = 17;
- hash = 37*hash + this.getName().hashCode();
- hash = 37*hash + ((this.isDefault()) ? 1231 : 1237 );
+ hash = 37 * hash + this.getName().hashCode();
+ hash = 37 * hash + ((this.isDefault()) ? 1231 : 1237);
- return hash;
- }
+ return hash;
+ }
@Override
public String toString()
@@ -102,10 +105,10 @@ final public class SkinVersion
}
private final boolean _default;
- private final String _name;
+ private final String _name;
// If the skin doesn't explicitly have a version, then it will return EMPTY_SKIN_VERSION
// when skin.getVersion is called. This makes our skin picking code cleaner.
- public static final SkinVersion EMPTY_SKIN_VERSION = new SkinVersion("");
- private static final String _DEFAULT = "default";
+ public static final SkinVersion EMPTY_SKIN_VERSION = new SkinVersion("");
+ private static final String _DEFAULT = "default";
}
\ No newline at end of file
Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderingContext.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderingContext.java?rev=1547514&r1=1547513&r2=1547514&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderingContext.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderingContext.java Tue Dec 3 18:31:33 2013
@@ -62,13 +62,12 @@ import org.apache.myfaces.trinidadintern
public class CoreRenderingContext extends RenderingContext
{
/**
- * String marker used to indicate the style class is empty and can
- * be ignored.
+ * String marker used to indicate the style class is empty and can be ignored.
*/
- static public final String EMPTY_STYLE_CLASS = "";
-
- static public final String SKIN_ID_PARAM = "org.apache.myfaces.trinidad.skin.id";
- static public final String SKIN_STYLESHEET_ID_PARAM = "org.apache.myfaces.trinidad.skin.stylesheet.id";
+ static public final String EMPTY_STYLE_CLASS = "";
+ static public final String SKIN_ID_PARAM = "org.apache.myfaces.trinidad.skin.id";
+ static public final String SKIN_STYLESHEET_ID_PARAM =
+ "org.apache.myfaces.trinidad.skin.stylesheet.id";
public CoreRenderingContext()
{
@@ -77,9 +76,7 @@ public class CoreRenderingContext extend
_facesContext = context;
_requestContext = afContext;
-
_properties = new HashMap<Object, Object>();
-
_outputMode = afContext.getOutputMode();
_agent = _initializeAgent(context,
afContext.getAgent(),
@@ -98,10 +95,10 @@ public class CoreRenderingContext extend
_accessibilityProfile = afContext.getAccessibilityProfile();
if (_accessibilityProfile == null)
_accessibilityProfile = AccessibilityProfile.getDefaultInstance();
-
+
_isDesignTime = _isDesignTime(_agent);
}
-
+
/**
* Cached access to FacesContext.
*/
@@ -110,7 +107,7 @@ public class CoreRenderingContext extend
{
return _facesContext;
}
-
+
/**
* Cached access to RequestContext
*/
@@ -130,14 +127,12 @@ public class CoreRenderingContext extend
}
/**
- * Called by link containers prior to rendering their children
- * in order to suppress the rendering of the default link
- * style class (.OraLink). Most link containers (like tabBar,
- * globalHeader) provide their own style classes - the default
- * OraLink style class ends up getting in the way.
- *
- * Important: Each call to setDefaultLinkStyleClassDisabled(true)
- * must be followed by a matching call to setDefaultLinkStyleClassDisabled(false).
+ * Called by link containers prior to rendering their children in order to suppress the rendering
+ * of the default link style class (.OraLink). Most link containers (like tabBar, globalHeader)
+ * provide their own style classes - the default OraLink style class ends up getting in the way.
+ * <p/>
+ * Important: Each call to setDefaultLinkStyleClassDisabled(true) must be followed by a matching
+ * call to setDefaultLinkStyleClassDisabled(false).
*/
public void setDefaultLinkStyleDisabled(boolean isDisabled)
{
@@ -158,9 +153,9 @@ public class CoreRenderingContext extend
/**
* Called by link containers to force a link to render as disabled
- *
- * Important: Each call to setLinkDisabled(true)
- * must be followed by a matching call to setLinkDisabled(false).
+ * <p/>
+ * Important: Each call to setLinkDisabled(true) must be followed by a matching call to
+ * setLinkDisabled(false).
*/
public void setLinkDisabled(boolean isDisabled)
{
@@ -168,7 +163,6 @@ public class CoreRenderingContext extend
}
-
// Implementation of RenderingContext
@Override
@@ -264,7 +258,7 @@ public class CoreRenderingContext extend
public Skin getSkin()
{
// this might switch the skin from portlet to desktop depending upon the request map parameters.
- if(!_checkedRequestMapSkin)
+ if (!_checkedRequestMapSkin)
{
Skin requestedSkin = getRequestMapSkin();
_checkedRequestMapSkin = true;
@@ -277,20 +271,21 @@ public class CoreRenderingContext extend
}
return _skin;
}
-
+
/**
* Return the Styles object that is attached to this RenderingContext. You can use the Styles
- * object to retrieve a map of the skin selectors and their css properties, already resolved
- * for this specific request. A skin has selectors for all agents, locales, etc., and there
- * might be blocks for ie-only or gecko-only or rtl, etc., and the resolved styles are styles
- * for the specific request (agent, locale, aliases are merged, etc).
+ * object to retrieve a map of the skin selectors and their css properties, already resolved for
+ * this specific request. A skin has selectors for all agents, locales, etc., and there might be
+ * blocks for ie-only or gecko-only or rtl, etc., and the resolved styles are styles for the
+ * specific request (agent, locale, aliases are merged, etc).
+ *
* @return
*/
@Override
public Styles getStyles()
{
return getStyleContext().getStyles();
- }
+ }
/**
* Get an interface that can be used for style lookups and generation.
@@ -300,7 +295,8 @@ public class CoreRenderingContext extend
if (_styleContext == null)
{
_styleContext = new StyleContextImpl(this,
- getTemporaryDirectory(getFacesContext(), isDesignTime()));
+ getTemporaryDirectory(getFacesContext(),
+ isDesignTime()));
}
return _styleContext;
@@ -444,8 +440,7 @@ public class CoreRenderingContext extend
}
/**
- * Return the default skin family, which is "casablanca" for the
- * core renderkit.
+ * Return the default skin family, which is "casablanca" for the core renderkit.
*/
protected String getDefaultSkinFamily()
{
@@ -487,25 +482,27 @@ public class CoreRenderingContext extend
if (isRequestedSkinSupported() || isDesignTime())
{
FacesContext context = getFacesContext();
+ ExternalContext externalContext = context.getExternalContext();
Object requestedSkinId = getRequestMapSkinId(context);
if (requestedSkinId != null)
{
- SkinProvider skinProvider = SkinProvider.getCurrentInstance(context.getExternalContext());
+ SkinProvider skinProvider = SkinProvider.getCurrentInstance(externalContext);
if (skinProvider == null)
{
_LOG.warning("NO_SKIN_PROVIDER");
return null;
}
- Skin requestedSkin = skinProvider.getSkin(context, new SkinMetadata.Builder().id(requestedSkinId.toString()).build());
+ SkinMetadata metadata = new SkinMetadata.Builder().id(requestedSkinId.toString()).build();
+ Skin requestedSkin = skinProvider.getSkin(externalContext, metadata);
if (requestedSkin != null)
{
// In portlet mode, we will switch to using the requestedSkin
// (the skin requested by the portlet's producer on the requestMap) if it exists.
// Otherwise we'll use the portal skin.
if (_LOG.isFine())
- _LOG.fine("The skin " +requestedSkinId+ " specified on the requestMap will be used.");
+ _LOG.fine("The skin " + requestedSkinId + " specified on the requestMap will be used.");
_requestMapSkin = requestedSkin;
// Check here if the stylesheet ids match. This method logs a warning if we cannot
@@ -515,8 +512,10 @@ public class CoreRenderingContext extend
// wrap in the RequestSkinWrapper, else we get property/icon
// not found errors
return new RequestSkinWrapper(requestedSkin);
- // todo Should I wrap it in something that says that we don't need to compress. In FileSystemStyleCache,
- // we could look to see what kind of skin it is??? Portal skins have a styleClassMap, but they
+ // todo Should I wrap it in something that says that we don't need to compress. In
+ // FileSystemStyleCache,
+ // we could look to see what kind of skin it is??? Portal skins have a styleClassMap,
+ // but they
// do not want compression.
}// end requestedSkin != null
@@ -524,7 +523,7 @@ public class CoreRenderingContext extend
{
if (_LOG.isWarning())
{
- _LOG.warning("REQUESTMAP_SKIN_NOT_USED_BECAUSE_NOT_EXIST",requestedSkinId);
+ _LOG.warning("REQUESTMAP_SKIN_NOT_USED_BECAUSE_NOT_EXIST", requestedSkinId);
}
}
}
@@ -536,10 +535,10 @@ public class CoreRenderingContext extend
/**
* Look on the requestMap for "org.apache.myfaces.trinidad.skin.id", and return
* the skin id.
- * This is for clients who want to send to the server
+ * This is for clients who want to send to the server
* the skin id via a request scope rather
- // than using the trinidad-config.xml's skin-family. The examples are the
- // design time and a portal container.
+ * than using the trinidad-config.xml's skin-family. The examples are the
+ * design time and a portal container.
* @param facesContext
* @return the skin id that is on the request map.
*/
@@ -555,10 +554,11 @@ public class CoreRenderingContext extend
/**
* This helps figure out if the portlet producer can share the portlet consumer's stylesheet.
+ *
* @param context
* @param requestedSkin The skin that the portlet consumer wants the producer to share.
- * @return true if the skin stylesheet id parameter on the request map is equal to
- the requestedSkin's stylesheetId.
+ * @return true if the skin stylesheet id parameter on the request map is equal to the
+ * requestedSkin's stylesheetId.
*/
public boolean isRequestMapStyleSheetIdAndSkinEqual(
FacesContext context,
@@ -582,10 +582,10 @@ public class CoreRenderingContext extend
// directory. Otherwise the following code would get an error when it
// tries to getStyleDir. This could possibly be done better.
getStyleContext().getStyleProvider();
-
+
String skinForPortalStyleSheetId = requestedSkin.getStyleSheetDocumentId(this);
if (skinForPortalStyleSheetId != null &&
- skinForPortalStyleSheetId.equals(requestMapStyleSheetId))
+ skinForPortalStyleSheetId.equals(requestMapStyleSheetId))
{
_styleSheetDocumentIdMatch = Boolean.TRUE;
}
@@ -619,11 +619,11 @@ public class CoreRenderingContext extend
}
/**
- * Set the local variable _skin to be the Skin from the
- * SkinFactory that best matches
- * the <skin-family> and current render-kit-id.
- * @param context FacesContext
- * @param afContext RequestContext
+ * Set the local variable _skin to be the Skin from the SkinFactory that best matches the
+ * <skin-family> and current render-kit-id.
+ *
+ * @param context FacesContext
+ * @param afContext RequestContext
*/
@SuppressWarnings("unchecked")
private void _initializeSkin(
@@ -634,7 +634,7 @@ public class CoreRenderingContext extend
String skinFamily = afContext.getSkinFamily();
if (skinFamily == null)
skinFamily = getDefaultSkinFamily();
-
+
// get skin-version
String skinVersionString = afContext.getSkinVersion();
@@ -651,17 +651,20 @@ public class CoreRenderingContext extend
renderKitId = TrinidadRenderingConstants.APACHE_TRINIDAD_PDA;
}
-
- SkinProvider skinProvider = SkinProvider.getCurrentInstance(context.getExternalContext());
+ ExternalContext externalContext = context.getExternalContext();
+ SkinProvider skinProvider = SkinProvider.getCurrentInstance(externalContext);
if (skinProvider == null)
{
_LOG.warning("NO_SKIN_PROVIDER");
return;
}
// skinFamily, renderKitId, skinVersionString
+ SkinMetadata.RenderKitId renderKitIdObj = SkinMetadata.RenderKitId.fromId(renderKitId);
SkinMetadata metadata = new SkinMetadata.Builder().family(skinFamily)
- .renderKitId(SkinMetadata.RenderKitId.fromId(renderKitId)).version(new SkinVersion(skinVersionString)).build();
- Skin skin = skinProvider.getSkin(context, metadata);
+ .renderKitId(renderKitIdObj)
+ .version(new SkinVersion(skinVersionString))
+ .build();
+ Skin skin = skinProvider.getSkin(externalContext, metadata);
if (skin == null)
{
@@ -678,7 +681,6 @@ public class CoreRenderingContext extend
}
-
private TrinidadAgent _initializeAgent(
FacesContext context,
Agent base,
@@ -705,13 +707,13 @@ public class CoreRenderingContext extend
}
else if (CoreRenderKit.OUTPUT_MODE_PORTLET.equals(outputMode))
{
- if(ExternalContextUtils.isRequestTypeSupported(RequestType.RESOURCE))
+ if (ExternalContextUtils.isRequestTypeSupported(RequestType.RESOURCE))
{
//Set things up for the Portlet 2.0 container.
return AgentUtil.mergeCapabilities(agent, _ENHANCED_PORTLET_CAPABILITIES);
}
else
- {
+ {
return AgentUtil.mergeCapabilities(agent, _PORTLET_CAPABILITIES);
}
}
@@ -722,7 +724,7 @@ public class CoreRenderingContext extend
else if (CoreRenderKit.OUTPUT_MODE_WEB_CRAWLER.equals(outputMode))
{
return AgentUtil.mergeCapabilities(agent, _WEB_CRAWLER_CAPABILITIES);
- }
+ }
else
{
return agent;
@@ -749,6 +751,7 @@ public class CoreRenderingContext extend
/**
* Get the directory for temporary files.
+ *
* @todo: move into the util package?
*/
@SuppressWarnings("unchecked")
@@ -757,7 +760,6 @@ public class CoreRenderingContext extend
String path = null;
ExternalContext external = fContext.getExternalContext();
-
Map<String, Object> applicationMap = external.getApplicationMap();
if (applicationMap != null)
@@ -768,21 +770,21 @@ public class CoreRenderingContext extend
// we're a portlet), we have to write to the global temporary
// directory. That's not good - does the portlet spec define
// anything?
- File tempdir = (File)
- applicationMap.get("javax.servlet.context.tempdir");
+ File tempdir = (File) applicationMap.get("javax.servlet.context.tempdir");
if (tempdir == null)
{
// In design-time land, just write to the temporary directory.
// But what
if (isDesignTime ||
- !(external.getContext() instanceof ServletContext))
+ !(external.getContext() instanceof ServletContext))
{
tempdir = new File(System.getProperty("java.io.tmpdir"));
path = tempdir.getAbsolutePath();
}
else
{
- _LOG.severe("The java.io.File handle (\"javax.servlet.context.tempdir\") is not set in the ServletContext");
+ _LOG.severe("The java.io.File handle (\"javax.servlet.context.tempdir\") is not set in " +
+ "the ServletContext");
}
}
else
@@ -827,25 +829,25 @@ public class CoreRenderingContext extend
}
- private Skin _skin;
- private boolean _checkedRequestMapSkin = false;
- private Skin _requestMapSkin;
- private Object _styleSheetDocumentIdMatch;
- private FormData _formData;
- private TrinidadAgent _agent;
- private Map<String, String> _styleMap;
- private Map<String, String> _skinResourceKeyMap;
- private String _outputMode;
+ private Skin _skin;
+ private Skin _requestMapSkin;
+ private Object _styleSheetDocumentIdMatch;
+ private FormData _formData;
+ private TrinidadAgent _agent;
+ private Map<String, String> _styleMap;
+ private Map<String, String> _skinResourceKeyMap;
+ private String _outputMode;
private RequestContext.Accessibility _accessibilityMode;
private AccessibilityProfile _accessibilityProfile;
- private boolean _animationEnabled;
- private PartialPageContext _pprContext;
- private LocaleContext _localeContext;
- private StyleContext _styleContext;
- private Map<Object, Object> _properties;
- private int _linkStyleDisabledCount = 0;
- private boolean _isLinkDisabled = false;
- private final FacesContext _facesContext;
+ private boolean _animationEnabled;
+ private PartialPageContext _pprContext;
+ private LocaleContext _localeContext;
+ private StyleContext _styleContext;
+ private Map<Object, Object> _properties;
+ private boolean _checkedRequestMapSkin = false;
+ private int _linkStyleDisabledCount = 0;
+ private boolean _isLinkDisabled = false;
+ private final FacesContext _facesContext;
private final RequestContext _requestContext;
private final boolean _isDesignTime;
@@ -863,7 +865,7 @@ public class CoreRenderingContext extend
static private final Map<Object, Object> _PORTLET_CAPABILITIES =
new HashMap<Object, Object>();
-
+
static private final Map<Object, Object> _ENHANCED_PORTLET_CAPABILITIES =
new HashMap<Object, Object>();
@@ -904,28 +906,28 @@ public class CoreRenderingContext extend
// for now, the Web Crawler capabilities are the same as the EMail capabilities
_WEB_CRAWLER_CAPABILITIES.put(TrinidadAgent.CAP_INTRINSIC_EVENTS,
- Boolean.FALSE);
+ Boolean.FALSE);
_WEB_CRAWLER_CAPABILITIES.put(TrinidadAgent.CAP_SCRIPTING_SPEED,
- TrinidadAgent.SCRIPTING_SPEED_CAP_NONE);
+ TrinidadAgent.SCRIPTING_SPEED_CAP_NONE);
_WEB_CRAWLER_CAPABILITIES.put(TrinidadAgent.CAP_EDITING,
- Boolean.FALSE);
+ Boolean.FALSE);
// =-= bts I wouldn't think that we would output any style sheets for a web crawler
_WEB_CRAWLER_CAPABILITIES.put(TrinidadAgent.CAP_STYLE_ATTRIBUTES,
TrinidadAgent.STYLES_INTERNAL);
_WEB_CRAWLER_CAPABILITIES.put(TrinidadAgent.CAP_PARTIAL_RENDERING,
Boolean.FALSE);
-
+
_PORTLET_CAPABILITIES.put(TrinidadAgent.CAP_PARTIAL_RENDERING,
- Boolean.FALSE);
+ Boolean.FALSE);
_PORTLET_CAPABILITIES.put(TrinidadAgent.CAP_MULTIPLE_WINDOWS,
- Boolean.FALSE);
-
- _ENHANCED_PORTLET_CAPABILITIES.put(TrinidadAgent.CAP_MULTIPLE_WINDOWS,
Boolean.FALSE);
-
+
+ _ENHANCED_PORTLET_CAPABILITIES.put(TrinidadAgent.CAP_MULTIPLE_WINDOWS,
+ Boolean.FALSE);
+
// turn off PPR
- _ATTACHMENT_CAPABILITIES.put(TrinidadAgent.CAP_PARTIAL_RENDERING, Boolean.FALSE);
+ _ATTACHMENT_CAPABILITIES.put(TrinidadAgent.CAP_PARTIAL_RENDERING, Boolean.FALSE);
}
static private final TrinidadLogger _LOG =
Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/resource/TranslationsResourceLoader.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/resource/TranslationsResourceLoader.java?rev=1547514&r1=1547513&r2=1547514&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/resource/TranslationsResourceLoader.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/resource/TranslationsResourceLoader.java Tue Dec 3 18:31:33 2013
@@ -32,6 +32,7 @@ import java.util.ResourceBundle;
import java.util.Set;
import javax.faces.application.Application;
+import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import org.apache.myfaces.trinidad.context.LocaleContext;
@@ -192,10 +193,12 @@ abstract public class TranslationsResour
protected Skin getSkin(FacesContext context)
{
Skin skin = null;
- SkinProvider skinProvider = SkinProvider.getCurrentInstance(context.getExternalContext());
- Object skinIdObj = context.getExternalContext().getRequestParameterMap().get("skinId");
+ ExternalContext externalContext = context.getExternalContext();
+ SkinProvider skinProvider = SkinProvider.getCurrentInstance(externalContext);
+ Object skinIdObj = externalContext.getRequestParameterMap().get("skinId");
+
if (skinIdObj != null)
- skin = skinProvider.getSkin(context, new SkinMetadata.Builder().id(skinIdObj.toString()).build());
+ skin = skinProvider.getSkin(externalContext, new SkinMetadata.Builder().id(skinIdObj.toString()).build());
return skin;
}
Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinFactoryImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinFactoryImpl.java?rev=1547514&r1=1547513&r2=1547514&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinFactoryImpl.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinFactoryImpl.java Tue Dec 3 18:31:33 2013
@@ -23,6 +23,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
+import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import org.apache.myfaces.trinidad.logging.TrinidadLogger;
@@ -32,13 +33,13 @@ import org.apache.myfaces.trinidad.skin.
import org.apache.myfaces.trinidad.skin.SkinMetadata;
import org.apache.myfaces.trinidad.skin.SkinProvider;
import org.apache.myfaces.trinidad.skin.SkinVersion;
-import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.XhtmlConstants;
import org.apache.myfaces.trinidadinternal.skin.provider.ExternalSkinProvider;
/**
- * Factory for creating Skin objects.
- * To create and manage skins external to skin framework, use SkinProvider.
+ * Factory for creating Skin objects. To create and manage skins external to skin framework, use
+ * SkinProvider.
+ *
* @see org.apache.myfaces.trinidad.skin.SkinProvider
*/
public class SkinFactoryImpl extends SkinFactory
@@ -56,15 +57,19 @@ public class SkinFactoryImpl extends Ski
* @inheritDoc
*/
@Override
- public Skin createSkin(FacesContext context, SkinMetadata baseSkinMetadata, SkinMetadata skinMetadata)
+ public Skin createSkin(
+ ExternalContext externalContext,
+ SkinMetadata baseSkinMetadata,
+ SkinMetadata skinMetadata)
{
- if (context == null || baseSkinMetadata == null || skinMetadata == null)
+ if (externalContext == null || baseSkinMetadata == null || skinMetadata == null)
throw new NullPointerException(_LOG.getMessage("NULL_FC_SKIN_BASE_SKIN_METADATA"));
- if (baseSkinMetadata.getId() != null && !baseSkinMetadata.getId().equals(skinMetadata.getBaseSkinId()))
+ if (baseSkinMetadata.getId() != null &&
+ !baseSkinMetadata.getId().equals(skinMetadata.getBaseSkinId()))
throw new IllegalArgumentException(_LOG.getMessage("INVALID_BASE_SKIN_ID"));
- Skin baseSkin = SkinProvider.getCurrentInstance(context.getExternalContext()).getSkin(context, baseSkinMetadata);
+ Skin baseSkin = SkinProvider.getCurrentInstance(externalContext).getSkin(externalContext, baseSkinMetadata);
if (baseSkin == null)
throw new IllegalArgumentException(_LOG.getMessage("INVALID_BASE_SKIN"));
@@ -76,17 +81,18 @@ public class SkinFactoryImpl extends Ski
* @inheritDoc
*/
@Override
- public Skin createSkin(FacesContext context, SkinMetadata skinMetadata)
+ public Skin createSkin(ExternalContext externalContext, SkinMetadata skinMetadata)
{
- if (context == null || skinMetadata == null)
+ if (externalContext == null || skinMetadata == null)
throw new NullPointerException(_LOG.getMessage("NULL_FC_SKIN_METADATA"));
if (skinMetadata.getBaseSkinId() == null)
throw new NullPointerException(_LOG.getMessage("NULL_BASE_SKIN_ID"));
- SkinMetadata baseSkinMetadata = new SkinMetadata.Builder().id(skinMetadata.getBaseSkinId()).build();
+ SkinMetadata baseSkinMetadata =
+ new SkinMetadata.Builder().id(skinMetadata.getBaseSkinId()).build();
- return createSkin(context, baseSkinMetadata, skinMetadata);
+ return createSkin(externalContext, baseSkinMetadata, skinMetadata);
}
/**
@@ -94,7 +100,7 @@ public class SkinFactoryImpl extends Ski
* the specified <code>skinId</code>, to be supported by this
* {@link SkinFactory}, replacing any previously registered
* {@link Skin} for this identifier.</p>
- *
+ *
* <p>A warning will be logged if a previously registered {@link Skin} was replaced, since it could produce
* inconsistent results if the application cached the previously registered Skin.</p>
*
@@ -104,9 +110,7 @@ public class SkinFactoryImpl extends Ski
*/
@Override
@Deprecated
- public void addSkin(
- String skinId,
- Skin skin)
+ public void addSkin(String skinId, Skin skin)
{
if (skinId == null || skin == null)
{
@@ -114,9 +118,11 @@ public class SkinFactoryImpl extends Ski
return;
}
+ SkinMetadata.RenderKitId renderKitId = SkinMetadata.RenderKitId.fromId(skin.getRenderKitId());
SkinMetadata.Builder builder = new SkinMetadata.Builder().id(skinId)
- .family(skin.getFamily()).version(skin.getVersion())
- .renderKitId(SkinMetadata.RenderKitId.fromId(skin.getRenderKitId()));
+ .family(skin.getFamily())
+ .version(skin.getVersion())
+ .renderKitId(renderKitId);
if (skin.getBaseSkin() != null)
builder.baseSkinId(skin.getBaseSkin().getId());
@@ -124,7 +130,7 @@ public class SkinFactoryImpl extends Ski
if (skin.getSkinFeatures() != null)
builder.features(new SkinFeatures(skin.getSkinFeatures()));
- Skin previousValue = _getExternalSkinProvider(null).addSkin(builder.build(), skin);
+ Skin previousValue = _getExternalSkinProvider().addSkin(builder.build(), skin);
if (previousValue != null)
_LOG.warning("DUPLICATE_ADD_SKIN_TO_SKIN_FACTORY", skinId);
@@ -133,6 +139,7 @@ public class SkinFactoryImpl extends Ski
/**
* given the skinId, pass back the Skin.
+ *
* @param context FacesContext. If not available, pass in null.
* @param skinId
* @return Skin that is in this SkinFactory and has the skinId.
@@ -140,10 +147,9 @@ public class SkinFactoryImpl extends Ski
*/
@Deprecated
@Override
- public Skin getSkin(
- FacesContext context,
- String skinId)
+ public Skin getSkin(FacesContext context, String skinId)
{
+ context = SkinUtils.getNonNullFacesContext(context);
if (skinId == null)
{
@@ -151,44 +157,43 @@ public class SkinFactoryImpl extends Ski
return null;
}
- return SkinUtils.getSkinProvider(context).getSkin(context, new SkinMetadata.Builder().id(skinId).build());
+ ExternalContext ec = context.getExternalContext();
+ SkinMetadata skinMetadata = new SkinMetadata.Builder().id(skinId).build();
+ return SkinProvider.getCurrentInstance(ec).getSkin(ec, skinMetadata);
}
/**
* given the skinFamily and renderKitId, pass back the Skin.
- * @param context FacesContext for the request currently being
- * processed, or <code>null</code> if none is available.
- * @param family skin family of the requested {@link Skin} instance
- * @param renderKitId RenderKit identifier of the requested:
- * XhtmlConstants.APACHE_TRINIDAD_DESKTOP, XhtmlConstants.APACHE_TRINIDAD_PDA, or
- * XhtmlConstants.APACHE_TRINIDAD_PORTLET
- * {@link Skin} instance
+ *
+ * @param context FacesContext for the request currently being processed, or <code>null</code>
+ * if none is available.
+ * @param family skin family of the requested {@link Skin} instance
+ * @param renderKitId RenderKit identifier of the requested: XhtmlConstants
+ * .APACHE_TRINIDAD_DESKTOP, XhtmlConstants.APACHE_TRINIDAD_PDA, or
+ * XhtmlConstants.APACHE_TRINIDAD_PORTLET {@link Skin} instance
* @deprecated use SkinProvider to query skins
*/
@Deprecated
@Override
- public Skin getSkin(
- FacesContext context,
- String family,
- String renderKitId)
+ public Skin getSkin(FacesContext context, String family, String renderKitId)
{
return getSkin(context, family, renderKitId, null);
}
/**
- * Given the skin family, renderKitId, and version, return the best matched skin.
- * The skin picking logic is:
- * If an exact family, renderKitId, and version (including null or "") is found, return that skin
- * Else if the user asks for version "default", return the skin with family and renderKitId with version marked
- * default. If version wasn't default and does not match any version for the skins with family and renderKitId,
- * then return the 'default' skin if there is one marked or return the last entry in the list
- * of matching family/renderKitId skins.
+ * Given the skin family, renderKitId, and version, return the best matched skin. The skin picking
+ * logic is: If an exact family, renderKitId, and version (including null or "") is found, return
+ * that skin Else if the user asks for version "default", return the skin with family and
+ * renderKitId with version marked default. If version wasn't default and does not match any
+ * version for the skins with family and renderKitId, then return the 'default' skin if there is
+ * one marked or return the last entry in the list of matching family/renderKitId skins.
+ *
* @param context
* @param family
* @param renderKitId
- * @param version The version of the skin you want to return. This can be
- * "default", or a version name (e.g., "v1"), or null or ""
- * (if you want the skin that does not have a version set).
+ * @param version The version of the skin you want to return. This can be "default", or a
+ * version name (e.g., "v1"), or null or "" (if you want the skin that does not
+ * have a version set).
* @return the best matched Skin given the family, renderKitId, and version.
* @deprecated use SkinProvider to query skins
*/
@@ -196,25 +201,34 @@ public class SkinFactoryImpl extends Ski
@Override
public Skin getSkin(
FacesContext context,
- String family,
- String renderKitId,
- String version)
+ String family,
+ String renderKitId,
+ String version)
{
+ context = SkinUtils.getNonNullFacesContext(context);
+
// By setting the version to the empty string if version is null, we can
// get the skin that has a matching family and renderkit and has no skin version.
// (A Skin with no version returns SkinVersion.EMPTY_SKIN_VERSION for skin.getVersion(),
// and getName will be "")
if (version == null)
- version = "";
-
+ version = "";
+
// given a skinFamily and a renderKitId, figure out the skinId.
// If we don't have an exact match, use the simple skin that matches the
// renderKitId (simple.desktop or simple.pda)
if (family == null)
- throw new NullPointerException("Null skin family");
+ throw new NullPointerException("Null skin family");
+
+ SkinVersion skinVersion = new SkinVersion(version);
+ SkinMetadata.RenderKitId renderKitIdObj = SkinMetadata.RenderKitId.fromId(renderKitId);
+ SkinMetadata metadata = new SkinMetadata.Builder().family(family)
+ .version(skinVersion)
+ .renderKitId(renderKitIdObj)
+ .build();
- Skin matchingSkin = SkinUtils.getSkinProvider(context).getSkin(context, new SkinMetadata.Builder().
- family(family).version(new SkinVersion(version)).renderKitId(SkinMetadata.RenderKitId.fromId(renderKitId)).build());
+ ExternalContext ec = context.getExternalContext();
+ Skin matchingSkin = SkinProvider.getCurrentInstance(ec).getSkin(ec, metadata);
return (matchingSkin == null) ? null : new RequestSkinWrapper(matchingSkin);
}
@@ -226,7 +240,10 @@ public class SkinFactoryImpl extends Ski
@Override
public Iterator<String> getSkinIds()
{
- Collection<SkinMetadata> metadatas = _getExternalSkinProvider(null).getSkinMetadata(null);
+ FacesContext context = SkinUtils.getNonNullFacesContext(null);
+ ExternalContext extContext = context.getExternalContext();
+ ExternalSkinProvider extSkinProvider = ExternalSkinProvider.getCurrentInstance(extContext);
+ Collection<SkinMetadata> metadatas = extSkinProvider.getSkinMetadata(extContext);
Set<String> ids = new HashSet<String>();
for (SkinMetadata metadata : metadatas)
@@ -242,18 +259,14 @@ public class SkinFactoryImpl extends Ski
@Override
public void reload()
{
- _getExternalSkinProvider(null).reload();
+ _getExternalSkinProvider().reload();
}
- private ExternalSkinProvider _getExternalSkinProvider(FacesContext context)
+ private ExternalSkinProvider _getExternalSkinProvider()
{
- if (context == null)
- context = FacesContext.getCurrentInstance();
-
- if (context == null)
- throw new NullPointerException("Cannot retrieve FacesContext. FacesContext is null.");
-
- return ExternalSkinProvider.getCurrentInstance(context.getExternalContext());
+ FacesContext context = SkinUtils.getNonNullFacesContext(null);
+ ExternalContext extContext = context.getExternalContext();
+ return ExternalSkinProvider.getCurrentInstance(extContext);
}
static private final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(SkinFactoryImpl.class);