Program: 118512
Project: 118512
Buggy source:
/** 
 * Sometimes the property parameters of schema are base on other parameters,but they might be initialized after the schema. So there need to initialize the schema's again.
 */
private void initializeParametersForSchema(List<ElementParameter> listParam,final INode node){
  for (  ElementParameter param : listParam) {
    if (EParameterFieldType.SCHEMA_REFERENCE.equals(param.getFieldType())) {
      ElementParameter newParam=new ElementParameter(node);
      newParam.setCategory(EComponentCategory.BASIC);
      newParam.setName(EParameterName.SCHEMA_TYPE.getName());
      newParam.setDisplayName(EParameterName.SCHEMA_TYPE.getDisplayName());
      newParam.setListItemsDisplayName(new String[]{TEXT_BUILTIN,TEXT_REPOSITORY});
      newParam.setListItemsDisplayCodeName(new String[]{BUILTIN,REPOSITORY});
      newParam.setListItemsValue(new String[]{BUILTIN,REPOSITORY});
      newParam.setValue(BUILTIN);
      newParam.setNumRow(param.getNumRow());
      newParam.setFieldType(EParameterFieldType.TECHNICAL);
      newParam.setShow(false);
      newParam.setShowIf(param.getName() + "String_Node_Str" + REPOSITORY+ "String_Node_Str");
      newParam.setReadOnly(param.isReadOnly());
      newParam.setNotShowIf(param.getNotShowIf());
      newParam.setContext(IGenericConstants.CONTEXT);
      newParam.setSerialized(true);
      newParam.setParentParameter(param);
      newParam=new ElementParameter(node);
      newParam.setCategory(EComponentCategory.BASIC);
      newParam.setName(EParameterName.REPOSITORY_SCHEMA_TYPE.getName());
      newParam.setDisplayName(EParameterName.REPOSITORY_SCHEMA_TYPE.getDisplayName());
      newParam.setListItemsDisplayName(new String[]{});
      newParam.setListItemsValue(new String[]{});
      newParam.setNumRow(param.getNumRow());
      newParam.setFieldType(EParameterFieldType.TECHNICAL);
      newParam.setValue("String_Node_Str");
      newParam.setShow(false);
      newParam.setRequired(true);
      newParam.setReadOnly(param.isReadOnly());
      newParam.setShowIf(param.getName() + "String_Node_Str" + REPOSITORY+ "String_Node_Str");
      newParam.setNotShowIf(param.getNotShowIf());
      newParam.setContext(IGenericConstants.CONTEXT);
      newParam.setSerialized(true);
      newParam.setParentParameter(param);
    }
  }
}

Fixed version (ground truth):
/** 
 * Sometimes the property parameters of schema are base on other parameters,but they might be initialized after the schema. So there need to initialize the schema's again.
 */
private void initializeParametersForSchema(List<ElementParameter> listParam,final INode node){
  ComponentProperties rootProperty=node.getComponentProperties();
  Map<String,SchemaProperty> listSchemaProperties=new HashMap<>();
  findSchemaProperties(rootProperty,listParam,listSchemaProperties,null);
  for (  String paramName : listSchemaProperties.keySet()) {
    boolean found=setupConnector(node,listParam,paramName,listSchemaProperties.get(paramName),true);
    if (!found) {
      setupConnector(node,listParam,paramName,listSchemaProperties.get(paramName),false);
    }
  }
  for (  ElementParameter param : listParam) {
    if (EParameterFieldType.SCHEMA_REFERENCE.equals(param.getFieldType())) {
      ElementParameter newParam=new ElementParameter(node);
      newParam.setCategory(EComponentCategory.BASIC);
      newParam.setName(EParameterName.SCHEMA_TYPE.getName());
      newParam.setDisplayName(EParameterName.SCHEMA_TYPE.getDisplayName());
      newParam.setListItemsDisplayName(new String[]{TEXT_BUILTIN,TEXT_REPOSITORY});
      newParam.setListItemsDisplayCodeName(new String[]{BUILTIN,REPOSITORY});
      newParam.setListItemsValue(new String[]{BUILTIN,REPOSITORY});
      newParam.setValue(BUILTIN);
      newParam.setNumRow(param.getNumRow());
      newParam.setFieldType(EParameterFieldType.TECHNICAL);
      newParam.setShow(false);
      newParam.setShowIf(param.getName() + "String_Node_Str" + REPOSITORY+ "String_Node_Str");
      newParam.setReadOnly(param.isReadOnly());
      newParam.setNotShowIf(param.getNotShowIf());
      newParam.setContext(IGenericConstants.CONTEXT);
      newParam.setSerialized(true);
      newParam.setParentParameter(param);
      newParam=new ElementParameter(node);
      newParam.setCategory(EComponentCategory.BASIC);
      newParam.setName(EParameterName.REPOSITORY_SCHEMA_TYPE.getName());
      newParam.setDisplayName(EParameterName.REPOSITORY_SCHEMA_TYPE.getDisplayName());
      newParam.setListItemsDisplayName(new String[]{});
      newParam.setListItemsValue(new String[]{});
      newParam.setNumRow(param.getNumRow());
      newParam.setFieldType(EParameterFieldType.TECHNICAL);
      newParam.setValue("String_Node_Str");
      newParam.setShow(false);
      newParam.setRequired(true);
      newParam.setReadOnly(param.isReadOnly());
      newParam.setShowIf(param.getName() + "String_Node_Str" + REPOSITORY+ "String_Node_Str");
      newParam.setNotShowIf(param.getNotShowIf());
      newParam.setContext(IGenericConstants.CONTEXT);
      newParam.setSerialized(true);
      newParam.setParentParameter(param);
    }
  }
}