You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2020/06/19 11:29:33 UTC

[myfaces] branch master updated: removed duplicate code

This is an automated email from the ASF dual-hosted git repository.

tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces.git


The following commit(s) were added to refs/heads/master by this push:
     new cc14010  removed duplicate code
cc14010 is described below

commit cc140103824d8d9ff2062ab06f009491486c8f87
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Fri Jun 19 13:29:25 2020 +0200

    removed duplicate code
---
 .../myfaces/core/api/shared/ComponentUtils.java    |   5 +
 .../myfaces/application/StateManagerImpl.java      |   2 +-
 .../search/FormSearchKeywordResolver.java          |   4 +-
 .../NamingContainerSearchKeywordResolver.java      |   5 +-
 .../search/SearchExpressionHandlerImpl.java        |   4 +-
 .../apache/myfaces/renderkit/RendererUtils.java    |   2 +-
 .../renderkit/html/HtmlCommandScriptRenderer.java  |   4 +-
 .../myfaces/renderkit/html/HtmlFormatRenderer.java |   2 +-
 .../myfaces/renderkit/html/HtmlLabelRenderer.java  |   2 +-
 .../renderkit/html/HtmlResponseWriterImpl.java     |   2 +-
 .../html/base/HtmlButtonRendererBase.java          |  10 +-
 .../renderkit/html/base/HtmlGridRendererBase.java  |   2 +-
 .../renderkit/html/base/HtmlImageRendererBase.java |   3 +-
 .../html/base/HtmlInputFileRendererBase.java       |   4 +-
 .../renderkit/html/base/HtmlLinkRendererBase.java  |  10 +-
 .../html/base/HtmlMessageRendererBase.java         |   2 +-
 .../html/base/HtmlMessagesRendererBase.java        |   2 +-
 .../renderkit/html/base/HtmlRadioRendererBase.java |   6 +-
 .../renderkit/html/util/HtmlRendererUtils.java     |   4 +-
 .../renderkit/html/util/OutcomeTargetUtils.java    |   2 +-
 .../org/apache/myfaces/util/ComponentUtils.java    | 110 ---------------------
 .../compiler/CheckDuplicateIdFaceletUtils.java     |   3 +-
 .../myfaces/view/facelets/compiler/UILeaf.java     |   6 +-
 23 files changed, 45 insertions(+), 151 deletions(-)

diff --git a/api/src/main/java/org/apache/myfaces/core/api/shared/ComponentUtils.java b/api/src/main/java/org/apache/myfaces/core/api/shared/ComponentUtils.java
index 7e742e7..bfcdd3f 100755
--- a/api/src/main/java/org/apache/myfaces/core/api/shared/ComponentUtils.java
+++ b/api/src/main/java/org/apache/myfaces/core/api/shared/ComponentUtils.java
@@ -288,6 +288,11 @@ public class ComponentUtils
         getPathToComponent(component, buf);
 
         buf.insert(0, "{Component-Path : ");
+        Object location = component.getAttributes().get(UIComponent.VIEW_LOCATION_KEY);
+        if (location != null)
+        {
+            buf.append(" Location: ").append(location);
+        }
         buf.append('}');
 
         return buf.toString();
diff --git a/impl/src/main/java/org/apache/myfaces/application/StateManagerImpl.java b/impl/src/main/java/org/apache/myfaces/application/StateManagerImpl.java
index 411f010..fcd80c1 100644
--- a/impl/src/main/java/org/apache/myfaces/application/StateManagerImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/application/StateManagerImpl.java
@@ -41,7 +41,7 @@ import javax.faces.view.ViewDeclarationLanguage;
 
 import org.apache.myfaces.application.viewstate.StateCacheUtils;
 import org.apache.myfaces.context.RequestViewContext;
-import org.apache.myfaces.util.ComponentUtils;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 
 public class StateManagerImpl extends StateManager
 {
diff --git a/impl/src/main/java/org/apache/myfaces/component/search/FormSearchKeywordResolver.java b/impl/src/main/java/org/apache/myfaces/component/search/FormSearchKeywordResolver.java
index db3c89c..7553f24 100644
--- a/impl/src/main/java/org/apache/myfaces/component/search/FormSearchKeywordResolver.java
+++ b/impl/src/main/java/org/apache/myfaces/component/search/FormSearchKeywordResolver.java
@@ -25,7 +25,7 @@ import javax.faces.component.search.SearchExpressionContext;
 import javax.faces.component.search.SearchExpressionHint;
 import javax.faces.component.search.SearchKeywordContext;
 import javax.faces.component.search.SearchKeywordResolver;
-import org.apache.myfaces.util.ComponentUtils;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 
 /**
  *
@@ -37,7 +37,7 @@ public class FormSearchKeywordResolver extends SearchKeywordResolver
     @Override
     public void resolve(SearchKeywordContext expressionContext, UIComponent current, String keyword)
     {
-        expressionContext.invokeContextCallback(ComponentUtils.closest(UIForm.class, current));
+        expressionContext.invokeContextCallback(ComponentUtils.findClosest(UIForm.class, current));
     }
     
     @Override
diff --git a/impl/src/main/java/org/apache/myfaces/component/search/NamingContainerSearchKeywordResolver.java b/impl/src/main/java/org/apache/myfaces/component/search/NamingContainerSearchKeywordResolver.java
index c6a57dc..7d63c84 100644
--- a/impl/src/main/java/org/apache/myfaces/component/search/NamingContainerSearchKeywordResolver.java
+++ b/impl/src/main/java/org/apache/myfaces/component/search/NamingContainerSearchKeywordResolver.java
@@ -24,7 +24,7 @@ import javax.faces.component.UIComponent;
 import javax.faces.component.search.SearchExpressionContext;
 import javax.faces.component.search.SearchKeywordContext;
 import javax.faces.component.search.SearchKeywordResolver;
-import org.apache.myfaces.util.ComponentUtils;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 
 /**
  *
@@ -36,7 +36,8 @@ public class NamingContainerSearchKeywordResolver extends SearchKeywordResolver
     @Override
     public void resolve(SearchKeywordContext expressionContext, UIComponent current, String keyword)
     {
-        expressionContext.invokeContextCallback((UIComponent) ComponentUtils.closest(NamingContainer.class, current));
+        expressionContext.invokeContextCallback(
+                (UIComponent) ComponentUtils.findClosest(NamingContainer.class, current));
     }
 
     @Override
diff --git a/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java b/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java
index 836ae74..90444bc 100644
--- a/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java
@@ -33,8 +33,8 @@ import javax.faces.component.search.SearchExpressionHandler;
 import javax.faces.component.search.SearchExpressionHint;
 import javax.faces.component.search.SearchKeywordContext;
 import javax.faces.context.FacesContext;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 import org.apache.myfaces.util.SharedStringBuilder;
-import org.apache.myfaces.util.ComponentUtils;
 import org.apache.myfaces.util.lang.StringUtils;
 
 /**
@@ -391,7 +391,7 @@ public class SearchExpressionHandlerImpl extends SearchExpressionHandler
         char separatorChar = facesContext.getNamingContainerSeparatorChar();
         if (topExpression.charAt(0) == separatorChar)
         {
-            UIComponent findBase = ComponentUtils.getRootComponent(previous);
+            UIComponent findBase = ComponentUtils.findRootComponent(previous);
             handler.invokeOnComponent(searchExpressionContext, findBase, topExpression.substring(1), topCallback);
             return;
         }
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/RendererUtils.java b/impl/src/main/java/org/apache/myfaces/renderkit/RendererUtils.java
index fa8309d..9042c66 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/RendererUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/RendererUtils.java
@@ -48,10 +48,10 @@ import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.model.SelectItem;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 import org.apache.myfaces.core.api.shared.SelectItemsIterator;
 import org.apache.myfaces.core.api.shared.SharedRendererUtils;
 
-import org.apache.myfaces.util.ComponentUtils;
 import org.apache.myfaces.util.lang.HashMapUtils;
 import org.apache.myfaces.renderkit.html.util.JSFAttr;
 import org.apache.myfaces.util.lang.Assert;
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java
index b72e02d..bb97f37 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCommandScriptRenderer.java
@@ -32,6 +32,7 @@ import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 import javax.faces.event.ActionEvent;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 import org.apache.myfaces.renderkit.html.util.AjaxScriptBuilder;
 import org.apache.myfaces.renderkit.html.util.ClientBehaviorRendererUtils;
 import org.apache.myfaces.renderkit.html.util.HTML;
@@ -40,7 +41,6 @@ import org.apache.myfaces.renderkit.html.util.HtmlRendererUtils;
 import org.apache.myfaces.renderkit.html.util.JavascriptContext;
 import org.apache.myfaces.renderkit.html.util.JavascriptUtils;
 import org.apache.myfaces.renderkit.html.util.ResourceUtils;
-import org.apache.myfaces.util.ComponentUtils;
 import org.apache.myfaces.util.lang.StringUtils;
 import org.apache.myfaces.util.SharedStringBuilder;
 
@@ -157,7 +157,7 @@ public class HtmlCommandScriptRenderer extends HtmlRenderer
             if (component.getClientId(facesContext).equals(clientId))
             {
                 boolean disabled = HtmlRendererUtils.isDisabled(component);
-                UIForm form = ComponentUtils.closest(UIForm.class, component);
+                UIForm form = ComponentUtils.findClosest(UIForm.class, component);
                 boolean activateActionEvent = false;
                 if (form != null && !disabled)
                 {
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlFormatRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlFormatRenderer.java
index 2bf3b9a..555a019 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlFormatRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlFormatRenderer.java
@@ -33,6 +33,7 @@ import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 import org.apache.myfaces.renderkit.html.util.JSFAttr;
 import org.apache.myfaces.renderkit.RendererUtils;
 import org.apache.myfaces.renderkit.html.util.CommonPropertyConstants;
@@ -40,7 +41,6 @@ import org.apache.myfaces.renderkit.html.util.CommonPropertyUtils;
 import org.apache.myfaces.renderkit.html.util.HTML;
 import org.apache.myfaces.renderkit.html.base.HtmlRenderer;
 import org.apache.myfaces.renderkit.html.util.HtmlRendererUtils;
-import org.apache.myfaces.util.ComponentUtils;
 
 /**
  * 
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java
index a6c9db9..44c1ee5 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java
@@ -35,6 +35,7 @@ import javax.faces.context.ResponseWriter;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
 import org.apache.myfaces.component.search.MyFacesSearchExpressionHints;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 import org.apache.myfaces.renderkit.html.util.JSFAttr;
 import org.apache.myfaces.renderkit.RendererUtils;
 import org.apache.myfaces.renderkit.html.util.ClientBehaviorRendererUtils;
@@ -44,7 +45,6 @@ import org.apache.myfaces.renderkit.html.util.HTML;
 import org.apache.myfaces.renderkit.html.base.HtmlRenderer;
 import org.apache.myfaces.renderkit.html.util.HtmlRendererUtils;
 import org.apache.myfaces.renderkit.html.util.ResourceUtils;
-import org.apache.myfaces.util.ComponentUtils;
 
 /**
  * 
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseWriterImpl.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseWriterImpl.java
index ad997b9..97b15d5 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseWriterImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseWriterImpl.java
@@ -35,10 +35,10 @@ import javax.faces.context.ResponseWriter;
 import javax.faces.render.Renderer;
 
 import org.apache.myfaces.config.MyfacesConfig;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 import org.apache.myfaces.renderkit.ContentTypeUtils;
 import org.apache.myfaces.renderkit.html.util.UnicodeEncoder;
 import org.apache.myfaces.util.CommentUtils;
-import org.apache.myfaces.util.ComponentUtils;
 import org.apache.myfaces.util.lang.StreamCharBuffer;
 import org.apache.myfaces.renderkit.html.util.HTML;
 import org.apache.myfaces.renderkit.html.util.HTMLEncoder;
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlButtonRendererBase.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlButtonRendererBase.java
index ec815f7..5f5d467 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlButtonRendererBase.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlButtonRendererBase.java
@@ -39,6 +39,7 @@ import javax.faces.component.html.HtmlCommandLink;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 import javax.faces.event.ActionEvent;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 
 import org.apache.myfaces.renderkit.ClientBehaviorEvents;
 import org.apache.myfaces.renderkit.html.util.JSFAttr;
@@ -46,7 +47,6 @@ import org.apache.myfaces.renderkit.RendererUtils;
 import org.apache.myfaces.renderkit.html.util.JavascriptUtils;
 import org.apache.myfaces.renderkit.html.util.ResourceUtils;
 import org.apache.myfaces.renderkit.html.util.HTML;
-import org.apache.myfaces.util.ComponentUtils;
 import org.apache.myfaces.util.SharedStringBuilder;
 
 public class HtmlButtonRendererBase extends HtmlRenderer
@@ -98,7 +98,7 @@ public class HtmlButtonRendererBase extends HtmlRenderer
         Map paramMap = facesContext.getExternalContext().getRequestParameterMap();
         String hiddenLink = null;
 
-        UIForm form = ComponentUtils.closest(UIForm.class, uiComponent);
+        UIForm form = ComponentUtils.findClosest(UIForm.class, uiComponent);
         if (form != null)
         {
             hiddenLink = (String) facesContext.getExternalContext().getRequestParameterMap().get(
@@ -120,7 +120,7 @@ public class HtmlButtonRendererBase extends HtmlRenderer
         ResponseWriter writer = facesContext.getResponseWriter();
         
         // commandButton does not need to be nested in a form since JSF 2.0
-        UIForm form = ComponentUtils.closest(UIForm.class, uiComponent);
+        UIForm form = ComponentUtils.findClosest(UIForm.class, uiComponent);
 
         boolean reset = isReset(uiComponent);
         boolean button = isButton(uiComponent);
@@ -273,7 +273,7 @@ public class HtmlButtonRendererBase extends HtmlRenderer
 
         writer.endElement(HTML.INPUT_ELEM);
         
-        UIForm form = ComponentUtils.closest(UIForm.class, uiComponent);
+        UIForm form = ComponentUtils.findClosest(UIForm.class, uiComponent);
         if (form != null)
         {
             HtmlFormRendererBase.renderScrollHiddenInputIfNecessary(form, facesContext, writer);
@@ -431,7 +431,7 @@ public class HtmlButtonRendererBase extends HtmlRenderer
             onClick.append("var oamSF = function(){");
         }
 
-        UIForm form = ComponentUtils.closest(UIForm.class, uiComponent);        
+        UIForm form = ComponentUtils.findClosest(UIForm.class, uiComponent);        
         if (form != null)
         {
             if (validParams != null && !validParams.isEmpty() )
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlGridRendererBase.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlGridRendererBase.java
index 513410e..7c629e6 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlGridRendererBase.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlGridRendererBase.java
@@ -36,12 +36,12 @@ import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.component.html.HtmlPanelGrid;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 
 import org.apache.myfaces.renderkit.html.util.JSFAttr;
 import org.apache.myfaces.renderkit.RendererUtils;
 import org.apache.myfaces.renderkit.html.util.ResourceUtils;
 import org.apache.myfaces.util.lang.ArrayUtils;
-import org.apache.myfaces.util.ComponentUtils;
 import org.apache.myfaces.util.lang.StringUtils;
 import org.apache.myfaces.renderkit.html.util.HTML;
 
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlImageRendererBase.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlImageRendererBase.java
index 235f7cd..4534db4 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlImageRendererBase.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlImageRendererBase.java
@@ -35,13 +35,12 @@ import javax.faces.component.behavior.ClientBehavior;
 import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 
 import org.apache.myfaces.renderkit.html.util.JSFAttr;
 import org.apache.myfaces.renderkit.RendererUtils;
 import org.apache.myfaces.renderkit.html.util.ResourceUtils;
 import org.apache.myfaces.renderkit.html.util.HTML;
-import org.apache.myfaces.util.ComponentUtils;
-
 
 public class HtmlImageRendererBase extends HtmlRenderer
 {
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlInputFileRendererBase.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlInputFileRendererBase.java
index d5ec3e0..289ca3e 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlInputFileRendererBase.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlInputFileRendererBase.java
@@ -45,13 +45,13 @@ import javax.faces.component.behavior.ClientBehavior;
 import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.component.html.HtmlForm;
 import javax.faces.component.html.HtmlInputText;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 import org.apache.myfaces.renderkit.RendererUtils;
 
 import org.apache.myfaces.renderkit.html.util.HttpPartWrapper;
 import org.apache.myfaces.renderkit.html.util.HTML;
 import org.apache.myfaces.renderkit.html.util.JSFAttr;
 import org.apache.myfaces.util.lang.Assert;
-import org.apache.myfaces.util.ComponentUtils;
 
 public class HtmlInputFileRendererBase extends HtmlRenderer
 {
@@ -95,7 +95,7 @@ public class HtmlInputFileRendererBase extends HtmlRenderer
                 && (facesContext.getPartialViewContext().isPartialRequest() ||
                     facesContext.getPartialViewContext().isAjaxRequest()))
         {
-            UIForm form = ComponentUtils.closest(UIForm.class, component);
+            UIForm form = ComponentUtils.findClosest(UIForm.class, component);
             if (form != null && form instanceof HtmlForm)
             {
                 String content = ((HtmlForm) form).getEnctype();
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlLinkRendererBase.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlLinkRendererBase.java
index fb2f3e9..ca78aeb 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlLinkRendererBase.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlLinkRendererBase.java
@@ -47,12 +47,12 @@ import javax.faces.context.ResponseWriter;
 import javax.faces.event.ActionEvent;
 
 import org.apache.myfaces.config.MyfacesConfig;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 import org.apache.myfaces.renderkit.ClientBehaviorEvents;
 import org.apache.myfaces.renderkit.html.util.JSFAttr;
 import org.apache.myfaces.renderkit.RendererUtils;
 import org.apache.myfaces.renderkit.html.util.ResourceUtils;
 import org.apache.myfaces.renderkit.html.util.HTML;
-import org.apache.myfaces.util.ComponentUtils;
 import org.apache.myfaces.util.SharedStringBuilder;
 
 public abstract class HtmlLinkRendererBase extends HtmlRenderer
@@ -88,7 +88,7 @@ public abstract class HtmlLinkRendererBase extends HtmlRenderer
         if (component instanceof UICommand)
         {
             String clientId = component.getClientId(facesContext);
-            UIForm form = ComponentUtils.closest(UIForm.class, component);
+            UIForm form = ComponentUtils.findClosest(UIForm.class, component);
             boolean disabled = HtmlRendererUtils.isDisabled(component);
             // MYFACES-3960 Decode, decode client behavior and queue action event at the end
             boolean activateActionEvent = false;
@@ -202,7 +202,7 @@ public abstract class HtmlLinkRendererBase extends HtmlRenderer
         {
             renderCommandLinkEnd(facesContext, component);
 
-            UIForm form = ComponentUtils.closest(UIForm.class, component);
+            UIForm form = ComponentUtils.findClosest(UIForm.class, component);
             if (form != null)
             {
                 HtmlFormRendererBase.renderScrollHiddenInputIfNecessary(
@@ -234,7 +234,7 @@ public abstract class HtmlLinkRendererBase extends HtmlRenderer
         Map<String, List<ClientBehavior>> behaviors = null;
 
         // h:commandLink can be rendered outside a form, but with warning (jsf 2.0 TCK)
-        UIForm form = ComponentUtils.closest(UIForm.class, component);
+        UIForm form = ComponentUtils.findClosest(UIForm.class, component);
         
         boolean disabled = HtmlRendererUtils.isDisabled(component);
         
@@ -1143,7 +1143,7 @@ public abstract class HtmlLinkRendererBase extends HtmlRenderer
     protected void renderCommandLinkEnd(FacesContext facesContext, UIComponent component)
             throws IOException
     {
-        UIForm form = ComponentUtils.closest(UIForm.class, component);
+        UIForm form = ComponentUtils.findClosest(UIForm.class, component);
         
         ResponseWriter writer = facesContext.getResponseWriter();
         if (HtmlRendererUtils.isDisabled(component) || form == null)
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlMessageRendererBase.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlMessageRendererBase.java
index 0049f2f..2b1af8f 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlMessageRendererBase.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlMessageRendererBase.java
@@ -39,11 +39,11 @@ import javax.faces.component.search.SearchExpressionHandler;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 import org.apache.myfaces.component.search.MyFacesSearchExpressionHints;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 
 import org.apache.myfaces.renderkit.html.util.JSFAttr;
 import org.apache.myfaces.renderkit.RendererUtils;
 import org.apache.myfaces.renderkit.html.util.HTML;
-import org.apache.myfaces.util.ComponentUtils;
 
 public abstract class HtmlMessageRendererBase
         extends HtmlRenderer
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlMessagesRendererBase.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlMessagesRendererBase.java
index dba4faf..8939f54 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlMessagesRendererBase.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlMessagesRendererBase.java
@@ -39,11 +39,11 @@ import javax.faces.component.search.SearchExpressionHandler;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 import org.apache.myfaces.component.search.MyFacesSearchExpressionHints;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 
 import org.apache.myfaces.renderkit.html.util.JSFAttr;
 import org.apache.myfaces.renderkit.RendererUtils;
 import org.apache.myfaces.renderkit.html.util.HTML;
-import org.apache.myfaces.util.ComponentUtils;
 
 public abstract class HtmlMessagesRendererBase extends HtmlMessageRendererBase
 {
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlRadioRendererBase.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlRadioRendererBase.java
index a685057..7644464 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlRadioRendererBase.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlRadioRendererBase.java
@@ -50,12 +50,12 @@ import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.model.SelectItem;
 import javax.faces.model.SelectItemGroup;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 
 import org.apache.myfaces.renderkit.html.util.JSFAttr;
 import org.apache.myfaces.renderkit.RendererUtils;
 import org.apache.myfaces.renderkit.html.util.ResourceUtils;
 import org.apache.myfaces.renderkit.html.util.HTML;
-import org.apache.myfaces.util.ComponentUtils;
 
 public class HtmlRadioRendererBase extends HtmlRenderer
 {
@@ -144,7 +144,7 @@ public class HtmlRadioRendererBase extends HtmlRenderer
             else
             {
                 // Deferred case: find real component with attached selectItems
-                UIForm form = ComponentUtils.closest(UIForm.class, uiComponent);
+                UIForm form = ComponentUtils.findClosest(UIForm.class, uiComponent);
                 GetSelectItemListCallback callback = new GetSelectItemListCallback(selectOne, group);
                 form.visitTree(
                         VisitContext.createVisitContext(facesContext, null, FIND_SELECT_LIST_HINTS),
@@ -411,7 +411,7 @@ public class HtmlRadioRendererBase extends HtmlRenderer
         String group = uiComponent instanceof HtmlSelectOneRadio ? ((HtmlSelectOneRadio) uiComponent).getGroup() : null;
         if (group != null && !group.isEmpty())
         {
-            UIForm form = ComponentUtils.closest(UIForm.class, uiComponent);
+            UIForm form = ComponentUtils.findClosest(UIForm.class, uiComponent);
             writer.writeAttribute(HTML.NAME_ATTR, form.getClientId(facesContext) +
                     facesContext.getNamingContainerSeparatorChar() + group, null);
         }
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/util/HtmlRendererUtils.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/util/HtmlRendererUtils.java
index fd9ea83..8870f86 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/util/HtmlRendererUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/util/HtmlRendererUtils.java
@@ -60,8 +60,8 @@ import javax.faces.model.SelectItemGroup;
 
 import org.apache.myfaces.renderkit.ClientBehaviorEvents;
 import org.apache.myfaces.renderkit.RendererUtils;
-import org.apache.myfaces.util.ComponentUtils;
 import org.apache.myfaces.component.visit.MyFacesVisitHints;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 
 public final class HtmlRendererUtils
 {
@@ -247,7 +247,7 @@ public final class HtmlRendererUtils
             String group = ((UISelectOne) component).getGroup();
             if (group != null && !group.isEmpty())
             {
-                UIForm form = ComponentUtils.closest(UIForm.class, component);
+                UIForm form = ComponentUtils.findClosest(UIForm.class, component);
                 String fullGroupId = form.getClientId(facesContext) +
                         facesContext.getNamingContainerSeparatorChar() + group;
                 if (paramMap.containsKey(fullGroupId))
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/util/OutcomeTargetUtils.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/util/OutcomeTargetUtils.java
index 3653395..9799d80 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/util/OutcomeTargetUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/util/OutcomeTargetUtils.java
@@ -38,8 +38,8 @@ import javax.faces.component.UIParameter;
 import javax.faces.context.FacesContext;
 import javax.faces.flow.FlowHandler;
 import javax.faces.lifecycle.ClientWindow;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 import org.apache.myfaces.renderkit.RendererUtils;
-import org.apache.myfaces.util.ComponentUtils;
 import org.apache.myfaces.util.NavigationUtils;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/util/ComponentUtils.java b/impl/src/main/java/org/apache/myfaces/util/ComponentUtils.java
deleted file mode 100644
index 5e9c973..0000000
--- a/impl/src/main/java/org/apache/myfaces/util/ComponentUtils.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.myfaces.util;
-
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIViewRoot;
-
-public class ComponentUtils
-{
-    public static String getPathToComponent(UIComponent component)
-    {
-        StringBuilder buf = new StringBuilder();
-
-        if (component == null)
-        {
-            buf.append("{Component-Path : ");
-            buf.append("[null]}");
-            return buf.toString();
-        }
-
-        getPathToComponent(component, buf);
-
-        buf.insert(0, "{Component-Path : ");
-        Object location = component.getAttributes().get(
-                UIComponent.VIEW_LOCATION_KEY);
-        if (location != null)
-        {
-            buf.append(" Location: ").append(location);
-        }
-        buf.append('}');
-
-        return buf.toString();
-    }
-
-    private static void getPathToComponent(UIComponent component, StringBuilder buf)
-    {
-        if (component == null)
-        {
-            return;
-        }
-
-        StringBuilder intBuf = new StringBuilder();
-
-        intBuf.append("[Class: ");
-        intBuf.append(component.getClass().getName());
-        if (component instanceof UIViewRoot)
-        {
-            intBuf.append(",ViewId: ");
-            intBuf.append(((UIViewRoot) component).getViewId());
-        }
-        else
-        {
-            intBuf.append(",Id: ");
-            intBuf.append(component.getId());
-        }
-        intBuf.append(']');
-
-        buf.insert(0, intBuf.toString());
-
-        getPathToComponent(component.getParent(), buf);
-    }
-    
-    public static <T> T closest(Class<T> type, UIComponent base) 
-    {
-        UIComponent parent = base.getParent();
-
-        while (parent != null) 
-        {
-            if (type.isAssignableFrom(parent.getClass())) 
-            {
-                return (T) parent;
-            }
-
-            parent = parent.getParent();
-        }
-
-        return null;
-    }
-    
-    public static UIComponent getRootComponent(UIComponent component)
-    {
-        UIComponent parent;
-        for (;;)
-        {
-            parent = component.getParent();
-            if (parent == null)
-            {
-                return component;
-            }
-            component = parent;
-        }
-    }
-}
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/CheckDuplicateIdFaceletUtils.java b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/CheckDuplicateIdFaceletUtils.java
index 113d4c1..1f8a3e2 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/CheckDuplicateIdFaceletUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/CheckDuplicateIdFaceletUtils.java
@@ -26,8 +26,7 @@ import javax.faces.context.FacesContext;
 import javax.faces.event.ExceptionQueuedEvent;
 import javax.faces.event.ExceptionQueuedEventContext;
 import javax.faces.view.Location;
-
-import org.apache.myfaces.util.ComponentUtils;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 
 /**
  *
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/UILeaf.java b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/UILeaf.java
index 5546a4e..fb54577 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/UILeaf.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/UILeaf.java
@@ -45,10 +45,10 @@ import javax.faces.event.FacesListener;
 import javax.faces.render.Renderer;
 
 import javax.faces.view.Location;
+import org.apache.myfaces.core.api.shared.ComponentUtils;
 import org.apache.myfaces.util.lang.Assert;
 
 import org.apache.myfaces.util.SharedStringBuilder;
-import org.apache.myfaces.util.ComponentUtils;
 import org.apache.myfaces.view.facelets.tag.jsf.ComponentSupport;
 
 class UILeaf extends UIComponent implements UntargetableComponent, Map<String, Object>
@@ -83,7 +83,7 @@ class UILeaf extends UIComponent implements UntargetableComponent, Map<String, O
             // NamingContainer but UniqueIdVendor is UIViewRoot. Anyway we just can't be 100% sure about this
             // fact, so it is better to scan for the closest UniqueIdVendor. If it is not found use 
             // viewRoot.createUniqueId, otherwise use UniqueIdVendor.createUniqueId(context,seed).
-            UniqueIdVendor parentUniqueIdVendor = ComponentUtils.closest(UniqueIdVendor.class, this);
+            UniqueIdVendor parentUniqueIdVendor = ComponentUtils.findClosest(UniqueIdVendor.class, this);
             if (parentUniqueIdVendor == null)
             {
                 UIViewRoot viewRoot = context.getViewRoot();
@@ -110,7 +110,7 @@ class UILeaf extends UIComponent implements UntargetableComponent, Map<String, O
             // idWasNull = true;
         }
 
-        UIComponent namingContainer = ComponentUtils.closest(UINamingContainer.class, this);
+        UIComponent namingContainer = ComponentUtils.findClosest(UINamingContainer.class, this);
         if (namingContainer != null)
         {
             String containerClientId = namingContainer.getContainerClientId(context);