ebreijo closed pull request #40: MYFACES-4251 Updated some JSF API classes to 
match the javadocs
URL: https://github.com/apache/myfaces/pull/40
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/api/src/main/java/javax/faces/application/Application.java 
b/api/src/main/java/javax/faces/application/Application.java
index e1ee8cd61..545adbc52 100755
--- a/api/src/main/java/javax/faces/application/Application.java
+++ b/api/src/main/java/javax/faces/application/Application.java
@@ -760,7 +760,7 @@ public ProjectStage getProjectStage()
      * @throws NullPointerException
      *             if ctx == null || name == null
      */
-    public ResourceBundle getResourceBundle(FacesContext ctx, String name) 
throws FacesException, NullPointerException
+    public ResourceBundle getResourceBundle(FacesContext ctx, String name)
     {
         Application application = getMyfacesApplicationInstance(ctx);
         if (application != null)
diff --git a/api/src/main/java/javax/faces/application/ApplicationWrapper.java 
b/api/src/main/java/javax/faces/application/ApplicationWrapper.java
index 015696d3f..bbd8d52c8 100644
--- a/api/src/main/java/javax/faces/application/ApplicationWrapper.java
+++ b/api/src/main/java/javax/faces/application/ApplicationWrapper.java
@@ -259,7 +259,7 @@ public ProjectStage getProjectStage()
     }
 
     @Override
-    public ResourceBundle getResourceBundle(FacesContext ctx, String name) 
throws FacesException, NullPointerException
+    public ResourceBundle getResourceBundle(FacesContext ctx, String name)
     {
         return getWrapped().getResourceBundle(ctx, name);
     }
diff --git 
a/api/src/main/java/javax/faces/application/ConfigurableNavigationHandlerWrapper.java
 
b/api/src/main/java/javax/faces/application/ConfigurableNavigationHandlerWrapper.java
index da5fe88cc..ca3e4802a 100644
--- 
a/api/src/main/java/javax/faces/application/ConfigurableNavigationHandlerWrapper.java
+++ 
b/api/src/main/java/javax/faces/application/ConfigurableNavigationHandlerWrapper.java
@@ -73,12 +73,6 @@ public void inspectFlow(FacesContext context, Flow flow)
         getWrapped().inspectFlow(context, flow);
     }
 
-    @Override
-    public void handleNavigation(FacesContext context, String fromAction, 
String outcome, String toFlowDocumentId)
-    {
-        getWrapped().handleNavigation(context, fromAction, outcome, 
toFlowDocumentId);
-    }
-
     @Override
     public NavigationCase getNavigationCase(FacesContext context, String 
fromAction, String outcome, 
             String toFlowDocumentId)
diff --git a/api/src/main/java/javax/faces/application/NavigationHandler.java 
b/api/src/main/java/javax/faces/application/NavigationHandler.java
index b06668c83..f7a774a4d 100755
--- a/api/src/main/java/javax/faces/application/NavigationHandler.java
+++ b/api/src/main/java/javax/faces/application/NavigationHandler.java
@@ -41,5 +41,6 @@ public void handleNavigation(FacesContext context,
                                  String outcome,
                                  String toFlowDocumentId)
     {
+        this.handleNavigation(context, fromAction, outcome);
     }
 }
diff --git a/api/src/main/java/javax/faces/component/UIImportConstants.java 
b/api/src/main/java/javax/faces/component/UIImportConstants.java
index e4886bb0e..0305cfff9 100644
--- a/api/src/main/java/javax/faces/component/UIImportConstants.java
+++ b/api/src/main/java/javax/faces/component/UIImportConstants.java
@@ -18,6 +18,8 @@
  */
 package javax.faces.component;
 
+import javax.el.ValueExpression;
+
 import 
org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFComponent;
 import 
org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
 
@@ -67,6 +69,17 @@ public void setVar(String var)
         getStateHelper().put(PropertyKeys.var, var ); 
     }
 
+    @Override
+    public void setValueExpression(String name, ValueExpression binding) 
+    {
+        if (PropertyKeys.var.toString().equals(name)) 
+        {
+            throw new IllegalArgumentException(name);
+        }
+
+        super.setValueExpression(name, binding);
+    }
+
     enum PropertyKeys
     {
          type
diff --git a/api/src/main/java/javax/faces/component/UIViewAction.java 
b/api/src/main/java/javax/faces/component/UIViewAction.java
index 241cf492a..3cc31237b 100644
--- a/api/src/main/java/javax/faces/component/UIViewAction.java
+++ b/api/src/main/java/javax/faces/component/UIViewAction.java
@@ -58,6 +58,18 @@ public UIViewAction()
         setRendererType(null);
     }
 
+    @Override
+    public boolean isRendered() 
+    {
+        return (Boolean) getStateHelper().eval(PropertyKeys.renderedAttr, 
true);
+    }
+
+    @Override
+    public void setRendered(final boolean condition) 
+    {
+        getStateHelper().put(PropertyKeys.renderedAttr, condition);
+    }
+
     @Override
     public void broadcast(FacesEvent event) throws AbortProcessingException
     {
@@ -263,6 +275,24 @@ public static boolean isProcessingBroadcast(FacesContext 
context)
         , actionListener
         , phase
         , onPostback
+        , renderedAttr("if");
+
+        private String name;
+
+        PropertyKeys() 
+        {
+        }
+
+        PropertyKeys(final String name) 
+        {
+            this.name = name;
+        }
+
+        @Override
+        public String toString() 
+        {
+            return name != null ? name : super.toString();
+        }
     }
 
     @Override
diff --git a/api/src/main/java/javax/faces/component/UIViewParameter.java 
b/api/src/main/java/javax/faces/component/UIViewParameter.java
index 34ef885a1..5b9a2b0e2 100644
--- a/api/src/main/java/javax/faces/component/UIViewParameter.java
+++ b/api/src/main/java/javax/faces/component/UIViewParameter.java
@@ -240,7 +240,7 @@ public void updateModel(FacesContext context)
     }
 
     @Override
-    protected Object getConvertedValue(FacesContext context, Object 
submittedValue)
+    protected Object getConvertedValue(FacesContext context, Object 
submittedValue) throws ConverterException
     {
         return getDelegateRenderer(context).getConvertedValue(context, this, 
submittedValue);
     }
diff --git a/api/src/main/java/javax/faces/component/_UISelectItem.java 
b/api/src/main/java/javax/faces/component/_UISelectItem.java
index 4f02be820..8faebffb4 100644
--- a/api/src/main/java/javax/faces/component/_UISelectItem.java
+++ b/api/src/main/java/javax/faces/component/_UISelectItem.java
@@ -20,6 +20,7 @@
 
 import javax.faces.context.FacesContext;
 import 
org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFComponent;
+import 
org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFExclude;
 import 
org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
 
 /**
@@ -47,6 +48,7 @@
      * spec group.
      */
     @Override
+    @JSFExclude
     @JSFProperty(tagExcluded = true)
     public void setRendered(boolean state)
     {
diff --git a/api/src/main/java/javax/faces/component/_UISelectItems.java 
b/api/src/main/java/javax/faces/component/_UISelectItems.java
index b0e006d80..0b03ce9cb 100644
--- a/api/src/main/java/javax/faces/component/_UISelectItems.java
+++ b/api/src/main/java/javax/faces/component/_UISelectItems.java
@@ -56,6 +56,7 @@
    * does not support setting it. Yes, this is broken OO design: direct
    * all complaints to the JSF spec group.
    */
+  @JSFExclude
   @JSFProperty(tagExcluded=true)
   @Override
   public void setRendered(boolean state)
diff --git a/api/src/main/java/javax/faces/component/_UIWebsocket.java 
b/api/src/main/java/javax/faces/component/_UIWebsocket.java
index 9eb52bcba..c41260acd 100644
--- a/api/src/main/java/javax/faces/component/_UIWebsocket.java
+++ b/api/src/main/java/javax/faces/component/_UIWebsocket.java
@@ -20,6 +20,7 @@
 package javax.faces.component;
 
 import java.io.Serializable;
+import javax.el.ValueExpression;
 import 
org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFComponent;
 import 
org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
 
@@ -59,4 +60,30 @@
     @JSFProperty(defaultValue = "true")
     public abstract boolean isConnected();
 
+    @Override
+    public void setValueExpression(String name, ValueExpression binding) 
+    {
+        if (PropertyKeys.channel.toString().equals(name) || 
PropertyKeys.scope.toString().equals(name)) 
+        {
+            throw new IllegalArgumentException(name);
+        }
+
+        if (PropertyKeys.user.toString().equals(name)) 
+        {
+            Object user = binding.getValue(getFacesContext().getELContext());
+
+            if (user != null && !(user instanceof Serializable)) 
+            {
+                throw new IllegalArgumentException("f:websocket 'user' 
attribute does not represent a valid user identifier because it is not 
Serializable.");
+            }
+        }
+
+        super.setValueExpression(name, binding);
+    }
+
+    enum PropertyKeys 
+    {
+        channel, scope, user, onopen, onmessage, onclose, connected;
+    }
+
 }
diff --git a/api/src/main/java/javax/faces/component/behavior/BehaviorBase.java 
b/api/src/main/java/javax/faces/component/behavior/BehaviorBase.java
index e7de30ec4..9aba6f470 100644
--- a/api/src/main/java/javax/faces/component/behavior/BehaviorBase.java
+++ b/api/src/main/java/javax/faces/component/behavior/BehaviorBase.java
@@ -25,6 +25,7 @@
 import javax.faces.component.PartialStateHolder;
 import javax.faces.component.StateHolder;
 import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
 import javax.faces.event.BehaviorEvent;
 import javax.faces.event.BehaviorListener;
 
@@ -47,7 +48,7 @@ public BehaviorBase()
      * {@inheritDoc}
      */
     @Override
-    public void broadcast(BehaviorEvent event)
+    public void broadcast(BehaviorEvent event) throws AbortProcessingException
     {
         if (event == null)
         {
diff --git a/api/src/main/java/javax/faces/context/PartialResponseWriter.java 
b/api/src/main/java/javax/faces/context/PartialResponseWriter.java
index a63159317..bd6af47b8 100644
--- a/api/src/main/java/javax/faces/context/PartialResponseWriter.java
+++ b/api/src/main/java/javax/faces/context/PartialResponseWriter.java
@@ -30,7 +30,6 @@
     public static final String RENDER_ALL_MARKER = "javax.faces.ViewRoot";
     public static final String VIEW_STATE_MARKER = "javax.faces.ViewState";
 
-    private ResponseWriter _wrapped;
     private boolean hasChanges;
     private String insertType;
 
@@ -40,16 +39,16 @@
      */
     public PartialResponseWriter(ResponseWriter writer)
     {
-        _wrapped = writer;
+        super(writer);
     }
 
     public void delete(String targetId) throws IOException
     {
         startChanges();
         
-        _wrapped.startElement ("delete", null);
-        _wrapped.writeAttribute ("id", targetId, null);
-        _wrapped.endElement ("delete");
+        startElement ("delete", null);
+        writeAttribute ("id", targetId, null);
+        endElement ("delete");
     }
 
     /**
@@ -64,34 +63,34 @@ public void endDocument() throws IOException
             //error close the last op if any
             endInsert();
             
-            _wrapped.endElement ("changes");
+            endElement ("changes");
             
             hasChanges = false;
         }
         
-        _wrapped.endElement ("partial-response");
+        endElement ("partial-response");
     }
 
     public void endError() throws IOException
     {
         // Close open <error-message> element.
         
-        _wrapped.endCDATA();
-        _wrapped.endElement ("error-message");
-        _wrapped.endElement ("error");
+        endCDATA();
+        endElement ("error-message");
+        endElement ("error");
     }
 
     public void endEval() throws IOException
     {
         // Close open <eval> element.
         
-        _wrapped.endCDATA();
-        _wrapped.endElement ("eval");
+        endCDATA();
+        endElement ("eval");
     }
 
     public void endExtension() throws IOException
     {
-        _wrapped.endElement ("extension");
+        endElement ("extension");
     }
 
     public void endInsert() throws IOException
@@ -105,33 +104,24 @@ public void endInsert() throws IOException
         
         // Close open <insert> element.
         
-        _wrapped.endCDATA();
-        _wrapped.endElement (insertType);
-        _wrapped.endElement ("insert");
+        endCDATA();
+        endElement (insertType);
+        endElement ("insert");
         
         insertType = null;
     }
 
     public void endUpdate() throws IOException
     {
-        _wrapped.endCDATA();
-        _wrapped.endElement ("update");
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public ResponseWriter getWrapped()
-    {
-        return _wrapped;
+        endCDATA();
+        endElement ("update");
     }
 
     public void redirect(String url) throws IOException
     {
-        _wrapped.startElement ("redirect", null);
-        _wrapped.writeAttribute ("url", url, null);
-        _wrapped.endElement ("redirect");
+        startElement ("redirect", null);
+        writeAttribute ("url", url, null);
+        endElement ("redirect");
     }
 
     /**
@@ -144,7 +134,7 @@ public void startDocument() throws IOException
         // use writePreamble(...)
         //_wrapped.write ("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
         
-        _wrapped.startElement ("partial-response", null);
+        startElement ("partial-response", null);
         
         // If by some reason the response has been reset, and the same
         // PartialResponseWriter is used, it is necessary to ensure any 
@@ -156,35 +146,23 @@ public void startDocument() throws IOException
 
     public void startError(String errorName) throws IOException
     {
-        _wrapped.startElement ("error", null);
+        startElement ("error", null);
         
-        _wrapped.startElement ("error-name", null);
-        _wrapped.write (errorName);
-        _wrapped.endElement ("error-name");
+        startElement ("error-name", null);
+        write (errorName);
+        endElement ("error-name");
         
-        _wrapped.startElement ("error-message", null);
+        startElement ("error-message", null);
         startCDATA();
         
         // Leave open; caller will write message.
     }
 
-    @Override
-    public void startCDATA() throws IOException
-    {
-        _wrapped.startCDATA();
-    }
-
-    @Override
-    public void endCDATA() throws IOException
-    {
-        _wrapped.endCDATA();    
-    }
-
     public void startEval() throws IOException
     {
         startChanges();
         
-        _wrapped.startElement ("eval", null);
+        startElement ("eval", null);
         startCDATA();
         
         // Leave open; caller will write statements.
@@ -196,7 +174,7 @@ public void startExtension(Map<String, String> attributes) 
throws IOException
         
         startChanges();
         
-        _wrapped.startElement ("extension", null);
+        startElement ("extension", null);
         
         // Write out extension attributes.
         // TODO: schema mentions "id" attribute; not used?
@@ -207,7 +185,7 @@ public void startExtension(Map<String, String> attributes) 
throws IOException
         {
             String attrName = attrNames.next();
             
-            _wrapped.writeAttribute(attrName, attributes.get(attrName), null);
+            writeAttribute(attrName, attributes.get(attrName), null);
         }
         
         // Leave open; caller will write extension elements.
@@ -227,8 +205,8 @@ public void startUpdate(String targetId) throws IOException
     {
         startChanges();
         
-        _wrapped.startElement ("update", null);
-        _wrapped.writeAttribute ("id", targetId, null);
+        startElement ("update", null);
+        writeAttribute ("id", targetId, null);
         startCDATA();
         
         // Leave open; caller will write content.
@@ -240,8 +218,8 @@ public void updateAttributes(String targetId, Map<String, 
String> attributes) th
         
         startChanges();
         
-        _wrapped.startElement ("attributes", null);
-        _wrapped.writeAttribute ("id", targetId, null);
+        startElement ("attributes", null);
+        writeAttribute ("id", targetId, null);
         
         attrNames = attributes.keySet().iterator();
         
@@ -249,20 +227,20 @@ public void updateAttributes(String targetId, Map<String, 
String> attributes) th
         {
             String attrName = attrNames.next();
             
-            _wrapped.startElement ("attribute", null);
-            _wrapped.writeAttribute ("name", attrName, null);
-            _wrapped.writeAttribute ("value", attributes.get (attrName), null);
-            _wrapped.endElement ("attribute");
+            startElement ("attribute", null);
+            writeAttribute ("name", attrName, null);
+            writeAttribute ("value", attributes.get (attrName), null);
+            endElement ("attribute");
         }
         
-        _wrapped.endElement ("attributes");
+        endElement ("attributes");
     }
     
     private void startChanges () throws IOException
     {
         if (!hasChanges)
         {
-            _wrapped.startElement ("changes", null);
+            startElement ("changes", null);
             
             hasChanges = true;
         }
@@ -281,9 +259,9 @@ private void startInsertCommon (String type, String 
targetId) throws IOException
         
         startChanges();
         
-        _wrapped.startElement ("insert", null);
-        _wrapped.startElement (insertType, null);
-        _wrapped.writeAttribute ("id", targetId, null);
+        startElement ("insert", null);
+        startElement (insertType, null);
+        writeAttribute ("id", targetId, null);
         startCDATA();
         
         // Leave open; caller will write content.
diff --git a/api/src/main/java/javax/faces/convert/EnumConverter.java 
b/api/src/main/java/javax/faces/convert/EnumConverter.java
index febe1cf10..941a14202 100644
--- a/api/src/main/java/javax/faces/convert/EnumConverter.java
+++ b/api/src/main/java/javax/faces/convert/EnumConverter.java
@@ -67,7 +67,6 @@ public EnumConverter(Class targetClass)
 
     @Override
     public String getAsString(FacesContext facesContext, UIComponent 
uiComponent, Object value)
-        throws ConverterException
     {
         if (facesContext == null)
         {
@@ -106,7 +105,6 @@ public String getAsString(FacesContext facesContext, 
UIComponent uiComponent, Ob
 
     @Override
     public Object getAsObject(FacesContext facesContext, UIComponent 
uiComponent, String value)
-        throws ConverterException
     {
         if (facesContext == null)
         {
diff --git 
a/api/src/main/java/javax/faces/event/ComponentSystemEventListener.java 
b/api/src/main/java/javax/faces/event/ComponentSystemEventListener.java
index 7cbe6732e..858f98bc0 100644
--- a/api/src/main/java/javax/faces/event/ComponentSystemEventListener.java
+++ b/api/src/main/java/javax/faces/event/ComponentSystemEventListener.java
@@ -24,5 +24,5 @@
  */
 public interface ComponentSystemEventListener extends FacesListener
 {
-    public void processEvent(ComponentSystemEvent event);
+    public void processEvent(ComponentSystemEvent event) throws 
AbortProcessingException;
 }
diff --git a/api/src/main/java/javax/faces/event/SystemEventListener.java 
b/api/src/main/java/javax/faces/event/SystemEventListener.java
index 22f1c00b6..d5d650c52 100644
--- a/api/src/main/java/javax/faces/event/SystemEventListener.java
+++ b/api/src/main/java/javax/faces/event/SystemEventListener.java
@@ -25,5 +25,5 @@
 {
     public boolean isListenerForSource(Object source);
 
-    public void processEvent(SystemEvent event);
+    public void processEvent(SystemEvent event) throws 
AbortProcessingException;
 }
diff --git a/api/src/main/java/javax/faces/validator/BeanValidator.java 
b/api/src/main/java/javax/faces/validator/BeanValidator.java
index e01c5659f..6d0904ca0 100644
--- a/api/src/main/java/javax/faces/validator/BeanValidator.java
+++ b/api/src/main/java/javax/faces/validator/BeanValidator.java
@@ -141,7 +141,6 @@
      */
     @Override
     public void validate(final FacesContext context, final UIComponent 
component, final Object value)
-            throws ValidatorException
     {
         if (context == null)
         {
diff --git a/api/src/main/java/javax/faces/validator/RequiredValidator.java 
b/api/src/main/java/javax/faces/validator/RequiredValidator.java
index 7109628d5..b0e974c73 100644
--- a/api/src/main/java/javax/faces/validator/RequiredValidator.java
+++ b/api/src/main/java/javax/faces/validator/RequiredValidator.java
@@ -52,7 +52,7 @@ public RequiredValidator()
     // VALIDATE
     @Override
     public void validate(FacesContext facesContext, UIComponent uiComponent,
-            Object value) throws ValidatorException
+            Object value)
     {
         if (facesContext == null)
         {
diff --git 
a/api/src/main/java/javax/faces/view/facelets/DelegatingMetaTagHandler.java 
b/api/src/main/java/javax/faces/view/facelets/DelegatingMetaTagHandler.java
index 75e76ac95..65e7cc170 100644
--- a/api/src/main/java/javax/faces/view/facelets/DelegatingMetaTagHandler.java
+++ b/api/src/main/java/javax/faces/view/facelets/DelegatingMetaTagHandler.java
@@ -19,7 +19,8 @@
 package javax.faces.view.facelets;
 
 import java.io.IOException;
-
+import javax.el.ELException;
+import javax.faces.FacesException;
 import javax.faces.FactoryFinder;
 import javax.faces.component.UIComponent;
 
@@ -51,7 +52,7 @@ public void apply(FaceletContext ctx, UIComponent parent) 
throws IOException
         getTagHandlerDelegate().apply(ctx, parent);
     }
 
-    public void applyNextHandler(FaceletContext ctx, UIComponent c) throws 
IOException
+    public void applyNextHandler(FaceletContext ctx, UIComponent c) throws 
IOException, FacesException, ELException
     {
         nextHandler.apply(ctx, c);
     }
diff --git a/api/src/main/java/javax/faces/view/facelets/Facelet.java 
b/api/src/main/java/javax/faces/view/facelets/Facelet.java
index f86a777ce..2ee0f3936 100644
--- a/api/src/main/java/javax/faces/view/facelets/Facelet.java
+++ b/api/src/main/java/javax/faces/view/facelets/Facelet.java
@@ -19,9 +19,6 @@
 package javax.faces.view.facelets;
 
 import java.io.IOException;
-
-import javax.el.ELException;
-import javax.faces.FacesException;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 
@@ -45,6 +42,5 @@
      * @throws FaceletException
      * @throws ELException
      */
-    public abstract void apply(FacesContext facesContext, UIComponent parent) 
throws IOException, FacesException,
-            FaceletException, ELException;
+    public abstract void apply(FacesContext facesContext, UIComponent parent) 
throws IOException;
 }
diff --git a/api/src/main/java/javax/faces/view/facelets/FaceletContext.java 
b/api/src/main/java/javax/faces/view/facelets/FaceletContext.java
index 395fb64bf..b3dcc5323 100644
--- a/api/src/main/java/javax/faces/view/facelets/FaceletContext.java
+++ b/api/src/main/java/javax/faces/view/facelets/FaceletContext.java
@@ -22,11 +22,9 @@
 import java.net.URL;
 
 import javax.el.ELContext;
-import javax.el.ELException;
 import javax.el.ExpressionFactory;
 import javax.el.FunctionMapper;
 import javax.el.VariableMapper;
-import javax.faces.FacesException;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 
@@ -82,8 +80,7 @@
      * @throws FacesException
      * @throws ELException
      */
-    public abstract void includeFacelet(UIComponent parent, String 
relativePath) throws IOException, FaceletException,
-            FacesException, ELException;
+    public abstract void includeFacelet(UIComponent parent, String 
relativePath) throws IOException;
 
     /**
      * Include another Facelet defined at some path, absolute to this 
ClassLoader/OS
@@ -95,8 +92,7 @@ public abstract void includeFacelet(UIComponent parent, 
String relativePath) thr
      * @throws FacesException
      * @throws ELException
      */
-    public abstract void includeFacelet(UIComponent parent, URL absolutePath) 
throws IOException, FaceletException,
-            FacesException, ELException;
+    public abstract void includeFacelet(UIComponent parent, URL absolutePath) 
throws IOException;
 
     /**
      * Support method which is backed by the current VariableMapper
diff --git a/api/src/main/java/javax/faces/webapp/AttributeTag.java 
b/api/src/main/java/javax/faces/webapp/AttributeTag.java
index a40ef0982..dc762dde8 100755
--- a/api/src/main/java/javax/faces/webapp/AttributeTag.java
+++ b/api/src/main/java/javax/faces/webapp/AttributeTag.java
@@ -81,6 +81,16 @@ public int doStartTag() throws JspException
         return Tag.SKIP_BODY;
     }
 
+    /**
+     * @deprecated
+     */
+    @Override
+    public int doEndTag() throws JspException 
+    {
+        this.release();
+        return Tag.EVAL_PAGE;
+    }
+
     /**
      * @deprecated
      */
diff --git a/api/src/main/java/javax/faces/webapp/UIComponentELTag.java 
b/api/src/main/java/javax/faces/webapp/UIComponentELTag.java
index cf367e78c..bb600ff4d 100644
--- a/api/src/main/java/javax/faces/webapp/UIComponentELTag.java
+++ b/api/src/main/java/javax/faces/webapp/UIComponentELTag.java
@@ -18,6 +18,7 @@
  */
 package javax.faces.webapp;
 
+import javax.el.ELContext;
 import javax.el.ValueExpression;
 import javax.faces.application.Application;
 import javax.faces.component.UIComponent;
@@ -48,6 +49,18 @@ public UIComponentELTag()
 
     }
 
+    @Override
+    protected ELContext getELContext()
+    {
+        FacesContext facesContext = getFacesContext();
+        ELContext elContext = null;
+        if (facesContext != null) 
+        {
+            elContext = facesContext.getELContext();
+        }
+        return elContext;
+    }
+
     @Override
     public void release()
     {


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to