1. I don't know that it is official - it's more common sense: If code
exists to convert an object from one type to another, why write more
code that does the same thing?
2. I don't know. We would have to look for similar code.
3. The best thing to do would be to use stronger data typing. An HTTP
(or URL) parameter should be a type - instead of using a String. If we
had a type for that, then all kinds of convenient behavior could be
attached to it (like encoding/decoding, etc).
-Adrian
On 5/13/2010 9:09 AM, David E Jones wrote:
Which brings up some questions:
1. is there an "official" way to convert types that should be used everywhere
(I think that's what you're saying)?
2. how many things are not using that?
3. does the official way handle Object -> String conversions for human versus
machine (ie HTTP parameter) use?
-David
On May 13, 2010, at 8:54 AM, Adrian Crum wrote:
Just an observation, not commenting on this commit specifically:
The conversion to String should use the ObjectType.simpleTypeConvert(...)
method - there are a lot of conversions being missed in this code.
-Adrian
On 5/13/2010 1:32 AM, jone...@apache.org wrote:
Author: jonesde
Date: Thu May 13 08:32:09 2010
New Revision: 943843
URL: http://svn.apache.org/viewvc?rev=943843&view=rev
Log:
Made widget link parameter treatment more consistent; before if you specified a
paramaeter name without a from-field then it wouldn't convert the object
according to locale; now it does the same thing no matter where the object
comes from (ie explicit from-field or implied by the parameter name); this
fixes a timeZone inconsistency that causes links with time/timestamp parameters
to not work
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetWorker.java
Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetWorker.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetWorker.java?rev=943843&r1=943842&r2=943843&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetWorker.java
(original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetWorker.java Thu May
13 08:32:09 2010
@@ -30,6 +30,7 @@ import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.StringUtil;
import org.ofbiz.base.util.UtilDateTime;
import org.ofbiz.base.util.UtilGenerics;
@@ -316,44 +317,41 @@ public class WidgetWorker {
public String getValue(Map<String, Object> context) {
if (this.value != null) {
return this.value.expandString(context);
- } else if (this.fromField != null&& this.fromField.get(context)
!= null) {
- Object retVal = this.fromField.get(context);
+ }
+
+ Object retVal = null;
+ if (this.fromField != null&& this.fromField.get(context) !=
null) {
+ retVal = this.fromField.get(context);
+ } else {
+ retVal = context.get(this.name);
+ }
+
+ if (retVal != null) {
+ TimeZone timeZone = (TimeZone) context.get("timeZone");
+ if (timeZone == null) timeZone = TimeZone.getDefault();
- if (retVal != null) {
- TimeZone timeZone = (TimeZone) context.get("timeZone");
- if (timeZone == null) timeZone = TimeZone.getDefault();
-
- String returnValue = null;
- // format string based on the user's time zone (not locale
because these are parameters)
- if (retVal instanceof Double || retVal instanceof Float ||
retVal instanceof BigDecimal) {
- returnValue = retVal.toString();
- } else if (retVal instanceof java.sql.Date) {
- DateFormat df =
UtilDateTime.toDateFormat(UtilDateTime.DATE_FORMAT, timeZone, null);
- returnValue = df.format((java.util.Date) retVal);
- } else if (retVal instanceof java.sql.Time) {
- DateFormat df =
UtilDateTime.toTimeFormat(UtilDateTime.TIME_FORMAT, timeZone, null);
- returnValue = df.format((java.util.Date) retVal);
- } else if (retVal instanceof java.sql.Timestamp) {
- DateFormat df =
UtilDateTime.toDateTimeFormat(UtilDateTime.DATE_TIME_FORMAT, timeZone, null);
- returnValue = df.format((java.util.Date) retVal);
- } else if (retVal instanceof java.util.Date) {
- DateFormat df = UtilDateTime.toDateTimeFormat("EEE MMM dd
hh:mm:ss z yyyy", timeZone, null);
- returnValue = df.format((java.util.Date) retVal);
- } else {
- returnValue = retVal.toString();
- }
- return returnValue;
+ String returnValue = null;
+ // format string based on the user's time zone (not locale
because these are parameters)
+ if (retVal instanceof Double || retVal instanceof Float ||
retVal instanceof BigDecimal) {
+ returnValue = retVal.toString();
+ } else if (retVal instanceof java.sql.Date) {
+ DateFormat df =
UtilDateTime.toDateFormat(UtilDateTime.DATE_FORMAT, timeZone, null);
+ returnValue = df.format((java.util.Date) retVal);
+ } else if (retVal instanceof java.sql.Time) {
+ DateFormat df =
UtilDateTime.toTimeFormat(UtilDateTime.TIME_FORMAT, timeZone, null);
+ returnValue = df.format((java.util.Date) retVal);
+ } else if (retVal instanceof java.sql.Timestamp) {
+ DateFormat df =
UtilDateTime.toDateTimeFormat(UtilDateTime.DATE_TIME_FORMAT, timeZone, null);
+ returnValue = df.format((java.util.Date) retVal);
+ } else if (retVal instanceof java.util.Date) {
+ DateFormat df = UtilDateTime.toDateTimeFormat("EEE MMM dd
hh:mm:ss z yyyy", timeZone, null);
+ returnValue = df.format((java.util.Date) retVal);
} else {
- return null;
+ returnValue = retVal.toString();
}
+ return returnValue;
} else {
- // as a last chance try finding a context field with the key
of the name field
- Object obj = context.get(this.name);
- if (obj != null) {
- return obj.toString();
- } else {
- return null;
- }
+ return null;
}
}
}