Author: maksimkaszynski
Date: 2008-02-20 14:06:09 -0500 (Wed, 20 Feb 2008)
New Revision: 6226
Modified:
trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/component/UIFileUpload.java
trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/renderkit/FileUploadRendererBase.java
trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/web/MultipartFilter.java
Log:
Review of server-side code
Modified:
trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/component/UIFileUpload.java
===================================================================
---
trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/component/UIFileUpload.java 2008-02-20
19:03:56 UTC (rev 6225)
+++
trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/component/UIFileUpload.java 2008-02-20
19:06:09 UTC (rev 6226)
@@ -5,7 +5,6 @@
import javax.el.MethodExpression;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
-import javax.faces.el.MethodBinding;
import javax.faces.event.FacesEvent;
import org.richfaces.event.FileUploadListener;
@@ -141,7 +140,11 @@
public void broadcast(FacesEvent e) {
if (e instanceof UploadEvent) {
-
+ //FIXME: Maksim -> Aleksej
+ //If event needs to be broadcast to ALL of subscribed listeners.
+ //Need to call super anyway
+ //BTW, why doesn't UploadEvent accept any listeners?
+
FacesContext facesContext = FacesContext.getCurrentInstance();
MethodExpression binding = getFileUploadListener();
if (binding != null) {
Modified:
trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/renderkit/FileUploadRendererBase.java
===================================================================
---
trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/renderkit/FileUploadRendererBase.java 2008-02-20
19:03:56 UTC (rev 6225)
+++
trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/ui/renderkit/FileUploadRendererBase.java 2008-02-20
19:06:09 UTC (rev 6226)
@@ -9,6 +9,7 @@
import javax.el.ValueExpression;
import javax.faces.FactoryFinder;
import javax.faces.component.UIComponent;
+import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.render.RenderKit;
@@ -72,7 +73,17 @@
if ("progress".equals(request.getParameter("action"))) {
AjaxContext ajaxContext = AjaxContextImpl.getCurrentInstance(context);
String uid = request.getParameter("uid");
- HttpSession session = (HttpSession)context.getExternalContext().getSession(false);
+ /*
+ *
+ * FIXME: Maksim --> Andrei
+ * Why not use standard JSF constructs?
+ *
+ ExternalContext externalContext = context.getExternalContext();
+ Map <String, Object> sessionMap = externalContext.getSessionMap();
+
+ */
+
+ HttpSession session = (HttpSession)context.getExternalContext().getSession(false);
Map<String, MultipartRequest> sessions = (Map<String, MultipartRequest>)
session
.getAttribute("_richfaces_upload_sessions");
@@ -83,7 +94,7 @@
}
}
- }else {
+ } else {
new AjaxEvent(component).queue();
}
if (!(request instanceof MultipartRequest)) {
@@ -113,6 +124,8 @@
if (clazz.isAssignableFrom(Map.class)) {
Map map = (Map) data.getValue(context.getELContext());
map.put(fileUpload.getLocalFileName(), file);
+ //FIXME: Maksim --> Andrei
+ // What does Map.empty mean?
map.isEmpty();
}
}
@@ -133,6 +146,8 @@
*
* @see org.ajax4jsf.renderkit.RendererBase#getComponentClass()
*/
+ //FIXME: Maksim --> Andrei
+ //Better use UIFileUpload here. Otherwise you can get NPE here
@Override
protected Class<? extends UIComponent> getComponentClass() {
// TODO Auto-generated method stub
@@ -143,7 +158,13 @@
String action, Object oncomplete) throws IOException {
JSFunction ajaxFunction = AjaxRendererUtils.buildAjaxFunction(
component, context);
+
+ //FIXME: Maksim --> Andrei
+ //Why multiple map.get? In eclipse, use Ctrl+2 then L to introduce local variable
+ //
+
Map options = AjaxRendererUtils.buildEventOptions(context, component);
+
((Map) options.get("parameters")).put("action", action);
((Map) options.get("parameters")).put("uid", new
JSReference("uid"));
if (oncomplete != null) {
@@ -164,6 +185,7 @@
}
// TODO : complete this one
+
public String getFileSizeScript(FacesContext context, UIComponent component)
throws IOException {
JSFunctionDefinition oncomplete = new JSFunctionDefinition();
@@ -178,6 +200,9 @@
}
+ //FIXME: Maksim --> Andrei
+ //Method not used anywhere
+ //WHY?
public Object getLabelMarkup(FacesContext context, UIComponent component)
throws IOException {
CountingOutputWriter customWriter = new CountingOutputWriter();
@@ -282,11 +307,19 @@
if (null == progressBar) {
progressBar = createProgressBar(context, component);
}
+
+ //FIXME: Maksim --> Andrei
+ //What happens if we have two fileuploads on the page?
+ //Two progress bars with identical value?
String exprStr = "#{" + _percentBeanName + "}";
ValueExpression ex = context.getApplication().getExpressionFactory()
.createValueExpression(context.getELContext(), exprStr,
Integer.class);
progressBar.setValueExpression("value", ex);
+
+
+ //FIXME: Maksim --> Andrei
+ //Why set id for user-defined component
progressBar.setId("progressBar");
progressBar.getAttributes().put("minValue", -1);
progressBar.getAttributes().put("enabled", false);
@@ -307,6 +340,8 @@
private UIComponent getProgressLabel(UIComponent component) {
UIComponent label = component.getFacet("progressLabel");
if (label != null) {
+ //FIXME: Maksim --> Andrei
+ //Why set id for user-defined component
label.setId("progressLabel");
}
return label;
Modified:
trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/web/MultipartFilter.java
===================================================================
---
trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/web/MultipartFilter.java 2008-02-20
19:03:56 UTC (rev 6225)
+++
trunk/sandbox/ui/fileUpload/src/main/java/org/richfaces/org/jboss/seam/web/MultipartFilter.java 2008-02-20
19:06:09 UTC (rev 6226)
@@ -89,6 +89,10 @@
"_richfaces_upload_sessions", sessionsMap);
}
}
+
+ //FIXME: Maksim --> Andrei
+ //Can we make _percentBeanName uid-dependent?
+
session.setAttribute(FileUploadRendererBase._percentBeanName, 0);
sessionsMap.put(uid, multipartRequest);