package sharpen.xobotos.api.actions; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import org.eclipse.jdt.core.dom.FieldDeclaration; import sharpen.core.csharp.ast.CSField; import sharpen.core.csharp.ast.CSStringLiteralExpression; import sharpen.xobotos.api.TypeReference; import sharpen.xobotos.api.templates.FieldTemplate; import sharpen.xobotos.generator.FieldBuilder; @XStreamAlias(value = "modify-field") public class ModifyField extends ModifyMember<FieldDeclaration, CSField, FieldTemplate, FieldBuilder> { @XStreamAlias("field-type") private TypeReference _fieldType; @XStreamAlias("field-initializer") private FieldInitializer _fieldInitializer; @Override protected Class<FieldDeclaration> getNodeType() { return FieldDeclaration.class; } @Override protected Class<FieldBuilder> getBuilderType() { return FieldBuilder.class; } @Override public void modify(FieldBuilder builder, FieldDeclaration node, CSField field) { if (_fieldType != null) field.type(_fieldType.getExpression()); if (_fieldInitializer != null) { final String code = _fieldInitializer.code(); if (code != null) field.initializer(new CSStringLiteralExpression(code)); else field.initializer(null); } super.modify(builder, node, field); } @XStreamAlias("field-initializer") class FieldInitializer { @XStreamAsAttribute @XStreamAlias("code") private String _code; public String code() { return _code; } } }