Program: 143364
Project: 143364
Buggy source:
@Test public void testCustomComponentWithFormProperty() throws RepositoryException, JSONException {
  Form form=solution.getForm("String_Node_Str");
  Assert.assertNotNull(form);
  DataAdapterList dataAdapterList=new DataAdapterList(new TestFormController(form,client));
  Form tabForm=solution.createNewForm(validator,null,"String_Node_Str",null,false,new Dimension(600,400));
  Bean bean=form.createNewBean("String_Node_Str","String_Node_Str");
  bean.setInnerHTML("String_Node_Str");
  List<FormElement> formElements=FormElementHelper.INSTANCE.getFormElements(form.getAllObjects(),new ServoyDataConverterContext(client));
  Assert.assertEquals(1,formElements.size());
  WebFormComponent wc=ComponentFactory.createComponent(client,dataAdapterList,formElements.get(0),null);
  Map<String,Object> type=(Map<String,Object>)wc.getProperty("String_Node_Str");
  Assert.assertNull(type);
  form.removeChild(bean);
  WebComponent webComponent=form.createNewWebComponent("String_Node_Str","String_Node_Str");
  webComponent.setProperty("String_Node_Str",new ServoyJSONObject("String_Node_Str",false));
  formElements=FormElementHelper.INSTANCE.getFormElements(form.getAllObjects(),new ServoyDataConverterContext(client));
  Assert.assertEquals(1,formElements.size());
  wc=ComponentFactory.createComponent(client,dataAdapterList,formElements.get(0),null);
  type=(Map<String,Object>)wc.getProperty("String_Node_Str");
  Assert.assertEquals("String_Node_Str",type.get("String_Node_Str"));
  Assert.assertEquals("String_Node_Str",type.get("String_Node_Str"));
  Assert.assertEquals(0,wc.getAndClearChanges().content.size());
  TypedData<Map<String,Object>> props=wc.getProperties();
  String json=JSONUtils.writeDataWithConversions(props.content,props.contentType,null);
  Assert.assertEquals("String_Node_Str",json);
}

Fixed version (ground truth):
@Test public void testCustomComponentWithFormProperty() throws RepositoryException, JSONException {
  Form form=solution.getForm("String_Node_Str");
  Assert.assertNotNull(form);
  DataAdapterList dataAdapterList=new DataAdapterList(new TestFormController(form,client));
  Form tabForm=solution.createNewForm(validator,null,"String_Node_Str",null,false,new Dimension(600,400));
  List<FormElement> formElements=FormElementHelper.INSTANCE.getFormElements(form.getAllObjects(),new ServoyDataConverterContext(client));
  @SuppressWarnings("String_Node_Str") WebComponent webComponent=form.createNewWebComponent("String_Node_Str","String_Node_Str");
  webComponent.setProperty("String_Node_Str",new ServoyJSONObject("String_Node_Str",false));
  formElements=FormElementHelper.INSTANCE.getFormElements(form.getAllObjects(),new ServoyDataConverterContext(client));
  Assert.assertEquals(1,formElements.size());
  WebFormComponent wc=ComponentFactory.createComponent(client,dataAdapterList,formElements.get(0),null);
  Map<String,Object> type=(Map<String,Object>)wc.getProperty("String_Node_Str");
  Assert.assertEquals("String_Node_Str",type.get("String_Node_Str"));
  Assert.assertEquals("String_Node_Str",type.get("String_Node_Str"));
  Assert.assertEquals(0,wc.getAndClearChanges().content.size());
  TypedData<Map<String,Object>> props=wc.getProperties();
  String json=JSONUtils.writeDataWithConversions(props.content,props.contentType,null);
  Assert.assertEquals("String_Node_Str",json);
}