diff --git a/JasperReports/build.xml b/JasperReports/build.xml index fce2f34ece6..9b979230b50 100644 --- a/JasperReports/build.xml +++ b/JasperReports/build.xml @@ -55,7 +55,7 @@ - + diff --git a/JasperReportsWebApp/build.xml b/JasperReportsWebApp/build.xml index b71ae09e519..2b382653c8f 100644 --- a/JasperReportsWebApp/build.xml +++ b/JasperReportsWebApp/build.xml @@ -29,7 +29,7 @@ ------ Compiling webApp - + diff --git a/base/src/org/compiere/model/MProcess.java b/base/src/org/compiere/model/MProcess.java index 31e47a7b42d..6bac24901cc 100644 --- a/base/src/org/compiere/model/MProcess.java +++ b/base/src/org/compiere/model/MProcess.java @@ -264,7 +264,7 @@ public List getParametersAsList(String optionalWhereClause) { && optionalWhereClause.trim().length() > 0) whereClause.append(" AND ").append(optionalWhereClause); // - List list = new Query(getCtx(), I_AD_Process_Para.Table_Name, whereClause.toString(), get_TrxName()) + List list = new Query(getCtx(), I_AD_Process_Para.Table_Name, whereClause.toString(), null) .setParameters(get_ID()) .setOnlyActiveRecords(true) .setOrderBy(MProcessPara.COLUMNNAME_SeqNo) diff --git a/base/src/org/compiere/model/MRole.java b/base/src/org/compiere/model/MRole.java index db10e0c5c9f..c34e61629b3 100644 --- a/base/src/org/compiere/model/MRole.java +++ b/base/src/org/compiere/model/MRole.java @@ -844,7 +844,7 @@ private void loadTableInfo (boolean reload) + "FROM AD_Table WHERE IsActive='Y'"; try { - pstmt = DB.prepareStatement(sql, get_TrxName()); + pstmt = DB.prepareStatement(sql, null); rs = pstmt.executeQuery(); while (rs.next()) { @@ -925,7 +925,7 @@ private void loadRecordAccess(boolean reload) { whereClause = "(AD_Role_ID=? OR AD_User_ID = " + m_AD_User_ID + ")"; } // Add standard access - new Query(getCtx(), I_AD_Record_Access.Table_Name, whereClause, get_TrxName()) + new Query(getCtx(), I_AD_Record_Access.Table_Name, whereClause, null) .setParameters(getAD_Role_ID()) .setOnlyActiveRecords(true) .setOrderBy(I_AD_Record_Access.COLUMNNAME_AD_Table_ID) @@ -1498,7 +1498,7 @@ public Boolean getWindowAccess (int AD_Window_ID) ResultSet rs = null; try { - pstmt = DB.prepareStatement(sql, get_TrxName()); + pstmt = DB.prepareStatement(sql, null); pstmt.setInt(1, getAD_Role_ID()); rs = pstmt.executeQuery(); while (rs.next()) @@ -2926,7 +2926,7 @@ private void loadChildRoles(boolean reload) } // final String whereClause = X_AD_Role_Included.COLUMNNAME_AD_Role_ID+"=?"; - List list = new Query(getCtx(), X_AD_Role_Included.Table_Name, whereClause, get_TrxName()) + List list = new Query(getCtx(), X_AD_Role_Included.Table_Name, whereClause, null) .setParameters(new Object[]{getAD_Role_ID()}) .setOnlyActiveRecords(true) .setOrderBy( @@ -2967,7 +2967,7 @@ private void loadSubstitutedRoles(boolean reload) +" AND (us.ValidFrom IS NULL OR us.ValidFrom <= getdate())" +" AND (us.ValidTo IS NULL OR us.ValidTo >= getdate())" +" AND us.Substitute_ID=?)"; - List list = new Query(getCtx(), Table_Name, whereClause, get_TrxName()) + List list = new Query(getCtx(), Table_Name, whereClause, null) .setParameters(new Object[]{AD_User_ID}) .setClient_ID() .setOrderBy(COLUMNNAME_AD_Role_ID) diff --git a/base/src/org/compiere/model/MSequence.java b/base/src/org/compiere/model/MSequence.java index 3ad0c171cd0..d56747e5cc2 100644 --- a/base/src/org/compiere/model/MSequence.java +++ b/base/src/org/compiere/model/MSequence.java @@ -156,10 +156,6 @@ else if (DB.isOracle()) // Get the table MTable table = MTable.get(Env.getCtx(), TableName); - // Set the transaction from Persistence Object avoid null transaction error - if (table.get_TrxName() == null && trxName != null) - table.set_TrxName(trxName); - int AD_Sequence_ID = rs.getInt(4); boolean gotFromHTTP = false; diff --git a/base/src/org/compiere/model/MTable.java b/base/src/org/compiere/model/MTable.java index 383a830e738..d3db1d2f959 100644 --- a/base/src/org/compiere/model/MTable.java +++ b/base/src/org/compiere/model/MTable.java @@ -163,20 +163,14 @@ public static MTable get (Properties ctx, int AD_Table_ID) * @param tableName case insensitive table name * @return Table */ - public static MTable get (Properties ctx, String tableName) - { + public static MTable get (Properties ctx, String tableName) { if (tableName == null) return null; int tableId = getTable_ID(tableName); if(tableId <= 0) { return null; } - MTable retValue = MTable.get(ctx, tableId); - if (retValue != null) { - Integer key = new Integer (retValue.getAD_Table_ID()); - s_cache.put (key, retValue); - } - return retValue; + return MTable.get(ctx, tableId); } // get /** @@ -447,7 +441,7 @@ public List getColumnsAsList(boolean requery) { return columns; } // Default find - columns = new Query(getCtx(), I_AD_Column.Table_Name, "AD_Table_ID = ?", get_TrxName()) + columns = new Query(getCtx(), I_AD_Column.Table_Name, "AD_Table_ID = ?", null) .setParameters(getAD_Table_ID()) .setOrderBy(I_AD_Column.COLUMNNAME_ColumnName) .list(); diff --git a/base/src/org/compiere/model/PO.java b/base/src/org/compiere/model/PO.java index d219961142f..4c5788a48ad 100644 --- a/base/src/org/compiere/model/PO.java +++ b/base/src/org/compiere/model/PO.java @@ -125,6 +125,24 @@ public abstract class PO private static final String USE_TIMEOUT_FOR_UPDATE = "org.adempiere.po.useTimeoutForUpdate"; private static final int QUERY_TIME_OUT = 10; + private boolean isCachedEntity = false; + + + /** + * Validate if this PO is managed from cache + * @return + */ + public final boolean isCachedEntity() { + return isCachedEntity; + } + + /** + * Set value for cache flag + * @param isCachedEntity + */ + public final void setIsCachedEntity(boolean isCachedEntity) { + this.isCachedEntity = isCachedEntity; + } /** * get instance based on table id , record id and trxName @@ -3817,6 +3835,10 @@ public boolean unlock (String trxName) */ public void set_TrxName (String trxName) { + if(isCachedEntity() + && trxName!= null) { + throw new AdempiereException("Transaction not allowed for cache objects PO: " + this); + } m_trxName = trxName; } // setTrx @@ -3826,6 +3848,9 @@ public void set_TrxName (String trxName) */ public String get_TrxName() { + if(isCachedEntity()) { + throw new AdempiereException("Transaction not allowed for cache objects PO: " + this); + } return m_trxName; } // getTrx diff --git a/base/src/org/compiere/util/CCache.java b/base/src/org/compiere/util/CCache.java index 3a779314c9e..c74df0dfbe0 100644 --- a/base/src/org/compiere/util/CCache.java +++ b/base/src/org/compiere/util/CCache.java @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; +import org.compiere.model.PO; /** * Adempiere Cache. @@ -228,7 +229,12 @@ public Set> entrySet() public V get(Object key) { expire(); - return super.get(key); + V value = super.get(key); + if(value != null && PO.class.isAssignableFrom(value.getClass())) { + PO entity = (PO) value; + entity.setIsCachedEntity(true); + } + return value; } // get /** @@ -241,6 +247,13 @@ public V put (K key, V value) { expire(); m_justReset = false; + if(value == null) { + return super.remove(key); + } + if(PO.class.isAssignableFrom(value.getClass())) { + PO entity = (PO) value; + entity.setIsCachedEntity(true); + } return super.put (key, value); } // put diff --git a/client/build.xml b/client/build.xml index ef1a0b9cb33..fea68f26eb3 100644 --- a/client/build.xml +++ b/client/build.xml @@ -64,7 +64,7 @@ - + diff --git a/com.kkalice.adempiere.migrate/build.xml b/com.kkalice.adempiere.migrate/build.xml index 2382920eef8..6c5df813587 100644 --- a/com.kkalice.adempiere.migrate/build.xml +++ b/com.kkalice.adempiere.migrate/build.xml @@ -87,7 +87,7 @@ - + diff --git a/extend/build.xml b/extend/build.xml index 38713ed3dac..fa89478e872 100644 --- a/extend/build.xml +++ b/extend/build.xml @@ -48,7 +48,7 @@ - + diff --git a/install/build.xml b/install/build.xml index 9120a82466d..ad52c3b3c83 100644 --- a/install/build.xml +++ b/install/build.xml @@ -61,7 +61,7 @@ - + diff --git a/org.adempiere.asset/build.xml b/org.adempiere.asset/build.xml index 6e592867c0e..9109af75a03 100644 --- a/org.adempiere.asset/build.xml +++ b/org.adempiere.asset/build.xml @@ -42,7 +42,7 @@ - + diff --git a/org.adempiere.production/build.xml b/org.adempiere.production/build.xml index e3e54977bdd..c893db6f5c1 100644 --- a/org.adempiere.production/build.xml +++ b/org.adempiere.production/build.xml @@ -56,7 +56,7 @@ - + diff --git a/org.adempiere.webservice/build.xml b/org.adempiere.webservice/build.xml index 01f534a8131..e3ccdd7f339 100755 --- a/org.adempiere.webservice/build.xml +++ b/org.adempiere.webservice/build.xml @@ -72,7 +72,8 @@ destdir="${classes.dir}" debug="${compile.debug}" deprecation="${compile.deprecation}" - optimize="${compile.optimize}"> + optimize="${compile.optimize}" + includeantruntime="false"> diff --git a/org.compiere.mobile/build.xml b/org.compiere.mobile/build.xml index 50d1eff0c32..a957f03bb4e 100644 --- a/org.compiere.mobile/build.xml +++ b/org.compiere.mobile/build.xml @@ -52,7 +52,8 @@ destdir="${classes.dir}" debug="${compile.debug}" deprecation="${compile.deprecation}" - optimize="${compile.optimize}"> + optimize="${compile.optimize}" + includeantruntime="false"> diff --git a/org.eevolution.cashflow/build.xml b/org.eevolution.cashflow/build.xml index d5bb4b91738..71ad1acde1d 100644 --- a/org.eevolution.cashflow/build.xml +++ b/org.eevolution.cashflow/build.xml @@ -53,7 +53,7 @@ - + diff --git a/org.eevolution.fleet/build.xml b/org.eevolution.fleet/build.xml index 8b661c0466b..f9d2e60513e 100644 --- a/org.eevolution.fleet/build.xml +++ b/org.eevolution.fleet/build.xml @@ -45,7 +45,7 @@ - + diff --git a/org.eevolution.freight/build.xml b/org.eevolution.freight/build.xml index 022826db95c..9746c4a9cb7 100644 --- a/org.eevolution.freight/build.xml +++ b/org.eevolution.freight/build.xml @@ -45,7 +45,7 @@ - + @@ -71,7 +71,7 @@ - + diff --git a/org.eevolution.hr_and_payroll/build.xml b/org.eevolution.hr_and_payroll/build.xml index b64b13435c1..4b9b51219c5 100755 --- a/org.eevolution.hr_and_payroll/build.xml +++ b/org.eevolution.hr_and_payroll/build.xml @@ -51,7 +51,7 @@ - + @@ -78,7 +78,7 @@ description="compile the source " > - + diff --git a/org.eevolution.manufacturing/build.xml b/org.eevolution.manufacturing/build.xml index 41ea7a2d891..77179e7fdfc 100644 --- a/org.eevolution.manufacturing/build.xml +++ b/org.eevolution.manufacturing/build.xml @@ -52,7 +52,7 @@ - + @@ -76,7 +76,7 @@ - + diff --git a/org.eevolution.warehouse/build.xml b/org.eevolution.warehouse/build.xml index 76761edccf7..c2cdf1b292f 100644 --- a/org.eevolution.warehouse/build.xml +++ b/org.eevolution.warehouse/build.xml @@ -46,7 +46,7 @@ - + @@ -73,7 +73,7 @@ - + diff --git a/org.spin.finance_management/build.xml b/org.spin.finance_management/build.xml index 1b45d1a718f..0367b9f6311 100644 --- a/org.spin.finance_management/build.xml +++ b/org.spin.finance_management/build.xml @@ -48,7 +48,8 @@ description="compile the source "> + destdir="${build}" + includeantruntime="false"> diff --git a/org.spin.hr_time_and_attendance/build.xml b/org.spin.hr_time_and_attendance/build.xml index 99e42ad53a5..298da6388f9 100644 --- a/org.spin.hr_time_and_attendance/build.xml +++ b/org.spin.hr_time_and_attendance/build.xml @@ -47,7 +47,7 @@ - + diff --git a/org.spin.loan_management/build.xml b/org.spin.loan_management/build.xml index ac88089f38c..23d4ddf57f7 100644 --- a/org.spin.loan_management/build.xml +++ b/org.spin.loan_management/build.xml @@ -51,7 +51,7 @@ - + @@ -77,7 +77,7 @@ - + diff --git a/org.spin.store/build.xml b/org.spin.store/build.xml index 5efd1e290a4..6c56f6152c1 100644 --- a/org.spin.store/build.xml +++ b/org.spin.store/build.xml @@ -45,7 +45,7 @@ - + diff --git a/serverApps/build.xml b/serverApps/build.xml index b9a7a6d94f8..c7ef541b84b 100644 --- a/serverApps/build.xml +++ b/serverApps/build.xml @@ -57,7 +57,8 @@ debug="on" deprecation="off" optimize="on" - classpathref="web.path"> + classpathref="web.path" + includeantruntime="false"> diff --git a/serverRoot/build.xml b/serverRoot/build.xml index e3da98a166e..a73b0c9e9fa 100644 --- a/serverRoot/build.xml +++ b/serverRoot/build.xml @@ -79,7 +79,8 @@ debug="on" deprecation="off" optimize="on" - classpathref="base.path"> + classpathref="base.path" + includeantruntime="false"> diff --git a/sqlj/build.xml b/sqlj/build.xml index ba1523352e6..a601a6aece1 100644 --- a/sqlj/build.xml +++ b/sqlj/build.xml @@ -36,7 +36,8 @@ + debug="on" + includeantruntime="false"> diff --git a/tools/build.xml b/tools/build.xml index 4d34eb5c219..492a6fb60c6 100644 --- a/tools/build.xml +++ b/tools/build.xml @@ -67,7 +67,7 @@ - + diff --git a/webCM/build.xml b/webCM/build.xml index edbba8f9ee8..3036c682ead 100644 --- a/webCM/build.xml +++ b/webCM/build.xml @@ -52,7 +52,8 @@ debug="on" deprecation="off" optimize="on" - classpathref="web.path"> + classpathref="web.path" + includeantruntime="false"> diff --git a/zkwebui/build.xml b/zkwebui/build.xml index 3ae18dcc97d..8086774fdb9 100644 --- a/zkwebui/build.xml +++ b/zkwebui/build.xml @@ -65,7 +65,8 @@ destdir="${classes.dir}" debug="${compile.debug}" deprecation="${compile.deprecation}" - optimize="${compile.optimize}"> + optimize="${compile.optimize}" + includeantruntime="false">