You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2008/09/29 23:57:30 UTC

svn commit: r700276 - in /myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core: interceptor/ renderkit/

Author: gpetracek
Date: Mon Sep 29 14:57:29 2008
New Revision: 700276

URL: http://svn.apache.org/viewvc?rev=700276&view=rev
Log:
renderer proxy

Added:
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/RendererProxyEntry.java
Modified:
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractRendererInterceptor.java
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/RendererInterceptor.java
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererProxy.java
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java

Modified: myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractRendererInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractRendererInterceptor.java?rev=700276&r1=700275&r2=700276&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractRendererInterceptor.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractRendererInterceptor.java Mon Sep 29 14:57:29 2008
@@ -61,19 +61,14 @@
     {
     }
 
-    public void beforeConvertClientId(FacesContext facesContext, String s, Renderer wrapped)
-    {
-    }
-
-    public void beforeGetRendersChildren(Renderer wrapped)
-    {
-    }
-
     public void beforeGetConvertedValue(FacesContext facesContext, UIComponent uiComponent, Object o, Renderer wrapped)
         throws ConverterException
     {
     }
 
+    /*
+     * after
+     */
     public void afterDecode(FacesContext facesContext, UIComponent uiComponent, Renderer wrapped)
     {
     }
@@ -93,16 +88,8 @@
     {
     }
 
-    public void afterConvertClientId(FacesContext facesContext, String s, Renderer wrapped)
-    {
-    }
-
-    public void afterGetRendersChildren(Renderer wrapped)
-    {
-    }
-
     public void afterGetConvertedValue(FacesContext facesContext, UIComponent uiComponent, Object o, Renderer wrapped)
         throws ConverterException
     {
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/RendererInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/RendererInterceptor.java?rev=700276&r1=700275&r2=700276&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/RendererInterceptor.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/RendererInterceptor.java Mon Sep 29 14:57:29 2008
@@ -49,18 +49,10 @@
     void beforeEncodeEnd(FacesContext facesContext, UIComponent uiComponent, Renderer renderer)
         throws IOException;
 
-    void beforeConvertClientId(FacesContext facesContext, String s, Renderer renderer);
-
-    void beforeGetRendersChildren(Renderer renderer);
-
     void beforeGetConvertedValue(FacesContext facesContext, UIComponent uiComponent, Object o, Renderer renderer)
         throws ConverterException;
 
     /*
-     * before delegation
-     */
-
-    /*
      * after
      */
     void afterDecode(FacesContext facesContext, UIComponent uiComponent, Renderer renderer);
@@ -74,10 +66,6 @@
     void afterEncodeEnd(FacesContext facesContext, UIComponent uiComponent, Renderer renderer)
         throws IOException;
 
-    void afterConvertClientId(FacesContext facesContext, String s, Renderer renderer);
-
-    void afterGetRendersChildren(Renderer renderer);
-
     void afterGetConvertedValue(FacesContext facesContext, UIComponent uiComponent, Object o, Renderer renderer)
         throws ConverterException;
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererProxy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererProxy.java?rev=700276&r1=700275&r2=700276&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererProxy.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererProxy.java Mon Sep 29 14:57:29 2008
@@ -26,9 +26,12 @@
 import javax.faces.component.UIComponent;
 import javax.faces.convert.ConverterException;
 import java.io.IOException;
+import java.util.Map;
+import java.util.HashMap;
 
 /**
  * to avoid multiple class within renderer interceptors (e.g. for encode, decode,...
+ *
  * @author Gerhard Petracek
  * @since 1.x.1
  */
@@ -37,15 +40,6 @@
 {
     private Renderer wrapped;
 
-    private boolean isDecodeCalled = false;
-    private boolean isEncodeBeginCalled = false;
-    private boolean isEncodeChildrenCalled = false;
-    private boolean isEncodeEndCalled = false;
-
-    private Object convertedValue = null;
-    private String clientId = null;
-    private Boolean rendersChildren = null;
-
     public ExtValRendererProxy(Renderer renderer)
     {
         this.wrapped = renderer;
@@ -53,9 +47,11 @@
 
     public void decode(FacesContext facesContext, UIComponent uiComponent)
     {
-        if(!isDecodeCalled)
+        RendererProxyEntry entry = getOrInitEntry(facesContext, uiComponent);
+
+        if (!entry.isDecodeCalled())
         {
-            isDecodeCalled = true;
+            entry.setDecodeCalled(true);
             wrapped.decode(facesContext, uiComponent);
         }
     }
@@ -63,9 +59,11 @@
     public void encodeBegin(FacesContext facesContext, UIComponent uiComponent)
         throws IOException
     {
-        if(!isEncodeBeginCalled)
+        RendererProxyEntry entry = getOrInitEntry(facesContext, uiComponent);
+
+        if (!entry.isEncodeBeginCalled())
         {
-            isEncodeBeginCalled = true;
+            entry.setEncodeBeginCalled(true);
             wrapped.encodeBegin(facesContext, uiComponent);
         }
     }
@@ -73,9 +71,11 @@
     public void encodeChildren(FacesContext facesContext, UIComponent uiComponent)
         throws IOException
     {
-        if(!isEncodeChildrenCalled)
+        RendererProxyEntry entry = getOrInitEntry(facesContext, uiComponent);
+
+        if (!entry.isEncodeChildrenCalled())
         {
-            isEncodeChildrenCalled = true;
+            entry.setEncodeChildrenCalled(true);
             wrapped.encodeChildren(facesContext, uiComponent);
         }
     }
@@ -83,38 +83,69 @@
     public void encodeEnd(FacesContext facesContext, UIComponent uiComponent)
         throws IOException
     {
-        if(!isEncodeEndCalled)
+        RendererProxyEntry entry = getOrInitEntry(facesContext, uiComponent);
+
+        if (!entry.isEncodeEndCalled())
         {
-            isEncodeEndCalled = true;
+            entry.setEncodeEndCalled(true);
             wrapped.encodeEnd(facesContext, uiComponent);
         }
     }
 
     public String convertClientId(FacesContext facesContext, String s)
     {
-        if(this.clientId == null)
+        return wrapped.convertClientId(facesContext, s);
+    }
+
+    public boolean getRendersChildren()
+    {
+        return wrapped.getRendersChildren();
+    }
+
+    public Object getConvertedValue(FacesContext facesContext, UIComponent uiComponent, Object o)
+        throws ConverterException
+    {
+        RendererProxyEntry entry = getOrInitEntry(facesContext, uiComponent);
+
+        if (entry.getConvertedValue() == null)
         {
-            this.clientId = wrapped.convertClientId(facesContext, s);
+            entry.setConvertedValue(wrapped.getConvertedValue(facesContext, uiComponent, o));
         }
-        return this.clientId;
+        return entry.getConvertedValue();
     }
 
-    public boolean getRendersChildren()
+    private RendererProxyEntry getOrInitEntry(FacesContext facesContext, UIComponent uiComponent)
     {
-        if(rendersChildren == null)
+        String clientId = uiComponent.getClientId(facesContext);
+
+        if (!getOrInitComponentProxyMapping().containsKey(clientId))
         {
-            this.rendersChildren = wrapped.getRendersChildren();
+            getOrInitComponentProxyMapping().put(clientId, new RendererProxyEntry());
         }
-        return rendersChildren;
+        return getOrInitComponentProxyMapping().get(clientId);
     }
 
-    public Object getConvertedValue(FacesContext facesContext, UIComponent uiComponent, Object o)
-        throws ConverterException
+    private static final String BEAN_NAME = ExtValRendererProxy.class.getName() + ":BEAN";
+
+    private Map<String, RendererProxyEntry> getOrInitComponentProxyMapping()
     {
-        if(this.convertedValue == null)
+        Map requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+
+        if(!requestMap.containsKey(BEAN_NAME))
         {
-            this.convertedValue = wrapped.getConvertedValue(facesContext, uiComponent, o);
+            requestMap.put(BEAN_NAME, new HashMap<String, Map<String, RendererProxyEntry>>());
         }
-        return this.convertedValue;
+
+        Map<String, Map<String, RendererProxyEntry>> map =
+            ((Map<String, Map<String, RendererProxyEntry>>)requestMap.get(BEAN_NAME));
+
+        String key = this.wrapped.toString();
+
+        if(!map.containsKey(key))
+        {
+            map.put(key, new HashMap<String, RendererProxyEntry>());
+        }
+
+        return map.get(key);
     }
 }
\ No newline at end of file

Modified: myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java?rev=700276&r1=700275&r2=700276&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java Mon Sep 29 14:57:29 2008
@@ -123,37 +123,13 @@
     @Override
     public final String convertClientId(FacesContext facesContext, String s)
     {
-        for(RendererInterceptor rendererInterceptor : extValContext.getRendererInterceptors())
-        {
-            rendererInterceptor.beforeConvertClientId(facesContext, s, this.wrapped);
-        }
-
-        String clientId = wrapped.convertClientId(facesContext, s);
-
-        for(RendererInterceptor rendererInterceptor : extValContext.getRendererInterceptors())
-        {
-            rendererInterceptor.afterConvertClientId(facesContext, s, this.wrapped);
-        }
-
-        return clientId;
+        return wrapped.convertClientId(facesContext, s);
     }
 
     @Override
     public final boolean getRendersChildren()
     {
-        for(RendererInterceptor rendererInterceptor : extValContext.getRendererInterceptors())
-        {
-            rendererInterceptor.beforeGetRendersChildren(this.wrapped);
-        }
-
-        boolean rendersChildren = wrapped.getRendersChildren();
-
-        for(RendererInterceptor rendererInterceptor : extValContext.getRendererInterceptors())
-        {
-            rendererInterceptor.afterGetRendersChildren(this.wrapped);
-        }
-
-        return rendersChildren;
+        return wrapped.getRendersChildren();
     }
 
     public final Object getConvertedValue(FacesContext facesContext, UIComponent uiComponent, Object o)

Added: myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/RendererProxyEntry.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/RendererProxyEntry.java?rev=700276&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/RendererProxyEntry.java (added)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/RendererProxyEntry.java Mon Sep 29 14:57:29 2008
@@ -0,0 +1,87 @@
+/*
+ * 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.extensions.validator.core.renderkit;
+
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.1
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+class RendererProxyEntry
+{
+    private boolean decodeCalled = false;
+    private boolean encodeBeginCalled = false;
+    private boolean encodeChildrenCalled = false;
+    private boolean encodeEndCalled = false;
+
+    private Object convertedValue = null;
+
+    public boolean isDecodeCalled()
+    {
+        return decodeCalled;
+    }
+
+    public void setDecodeCalled(boolean decodeCalled)
+    {
+        this.decodeCalled = decodeCalled;
+    }
+
+    public boolean isEncodeBeginCalled()
+    {
+        return encodeBeginCalled;
+    }
+
+    public void setEncodeBeginCalled(boolean encodeBeginCalled)
+    {
+        this.encodeBeginCalled = encodeBeginCalled;
+    }
+
+    public boolean isEncodeChildrenCalled()
+    {
+        return encodeChildrenCalled;
+    }
+
+    public void setEncodeChildrenCalled(boolean encodeChildrenCalled)
+    {
+        this.encodeChildrenCalled = encodeChildrenCalled;
+    }
+
+    public boolean isEncodeEndCalled()
+    {
+        return encodeEndCalled;
+    }
+
+    public void setEncodeEndCalled(boolean encodeEndCalled)
+    {
+        this.encodeEndCalled = encodeEndCalled;
+    }
+
+    public Object getConvertedValue()
+    {
+        return convertedValue;
+    }
+
+    public void setConvertedValue(Object convertedValue)
+    {
+        this.convertedValue = convertedValue;
+    }
+}