Update of /var/cvs/src/org/mmbase/datatypes
In directory james.mmbase.org:/tmp/cvs-serv16404
Modified Files:
DataType.java BasicDataType.java ComparableDataType.java
Log Message:
MMB-1642
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/datatypes
See also: http://www.mmbase.org/jira/browse/MMB-1642
Index: DataType.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/DataType.java,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -b -r1.65 -r1.66
--- DataType.java 16 Feb 2008 22:13:53 -0000 1.65
+++ DataType.java 24 Apr 2008 11:49:55 -0000 1.66
@@ -32,7 +32,7 @@
* @author Pierre van Rooden
* @author Michiel Meeuwissen
* @since MMBase-1.8
- * @version $Id: DataType.java,v 1.65 2008/02/16 22:13:53 nklasens Exp $
+ * @version $Id: DataType.java,v 1.66 2008/04/24 11:49:55 michiel Exp $
* @param <C> Class this DataType
*/
@@ -154,6 +154,12 @@
public C getDefaultValue();
/**
+ * Returns the (locale dependent) default value of this data type,
+ * @since MMBase-1.8.6
+ */
+ public C getDefaultValue(Locale locale, Cloud cloud, Field field);
+
+ /**
* Set the default value for this DataType
* @param def default value
*/
Index: BasicDataType.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/BasicDataType.java,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -b -r1.84 -r1.85
--- BasicDataType.java 25 Mar 2008 21:00:25 -0000 1.84
+++ BasicDataType.java 24 Apr 2008 11:49:55 -0000 1.85
@@ -38,7 +38,7 @@
* @author Pierre van Rooden
* @author Michiel Meeuwissen
* @since MMBase-1.8
- * @version $Id: BasicDataType.java,v 1.84 2008/03/25 21:00:25 nklasens Exp $
+ * @version $Id: BasicDataType.java,v 1.85 2008/04/24 11:49:55 michiel Exp $
*/
public class BasicDataType<C> extends AbstractDescriptor implements
DataType<C>, Cloneable, Comparable<DataType<C>>, Descriptor {
@@ -317,6 +317,19 @@
}
/**
+ * @since MMBase-1.8.6
+ */
+ protected Cloud getCloud(Cloud cloud) {
+ if (cloud == null) {
+ log.info("No cloud found");
+ CloudContext context = ContextProvider.getDefaultCloudContext();
+ if (! context.isUp()) return null;
+ cloud = context.getCloud("mmbase", "class", null);
+ }
+ return cloud;
+ }
+
+ /**
* Before validating the value, the value will be 'cast', on default this
will be to the
* 'correct' type, but it can be a more generic type sometimes. E.g. for
numbers this wil simply
* cast to Number.
@@ -328,10 +341,26 @@
/**
* [EMAIL PROTECTED]
*/
- public C getDefaultValue() {
+ public final C getDefaultValue() {
+ return getDefaultValue(null, null, null);
+ }
+
+ /**
+ * [EMAIL PROTECTED]
+ */
+ public C getDefaultValue(Locale locale, Cloud cloud, Field field) {
if (defaultValue == null) return null;
- return cast(defaultValue, null, null);
+ C res = cast(defaultValue, null, null);
+ if (res != null) return res;
+
+ try {
+ return cast(defaultValue, getCloud(cloud), null, null);
+ } catch (CastException ce) {
+ log.error(ce);
+ return Casting.toType(classType, cloud, preCast(defaultValue,
cloud, null, field));
}
+ }
+
/**
* [EMAIL PROTECTED]
Index: ComparableDataType.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/ComparableDataType.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -b -r1.34 -r1.35
--- ComparableDataType.java 16 Sep 2007 17:55:28 -0000 1.34
+++ ComparableDataType.java 24 Apr 2008 11:49:55 -0000 1.35
@@ -21,7 +21,7 @@
* therefore can have a minimum and a maximum value.
*
* @author Michiel Meeuwissen
- * @version $Id: ComparableDataType.java,v 1.34 2007/09/16 17:55:28 michiel
Exp $
+ * @version $Id: ComparableDataType.java,v 1.35 2008/04/24 11:49:55 michiel
Exp $
* @since MMBase-1.8
*/
public abstract class ComparableDataType<E extends
java.io.Serializable&Comparable<E>> extends BasicDataType<E> {
@@ -103,7 +103,7 @@
*
* If the default value of comparable datatype is somewhy out the range,
it will be truncated into it.
*/
- public final E getDefaultValue() {
+ public final E getDefaultValue(Locale locale, Cloud cloud, Field field) {
E def = super.getDefaultValue();
if (! minRestriction.valid(def, null, null)) {
def = minRestriction.getValue();
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs