package sharpen.xobotos.api.bindings;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import sharpen.core.framework.IBindingManager.IExtractedEnumInfo;
import sharpen.xobotos.config.ConfigurationException;
@XStreamAlias("enum-binding")
public class EnumBinding extends AbstractTypeBinding {
@XStreamAsAttribute
@XStreamAlias("base-type")
private String _baseType;
@XStreamAlias("value-field")
private String _valueField;
@XStreamAlias("constructor-method")
private String _ctorMethod;
@XStreamAsAttribute
@XStreamAlias("nullable")
private boolean _nullable;
@XStreamAlias("extract-enum")
ExtractedEnumInfo _extract;
public String getBaseType() {
return _baseType;
}
public String getValueField() {
return _valueField;
}
public String getConstructorMethod() {
return _ctorMethod;
}
public boolean isNullable() {
return _nullable;
}
public ExtractedEnumInfo getExtractionInfo() {
return _extract;
}
@XStreamAlias("extract-enum")
public class ExtractedEnumInfo implements IExtractedEnumInfo {
@XStreamAsAttribute
@XStreamAlias("value-field")
String _valueField;
@Override
public String valueField() {
return _valueField;
}
private Object readResolve() {
if (_valueField == null)
throw new ConfigurationException("<extract-enum> is missing <value-field>");
return this;
}
}
}