Author: nbelaevski
Date: 2010-05-24 10:03:02 -0400 (Mon, 24 May 2010)
New Revision: 17207
Modified:
root/ui/core/trunk/api/src/main/java/org/richfaces/component/QueueRegistry.java
root/ui/core/trunk/api/src/main/java/org/richfaces/renderkit/html/AttachQueueRenderer.java
root/ui/core/trunk/api/src/main/java/org/richfaces/renderkit/html/QueueRenderer.java
root/ui/core/trunk/api/src/main/java/org/richfaces/renderkit/html/QueueRendererBase.java
root/ui/core/trunk/api/src/test/java/org/richfaces/component/QueueRendererTest.java
root/ui/core/trunk/api/src/test/resources/org/richfaces/component/queue.xhtml
Log:
Queue redesign & fixes
Modified: root/ui/core/trunk/api/src/main/java/org/richfaces/component/QueueRegistry.java
===================================================================
---
root/ui/core/trunk/api/src/main/java/org/richfaces/component/QueueRegistry.java 2010-05-24
13:58:27 UTC (rev 17206)
+++
root/ui/core/trunk/api/src/main/java/org/richfaces/component/QueueRegistry.java 2010-05-24
14:03:02 UTC (rev 17207)
@@ -60,7 +60,7 @@
return registry;
}
- public void registerQueue(String clientName, UIComponent component) {
+ public void addQueue(String clientName, UIComponent component) {
if (!containsQueue(clientName)) {
queuesData.put(clientName, component);
} else {
@@ -68,10 +68,8 @@
}
}
- public void removeQueue(String clientName) {
- if (!containsQueue(clientName)) {
- queuesData.remove(clientName);
- }
+ public UIComponent removeQueue(String clientName) {
+ return queuesData.remove(clientName);
}
public boolean containsQueue(String name) {
Modified:
root/ui/core/trunk/api/src/main/java/org/richfaces/renderkit/html/AttachQueueRenderer.java
===================================================================
---
root/ui/core/trunk/api/src/main/java/org/richfaces/renderkit/html/AttachQueueRenderer.java 2010-05-24
13:58:27 UTC (rev 17206)
+++
root/ui/core/trunk/api/src/main/java/org/richfaces/renderkit/html/AttachQueueRenderer.java 2010-05-24
14:03:02 UTC (rev 17207)
@@ -22,6 +22,7 @@
package org.richfaces.renderkit.html;
import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
import org.richfaces.cdk.annotations.JsfRenderer;
@@ -32,28 +33,8 @@
public class AttachQueueRenderer extends QueueRendererBase {
@Override
- protected String getQueueName(UIComponent comp) {
- return comp.getClientId();
+ protected String getQueueName(FacesContext context, UIComponent comp) {
+ return comp.getClientId(context);
}
- @Override
- protected String findAndSetQueueName(UIComponent comp) {
- String name = null;
- if (comp.getAttributes().get(NAME_ATTRIBBUTE) != null) {
- name = comp.getAttributes().get(NAME_ATTRIBBUTE).toString();
- comp.getAttributes().put(QUEUE_ID_ATTRIBBUTE, name);
- name = getQueueName(comp);
- } else {
- String foundedQueueId = findParentQueueId(comp);
- if (foundedQueueId != null) {
- comp.getAttributes().put(QUEUE_ID_ATTRIBBUTE, foundedQueueId);
- name = getQueueName(comp);
- } else {
- LOGGER
- .warn("Global and form queue for this a4j:attach component can
not be found" + getQueueName(comp));
- return null;
- }
- }
- return name;
- }
}
\ No newline at end of file
Modified:
root/ui/core/trunk/api/src/main/java/org/richfaces/renderkit/html/QueueRenderer.java
===================================================================
---
root/ui/core/trunk/api/src/main/java/org/richfaces/renderkit/html/QueueRenderer.java 2010-05-24
13:58:27 UTC (rev 17206)
+++
root/ui/core/trunk/api/src/main/java/org/richfaces/renderkit/html/QueueRenderer.java 2010-05-24
14:03:02 UTC (rev 17207)
@@ -22,9 +22,10 @@
package org.richfaces.renderkit.html;
import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
import javax.faces.context.FacesContext;
-import org.ajax4jsf.context.ContextInitParameters;
+import org.ajax4jsf.renderkit.RendererUtils;
import org.richfaces.cdk.annotations.JsfRenderer;
import org.richfaces.component.AbstractQueue;
@@ -34,29 +35,21 @@
@JsfRenderer(type = "org.richfaces.QueueRenderer", family =
"org.richfaces.Queue")
public class QueueRenderer extends QueueRendererBase {
- @Override
- protected String findAndSetQueueName(UIComponent comp) {
- String name = null;
- if (comp.getAttributes().get(NAME_ATTRIBBUTE) != null) {
- name = comp.getAttributes().get(NAME_ATTRIBBUTE).toString();
- } else {
- UIComponent parentForm = findParentForm(comp);
- if (parentForm != null) {
- name = parentForm.getClientId();
+ private final RendererUtils utils = RendererUtils.getInstance();
+
+ protected String getQueueName(FacesContext context, UIComponent comp) {
+ String nameAttributeValue = (String) comp.getAttributes().get(NAME_ATTRIBBUTE);
+
+ if (nameAttributeValue == null || nameAttributeValue.length() == 0) {
+ UIForm form = utils.getNestingForm(context, comp);
+ if (form != null) {
+ nameAttributeValue = form.getClientId(context);
} else {
- name = AbstractQueue.GLOBAL_QUEUE_NAME;
- if
(!ContextInitParameters.isGlobalQueueEnabled(FacesContext.getCurrentInstance())) {
- LOGGER.warn("Global queue is disabled by you are using unnamed
queue, so new global queue will be created with defined parameters");
- }
+ nameAttributeValue = AbstractQueue.GLOBAL_QUEUE_NAME;
}
- comp.getAttributes().put(NAME_ATTRIBBUTE, name);
}
- return name;
- }
- @Override
- protected String getQueueName(UIComponent comp) {
- // TODO Auto-generated method stub
- return comp.getAttributes().get(NAME_ATTRIBBUTE).toString();
+ return nameAttributeValue;
}
+
}
\ No newline at end of file
Modified:
root/ui/core/trunk/api/src/main/java/org/richfaces/renderkit/html/QueueRendererBase.java
===================================================================
---
root/ui/core/trunk/api/src/main/java/org/richfaces/renderkit/html/QueueRendererBase.java 2010-05-24
13:58:27 UTC (rev 17206)
+++
root/ui/core/trunk/api/src/main/java/org/richfaces/renderkit/html/QueueRendererBase.java 2010-05-24
14:03:02 UTC (rev 17207)
@@ -24,7 +24,6 @@
import javax.faces.application.ResourceDependencies;
import javax.faces.application.ResourceDependency;
import javax.faces.component.UIComponent;
-import javax.faces.component.UIForm;
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ComponentSystemEvent;
@@ -35,8 +34,6 @@
import javax.faces.event.PreRemoveFromViewEvent;
import javax.faces.render.Renderer;
-import org.ajax4jsf.context.ContextInitParameters;
-import org.richfaces.component.AbstractQueue;
import org.richfaces.component.QueueRegistry;
import org.richfaces.log.RichfacesLogger;
import org.slf4j.Logger;
@@ -44,7 +41,6 @@
/**
* @author Nick Belaevski Base class for rendering Queue
*/
-// @JsfRenderer
@ResourceDependencies( { @ResourceDependency(library = "javax.faces", name =
"jsf.js"),
@ResourceDependency(name = "jquery.js"), @ResourceDependency(name =
"richfaces.js"),
@ResourceDependency(name = "richfaces-queue.js") })
@@ -52,6 +48,8 @@
@ListenerFor(systemEventClass = PreRemoveFromViewEvent.class) })
public abstract class QueueRendererBase extends Renderer implements
ComponentSystemEventListener {
+ //TODO nick - handle ContextInitParameters.isGlobalQueueEnabled(FacesContext)
+
protected static final String QUEUE_ID_ATTRIBBUTE = "queueId";
protected static final String NAME_ATTRIBBUTE = "name";
protected static final Logger LOGGER = RichfacesLogger.COMPONENTS.getLogger();
@@ -60,39 +58,16 @@
UIComponent comp = event.getComponent();
FacesContext context = FacesContext.getCurrentInstance();
+ String queueName = getQueueName(context, comp);
+ QueueRegistry queueRegistry = QueueRegistry.getInstance(context);
+
if (event instanceof PostAddToViewEvent) {
- String name = findAndSetQueueName(comp);
- if (name != null) {
- QueueRegistry.getInstance(context).registerQueue(name, comp);
- }
+ queueRegistry.addQueue(queueName, comp);
} else if (event instanceof PreRemoveFromViewEvent) {
- QueueRegistry.getInstance(context).removeQueue(getQueueName(comp));
+ queueRegistry.removeQueue(queueName);
}
}
- protected abstract String findAndSetQueueName(UIComponent comp);
+ protected abstract String getQueueName(FacesContext context, UIComponent comp);
- protected abstract String getQueueName(UIComponent comp);
-
- protected String findParentQueueId(UIComponent comp) {
- UIComponent parentForm = findParentForm(comp);
- for (UIComponent c : parentForm.getChildren()) {
- if (c instanceof AbstractQueue) {
- return parentForm.getClientId();
- }
- }
- if
(ContextInitParameters.isGlobalQueueEnabled(FacesContext.getCurrentInstance())) {
- return AbstractQueue.GLOBAL_QUEUE_NAME;
- }
- return null;
- }
-
- protected UIComponent findParentForm(UIComponent comp) {
- UIComponent component = comp.getParent();
- while (component != null && !(component instanceof UIForm)) {
- component = component.getParent();
- }
-
- return component;
- }
}
\ No newline at end of file
Modified:
root/ui/core/trunk/api/src/test/java/org/richfaces/component/QueueRendererTest.java
===================================================================
---
root/ui/core/trunk/api/src/test/java/org/richfaces/component/QueueRendererTest.java 2010-05-24
13:58:27 UTC (rev 17206)
+++
root/ui/core/trunk/api/src/test/java/org/richfaces/component/QueueRendererTest.java 2010-05-24
14:03:02 UTC (rev 17207)
@@ -46,10 +46,10 @@
private static final String EXPECTED_QUEUE_SCRIPT =
"RichFaces.queue.setQueueOptions({" +
"'first': {'requestDelay': 400, 'timeout': 100,
'ignoreDupResponses': true}," +
"'form': {'requestDelay': 400}," +
- "'form:firstAttach': {'timeout': 300, 'queueId':
'form', 'requestGroupingId': 'request'}," +
+ "'form:firstAttach': {'timeout': 300,
'requestGroupingId': 'request'}," +
"'second': {'requestDelay': 400, 'timeout': 100,
'ignoreDupResponses': true}," +
- "'form:linkAttach': {'timeout': 500, 'queueId':
'second'}," +
- "'form:secondAttach': {'queueId': 'form'}" +
+ "'form:linkAttach': {'timeout': 500}," +
+ "'form:secondAttach': {}" +
"});";
protected HtmlPage page;
Modified: root/ui/core/trunk/api/src/test/resources/org/richfaces/component/queue.xhtml
===================================================================
---
root/ui/core/trunk/api/src/test/resources/org/richfaces/component/queue.xhtml 2010-05-24
13:58:27 UTC (rev 17206)
+++
root/ui/core/trunk/api/src/test/resources/org/richfaces/component/queue.xhtml 2010-05-24
14:03:02 UTC (rev 17207)
@@ -5,12 +5,6 @@
<h:head>
<title>Test queue page</title>
-
- <h:outputScript name="jsf.js" library="javax.faces" />
- <h:outputScript name="jquery.js" />
- <h:outputScript name="richfaces.js" />
- <h:outputScript name="richfaces-queue.js" />
-
</h:head>
<h:body>
<a4j:queue name="first" ignoreDupResponses="true"
timeout="100" requestDelay="400"/>