package rocks.inspectit.shared.cs.cmr.property.configuration.impl;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import rocks.inspectit.shared.cs.cmr.property.configuration.SingleProperty;
import rocks.inspectit.shared.cs.cmr.property.update.AbstractPropertyUpdate;
import rocks.inspectit.shared.cs.cmr.property.update.impl.LongPropertyUpdate;
/**
* Property holding long values.
*
* @author Ivan Senic
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "long-property")
public class LongProperty extends SingleProperty<Long> {
/**
* Used value.
*/
@XmlAttribute(name = "used-value")
private Long usedValue;
/**
* Default value.
*/
@XmlAttribute(name = "default-value", required = true)
private Long defaultValue;
/**
* No-arg constructor.
*/
public LongProperty() {
}
/**
*
* @param name
* Display name of the property. Can not be <code>null</code>.
* @param description
* Description providing more information on property.
* @param logicalName
* The logical name of the property that is used in the configuration.
* @param defaultValue
* Default value.
* @param advanced
* If the property is advanced, thus should be available only to expert users.
* @param serverRestartRequired
* If the change of this property should trigger server restart.
* @throws IllegalArgumentException
* If name, section, logical name or default value are <code>null</code>.
* @see SingleProperty#SingleProperty(String, String, String, Object, boolean, boolean)
*/
public LongProperty(String name, String description, String logicalName, Long defaultValue, boolean advanced, boolean serverRestartRequired) throws IllegalArgumentException {
super(name, description, logicalName, defaultValue, advanced, serverRestartRequired);
}
@Override
protected AbstractPropertyUpdate<Long> createPropertyUpdate(Long updateValue) {
return new LongPropertyUpdate(this, updateValue);
}
/**
* Gets {@link #usedValue}.
*
* @return {@link #usedValue}
*/
@Override
protected Long getUsedValue() {
return usedValue;
}
/**
* Sets {@link #usedValue}.
*
* @param usedValue
* New value for {@link #usedValue}
*/
@Override
protected void setUsedValue(Long usedValue) {
this.usedValue = usedValue;
}
/**
* Gets {@link #defaultValue}.
*
* @return {@link #defaultValue}
*/
@Override
public Long getDefaultValue() {
return defaultValue;
}
/**
* Sets {@link #defaultValue}.
*
* @param defaultValue
* New value for {@link #defaultValue}
*/
@Override
protected void setDefaultValue(Long defaultValue) {
this.defaultValue = defaultValue;
}
/**
* {@inheritDoc}
*/
@Override
public Long parseLiteral(String literal) {
try {
return Long.parseLong(literal);
} catch (NumberFormatException e) {
return null;
}
}
}