diff --git a/org.adempiere.base/src/org/compiere/model/MRecentItem.java b/org.adempiere.base/src/org/compiere/model/MRecentItem.java index 54bdc5298e..f6a8529f86 100644 --- a/org.adempiere.base/src/org/compiere/model/MRecentItem.java +++ b/org.adempiere.base/src/org/compiere/model/MRecentItem.java @@ -229,12 +229,7 @@ public class MRecentItem extends X_AD_RecentItem implements ImmutablePOSupport ri.setAD_Role_ID(AD_Role_ID); ri.setAD_Window_ID(AD_Window_ID); ri.setAD_Tab_ID(AD_Tab_ID); - try { - PO.setCrossTenantSafe(); - ri.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + ri.saveCrossTenantSafeEx(); } else { if ( ric.getAD_Role_ID() != AD_Role_ID || ric.getAD_Window_ID() != AD_Window_ID @@ -243,12 +238,7 @@ public class MRecentItem extends X_AD_RecentItem implements ImmutablePOSupport ri.setAD_Role_ID(AD_Role_ID); ri.setAD_Window_ID(AD_Window_ID); ri.setAD_Tab_ID(AD_Tab_ID); - try { - PO.setCrossTenantSafe(); - ri.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + ri.saveCrossTenantSafeEx(); } else { DB.executeUpdateEx("UPDATE AD_RecentItem SET Updated=getDate() WHERE AD_RecentItem_ID=?", new Object[] {ric.getAD_RecentItem_ID()}, null); } diff --git a/org.adempiere.base/src/org/compiere/model/MShippingTransaction.java b/org.adempiere.base/src/org/compiere/model/MShippingTransaction.java index 1d3f282299..2b77dd9e79 100644 --- a/org.adempiere.base/src/org/compiere/model/MShippingTransaction.java +++ b/org.adempiere.base/src/org/compiere/model/MShippingTransaction.java @@ -117,12 +117,7 @@ public class MShippingTransaction extends X_M_ShippingTransaction msg.append(getErrorMessage()); msg.append("\nAction: " + getAction()); history.setTextMsg(msg.toString()); - try { - PO.setCrossTenantSafe(); - history.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + history.saveCrossTenantSafeEx(); setProcessed(processed); return processed; diff --git a/org.adempiere.base/src/org/compiere/model/MSystem.java b/org.adempiere.base/src/org/compiere/model/MSystem.java index d9e731de13..a21277e7a2 100644 --- a/org.adempiere.base/src/org/compiere/model/MSystem.java +++ b/org.adempiere.base/src/org/compiere/model/MSystem.java @@ -76,12 +76,7 @@ public class MSystem extends X_AD_System // if (!Ini.isClient() && system.setInfo()) { - try { - PO.setCrossTenantSafe(); - system.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + system.saveCrossTenantSafeEx(); } s_system.put(0, new MSystem(Env.getCtx(), system)); return system; diff --git a/org.adempiere.base/src/org/compiere/model/PO.java b/org.adempiere.base/src/org/compiere/model/PO.java index 717bcf47bc..1b3a5cb83a 100644 --- a/org.adempiere.base/src/org/compiere/model/PO.java +++ b/org.adempiere.base/src/org/compiere/model/PO.java @@ -2592,11 +2592,14 @@ public abstract class PO * @see #saveEx(String) */ public void saveCrossTenantSafeEx() { + boolean crossTenantSet = isSafeCrossTenant.get(); try { - PO.setCrossTenantSafe(); + if (!crossTenantSet) + PO.setCrossTenantSafe(); saveEx(); } finally { - PO.clearCrossTenantSafe(); + if (!crossTenantSet) + PO.clearCrossTenantSafe(); } } @@ -2751,11 +2754,14 @@ public abstract class PO * @see #saveEx(String) */ public void saveCrossTenantSafeEx(String trxName) { + boolean crossTenantSet = isSafeCrossTenant.get(); try { - PO.setCrossTenantSafe(); + if (!crossTenantSet) + PO.setCrossTenantSafe(); saveEx(trxName); } finally { - PO.clearCrossTenantSafe(); + if (!crossTenantSet) + PO.clearCrossTenantSafe(); } } diff --git a/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java b/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java index 748d5b1b6a..4a5c2efe6f 100644 --- a/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java +++ b/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java @@ -51,7 +51,6 @@ import javax.print.attribute.DocAttributeSet; import org.adempiere.base.Core; import org.compiere.model.MQuery; import org.compiere.model.MTable; -import org.compiere.model.PO; import org.compiere.model.PrintInfo; import org.compiere.print.ArchiveEngine; import org.compiere.print.CPaper; @@ -1671,13 +1670,8 @@ public class LayoutEngine implements Pageable, Printable, Doc if (item.is_Immutable()) item = new MPrintFormatItem(item); item.setIsSuppressNull(true); // display size will be set to 0 in TableElement - try { - //this can be tenant or system print format - PO.setCrossTenantSafe(); - item.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + //this can be tenant or system print format + item.saveCrossTenantSafeEx(); CacheMgt.get().reset(MPrintFormat.Table_Name, format.get_ID()); } } diff --git a/org.adempiere.base/src/org/compiere/process/MFARevokeDevice.java b/org.adempiere.base/src/org/compiere/process/MFARevokeDevice.java index 86fac1b1b5..184ae35c2f 100644 --- a/org.adempiere.base/src/org/compiere/process/MFARevokeDevice.java +++ b/org.adempiere.base/src/org/compiere/process/MFARevokeDevice.java @@ -33,7 +33,6 @@ import java.util.logging.Level; import org.compiere.model.MMFARegisteredDevice; import org.compiere.model.MProcessPara; -import org.compiere.model.PO; import org.compiere.model.Query; import org.compiere.util.Env; @@ -89,12 +88,7 @@ public class MFARevokeDevice extends SvrProcess { .list(); for (MMFARegisteredDevice rd : rds) { rd.setIsActive(false); - try { - PO.setCrossTenantSafe(); - rd.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + rd.saveCrossTenantSafeEx(); } return "@OK@"; diff --git a/org.adempiere.base/src/org/compiere/process/MFAUnregister.java b/org.adempiere.base/src/org/compiere/process/MFAUnregister.java index 83812b9abb..1f95c10a23 100644 --- a/org.adempiere.base/src/org/compiere/process/MFAUnregister.java +++ b/org.adempiere.base/src/org/compiere/process/MFAUnregister.java @@ -32,7 +32,6 @@ import java.util.logging.Level; import org.compiere.model.MMFARegistration; import org.compiere.model.MProcessPara; -import org.compiere.model.PO; /** * IDEMPIERE-4782 @@ -69,12 +68,7 @@ public class MFAUnregister extends SvrProcess { MMFARegistration reg = new MMFARegistration(getCtx(), p_MFA_Registration_ID, get_TrxName()); reg.setIsActive(false); reg.setMFAUnregisteredAt(new Timestamp(System.currentTimeMillis())); - try { - PO.setCrossTenantSafe(); - reg.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + reg.saveCrossTenantSafeEx(); return "@OK@"; } diff --git a/org.adempiere.base/src/org/compiere/wf/MWFActivity.java b/org.adempiere.base/src/org/compiere/wf/MWFActivity.java index c19854c3dc..153f8b575c 100644 --- a/org.adempiere.base/src/org/compiere/wf/MWFActivity.java +++ b/org.adempiere.base/src/org/compiere/wf/MWFActivity.java @@ -217,12 +217,7 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable setEndWaitTime(new Timestamp(limitMS + System.currentTimeMillis())); // Responsible setResponsible(process); - try { - PO.setCrossTenantSafe(); - saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + saveCrossTenantSafeEx(); // m_audit = new MWFEventAudit(this); m_audit.setAD_Org_ID(getAD_Org_ID());//Add by Hideaki Hagiwara diff --git a/org.adempiere.base/src/org/idempiere/mfa/EMailMechanism.java b/org.adempiere.base/src/org/idempiere/mfa/EMailMechanism.java index e4dbb54000..46e8a64640 100644 --- a/org.adempiere.base/src/org/idempiere/mfa/EMailMechanism.java +++ b/org.adempiere.base/src/org/idempiere/mfa/EMailMechanism.java @@ -36,7 +36,6 @@ import org.compiere.model.MMFAMethod; import org.compiere.model.MMFARegistration; import org.compiere.model.MMailText; import org.compiere.model.MUser; -import org.compiere.model.PO; import org.compiere.util.EMail; import org.compiere.util.Env; import org.compiere.util.Msg; @@ -274,12 +273,7 @@ public class EMailMechanism implements IMFAMechanism { * @param reg */ private void saveRegistration(MMFARegistration reg) { - try { - PO.setCrossTenantSafe(); - reg.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + reg.saveCrossTenantSafeEx(); } } diff --git a/org.adempiere.base/src/org/idempiere/mfa/TOTPMechanism.java b/org.adempiere.base/src/org/idempiere/mfa/TOTPMechanism.java index 1d75caaf9c..d3569f17da 100644 --- a/org.adempiere.base/src/org/idempiere/mfa/TOTPMechanism.java +++ b/org.adempiere.base/src/org/idempiere/mfa/TOTPMechanism.java @@ -37,7 +37,6 @@ import org.compiere.model.MMFAMethod; import org.compiere.model.MMFARegistration; import org.compiere.model.MSysConfig; import org.compiere.model.MUser; -import org.compiere.model.PO; import org.compiere.util.Env; import org.compiere.util.Msg; import org.compiere.util.Util; @@ -249,12 +248,7 @@ public class TOTPMechanism implements IMFAMechanism { * @param reg */ private void saveRegistration(MMFARegistration reg) { - try { - PO.setCrossTenantSafe(); - reg.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + reg.saveCrossTenantSafeEx(); } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ADTreeFavoriteOnDropListener.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ADTreeFavoriteOnDropListener.java index 34afe8d38b..1eeaccaeb3 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ADTreeFavoriteOnDropListener.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ADTreeFavoriteOnDropListener.java @@ -19,7 +19,6 @@ import org.adempiere.webui.window.Dialog; import org.compiere.model.MTable; import org.compiere.model.MTreeFavoriteNode; import org.compiere.model.MTreeNode; -import org.compiere.model.PO; import org.compiere.util.CLogger; import org.compiere.util.Env; import org.compiere.util.Msg; @@ -407,13 +406,8 @@ public class ADTreeFavoriteOnDropListener implements EventListener { favNode.setParent_ID(parentTNode.getNode_ID()); favNode.setSeqNo(seqNo); - try { - //For service users, needs to persist data in system tenant - PO.setCrossTenantSafe(); - favNode.save(); - }finally { - PO.clearCrossTenantSafe(); - } + //For service users, needs to persist data in system tenant + favNode.saveCrossTenantSafeEx(); } } // updateTFNParentAndSeqNo diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ValidateMFAPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ValidateMFAPanel.java index dc80df0726..051d776df4 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ValidateMFAPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ValidateMFAPanel.java @@ -54,7 +54,6 @@ import org.compiere.model.MMFARegisteredDevice; import org.compiere.model.MMFARegistration; import org.compiere.model.MSysConfig; import org.compiere.model.MUser; -import org.compiere.model.PO; import org.compiere.model.SystemProperties; import org.compiere.util.CLogger; import org.compiere.util.Env; @@ -393,12 +392,7 @@ public class ValidateMFAPanel extends Window implements EventListener { long daysExpire = MSysConfig.getIntValue(MSysConfig.MFA_REGISTERED_DEVICE_EXPIRATION_DAYS, 30, Env.getAD_Client_ID(m_ctx)); rd.setExpiration(new Timestamp(System.currentTimeMillis() + (daysExpire * 86400000L))); // TODO: rd.setHelp -> add information about the browser, device and IP address (fingerprint) - try { - PO.setCrossTenantSafe(); - rd.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + rd.saveCrossTenantSafeEx(); } Env.setContext(m_ctx, Env.MFA_Registration_ID, registrationId); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WFieldSuggestion.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WFieldSuggestion.java index 6d1c8b411c..a1b5a53044 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WFieldSuggestion.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WFieldSuggestion.java @@ -16,7 +16,6 @@ import org.adempiere.webui.util.ZKUpdateUtil; import org.compiere.model.MField; import org.compiere.model.MFieldSuggestion; import org.compiere.model.MSysConfig; -import org.compiere.model.PO; import org.compiere.util.Env; import org.compiere.util.Msg; import org.zkoss.zk.ui.event.Event; @@ -174,12 +173,7 @@ public class WFieldSuggestion extends Window implements EventListener { suggestion.setIsApproved(false); suggestion.setIsUpdateBaseLanguage(false); suggestion.setProcessed(false); - try { - PO.setCrossTenantSafe(); - suggestion.saveEx(); - }finally { - PO.clearCrossTenantSafe(); - } + suggestion.saveCrossTenantSafeEx(); Dialog.info(0, Msg.getMsg(Env.getCtx(),"Your suggestions have been submitted for review")); this.detach(); } diff --git a/org.idempiere.test/src/org/idempiere/test/form/PaymentFormTest.java b/org.idempiere.test/src/org/idempiere/test/form/PaymentFormTest.java index 0014874fee..b2919073f7 100644 --- a/org.idempiere.test/src/org/idempiere/test/form/PaymentFormTest.java +++ b/org.idempiere.test/src/org/idempiere/test/form/PaymentFormTest.java @@ -49,7 +49,6 @@ import org.compiere.model.MPayment; import org.compiere.model.MPaymentProcessor; import org.compiere.model.MProduct; import org.compiere.model.MQuery; -import org.compiere.model.PO; import org.compiere.model.SystemIDs; import org.compiere.process.DocAction; import org.compiere.process.ProcessInfo; @@ -312,12 +311,7 @@ public class PaymentFormTest extends AbstractTestCase { try { payProcessorClass = mpp.getPayProcessorClass(); mpp.setPayProcessorClass("org.compiere.model.PP_Dummy"); - try { - PO.setCrossTenantSafe(); - mpp.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + mpp.saveCrossTenantSafeEx(); boolean ok = form.saveChangesInTrx(getTrxName()); assertTrue(ok, "Save failed: " + form.getProcessMessage()); assertNotNull(form.getPayment(), "Payment not created"); @@ -325,12 +319,7 @@ public class PaymentFormTest extends AbstractTestCase { assertEquals(order.getGrandTotal().setScale(2, RoundingMode.HALF_EVEN), form.getPayment().getPayAmt().setScale(2, RoundingMode.HALF_EVEN), "Wrong Payment Document Amount"); } finally { mpp.setPayProcessorClass(payProcessorClass); - try { - PO.setCrossTenantSafe(); - mpp.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + mpp.saveCrossTenantSafeEx(); } } diff --git a/org.idempiere.test/src/org/idempiere/test/model/BankStatementTest.java b/org.idempiere.test/src/org/idempiere/test/model/BankStatementTest.java index 9f963df4e3..89e2b985d7 100644 --- a/org.idempiere.test/src/org/idempiere/test/model/BankStatementTest.java +++ b/org.idempiere.test/src/org/idempiere/test/model/BankStatementTest.java @@ -36,7 +36,6 @@ import org.compiere.model.MBankStatement; import org.compiere.model.MBankStatementLine; import org.compiere.model.MPayment; import org.compiere.model.MSysConfig; -import org.compiere.model.PO; import org.compiere.model.Query; import org.compiere.process.DocAction; import org.compiere.process.ProcessInfo; @@ -99,12 +98,7 @@ public class BankStatementTest extends AbstractTestCase { MSysConfig sysConfig = query.setOrderBy("AD_Client_ID Desc").setParameters(MSysConfig.ALLOW_REVERSAL_OF_RECONCILED_PAYMENT, getAD_Client_ID()).first(); if (!sysConfig.getValue().equals("Y")) { sysConfig.setValue("Y"); - try { - PO.setCrossTenantSafe(); - sysConfig.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + sysConfig.saveCrossTenantSafeEx(); CacheMgt.get().reset(); } else { sysConfig = null; @@ -165,12 +159,7 @@ public class BankStatementTest extends AbstractTestCase { } finally { if (sysConfig != null) { sysConfig.setValue("N"); - try { - PO.setCrossTenantSafe(); - sysConfig.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + sysConfig.saveCrossTenantSafeEx(); } } } @@ -184,12 +173,7 @@ public class BankStatementTest extends AbstractTestCase { MSysConfig sysConfig = query.setOrderBy("AD_Client_ID Desc").setParameters(MSysConfig.ALLOW_REVERSAL_OF_RECONCILED_PAYMENT, getAD_Client_ID()).first(); if (!sysConfig.getValue().equals("N")) { sysConfig.setValue("N"); - try { - PO.setCrossTenantSafe(); - sysConfig.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + sysConfig.saveCrossTenantSafeEx(); CacheMgt.get().reset(); } else { sysConfig = null; @@ -249,12 +233,7 @@ public class BankStatementTest extends AbstractTestCase { } finally { if (sysConfig != null) { sysConfig.setValue("Y"); - try { - PO.setCrossTenantSafe(); - sysConfig.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + sysConfig.saveCrossTenantSafeEx(); } } } diff --git a/org.idempiere.test/src/org/idempiere/test/model/MSchedulerTest.java b/org.idempiere.test/src/org/idempiere/test/model/MSchedulerTest.java index bb2df8c5e8..f916bb3363 100644 --- a/org.idempiere.test/src/org/idempiere/test/model/MSchedulerTest.java +++ b/org.idempiere.test/src/org/idempiere/test/model/MSchedulerTest.java @@ -36,7 +36,6 @@ import org.compiere.model.MClientInfo; import org.compiere.model.MOrgInfo; import org.compiere.model.MSchedule; import org.compiere.model.MScheduler; -import org.compiere.model.PO; import org.compiere.util.CacheMgt; import org.compiere.util.Env; import org.compiere.util.Util; @@ -69,12 +68,7 @@ public class MSchedulerTest extends AbstractTestCase { schedule.setScheduleType(MSchedule.SCHEDULETYPE_CronSchedulingPattern); schedule.setIsSystemSchedule(false); schedule.setCronPattern("0 17 * * *"); - try { - PO.setCrossTenantSafe(); - schedule.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + schedule.saveCrossTenantSafeEx(); //get jvm timezone //this test assume jvm and db server is using the same default time zone diff --git a/org.idempiere.test/src/org/idempiere/test/model/MUOMConversionTest.java b/org.idempiere.test/src/org/idempiere/test/model/MUOMConversionTest.java index 6fa3267f54..76f1ba9045 100644 --- a/org.idempiere.test/src/org/idempiere/test/model/MUOMConversionTest.java +++ b/org.idempiere.test/src/org/idempiere/test/model/MUOMConversionTest.java @@ -31,7 +31,6 @@ import java.math.RoundingMode; import org.compiere.model.MUOM; import org.compiere.model.MUOMConversion; -import org.compiere.model.PO; import org.compiere.util.CacheMgt; import org.compiere.util.DB; import org.compiere.util.Env; @@ -61,12 +60,7 @@ public class MUOMConversionTest extends AbstractTestCase { conv1.setC_UOM_To_ID(DictionaryIDs.C_UOM.HOUR.id); conv1.setMultiplyRate(new BigDecimal("1.15")); conv1.setDivideRate(BigDecimal.ZERO); - try { - PO.setCrossTenantSafe(); - conv1.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + conv1.saveCrossTenantSafeEx(); MUOMConversion conv2 = null; MUOMConversion conv3 = null; diff --git a/org.idempiere.test/src/org/idempiere/test/model/ModelForeignKeyTest.java b/org.idempiere.test/src/org/idempiere/test/model/ModelForeignKeyTest.java index c67d805d86..f06c039643 100644 --- a/org.idempiere.test/src/org/idempiere/test/model/ModelForeignKeyTest.java +++ b/org.idempiere.test/src/org/idempiere/test/model/ModelForeignKeyTest.java @@ -35,7 +35,6 @@ import org.compiere.model.MColumn; import org.compiere.model.MStyle; import org.compiere.model.MStyleLine; import org.compiere.model.MTest; -import org.compiere.model.PO; import org.compiere.util.CacheMgt; import org.compiere.util.Env; import org.compiere.util.Trx; @@ -62,12 +61,7 @@ public class ModelForeignKeyTest extends AbstractTestCase { // set model cascade on Test.Record_ID MColumn col_test_record_id = new MColumn(ctx, MColumn.getColumn_ID(MTest.Table_Name, MTest.COLUMNNAME_Record_ID), trxName); col_test_record_id.setFKConstraintType(MColumn.FKCONSTRAINTTYPE_ModelCascade); - try { - PO.setCrossTenantSafe(); - col_test_record_id.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + col_test_record_id.saveCrossTenantSafeEx(); MTest test1 = new MTest(ctx, 0, trxName); test1.setName("Test 1"); @@ -93,12 +87,7 @@ public class ModelForeignKeyTest extends AbstractTestCase { // set model cascade on Test.Record_ID MColumn col_test_record_id = new MColumn(ctx, MColumn.getColumn_ID(MTest.Table_Name, MTest.COLUMNNAME_Record_ID), trxName); col_test_record_id.setFKConstraintType(MColumn.FKCONSTRAINTTYPE_ModelSetNull); - try { - PO.setCrossTenantSafe(); - col_test_record_id.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + col_test_record_id.saveCrossTenantSafeEx(); CacheMgt.get().reset(); MTest test1 = new MTest(ctx, 0, trxName); @@ -125,12 +114,7 @@ public class ModelForeignKeyTest extends AbstractTestCase { // set model cascade on Test.Record_ID MColumn col_test_record_id = new MColumn(ctx, MColumn.getColumn_ID(MTest.Table_Name, MTest.COLUMNNAME_Record_ID), trxName); col_test_record_id.setFKConstraintType(MColumn.FKCONSTRAINTTYPE_ModelNoAction_ForbidDeletion); - try { - PO.setCrossTenantSafe(); - col_test_record_id.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + col_test_record_id.saveCrossTenantSafeEx(); CacheMgt.get().reset(); MTest test1 = new MTest(ctx, 0, trxName); @@ -184,12 +168,7 @@ public class ModelForeignKeyTest extends AbstractTestCase { // set model cascade on Test.Record_ID MColumn col_styleline_style = new MColumn(ctx, MColumn.getColumn_ID(MStyleLine.Table_Name, MStyleLine.COLUMNNAME_AD_Style_ID), trxName); col_styleline_style.setFKConstraintType(MColumn.FKCONSTRAINTTYPE_ModelCascade); - try { - PO.setCrossTenantSafe(); - col_styleline_style.saveEx(); - } finally { - PO.clearCrossTenantSafe(); - } + col_styleline_style.saveCrossTenantSafeEx(); CacheMgt.get().reset(); MStyle style = new MStyle(ctx, 0, trxName);