IDEMPIERE-5628 Record ID Check Issue - implement setCrossTenantSafe (#1724)
* IDEMPIERE-5628 Record ID Check Issue - implement setCrossTenantSafe * - remove table exceptions
This commit is contained in:
parent
106cbc7e14
commit
e4b7c9e17d
|
@ -228,7 +228,12 @@ public class MRecentItem extends X_AD_RecentItem implements ImmutablePOSupport
|
||||||
ri.setAD_Role_ID(AD_Role_ID);
|
ri.setAD_Role_ID(AD_Role_ID);
|
||||||
ri.setAD_Window_ID(AD_Window_ID);
|
ri.setAD_Window_ID(AD_Window_ID);
|
||||||
ri.setAD_Tab_ID(AD_Tab_ID);
|
ri.setAD_Tab_ID(AD_Tab_ID);
|
||||||
ri.saveEx();
|
try {
|
||||||
|
PO.setCrossTenantSafe();
|
||||||
|
ri.saveEx();
|
||||||
|
} finally {
|
||||||
|
PO.clearCrossTenantSafe();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if ( ric.getAD_Role_ID() != AD_Role_ID
|
if ( ric.getAD_Role_ID() != AD_Role_ID
|
||||||
|| ric.getAD_Window_ID() != AD_Window_ID
|
|| ric.getAD_Window_ID() != AD_Window_ID
|
||||||
|
@ -237,7 +242,12 @@ public class MRecentItem extends X_AD_RecentItem implements ImmutablePOSupport
|
||||||
ri.setAD_Role_ID(AD_Role_ID);
|
ri.setAD_Role_ID(AD_Role_ID);
|
||||||
ri.setAD_Window_ID(AD_Window_ID);
|
ri.setAD_Window_ID(AD_Window_ID);
|
||||||
ri.setAD_Tab_ID(AD_Tab_ID);
|
ri.setAD_Tab_ID(AD_Tab_ID);
|
||||||
ri.saveEx();
|
try {
|
||||||
|
PO.setCrossTenantSafe();
|
||||||
|
ri.saveEx();
|
||||||
|
} finally {
|
||||||
|
PO.clearCrossTenantSafe();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
DB.executeUpdateEx("UPDATE AD_RecentItem SET Updated=getDate() WHERE AD_RecentItem_ID=?", new Object[] {ric.getAD_RecentItem_ID()}, null);
|
DB.executeUpdateEx("UPDATE AD_RecentItem SET Updated=getDate() WHERE AD_RecentItem_ID=?", new Object[] {ric.getAD_RecentItem_ID()}, null);
|
||||||
}
|
}
|
||||||
|
|
|
@ -351,6 +351,7 @@ public class MSession extends X_AD_Session implements ImmutablePOSupport
|
||||||
+ ": " + OldValue + " -> " + NewValue);
|
+ ": " + OldValue + " -> " + NewValue);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
PO.setCrossTenantSafe();
|
||||||
MChangeLog cl = new MChangeLog(getCtx(),
|
MChangeLog cl = new MChangeLog(getCtx(),
|
||||||
AD_ChangeLog_ID, TrxName, getAD_Session_ID(),
|
AD_ChangeLog_ID, TrxName, getAD_Session_ID(),
|
||||||
AD_Table_ID, AD_Column_ID, Record_ID, AD_Client_ID, AD_Org_ID,
|
AD_Table_ID, AD_Column_ID, Record_ID, AD_Client_ID, AD_Org_ID,
|
||||||
|
@ -365,6 +366,10 @@ public class MSession extends X_AD_Session implements ImmutablePOSupport
|
||||||
+ ", AD_Table_ID=" + AD_Table_ID + ", AD_Column_ID=" + AD_Column_ID, e);
|
+ ", AD_Table_ID=" + AD_Table_ID + ", AD_Column_ID=" + AD_Column_ID, e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
PO.clearCrossTenantSafe();
|
||||||
|
}
|
||||||
log.log(Level.SEVERE, "AD_ChangeLog_ID=" + AD_ChangeLog_ID
|
log.log(Level.SEVERE, "AD_ChangeLog_ID=" + AD_ChangeLog_ID
|
||||||
+ ", AD_Session_ID=" + getAD_Session_ID()
|
+ ", AD_Session_ID=" + getAD_Session_ID()
|
||||||
+ ", AD_Table_ID=" + AD_Table_ID + ", AD_Column_ID=" + AD_Column_ID);
|
+ ", AD_Table_ID=" + AD_Table_ID + ", AD_Column_ID=" + AD_Column_ID);
|
||||||
|
|
|
@ -107,9 +107,13 @@ public class MShippingTransaction extends X_M_ShippingTransaction
|
||||||
msg.append(getErrorMessage());
|
msg.append(getErrorMessage());
|
||||||
msg.append("\nAction: " + getAction());
|
msg.append("\nAction: " + getAction());
|
||||||
history.setTextMsg(msg.toString());
|
history.setTextMsg(msg.toString());
|
||||||
|
try {
|
||||||
history.saveEx();
|
PO.setCrossTenantSafe();
|
||||||
|
history.saveEx();
|
||||||
|
} finally {
|
||||||
|
PO.clearCrossTenantSafe();
|
||||||
|
}
|
||||||
|
|
||||||
setProcessed(processed);
|
setProcessed(processed);
|
||||||
return processed;
|
return processed;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5520,9 +5520,7 @@ public abstract class PO
|
||||||
* @return true if all the foreign keys are valid
|
* @return true if all the foreign keys are valid
|
||||||
*/
|
*/
|
||||||
private void checkRecordIDCrossTenant() {
|
private void checkRecordIDCrossTenant() {
|
||||||
// exclude read-only high-traffic tables
|
if (isSafeCrossTenant.get())
|
||||||
if ( MChangeLog.Table_Name.equals(get_TableName())
|
|
||||||
|| MRecentItem.Table_Name.equals(get_TableName()))
|
|
||||||
return;
|
return;
|
||||||
int idxRecordId = p_info.getColumnIndex("Record_ID");
|
int idxRecordId = p_info.getColumnIndex("Record_ID");
|
||||||
if (idxRecordId < 0)
|
if (idxRecordId < 0)
|
||||||
|
|
Loading…
Reference in New Issue