Author: nbelaevski
Date: 2010-05-24 09:28:11 -0400 (Mon, 24 May 2010)
New Revision: 17205
Modified:
root/core/trunk/impl/src/main/java/org/richfaces/resource/DefaultResourceCodec.java
Log:
Fixed wrong request parameter encoding in DefaultResourceCodec#getResourceKey(...) method
Modified:
root/core/trunk/impl/src/main/java/org/richfaces/resource/DefaultResourceCodec.java
===================================================================
---
root/core/trunk/impl/src/main/java/org/richfaces/resource/DefaultResourceCodec.java 2010-05-24
12:33:38 UTC (rev 17204)
+++
root/core/trunk/impl/src/main/java/org/richfaces/resource/DefaultResourceCodec.java 2010-05-24
13:28:11 UTC (rev 17205)
@@ -68,7 +68,9 @@
return
context.getExternalContext().getRequestParameterMap().get(RESOURCE_VERSION_PARAM);
}
- public String encodeResource(FacesContext context, String resourceName, Object
resourceData, String resourceVersion) {
+ private String encodeResource(FacesContext context, String resourceName, String
encodedResourceData,
+ boolean dataIsBytesArray, String resourceVersion) {
+
boolean parameterAppended = false;
StringBuilder sb = new StringBuilder();
@@ -85,45 +87,50 @@
sb.append(Util.encodeURIQueryPart(resourceVersion));
}
+ if (encodedResourceData != null && encodedResourceData.length() != 0) {
+ if (!parameterAppended) {
+ sb.append('?');
+ parameterAppended = true;
+ } else {
+ sb.append('&');
+ }
+
+ sb.append(dataIsBytesArray ? RESOURCE_DATA_BYTES_ARRAY_PARAM :
RESOURCE_DATA_OBJECT_PARAM);
+ sb.append('=');
+ sb.append(Util.encodeURIQueryPart(encodedResourceData));
+ }
+
+ return sb.toString();
+ }
+
+ public String encodeResource(FacesContext context, String resourceName, Object
resourceData, String resourceVersion) {
+ String encodedDataString = null;
+ boolean isBytesArray = false;
if (resourceData != null) {
- String encodedDataString = null;
- boolean isBytesArray = false;
-
if (resourceData instanceof byte[]) {
isBytesArray = true;
encodedDataString = Util.encodeBytesData((byte[]) resourceData);
} else {
encodedDataString = Util.encodeObjectData(resourceData);
}
-
- if (encodedDataString != null) {
- if (!parameterAppended) {
- sb.append('?');
- parameterAppended = true;
- } else {
- sb.append('&');
- }
-
- sb.append(isBytesArray ? RESOURCE_DATA_BYTES_ARRAY_PARAM :
RESOURCE_DATA_OBJECT_PARAM);
- sb.append('=');
- sb.append(Util.encodeURIQueryPart(encodedDataString));
- }
}
- return sb.toString();
+ return encodeResource(context, resourceName, encodedDataString, isBytesArray,
resourceVersion);
}
public String getResourceKey(FacesContext context, String requestPath) {
Map<String, String> paramMap =
context.getExternalContext().getRequestParameterMap();
+ boolean isBytesArray = true;
String resourceDataString = paramMap.get(RESOURCE_DATA_BYTES_ARRAY_PARAM);
if (resourceDataString == null) {
resourceDataString = paramMap.get(RESOURCE_DATA_OBJECT_PARAM);
+ isBytesArray = false;
}
String resourceVersionString = paramMap.get(RESOURCE_VERSION_PARAM);
return encodeResource(context, decodeResourceName(context, requestPath),
- resourceDataString, resourceVersionString);
+ resourceDataString, isBytesArray, resourceVersionString);
}
}
Show replies by date