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;
+ }
+}