Jay Sartoris created MYFACES-4000:
-------------------------------------
Summary: Some MyFaces JSF 2.2 API signatures do not match the Java
EE 7 API
Key: MYFACES-4000
URL: https://issues.apache.org/jira/browse/MYFACES-4000
Project: MyFaces Core
Issue Type: Bug
Components: JSR-344
Affects Versions: 2.2.8
Reporter: Jay Sartoris
There are several MyFaces 2.2 API classes in which their signatures do not
fully match what is specified in Java EE 7 JSF API. For reference, the
comparison is based from Oracle's Java EE 7 API at:
http://docs.oracle.com/javaee/7/api/index.html
The issues we found are noted below. They are broken down by package.
********** package javax.faces.application*****************
In class:
javax.faces.application.ApplicationWrapper
(http://docs.oracle.com/javaee/7/api/javax/faces/application/ApplicationWrapper.html)
The following methods have been deprecated and should have the @Deprecated
annotation however they are missing in the current MyFaces API:
- createComponent(ValueBinding componentBinding, FacesContext context, String
componentType)
- createMethodBinding(String ref, Class<?>[] params)
- evaluateExpressionGet(FacesContext context, String expression, Class<?
extends T> expectedType)
- getPropertyResolver()
- getVariableResolver()
- setPropertyResolver(PropertyResolver resolver)
- setVariableResolver(VariableResolver resolver)
---------------
In class:
javax.faces.application.StateManager
(http://docs.oracle.com/javaee/7/api/javax/faces/application/StateManager.html)
The following methods have been deprecated and should have the @Deprecated
annotation:
- saveView(FacesContext context)
- restoreView(FacesContext context, String viewId, String renderKitId)
-------------------
********** package javax.faces.bean *****************
The following classes have the @Documented annotation specified when they
should not:
javax.faces.bean.ApplicationScoped
javax.faces.bean.CustomScoped
javax.faces.bean.ManagedBean
javax.faces.bean.ManagedProperty
javax.faces.bean.ManagedProperty
javax.faces.bean.NoneScoped
javax.faces.bean.ReferencedBean
javax.faces.bean.RequestScoped
javax.faces.bean.SessionScoped
javax.faces.bean.ViewScoped
------------
In class:
javax.faces.bean.ManagedProperty
(http://docs.oracle.com/javaee/7/api/javax/faces/bean/ManagedProperty.html)
The @Type annotation specifies both FIELD and METHOD element types, however, it
should only be TYPE. For example:
@Target(ElementType.FIELD)
-------------------
In class:
javax.faces.bean.CustomScoped
(http://docs.oracle.com/javaee/7/api/javax/faces/bean/CustomScoped.html)
The value() method specifies a default value of "", however the API
documentation does not state that this method has a default value.
-------------------
********** package javax.faces.component *****************
In class:
javax.faces.component.UIComponent
(http://docs.oracle.com/javaee/7/api/javax/faces/component/UIComponent.html)
MyFaces currently lists the getPassThroughAttributes(boolean create) method as
abstract, however the API documentation does not state that. I propose that
this method return an empty Map. Something like this:
{code}
public Map<String,Object> getPassThroughAttributes(boolean create)
{
return Collections.emptyMap();
}
{code}
-------------
In class:
javax.faces.component.UIViewAction
(http://docs.oracle.com/javaee/7/api/javax/faces/component/UIViewAction.html)
The following two methods are not listed in the API documentation and should be
removed:
- setValue(java.lang.Object)
- getValue()
The following four methods are deprecated and need to have the @Deprecated
annotation added:
- getAction()
- getActionListener()
- setAction(javax.faces.el.MethodBinding)
- setActionListener(javax.faces.el.MethodBinding)
------------------------
********** package javax.faces.el *****************
The following classes are listed as deprecated, however the API documentation
does not state that they are. The @Deprecated annotation
should be removed from the class level for the following classes:
javax.faces.el.EvaluationException
javax.faces.el.MethodBinding
javax.faces.el.MethodNotFoundException
javax.faces.el.PropertyNotFoundException
javax.faces.el.PropertyResolver
javax.faces.el.ReferenceSyntaxException
javax.faces.el.ValueBinding
javax.faces.el.VariableResolver
********** package javax.faces.validator *****************
In class:
javax.faces.validator.FacesValidator (
http://docs.oracle.com/javaee/7/api/javax/faces/validator/FacesValidator.html )
the value() method does not have a default value, however the API documentation
states that it should have a default value of an empty String ("").
********** package javax.faces.facelets *****************
The class javax.faces.view.facelets.ResourceResolver should be deprecated (add
@Deprecated at the class level) per the API documentation at
http://docs.oracle.com/javaee/7/api/javax/faces/view/facelets/ResourceResolver.html
********** package javax.faces.webapp *****************
The following classes are not entirely deprecated and their @Deprecated
annotation should be removed from the MyFaces API:
javax.faces.webapp.AttributeTag
javax.faces.webapp.ConverterTag
javax.faces.webapp.UIComponentBodyTag
javax.faces.webapp.UIComponentTag
javax.faces.webapp.ValidatorTag
In the class:
javax.faces.webapp.UIComponentTagBase
(http://docs.oracle.com/javaee/7/api/javax/faces/webapp/UIComponentTagBase.html)
The log field should be marked final per the API documentation
(http://docs.oracle.com/javaee/7/api/javax/faces/webapp/UIComponentTagBase.html#log),
however it is not in the MyFaces API.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)