You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Jay Sartoris (JIRA)" <de...@myfaces.apache.org> on 2015/06/16 06:40:01 UTC
[jira] [Created] (MYFACES-4000) Some MyFaces JSF 2.2 API signatures
do not match the Java EE 7 API
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)