I am using JavaPoet api for generating the source code. However, at some point I am fetching the require details from xml that is ready made string for creating fields then I save the string to Object and then I cast object to FieldSpec but it is giving me Exception. Is that I am casting it in wrong way?
public List<FieldSpec> getFieldSpec() throws JDOMException{
try {
fieldSpec = new ArrayList<FieldSpec>();//com.squareup.javapoet.FieldSpec
SAXBuilder builder = new SAXBuilder();
xmlFile = new File("CodeGenerationXML\\SourceCodeFieldsXML\\Fields.xml");
doc = builder.build(xmlFile);
RootXMLFields = doc.getRootElement();
for(Element field:RootXMLFields.getChild("Fields").getChildren()){
Object ElementField = field.getText();// returns FieldSpec.builder(String.class,"str").initializer("$S","Hello").addModifiers(Modifier.PRIVATE, Modifier.FINAL).build()
fieldSpec.add((FieldSpec) ElementField);
}
} catch (Exception e) {
e.printStackTrace();
}
return fieldSpec;
}
public static void main(String arg[]) throws JDOMException{
new AddUpdateFieldsXML().getFieldSpec();
}
Exception:
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to com.squareup.javapoet.FieldSpec
at RandD.AddUpdateFieldsXML.getFieldSpec(AddUpdateFieldsXML.java:94)
at RandD.AddUpdateFieldsXML.main(AddUpdateFieldsXML.java:103)