Hello,
I think there is a little bug in DefaultMeterdataset:
this is how the "constructor" and method "setRange" look like:
I think "setValue" should be called before "setRange", because when min and max are equal, setRange uses "value" to set min and max before "value" is initialised:
if (min.doubleValue()==max.doubleValue()) {
min = new Double(value.doubleValue() - DEFAULT_ADJ);
max = new Double(value.doubleValue() + DEFAULT_ADJ);
}
So in this case you get a NullPointerException
Isabelle
public DefaultMeterDataset( Number min, Number max, Number value,
Number minCritical, Number maxCritical,
Number minWarning, Number maxWarning,
Number minNormal, Number maxNormal) {
setRange(min, max);
setValue(value);
setCriticalRange(minCritical, maxCritical);
setWarningRange(minWarning, maxWarning);
setNormalRange(minNormal, maxNormal);
}
public void setRange(Number min, Number max) {
if( min==null || max==null) {
throw new IllegalArgumentException( "Min/Max should not be null");
}
if (min.doubleValue()>max.doubleValue()) {
Number temp = min;
min = max;
max = temp;
}
if (min.doubleValue()==max.doubleValue()) {
min = new Double(value.doubleValue() - DEFAULT_ADJ);
max = new Double(value.doubleValue() + DEFAULT_ADJ);
}
this.min = min;
this.max = max;
this.fireDatasetChanged();
}
bug in DefaultMeterDataset?
Re: bug in DefaultMeterDataset?
Sorry,
I just saw that "setRange" also uses "min" and "max", so just switching "setvalue" and "setRange" would not be a solution.
I think setRange should be changed for the case min and max are equal...
Isabelle
I just saw that "setRange" also uses "min" and "max", so just switching "setvalue" and "setRange" would not be a solution.
I think setRange should be changed for the case min and max are equal...
Isabelle