Some additional issues that turned up while reviewing the API doc:
1. FaceletCache and FaceletCacheFactory are missing documentation.
The original (Mojarra implementation-specific) version of this
functionality does include documentation, but that doesn't seem to have
carried over into the public API.
2. The doc in FaceletCache.MemberFactory is incorrect
The class doc says: "Factory interface for creating FaceletHandler
instances." However, we're actually creating Facelet instances, not
FaceletHandler instances.
3. Wider access than necessary for some methods in FaceletCache
The original (Mojarra-specific) version of this functionality exposes
the following methods:
public final void init(InstanceFactory<V> faceletFactory,
InstanceFactory<V> metafaceletFactory)
protected final InstanceFactory<V> getFaceletInstanceFactory()
protected final InstanceFactory<V> getMetadataFaceletInstanceFactory()
The equivalent methods in the new public API are:
public void setMemberFactories(MemberFactory<V> faceletFactory,
MemberFactory<V> viewMetadataFaceletFactory)
public MemberFactory<V> getMemberFactory()
public MemberFactory<V> getMetadataMemberFactory()
The idea behind the init+getters approach was that the base FaceletCache
class handles initialization and storage of the factories on behalf of
subclasses. Since these factories are only used by subclasses, the
getters only need to be protected. Probably safe to leave these final
as there is no need for subclasses to provide alternate implementations
of these methods.
#3 isn't a big deal, but would be nice to correct (particularly the
public/protected issue). #1 and #2 seem more important to address.
Andy