Author: konstantin.mishin
Date: 2010-11-26 11:32:05 -0500 (Fri, 26 Nov 2010)
New Revision: 20182
Modified:
sandbox/trunk/ui/fileupload/ui/src/main/java/org/richfaces/component/AbstractFileUpload.java
sandbox/trunk/ui/fileupload/ui/src/main/java/org/richfaces/context/FileUploadPartialViewContextFactory.java
sandbox/trunk/ui/fileupload/ui/src/main/templates/fileupload.template.xml
Log:
RF-9497
Modified:
sandbox/trunk/ui/fileupload/ui/src/main/java/org/richfaces/component/AbstractFileUpload.java
===================================================================
---
sandbox/trunk/ui/fileupload/ui/src/main/java/org/richfaces/component/AbstractFileUpload.java 2010-11-26
16:20:08 UTC (rev 20181)
+++
sandbox/trunk/ui/fileupload/ui/src/main/java/org/richfaces/component/AbstractFileUpload.java 2010-11-26
16:32:05 UTC (rev 20182)
@@ -33,6 +33,7 @@
import javax.faces.event.PostAddToViewEvent;
import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.EventName;
import org.richfaces.cdk.annotations.JsfComponent;
import org.richfaces.cdk.annotations.JsfRenderer;
import org.richfaces.cdk.annotations.Tag;
@@ -52,6 +53,12 @@
@Attribute(defaultValue = "true")
public abstract boolean isEnabled();
+ @Attribute(events = @EventName("filesubmit"))
+ public abstract String getOnfilesubmit();
+
+ @Attribute(events = @EventName("uploadcomplete"))
+ public abstract String getOnuploadcomplete();
+
@Override
public void decode(FacesContext context) {
super.decode(context);
Modified:
sandbox/trunk/ui/fileupload/ui/src/main/java/org/richfaces/context/FileUploadPartialViewContextFactory.java
===================================================================
---
sandbox/trunk/ui/fileupload/ui/src/main/java/org/richfaces/context/FileUploadPartialViewContextFactory.java 2010-11-26
16:20:08 UTC (rev 20181)
+++
sandbox/trunk/ui/fileupload/ui/src/main/java/org/richfaces/context/FileUploadPartialViewContextFactory.java 2010-11-26
16:32:05 UTC (rev 20182)
@@ -48,6 +48,10 @@
*/
public class FileUploadPartialViewContextFactory extends PartialViewContextFactory {
+ private static enum ResponseState {
+ size_exceeded, stopped, server_error
+ };
+
private static final Logger LOGGER = RichfacesLogger.CONTEXT.getLogger();
private static final Pattern AMPERSAND = Pattern.compile("&+");
@@ -90,22 +94,19 @@
String uid = queryParamMap.get(UID_KEY);
if (uid != null) {
if (maxRequestSize != 0 && externalContext.getRequestContentLength()
> maxRequestSize) {
- printResponse(facesContext, "<html id=\"" + UID_KEY +
uid + ":size_restricted\"/>");
- } else if (!checkFileCount(externalContext,
queryParamMap.get("id"))) {
- printResponse(facesContext, "<html id=\"" + UID_KEY +
uid + ":forbidden\"/>");
+ printResponse(facesContext, uid, ResponseState.size_exceeded);
} else {
MultipartRequest multipartRequest = new MultipartRequest(request,
createTempFiles,
tempFilesDirectory, maxRequestSize, uid);
try {
multipartRequest.parseRequest();
if (!multipartRequest.isDone()) {
- printResponse(facesContext, "<html id=\"" +
UID_KEY + uid + ":stopped\"/>");
+ printResponse(facesContext, uid, ResponseState.stopped);
} else {
externalContext.setRequest(multipartRequest);
}
} catch (FileUploadException e) {
- printResponse(facesContext, "<html id=\"" + UID_KEY
+ uid + ":server_error\"/>");
- throw e; // TODO remove it
+ printResponse(facesContext, uid, ResponseState.server_error);
} finally {
multipartRequest.clearRequestData();
}
@@ -114,27 +115,6 @@
return parentFactory.getPartialViewContext(facesContext);
}
- private boolean checkFileCount(ExternalContext externalContext, String idParameter)
{
- // TODO implement this method
- // HttpSession session = externalContext.getSession(false);
- //
- // if (session != null) {
- // Map<String, Integer> map = (Map<String, Integer>) session
- // .getAttribute(FileUploadConstants.UPLOADED_COUNTER);
- //
- // if (map != null) {
- // String id = idParameter;
- // if (id != null) {
- // Integer i = map.get(id);
- // if (i != null && i == 0) {
- // return false;
- // }
- // }
- // }
- // }
- return true;
- }
-
private Map<String, String> parseQueryString(String queryString) {
if (queryString != null) {
Map<String, String> parameters = new HashMap<String, String>();
@@ -165,14 +145,14 @@
}
}
- private void printResponse(FacesContext facesContext, String message) {
+ private void printResponse(FacesContext facesContext, String uid, ResponseState
state) {
facesContext.responseComplete();
ExternalContext externalContext = facesContext.getExternalContext();
externalContext.setResponseStatus(HttpServletResponse.SC_OK);
externalContext.setResponseContentType(MultipartRequest.TEXT_HTML);
try {
Writer writer = externalContext.getResponseOutputWriter();
- writer.write(message);
+ writer.write("<html id=\"" + UID_KEY + uid + ":"
+ state + "\"/>");
writer.close();
} catch (IOException e) {
LOGGER.error(e);
Modified: sandbox/trunk/ui/fileupload/ui/src/main/templates/fileupload.template.xml
===================================================================
--- sandbox/trunk/ui/fileupload/ui/src/main/templates/fileupload.template.xml 2010-11-26
16:20:08 UTC (rev 20181)
+++ sandbox/trunk/ui/fileupload/ui/src/main/templates/fileupload.template.xml 2010-11-26
16:32:05 UTC (rev 20182)
@@ -34,6 +34,7 @@
<cdk:resource-dependency library="org.richfaces"
name="fileupload.ecss" />
<cdk:resource-dependency library="org.richfaces"
name="ajax.reslib" />
<cdk:resource-dependency library="org.richfaces"
name="base-component.reslib" />
+ <cdk:resource-dependency name="richfaces-event.js" />
<cdk:resource-dependency library="org.richfaces"
name="fileupload.js" />
</cc:interface>
<cc:implementation>
@@ -72,7 +73,10 @@
<cdk:call expression="progressBar.encodeAll(facesContext)" />
</c:if>
<iframe name="#{clientId}" class="rf-fu-frm"/>
- <script type="text/javascript">new
RichFaces.ui.FileUpload('#{clientId}');</script>
+ <cdk:scriptObject name="options">
+ <cdk:scriptOption attributes="onfilesubmit onuploadcomplete"/>
+ </cdk:scriptObject>
+ <script type="text/javascript">new
RichFaces.ui.FileUpload(#{toScriptArgs(clientId, options)});</script>
</c:if>
</div>
</cc:implementation>
Show replies by date