You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2013/12/04 01:54:29 UTC
git commit: ISIS-621: improvements to numeric panel converters
Updated Branches:
refs/heads/master 57784e537 -> 48c9e60b0
ISIS-621: improvements to numeric panel converters
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/48c9e60b
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/48c9e60b
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/48c9e60b
Branch: refs/heads/master
Commit: 48c9e60b0b3a7ae4715325e7f856e77929fe28e5
Parents: 57784e5
Author: Dan Haywood <da...@apache.org>
Authored: Wed Dec 4 00:54:16 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Wed Dec 4 00:54:16 2013 +0000
----------------------------------------------------------------------
.../scalars/DateConverterAbstract.java | 6 +-
.../jdkdates/DateConverterForJavaSqlDate.java | 15 +++--
.../jdkdates/DateConverterForJavaUtilDate.java | 24 ++++---
.../scalars/jdkmath/BigDecimalConverter.java | 48 --------------
.../scalars/jdkmath/BigDecimalTextField.java | 48 --------------
.../jdkmath/JavaMathBigDecimalPanel.java | 68 ++++++++++++++++++--
.../jdkmath/JavaMathBigDecimalPanelFactory.java | 8 ++-
.../jdkmath/JavaMathBigIntegerPanel.java | 21 +-----
.../jdkmath/JavaMathBigIntegerPanelFactory.java | 52 +++++++++++++++
.../jodatime/DateConverterForJodaDateTime.java | 14 ++--
.../jodatime/DateConverterForJodaLocalDate.java | 15 +++--
.../DateConverterForJodaLocalDateTime.java | 15 ++++-
.../components/scalars/primitive/BytePanel.java | 18 ++++++
.../scalars/primitive/CharacterPanel.java | 5 --
.../scalars/primitive/DoublePanel.java | 20 ++++++
.../scalars/primitive/FloatPanel.java | 20 ++++++
.../scalars/primitive/IntegerPanel.java | 19 ++++++
.../components/scalars/primitive/LongPanel.java | 19 ++++++
.../scalars/primitive/ShortPanel.java | 19 ++++++
.../jdkmath/BigDecimalConverterTest.java | 13 ++--
20 files changed, 309 insertions(+), 158 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterAbstract.java
index ca160d0..1c6ed99 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterAbstract.java
@@ -20,6 +20,8 @@ package org.apache.isis.viewer.wicket.ui.components.scalars;
import java.util.Locale;
+import org.apache.wicket.util.convert.ConversionException;
+
public abstract class DateConverterAbstract<T> implements DateConverter<T> {
@@ -61,7 +63,7 @@ public abstract class DateConverterAbstract<T> implements DateConverter<T> {
}
@Override
- public T convertToObject(String value, Locale locale) {
+ public T convertToObject(String value, Locale locale) throws ConversionException {
return value != null? doConvertToObject(value, locale): null;
}
@Override
@@ -69,6 +71,6 @@ public abstract class DateConverterAbstract<T> implements DateConverter<T> {
return value != null? doConvertToString(value, locale): null;
}
- protected abstract T doConvertToObject(String value, Locale locale);
+ protected abstract T doConvertToObject(String value, Locale locale) throws ConversionException;
protected abstract String doConvertToString(T value, Locale locale);
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/DateConverterForJavaSqlDate.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/DateConverterForJavaSqlDate.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/DateConverterForJavaSqlDate.java
index a4c6791..1e7554a 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/DateConverterForJavaSqlDate.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/DateConverterForJavaSqlDate.java
@@ -23,6 +23,8 @@ import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
+import org.apache.wicket.util.convert.ConversionException;
+
import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
@@ -38,12 +40,17 @@ public class DateConverterForJavaSqlDate extends DateConverterForJavaAbstract<ja
}
@Override
- protected java.sql.Date doConvertToObject(String value, Locale locale) {
+ protected java.sql.Date doConvertToObject(String value, Locale locale) throws ConversionException {
+ final Date date = convert(value);
+ final java.util.Date adjustedDate = addDays(date, 0-adjustBy);
+ return new java.sql.Date(adjustedDate.getTime());
+ }
+
+ private java.util.Date convert(String value) {
try {
- final java.util.Date parsedJavaUtilDate = addDays(newSimpleDateFormatUsingDatePattern().parse(value), 0-adjustBy);
- return new java.sql.Date(parsedJavaUtilDate.getTime());
+ return newSimpleDateFormatUsingDatePattern().parse(value);
} catch (ParseException e) {
- return null;
+ throw new ConversionException("Cannot convert into a date", e);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/DateConverterForJavaUtilDate.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/DateConverterForJavaUtilDate.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/DateConverterForJavaUtilDate.java
index 51805be..e85fff8 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/DateConverterForJavaUtilDate.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/DateConverterForJavaUtilDate.java
@@ -23,6 +23,8 @@ import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
+import org.apache.wicket.util.convert.ConversionException;
+
import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
@@ -38,21 +40,27 @@ public class DateConverterForJavaUtilDate extends DateConverterForJavaAbstract<j
@Override
- protected java.util.Date doConvertToObject(String value, Locale locale) {
+ protected java.util.Date doConvertToObject(String value, Locale locale) throws ConversionException {
+ final Date date = convert(value);
+ final Date adjustedDate = addDays(date, 0-adjustBy);
+ return adjustedDate;
+ }
+ private java.util.Date convert(String valueStr) {
try {
- return addDays(newSimpleDateFormatUsingDateTimePattern().parse(value), 0-adjustBy);
- } catch (ParseException e) {
+ return newSimpleDateFormatUsingDateTimePattern().parse(valueStr);
+ } catch (ParseException ex) {
try {
- return addDays(newSimpleDateFormatUsingDatePattern().parse(value), 0-adjustBy);
- } catch (ParseException ex) {
- return null;
+ return newSimpleDateFormatUsingDatePattern().parse(valueStr);
+ } catch (ParseException ex2) {
+ throw new ConversionException("Value cannot be converted as a date/time", ex);
}
}
}
@Override
- protected String doConvertToString(java.util.Date value, Locale locale) {
- return newSimpleDateFormatUsingDateTimePattern().format(addDays(value, adjustBy));
+ protected String doConvertToString(java.util.Date value, Locale locale) throws ConversionException {
+ final Date adjustedDate = addDays(value, adjustBy);
+ return newSimpleDateFormatUsingDateTimePattern().format(adjustedDate);
}
private static Date addDays(java.util.Date value, final int days) {
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverter.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverter.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverter.java
deleted file mode 100644
index 5bec427..0000000
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverter.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath;
-
-import java.math.BigDecimal;
-import java.util.Locale;
-
-import org.apache.wicket.util.convert.IConverter;
-
-final class BigDecimalConverter implements IConverter<BigDecimal> {
- private final Integer scale;
- private static final long serialVersionUID = 1L;
-
- BigDecimalConverter(Integer scale) {
- this.scale = scale;
- }
-
- @Override
- public BigDecimal convertToObject(String valueStr, Locale locale) {
- try {
- final BigDecimal value = new BigDecimal(valueStr);
- return scale != null? value.setScale(scale): value;
- } catch (Exception e) {
- return null;
- }
- }
-
- @Override
- public String convertToString(BigDecimal value, Locale locale) {
- return value.toPlainString();
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalTextField.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalTextField.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalTextField.java
deleted file mode 100644
index 58f7a02..0000000
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalTextField.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath;
-
-import java.math.BigDecimal;
-
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.util.convert.IConverter;
-
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-
-final class BigDecimalTextField extends TextField<BigDecimal> {
-
- private final ScalarModel model;
- private static final long serialVersionUID = 1L;
-
- BigDecimalTextField(String id, IModel<BigDecimal> model, Class<BigDecimal> type, ScalarModel model2) {
- super(id, model, type);
- this.model = model2;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <C> IConverter<C> getConverter(Class<C> type) {
-
- final Integer scale = model.getScale();
- return type == BigDecimal.class
- ? (IConverter<C>) new BigDecimalConverter(scale)
- : super.getConverter(type);
- }
- }
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java
index 5096f44..144b624 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java
@@ -20,8 +20,11 @@
package org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath;
import java.math.BigDecimal;
+import java.util.Locale;
import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.util.convert.IConverter;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
@@ -32,21 +35,72 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldN
public class JavaMathBigDecimalPanel extends ScalarPanelTextFieldNumeric<BigDecimal> {
private static final long serialVersionUID = 1L;
+
+ private final IConverter<BigDecimal> threadSafeConverter;
- public JavaMathBigDecimalPanel(final String id, final ScalarModel scalarModel) {
+ public JavaMathBigDecimalPanel(final String id, final ScalarModel scalarModel, final IConverter<BigDecimal> threadSafeConverter) {
super(id, scalarModel, BigDecimal.class);
+ this.threadSafeConverter = threadSafeConverter;
}
- @Override
- protected void addSemantics() {
- super.addSemantics();
+ protected TextField<BigDecimal> createTextField(final String id) {
+ final ScalarModel model = getModel();
+ return new BigDecimalTextField(id, newTextFieldValueModel(), cls, model, threadSafeConverter);
}
- protected TextField<BigDecimal> createTextField(final String id) {
+ static final class BigDecimalTextField extends TextField<BigDecimal> {
- final ScalarModel model = getModel();
+ private static final long serialVersionUID = 1L;
- return new BigDecimalTextField(id, newTextFieldValueModel(), cls, model);
+ private final ScalarModel scalarModel;
+ private final IConverter<BigDecimal> threadSafeConverter;
+
+ BigDecimalTextField(
+ final String id, final IModel<BigDecimal> model, final Class<BigDecimal> type,
+ final ScalarModel scalarModel,
+ final IConverter<BigDecimal> threadSafeConverter) {
+ super(id, model, type);
+ this.scalarModel = scalarModel;
+ this.threadSafeConverter = threadSafeConverter;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <C> IConverter<C> getConverter(Class<C> type) {
+ final Integer scale = scalarModel.getScale();
+ if (type != BigDecimal.class) {
+ return super.getConverter(type);
+ }
+ if (scale == null) {
+ return (IConverter<C>) threadSafeConverter;
+ }
+ return (IConverter<C>) new ConverterWithScale(scale, threadSafeConverter);
+ }
}
+
+ static final class ConverterWithScale implements IConverter<BigDecimal> {
+ private static final long serialVersionUID = 1L;
+
+ private final Integer scale;
+ private final IConverter<BigDecimal> converter;
+
+ ConverterWithScale(Integer scale, IConverter<BigDecimal> threadSafeConverter) {
+ this.scale = scale;
+ this.converter = threadSafeConverter;
+ }
+ @Override
+ public BigDecimal convertToObject(String valueStr, Locale locale) {
+ final BigDecimal bd = converter.convertToObject(valueStr, locale);
+ return bd != null ? bd.setScale(this.scale) : null;
+ }
+
+ @Override
+ public String convertToString(BigDecimal value, Locale locale) {
+ return converter.convertToString(value, locale);
+ }
+ }
}
+
+
+
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanelFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanelFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanelFactory.java
index bfe6bb9..beaef5a 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanelFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanelFactory.java
@@ -19,7 +19,11 @@
package org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath;
+import java.math.BigDecimal;
+
import org.apache.wicket.Component;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.util.convert.converter.BigDecimalConverter;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
@@ -32,13 +36,15 @@ public class JavaMathBigDecimalPanelFactory extends ComponentFactoryScalarAbstra
private static final long serialVersionUID = 1L;
+ private final IConverter<BigDecimal> threadSafeConverter = new BigDecimalConverter();
+
public JavaMathBigDecimalPanelFactory() {
super(JavaMathBigDecimalPanel.class, java.math.BigDecimal.class);
}
@Override
public Component createComponent(final String id, final ScalarModel scalarModel) {
- return new JavaMathBigDecimalPanel(id, scalarModel);
+ return new JavaMathBigDecimalPanel(id, scalarModel, threadSafeConverter);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java
index 5e5eea0..2147416 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java
@@ -30,6 +30,7 @@ import org.apache.wicket.util.convert.converter.AbstractIntegerConverter;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
+import org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath.JavaMathBigIntegerPanelFactory.BigIntegerConverter;
/**
* Panel for rendering scalars of type {@link BigInteger}.
@@ -61,26 +62,10 @@ public class JavaMathBigIntegerPanel extends ScalarPanelTextFieldNumeric<BigInte
return new TextField<BigInteger>(ID_SCALAR_VALUE, new TextFieldValueModel<BigInteger>(this), BigInteger.class) {
private static final long serialVersionUID = 1L;
-// @Override
-// public IConverter getConverter(Class<?> type) {
-// return type == BigInteger.class? CONVERTER: super.getConverter(type);
-// }
-
+ @SuppressWarnings("unchecked")
@Override
public <C> IConverter<C> getConverter(Class<C> type) {
- @SuppressWarnings("unchecked")
- final IConverter<C> converter = (IConverter<C>) new AbstractIntegerConverter<BigInteger>() {
- private static final long serialVersionUID = 1L;
- @Override
- public BigInteger convertToObject(String value, Locale locale) {
- return new BigInteger(value);
- }
- @Override
- protected Class<BigInteger> getTargetType() {
- return BigInteger.class;
- }
- };
- return type == BigInteger.class? converter: super.getConverter(type);
+ return (IConverter<C>) (type == BigInteger.class? BigIntegerConverter.INSTANCE: super.getConverter(type));
}
};
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanelFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanelFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanelFactory.java
index c047520..bd10c2b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanelFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanelFactory.java
@@ -19,7 +19,17 @@
package org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Locale;
+
import org.apache.wicket.Component;
+import org.apache.wicket.util.convert.ConversionException;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.util.convert.converter.AbstractIntegerConverter;
+import org.apache.wicket.util.convert.converter.BigDecimalConverter;
+import org.apache.wicket.util.convert.converter.IntegerConverter;
+import org.apache.wicket.util.string.Strings;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
@@ -30,6 +40,48 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.ComponentFactoryScala
*/
public class JavaMathBigIntegerPanelFactory extends ComponentFactoryScalarAbstract {
+ public static final class BigIntegerConverter extends AbstractIntegerConverter<BigInteger> {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * The singleton instance for a big integer converter
+ * (cf the Wicket subclasses)
+ */
+ public static final IConverter<BigInteger> INSTANCE = new BigIntegerConverter();
+
+ @Override
+ public BigInteger convertToObject(String value, Locale locale) throws ConversionException {
+ if (Strings.isEmpty(value))
+ {
+ return null;
+ }
+
+ final Number number = parse(value, -Double.MAX_VALUE, Double.MAX_VALUE, locale);
+
+ if (number instanceof BigInteger)
+ {
+ return (BigInteger)number;
+ }
+ else if (number instanceof Long)
+ {
+ return BigInteger.valueOf(number.longValue());
+ }
+ else if (number instanceof Integer)
+ {
+ return BigInteger.valueOf(number.intValue());
+ }
+ else
+ {
+ return new BigInteger(value);
+ }
+ }
+
+ @Override
+ protected Class<BigInteger> getTargetType() {
+ return BigInteger.class;
+ }
+ }
+
private static final long serialVersionUID = 1L;
public JavaMathBigIntegerPanelFactory() {
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaDateTime.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaDateTime.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaDateTime.java
index 0b63d58..f08ab6e 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaDateTime.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaDateTime.java
@@ -20,6 +20,7 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.jodatime;
import java.util.Locale;
+import org.apache.wicket.util.convert.ConversionException;
import org.joda.time.DateTime;
import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
@@ -38,14 +39,19 @@ public class DateConverterForJodaDateTime extends DateConverterForJodaAbstract<D
@Override
- protected DateTime doConvertToObject(String value, Locale locale) {
+ protected DateTime doConvertToObject(String value, Locale locale) throws ConversionException {
+ final DateTime parsedDateTime = convert(value);
+ return parsedDateTime.minusDays(adjustBy);
+ }
+
+ private DateTime convert(String value) throws ConversionException {
try {
- return getFormatterForDateTimePattern().parseDateTime(value).minusDays(adjustBy);
+ return getFormatterForDateTimePattern().parseDateTime(value);
} catch(IllegalArgumentException ex) {
try {
- return getFormatterForDatePattern().parseDateTime(value).minusDays(adjustBy);
+ return getFormatterForDatePattern().parseDateTime(value);
} catch(IllegalArgumentException ex2) {
- return null;
+ throw new ConversionException("Cannot convert into a date/time", ex2);
}
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaLocalDate.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaLocalDate.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaLocalDate.java
index c709b8b..b895973 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaLocalDate.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaLocalDate.java
@@ -20,6 +20,7 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.jodatime;
import java.util.Locale;
+import org.apache.wicket.util.convert.ConversionException;
import org.joda.time.LocalDate;
import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
@@ -37,12 +38,18 @@ public class DateConverterForJodaLocalDate extends DateConverterForJodaAbstract<
}
@Override
- protected LocalDate doConvertToObject(String value, Locale locale) {
+ protected LocalDate doConvertToObject(String value, Locale locale) throws ConversionException {
+ LocalDate date = convert(value);
+ LocalDate adjustedDate = date.minusDays(adjustBy);
+ return adjustedDate;
+ }
+
+ private LocalDate convert(String value) throws ConversionException {
try {
- final LocalDate dt = getFormatterForDatePattern().parseLocalDate(value);
- return dt.minusDays(adjustBy);
+ LocalDate date = getFormatterForDatePattern().parseLocalDate(value);
+ return date;
} catch(IllegalArgumentException ex) {
- return null;
+ throw new ConversionException("Cannot convert into a date", ex);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaLocalDateTime.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaLocalDateTime.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaLocalDateTime.java
index a65ddde..d93750b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaLocalDateTime.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/DateConverterForJodaLocalDateTime.java
@@ -20,6 +20,7 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.jodatime;
import java.util.Locale;
+import org.apache.wicket.util.convert.ConversionException;
import org.joda.time.LocalDateTime;
import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
@@ -38,13 +39,21 @@ public class DateConverterForJodaLocalDateTime extends DateConverterForJodaAbstr
@Override
protected LocalDateTime doConvertToObject(String value, Locale locale) {
+ LocalDateTime dateTime = convert(value);
+ LocalDateTime adjustedDateTime = dateTime.minusDays(adjustBy);
+ return adjustedDateTime;
+ }
+
+ private LocalDateTime convert(String value) {
try {
- return getFormatterForDateTimePattern().parseLocalDateTime(value).minusDays(adjustBy);
+ final LocalDateTime dateTime = getFormatterForDateTimePattern().parseLocalDateTime(value);
+ return dateTime;
} catch(IllegalArgumentException ex) {
try {
- return getFormatterForDatePattern().parseLocalDateTime(value).minusDays(adjustBy);
+ final LocalDateTime dateTime = getFormatterForDatePattern().parseLocalDateTime(value);
+ return dateTime;
} catch(IllegalArgumentException ex2) {
- return null;
+ throw new ConversionException("Cannot convert into a date/time", ex);
}
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java
index be2f992..bb85b0c 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java
@@ -19,8 +19,14 @@
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
+import org.apache.wicket.markup.html.form.AbstractTextComponent;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.util.convert.converter.ByteConverter;
+
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
+import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
/**
* Panel for rendering scalars of type {@link Byte} or <tt>byte</tt>.
@@ -33,5 +39,17 @@ public class BytePanel extends ScalarPanelTextFieldNumeric<Byte> {
super(id, scalarModel, Byte.class);
}
+ @Override
+ protected AbstractTextComponent<Byte> createTextFieldForRegular() {
+ return new TextField<Byte>(ID_SCALAR_VALUE, new TextFieldValueModel<Byte>(this), Byte.class) {
+ private static final long serialVersionUID = 1L;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <C> IConverter<C> getConverter(Class<C> type) {
+ return (IConverter<C>) (type == Byte.class? ByteConverter.INSTANCE: super.getConverter(type));
+ }
+ };
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java
index cf22bb9..61217d0 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java
@@ -34,9 +34,4 @@ public class CharacterPanel extends ScalarPanelTextFieldParseableAbstract {
super(id, ID_SCALAR_VALUE, scalarModel);
}
- @Override
- protected void addSemantics() {
- super.addSemantics();
- }
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java
index 084c2fd..32cff69 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java
@@ -19,8 +19,14 @@
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
+import org.apache.wicket.markup.html.form.AbstractTextComponent;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.util.convert.converter.DoubleConverter;
+
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
+import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
/**
* Panel for rendering scalars of type {@link Double} or <tt>double</tt>.
@@ -32,4 +38,18 @@ public class DoublePanel extends ScalarPanelTextFieldNumeric<Double> {
public DoublePanel(final String id, final ScalarModel scalarModel) {
super(id, scalarModel, Double.class);
}
+
+ @Override
+ protected AbstractTextComponent<Double> createTextFieldForRegular() {
+ return new TextField<Double>(ID_SCALAR_VALUE, new TextFieldValueModel<Double>(this), Double.class) {
+ private static final long serialVersionUID = 1L;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <C> IConverter<C> getConverter(Class<C> type) {
+ return (IConverter<C>) (type == Double.class? DoubleConverter.INSTANCE: super.getConverter(type));
+ }
+ };
+ }
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java
index cfc0290..a411934 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java
@@ -19,8 +19,14 @@
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
+import org.apache.wicket.markup.html.form.AbstractTextComponent;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.util.convert.converter.FloatConverter;
+
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
+import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
/**
* Panel for rendering scalars of type {@link Float} or <tt>float</tt>.
@@ -33,4 +39,18 @@ public class FloatPanel extends ScalarPanelTextFieldNumeric<Float> {
super(id, scalarModel, Float.class);
}
+ @Override
+ protected AbstractTextComponent<Float> createTextFieldForRegular() {
+ return new TextField<Float>(ID_SCALAR_VALUE, new TextFieldValueModel<Float>(this), Float.class) {
+ private static final long serialVersionUID = 1L;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <C> IConverter<C> getConverter(Class<C> type) {
+ return (IConverter<C>) (type == Float.class? FloatConverter.INSTANCE: super.getConverter(type));
+ }
+ };
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java
index be40fba..a0829e5 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java
@@ -19,8 +19,14 @@
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
+import org.apache.wicket.markup.html.form.AbstractTextComponent;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.util.convert.converter.IntegerConverter;
+
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
+import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
/**
* Panel for rendering scalars of type {@link Integer} or <tt>int</tt>.
@@ -33,4 +39,17 @@ public class IntegerPanel extends ScalarPanelTextFieldNumeric<Integer> {
super(id, scalarModel, Integer.class);
}
+ @Override
+ protected AbstractTextComponent<Integer> createTextFieldForRegular() {
+ return new TextField<Integer>(ID_SCALAR_VALUE, new TextFieldValueModel<Integer>(this), Integer.class) {
+ private static final long serialVersionUID = 1L;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <C> IConverter<C> getConverter(Class<C> type) {
+ return (IConverter<C>) (type == Integer.class? IntegerConverter.INSTANCE: super.getConverter(type));
+ }
+ };
+ }
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java
index 69b8493..6879f18 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java
@@ -19,8 +19,14 @@
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
+import org.apache.wicket.markup.html.form.AbstractTextComponent;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.util.convert.converter.LongConverter;
+
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
+import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
/**
* Panel for rendering scalars of type {@link Long} or <tt>long</tt>.
@@ -33,4 +39,17 @@ public class LongPanel extends ScalarPanelTextFieldNumeric<Long> {
super(id, scalarModel, Long.class);
}
+ @Override
+ protected AbstractTextComponent<Long> createTextFieldForRegular() {
+ return new TextField<Long>(ID_SCALAR_VALUE, new TextFieldValueModel<Long>(this), Long.class) {
+ private static final long serialVersionUID = 1L;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <C> IConverter<C> getConverter(Class<C> type) {
+ return (IConverter<C>) (type == Long.class? LongConverter.INSTANCE: super.getConverter(type));
+ }
+ };
+ }
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java
index 0e463c7..7e7494d 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java
@@ -19,8 +19,14 @@
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
+import org.apache.wicket.markup.html.form.AbstractTextComponent;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.util.convert.converter.ShortConverter;
+
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
+import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
/**
* Panel for rendering scalars of type {@link Short} or <tt>short</tt>.
@@ -34,4 +40,17 @@ public class ShortPanel extends ScalarPanelTextFieldNumeric<Short> {
super(id, scalarModel, Short.class);
}
+ @Override
+ protected AbstractTextComponent<Short> createTextFieldForRegular() {
+ return new TextField<Short>(ID_SCALAR_VALUE, new TextFieldValueModel<Short>(this), Short.class) {
+ private static final long serialVersionUID = 1L;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <C> IConverter<C> getConverter(Class<C> type) {
+ return (IConverter<C>) (type == Short.class? ShortConverter.INSTANCE: super.getConverter(type));
+ }
+ };
+ }
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/48c9e60b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverterTest.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverterTest.java b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverterTest.java
index 9cac7b8..1501e04 100644
--- a/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverterTest.java
+++ b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverterTest.java
@@ -19,7 +19,9 @@
package org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath;
import java.math.BigDecimal;
+import java.util.Locale;
+import org.apache.wicket.util.convert.converter.BigDecimalConverter;
import org.junit.Assert;
import org.junit.Test;
@@ -29,10 +31,10 @@ public class BigDecimalConverterTest {
final BigDecimal bd_123_45_scale4 = new BigDecimal("123.45").setScale(4);
final BigDecimal bd_123_4500_scale2 = new BigDecimal("123.4500").setScale(2);
final BigDecimal bd_123_4500_scale4 = new BigDecimal("123.4500").setScale(4);
-
+
@Test
public void test_scale2() {
- final BigDecimal actual = new BigDecimalConverter(2).convertToObject("123.45", null);
+ final BigDecimal actual = new JavaMathBigDecimalPanel.ConverterWithScale(2, new BigDecimalConverter()).convertToObject("123.45", Locale.ENGLISH);
Assert.assertEquals(bd_123_4500_scale2, actual);
Assert.assertEquals(bd_123_45_scale2, actual);
@@ -42,7 +44,7 @@ public class BigDecimalConverterTest {
@Test
public void test_scale4() {
- final BigDecimal actual = new BigDecimalConverter(4).convertToObject("123.45", null);
+ final BigDecimal actual = new JavaMathBigDecimalPanel.ConverterWithScale(4, new BigDecimalConverter()).convertToObject("123.45", Locale.ENGLISH);
Assert.assertNotEquals(bd_123_4500_scale2, actual);
Assert.assertNotEquals(bd_123_45_scale2, actual);
@@ -51,14 +53,13 @@ public class BigDecimalConverterTest {
}
@Test
- public void test_scaleNull() {
- final BigDecimal actual = new BigDecimalConverter(null).convertToObject("123.45", null);
+ public void otherLocale() {
+ final BigDecimal actual = new JavaMathBigDecimalPanel.ConverterWithScale(2, new BigDecimalConverter()).convertToObject("123,45", Locale.ITALIAN);
Assert.assertEquals(bd_123_4500_scale2, actual);
Assert.assertEquals(bd_123_45_scale2, actual);
Assert.assertNotEquals(bd_123_4500_scale4, actual);
Assert.assertNotEquals(bd_123_45_scale4, actual);
}
-
}