Program: 117448
Project: 117448
Buggy source:
public LinksPropertyDataTablePanel(String id,IModel<ODocument> documentModel,OProperty property){
  super(id,documentModel);
  OClass linkedClass=property.getLinkedClass();
  boolean isCalculable=CustomAttributes.CALCULABLE.getValue(property,false);
  IModel<DisplayMode> modeModel=DisplayMode.VIEW.asModel();
  OQueryDataProvider<ODocument> provider=oClassIntrospector.prepareDataProviderForProperty(property,documentModel);
  OrienteerDataTable<ODocument,String> table=new OrienteerDataTable<ODocument,String>("String_Node_Str",oClassIntrospector.getColumnsFor(linkedClass,true,modeModel),provider,20);
  table.setCaptionModel(new OPropertyNamingModel(property));
  SecurityBehavior securityBehaviour=new SecurityBehavior(documentModel,OrientPermission.UPDATE);
  if (!isCalculable) {
    OPropertyModel propertyModel=new OPropertyModel(property);
    table.addCommand(new CreateODocumentCommand(table,documentModel,propertyModel).add(securityBehaviour));
    table.addCommand(new EditODocumentsCommand(table,modeModel,linkedClass).add(securityBehaviour));
    table.addCommand(new SaveODocumentsCommand(table,modeModel).add(securityBehaviour));
    table.addCommand(new DeleteODocumentCommand(table,linkedClass).add(securityBehaviour));
    table.addCommand(new SelectODocumentCommand(table,documentModel,propertyModel).add(securityBehaviour));
    table.addCommand(new ReleaseODocumentCommand(table,documentModel,propertyModel).add(securityBehaviour));
  }
 else {
    table.addCommand(new EditODocumentsCommand(table,modeModel,linkedClass).add(securityBehaviour));
    table.addCommand(new SaveODocumentsCommand(table,modeModel).add(securityBehaviour));
  }
  add(table);
}

Fixed version (ground truth):
public LinksPropertyDataTablePanel(String id,IModel<ODocument> documentModel,OProperty property){
  super(id,documentModel);
  OClass linkedClass=property.getLinkedClass();
  boolean isCalculable=CustomAttributes.CALCULABLE.getValue(property,false);
  IModel<DisplayMode> modeModel=DisplayMode.VIEW.asModel();
  ISortableDataProvider<ODocument,String> provider=oClassIntrospector.prepareDataProviderForProperty(property,documentModel);
  OrienteerDataTable<ODocument,String> table=new OrienteerDataTable<ODocument,String>("String_Node_Str",oClassIntrospector.getColumnsFor(linkedClass,true,modeModel),provider,20);
  table.setCaptionModel(new OPropertyNamingModel(property));
  SecurityBehavior securityBehaviour=new SecurityBehavior(documentModel,OrientPermission.UPDATE);
  if (!isCalculable) {
    OPropertyModel propertyModel=new OPropertyModel(property);
    table.addCommand(new CreateODocumentCommand(table,documentModel,propertyModel).add(securityBehaviour));
    table.addCommand(new EditODocumentsCommand(table,modeModel,linkedClass).add(securityBehaviour));
    table.addCommand(new SaveODocumentsCommand(table,modeModel).add(securityBehaviour));
    table.addCommand(new DeleteODocumentCommand(table,linkedClass).add(securityBehaviour));
    table.addCommand(new SelectODocumentCommand(table,documentModel,propertyModel).add(securityBehaviour));
    table.addCommand(new ReleaseODocumentCommand(table,documentModel,propertyModel).add(securityBehaviour));
  }
 else {
    table.addCommand(new EditODocumentsCommand(table,modeModel,linkedClass).add(securityBehaviour));
    table.addCommand(new SaveODocumentsCommand(table,modeModel).add(securityBehaviour));
  }
  add(table);
}