You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by GitBox <gi...@apache.org> on 2019/01/07 18:06:53 UTC

[GitHub] ebreijo closed pull request #39: MYFACES-4251 Updated some JSF 2.3 API classes to match the javadocs

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

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 32d2940b9..80cf8a57c 100755
--- a/api/src/main/java/javax/faces/application/Application.java
+++ b/api/src/main/java/javax/faces/application/Application.java
@@ -817,7 +817,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 46a02cd0e..9778d4d36 100644
--- a/api/src/main/java/javax/faces/application/ApplicationWrapper.java
+++ b/api/src/main/java/javax/faces/application/ApplicationWrapper.java
@@ -292,7 +292,7 @@ public PropertyResolver getPropertyResolver()
     }
 
     @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 8ee38fefe..1b8ea46ff 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/UIData.java b/api/src/main/java/javax/faces/component/UIData.java
index a97259515..d8bedecbc 100644
--- a/api/src/main/java/javax/faces/component/UIData.java
+++ b/api/src/main/java/javax/faces/component/UIData.java
@@ -39,6 +39,7 @@
 import javax.faces.component.visit.VisitHint;
 import javax.faces.component.visit.VisitResult;
 import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
 import javax.faces.event.AbortProcessingException;
 import javax.faces.event.FacesEvent;
 import javax.faces.event.FacesListener;
@@ -1610,6 +1611,27 @@ public Object saveState(FacesContext context)
         }
     }
 
+    /**
+     * @deprecated This has been replaced by {@link #setValueExpression(java.lang.String, javax.el.ValueExpression)}.
+     */
+    @Override
+    public void setValueBinding(String name, ValueBinding binding) 
+    {
+        if (name == null) 
+        {
+            throw new NullPointerException("name");
+        }
+        else if (name.equals("value"))
+        {
+            _dataModelMap.clear();
+        }
+        else if (name.equals("rowIndex"))
+        {
+            throw new IllegalArgumentException("name " + name);
+        }
+        super.setValueBinding(name, binding);
+    }
+
     @Override
     public void setValueExpression(String name, ValueExpression binding)
     {
diff --git a/api/src/main/java/javax/faces/component/UIGraphic.java b/api/src/main/java/javax/faces/component/UIGraphic.java
index d092f8483..2fdf653c1 100644
--- a/api/src/main/java/javax/faces/component/UIGraphic.java
+++ b/api/src/main/java/javax/faces/component/UIGraphic.java
@@ -19,6 +19,7 @@
 package javax.faces.component;
 
 import javax.el.ValueExpression;
+import javax.faces.el.ValueBinding;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFComponent;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
@@ -67,6 +68,38 @@ public void setUrl(String url)
         setValue(url);
     }
 
+    /**
+     * @deprecated Use getValueExpression instead
+     */
+    @Override
+    public ValueBinding getValueBinding(String name) 
+    {
+        if (URL_PROPERTY.equals(name)) 
+        {
+            return super.getValueBinding(VALUE_PROPERTY);
+        } 
+        else 
+        {
+            return super.getValueBinding(name);
+        }
+    }
+
+    /**
+     * @deprecated Use setValueExpression instead
+     */
+    @Override
+    public void setValueBinding(String name, ValueBinding binding) 
+    {
+        if (URL_PROPERTY.equals(name)) 
+        {
+            super.setValueBinding(VALUE_PROPERTY, binding);
+        } 
+        else 
+        {
+            super.setValueBinding(name, binding);
+        }
+    }
+
     @Override
     public ValueExpression getValueExpression(String name)
     {
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 62499048d..db080f085 100644
--- a/api/src/main/java/javax/faces/component/UIViewAction.java
+++ b/api/src/main/java/javax/faces/component/UIViewAction.java
@@ -59,6 +59,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
     {
@@ -322,6 +334,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 e2dc0b09b..6e50efa60 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 javax.faces.component.behavior.ClientBehaviorHolder;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFComponent;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
@@ -60,4 +61,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 b48d6b28f..4b45c75fb 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;
 
@@ -50,7 +51,7 @@ public BehaviorBase()
     /**
      * {@inheritDoc}
      */
-    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 48c6258bb..ba108a612 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 0d50a83a5..1b2230047 100644
--- a/api/src/main/java/javax/faces/convert/EnumConverter.java
+++ b/api/src/main/java/javax/faces/convert/EnumConverter.java
@@ -66,7 +66,6 @@ public EnumConverter(Class targetClass)
     }
 
     public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
-        throws ConverterException
     {
         if (facesContext == null)
         {
@@ -104,7 +103,6 @@ public String getAsString(FacesContext facesContext, UIComponent uiComponent, Ob
     }
 
     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 5056eab95..9ce8716dc 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 7f581d646..dce69cfed 100644
--- a/api/src/main/java/javax/faces/validator/RequiredValidator.java
+++ b/api/src/main/java/javax/faces/validator/RequiredValidator.java
@@ -51,7 +51,7 @@ public RequiredValidator()
 
     // VALIDATE
     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 ee872c2ad..faebf5a63 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;
 
@@ -50,7 +51,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 7bc54cf7a..0c135b0d1 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;
 
@@ -83,8 +81,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
@@ -96,8 +93,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 3af4e53a9..1d0686083 100755
--- a/api/src/main/java/javax/faces/webapp/AttributeTag.java
+++ b/api/src/main/java/javax/faces/webapp/AttributeTag.java
@@ -83,6 +83,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 cba0b6e32..d333be53b 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:
users@infra.apache.org


With regards,
Apache Git Services