IDEMPIERE-6035 Use saveCrossTenantSafe instead of PO.setCrossTenantSafe (#2235)
This commit is contained in:
parent
3ac70045f1
commit
61e3e48c9a
|
@ -405,12 +405,11 @@ 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, Record_UU, AD_Client_ID, AD_Org_ID,
|
AD_Table_ID, AD_Column_ID, Record_ID, Record_UU, AD_Client_ID, AD_Org_ID,
|
||||||
OldValue, NewValue, event);
|
OldValue, NewValue, event);
|
||||||
if (cl.save())
|
if (cl.saveCrossTenantSafe())
|
||||||
return cl;
|
return cl;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -420,10 +419,6 @@ 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);
|
||||||
|
|
|
@ -2591,7 +2591,24 @@ public abstract class PO
|
||||||
/**
|
/**
|
||||||
* Update Value or create new record, used when writing a cross tenant record
|
* Update Value or create new record, used when writing a cross tenant record
|
||||||
* @throws AdempiereException
|
* @throws AdempiereException
|
||||||
* @see #saveEx(String)
|
* @see #save()
|
||||||
|
*/
|
||||||
|
public boolean saveCrossTenantSafe() {
|
||||||
|
boolean crossTenantSet = isSafeCrossTenant.get();
|
||||||
|
try {
|
||||||
|
if (!crossTenantSet)
|
||||||
|
PO.setCrossTenantSafe();
|
||||||
|
return save();
|
||||||
|
} finally {
|
||||||
|
if (!crossTenantSet)
|
||||||
|
PO.clearCrossTenantSafe();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update Value or create new record, used when writing a cross tenant record
|
||||||
|
* @throws AdempiereException
|
||||||
|
* @see #saveEx()
|
||||||
*/
|
*/
|
||||||
public void saveCrossTenantSafeEx() {
|
public void saveCrossTenantSafeEx() {
|
||||||
boolean crossTenantSet = isSafeCrossTenant.get();
|
boolean crossTenantSet = isSafeCrossTenant.get();
|
||||||
|
|
|
@ -81,7 +81,6 @@ import org.compiere.model.MRole;
|
||||||
import org.compiere.model.MStatusLine;
|
import org.compiere.model.MStatusLine;
|
||||||
import org.compiere.model.MSysConfig;
|
import org.compiere.model.MSysConfig;
|
||||||
import org.compiere.model.MTable;
|
import org.compiere.model.MTable;
|
||||||
import org.compiere.model.PO;
|
|
||||||
import org.compiere.print.ReportEngine;
|
import org.compiere.print.ReportEngine;
|
||||||
import org.compiere.process.ProcessInfo;
|
import org.compiere.process.ProcessInfo;
|
||||||
import org.compiere.process.ServerProcessCtl;
|
import org.compiere.process.ServerProcessCtl;
|
||||||
|
@ -1240,13 +1239,8 @@ public class DashboardController implements EventListener<Event> {
|
||||||
int PA_DashboardPreference_ID = Integer.parseInt(value.toString());
|
int PA_DashboardPreference_ID = Integer.parseInt(value.toString());
|
||||||
MDashboardPreference preference = new MDashboardPreference(Env.getCtx(), PA_DashboardPreference_ID, null);
|
MDashboardPreference preference = new MDashboardPreference(Env.getCtx(), PA_DashboardPreference_ID, null);
|
||||||
preference.setIsCollapsedByDefault(!panel.isOpen());
|
preference.setIsCollapsedByDefault(!panel.isOpen());
|
||||||
try {
|
if (!preference.saveCrossTenantSafe())
|
||||||
PO.setCrossTenantSafe();
|
logger.log(Level.SEVERE, "Failed to save dashboard preference " + preference.toString());
|
||||||
if (!preference.save())
|
|
||||||
logger.log(Level.SEVERE, "Failed to save dashboard preference " + preference.toString());
|
|
||||||
} finally {
|
|
||||||
PO.clearCrossTenantSafe();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//notify panel content component
|
//notify panel content component
|
||||||
|
|
|
@ -76,13 +76,8 @@ public class FavouriteController
|
||||||
vTree.setAD_Org_ID(user.getAD_Org_ID());
|
vTree.setAD_Org_ID(user.getAD_Org_ID());
|
||||||
// Support for System user
|
// Support for System user
|
||||||
vTree.set_ValueNoCheck(MTreeFavorite.COLUMNNAME_AD_User_ID, Integer.valueOf(AD_User_ID));
|
vTree.set_ValueNoCheck(MTreeFavorite.COLUMNNAME_AD_User_ID, Integer.valueOf(AD_User_ID));
|
||||||
try {
|
if (!vTree.saveCrossTenantSafe())
|
||||||
PO.setCrossTenantSafe();
|
throw new AdempiereException(Msg.getMsg(Env.getCtx(), "FavTreeNotCreate"));
|
||||||
if (!vTree.save())
|
|
||||||
throw new AdempiereException(Msg.getMsg(Env.getCtx(), "FavTreeNotCreate"));
|
|
||||||
} finally {
|
|
||||||
PO.clearCrossTenantSafe();
|
|
||||||
}
|
|
||||||
|
|
||||||
m_AD_Tree_Favorite_ID = vTree.getAD_Tree_Favorite_ID();
|
m_AD_Tree_Favorite_ID = vTree.getAD_Tree_Favorite_ID();
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,6 @@ import org.compiere.model.MPasswordHistory;
|
||||||
import org.compiere.model.MPasswordRule;
|
import org.compiere.model.MPasswordRule;
|
||||||
import org.compiere.model.MSysConfig;
|
import org.compiere.model.MSysConfig;
|
||||||
import org.compiere.model.MUser;
|
import org.compiere.model.MUser;
|
||||||
import org.compiere.model.PO;
|
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.KeyNamePair;
|
import org.compiere.util.KeyNamePair;
|
||||||
|
@ -375,15 +374,10 @@ public class ChangePasswordPanel extends Window implements EventListener<Event>
|
||||||
user.setIsExpired(false);
|
user.setIsExpired(false);
|
||||||
user.setSecurityQuestion(securityQuestion);
|
user.setSecurityQuestion(securityQuestion);
|
||||||
user.setAnswer(answer);
|
user.setAnswer(answer);
|
||||||
try {
|
user.saveCrossTenantSafeEx(trx.getTrxName());
|
||||||
PO.setCrossTenantSafe();
|
if (tenantsChanged.length() > 0)
|
||||||
user.saveEx(trx.getTrxName());
|
tenantsChanged.append(", ");
|
||||||
if (tenantsChanged.length() > 0)
|
tenantsChanged.append(clientKNPair.getName());
|
||||||
tenantsChanged.append(", ");
|
|
||||||
tenantsChanged.append(clientKNPair.getName());
|
|
||||||
} finally {
|
|
||||||
PO.clearCrossTenantSafe();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
trx.commit();
|
trx.commit();
|
||||||
|
|
|
@ -19,7 +19,6 @@ import java.util.Properties;
|
||||||
import org.compiere.model.I_AD_Preference;
|
import org.compiere.model.I_AD_Preference;
|
||||||
import org.compiere.model.MPreference;
|
import org.compiere.model.MPreference;
|
||||||
import org.compiere.model.MUser;
|
import org.compiere.model.MUser;
|
||||||
import org.compiere.model.PO;
|
|
||||||
import org.compiere.model.Query;
|
import org.compiere.model.Query;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
@ -126,13 +125,8 @@ public final class UserPreference implements Serializable {
|
||||||
}
|
}
|
||||||
String oldValue = preference.getValue();
|
String oldValue = preference.getValue();
|
||||||
if (! value.equals(oldValue)) {
|
if (! value.equals(oldValue)) {
|
||||||
try {
|
preference.setValue(value);
|
||||||
PO.setCrossTenantSafe();
|
preference.saveCrossTenantSafeEx();
|
||||||
preference.setValue(value);
|
|
||||||
preference.saveEx();
|
|
||||||
} finally {
|
|
||||||
PO.clearCrossTenantSafe();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,6 @@ import org.compiere.model.MProduct;
|
||||||
import org.compiere.model.MSysConfig;
|
import org.compiere.model.MSysConfig;
|
||||||
import org.compiere.model.ModelValidationEngine;
|
import org.compiere.model.ModelValidationEngine;
|
||||||
import org.compiere.model.ModelValidator;
|
import org.compiere.model.ModelValidator;
|
||||||
import org.compiere.model.PO;
|
|
||||||
import org.compiere.model.X_I_BPartner;
|
import org.compiere.model.X_I_BPartner;
|
||||||
import org.compiere.model.X_I_Product;
|
import org.compiere.model.X_I_Product;
|
||||||
import org.compiere.process.DocAction;
|
import org.compiere.process.DocAction;
|
||||||
|
@ -331,13 +330,8 @@ public class EventHandlerTest extends AbstractTestCase {
|
||||||
MSysConfig sysconfig = new MSysConfig(Env.getCtx(), addressValidationSysConfigId, null);
|
MSysConfig sysconfig = new MSysConfig(Env.getCtx(), addressValidationSysConfigId, null);
|
||||||
String currentValue = sysconfig.getValue();
|
String currentValue = sysconfig.getValue();
|
||||||
try {
|
try {
|
||||||
try {
|
sysconfig.setValue("US");
|
||||||
PO.setCrossTenantSafe();
|
sysconfig.saveCrossTenantSafeEx();
|
||||||
sysconfig.setValue("US");
|
|
||||||
sysconfig.saveEx();
|
|
||||||
} finally {
|
|
||||||
PO.clearCrossTenantSafe();
|
|
||||||
}
|
|
||||||
|
|
||||||
CacheMgt.get().reset();
|
CacheMgt.get().reset();
|
||||||
|
|
||||||
|
@ -357,13 +351,8 @@ public class EventHandlerTest extends AbstractTestCase {
|
||||||
EventManager.getInstance().sendEvent(event);
|
EventManager.getInstance().sendEvent(event);
|
||||||
assertTrue(count.get()==1, "AddressValidationEventDelegate not call for MLocation Before Change Event");
|
assertTrue(count.get()==1, "AddressValidationEventDelegate not call for MLocation Before Change Event");
|
||||||
} finally {
|
} finally {
|
||||||
try {
|
sysconfig.setValue(currentValue);
|
||||||
PO.setCrossTenantSafe();
|
sysconfig.saveCrossTenantSafeEx();
|
||||||
sysconfig.setValue(currentValue);
|
|
||||||
sysconfig.saveEx();
|
|
||||||
} finally {
|
|
||||||
PO.clearCrossTenantSafe();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,33 +56,28 @@ public class MInfoWindowTest extends AbstractTestCase {
|
||||||
MInfoWindow infoWindow = new MInfoWindow(Env.getCtx(), 0, getTrxName());
|
MInfoWindow infoWindow = new MInfoWindow(Env.getCtx(), 0, getTrxName());
|
||||||
MInfoColumn infoColumn1 = new MInfoColumn(Env.getCtx(), 0, getTrxName());
|
MInfoColumn infoColumn1 = new MInfoColumn(Env.getCtx(), 0, getTrxName());
|
||||||
MInfoColumn infoColumn2 = new MInfoColumn(Env.getCtx(), 0, getTrxName());
|
MInfoColumn infoColumn2 = new MInfoColumn(Env.getCtx(), 0, getTrxName());
|
||||||
try {
|
infoWindow.setAD_Table_ID(MTest.Table_ID);
|
||||||
PO.setCrossTenantSafe();
|
infoWindow.setName("testColumnAccess");
|
||||||
infoWindow.setAD_Table_ID(MTest.Table_ID);
|
infoWindow.setFromClause("Test t");
|
||||||
infoWindow.setName("testColumnAccess");
|
infoWindow.saveCrossTenantSafeEx();
|
||||||
infoWindow.setFromClause("Test t");
|
|
||||||
infoWindow.saveEx();
|
|
||||||
|
|
||||||
infoColumn1.setAD_InfoWindow_ID(infoWindow.get_ID());
|
infoColumn1.setAD_InfoWindow_ID(infoWindow.get_ID());
|
||||||
infoColumn1.setName(MTest.COLUMNNAME_T_Amount);
|
infoColumn1.setName(MTest.COLUMNNAME_T_Amount);
|
||||||
infoColumn1.setEntityType("U");
|
infoColumn1.setEntityType("U");
|
||||||
infoColumn1.setSelectClause("t."+MTest.COLUMNNAME_T_Amount);
|
infoColumn1.setSelectClause("t."+MTest.COLUMNNAME_T_Amount);
|
||||||
infoColumn1.setSeqNo(10);
|
infoColumn1.setSeqNo(10);
|
||||||
infoColumn1.setAD_Reference_ID(DisplayType.Amount);
|
infoColumn1.setAD_Reference_ID(DisplayType.Amount);
|
||||||
infoColumn1.setColumnName(MTest.COLUMNNAME_T_Amount);
|
infoColumn1.setColumnName(MTest.COLUMNNAME_T_Amount);
|
||||||
infoColumn1.saveEx();
|
infoColumn1.saveCrossTenantSafeEx();
|
||||||
|
|
||||||
infoColumn2.setAD_InfoWindow_ID(infoWindow.get_ID());
|
infoColumn2.setAD_InfoWindow_ID(infoWindow.get_ID());
|
||||||
infoColumn2.setName(MTest.COLUMNNAME_T_DateTime);
|
infoColumn2.setName(MTest.COLUMNNAME_T_DateTime);
|
||||||
infoColumn2.setEntityType("U");
|
infoColumn2.setEntityType("U");
|
||||||
infoColumn2.setSelectClause("t."+MTest.COLUMNNAME_T_DateTime);
|
infoColumn2.setSelectClause("t."+MTest.COLUMNNAME_T_DateTime);
|
||||||
infoColumn2.setSeqNo(10);
|
infoColumn2.setSeqNo(10);
|
||||||
infoColumn2.setAD_Reference_ID(DisplayType.DateTime);
|
infoColumn2.setAD_Reference_ID(DisplayType.DateTime);
|
||||||
infoColumn2.setColumnName(MTest.COLUMNNAME_T_DateTime);
|
infoColumn2.setColumnName(MTest.COLUMNNAME_T_DateTime);
|
||||||
infoColumn2.saveEx();
|
infoColumn2.saveCrossTenantSafeEx();
|
||||||
} finally {
|
|
||||||
PO.clearCrossTenantSafe();
|
|
||||||
}
|
|
||||||
|
|
||||||
infoWindow.getInfoColumns(true, true);
|
infoWindow.getInfoColumns(true, true);
|
||||||
TableInfo[] tableInfos = infoWindow.getTableInfos();
|
TableInfo[] tableInfos = infoWindow.getTableInfos();
|
||||||
|
|
Loading…
Reference in New Issue