diff --git a/org.adempiere.base/plugin.xml b/org.adempiere.base/plugin.xml index b954f4a788..dfd2ea6805 100644 --- a/org.adempiere.base/plugin.xml +++ b/org.adempiere.base/plugin.xml @@ -13,6 +13,7 @@ + + + + + numeric priority value, higher value is of higher priority. + + + @@ -117,7 +124,7 @@ Instead, you specify Table and Column in the extension declaration. - This file is part of Adempiere ERP Bazaar http://www.adempiere.org. + This file is part of Adempiere ERP Bazaar http://www.adempiere.org. Copyright (C) Jorg Viola. Copyright (C) Contributors. @@ -133,8 +140,7 @@ Instead, you specify Table and Column in the extension declaration. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. Contributors: - Heng Sin Low - + Heng Sin Low diff --git a/org.adempiere.base/schema/org.adempiere.base.ModelValidator.exsd b/org.adempiere.base/schema/org.adempiere.base.ModelValidator.exsd index 493d7183b9..6b70ec8003 100644 --- a/org.adempiere.base/schema/org.adempiere.base.ModelValidator.exsd +++ b/org.adempiere.base/schema/org.adempiere.base.ModelValidator.exsd @@ -6,7 +6,7 @@ - Extension point to provide model validator instance. Use the {extension id} syntax in AD_ModelValidator.ModelValidationClass to reference the extension that will provide the concrete ModelValidator instance ( replace {extension id} with your actual extension id ). Alternatively, you can use the EventManager service to listen to model and document event which doesn't need any AD table entry ( see event.test project for example ). + Extension point for bundle to contribute model validator implementation. Use the {extension id} syntax in AD_ModelValidator.ModelValidationClass to reference the extension that will provide the concrete ModelValidator instance ( replace {extension id} with your actual extension id ). This extension point is provided to ease migration of pre-OSGi ADempiere code, new code is recommended to use the IEventManager service to listen to model and document event( see event.test project for example ). @@ -59,6 +59,13 @@ + + + + numeric priority value, higher value is of higher priority + + + @@ -107,7 +114,7 @@ AD_ModelValidator.ModelValidationClass="org.adempiere.extend.myModelValidat - This file is part of Adempiere ERP Bazaar http://www.adempiere.org. + This file is part of Adempiere ERP Bazaar http://www.adempiere.org. Copyright (C) Jorg Viola. Copyright (C) Contributors. @@ -120,7 +127,7 @@ AD_ModelValidator.ModelValidationClass="org.adempiere.extend.myModelValidat See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. diff --git a/org.adempiere.base/schema/org.adempiere.base.Process.exsd b/org.adempiere.base/schema/org.adempiere.base.Process.exsd index b817f05353..683acdb6e0 100644 --- a/org.adempiere.base/schema/org.adempiere.base.Process.exsd +++ b/org.adempiere.base/schema/org.adempiere.base.Process.exsd @@ -6,7 +6,7 @@ - Extension to provide process implementation. Use the {extension id} syntax in AD_Process.ClassName to reference the extension that will provide the ProcessCall/SvrProcess instance (replace {extension id} with your actual extension id ) + Extension point for bundle to contribute process implementation. Use the {extension id} syntax in AD_Process.ClassName to reference the extension that will provide the ProcessCall/SvrProcess instance (replace {extension id} with your actual extension id ) @@ -59,6 +59,13 @@ + + + + numeric priority value, higher value is of higher priority + + + @@ -106,7 +113,7 @@ AD_Process.ClassName="org.adempiere.extend.myProcess" - This file is part of Adempiere ERP Bazaar http://www.adempiere.org. + This file is part of Adempiere ERP Bazaar http://www.adempiere.org. Copyright (C) Jorg Viola. Copyright (C) Contributors. @@ -119,7 +126,7 @@ AD_Process.ClassName="org.adempiere.extend.myProcess" See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. diff --git a/org.adempiere.base/schema/org.compiere.model.Callout.exsd b/org.adempiere.base/schema/org.compiere.model.Callout.exsd new file mode 100644 index 0000000000..0774b06a5d --- /dev/null +++ b/org.adempiere.base/schema/org.compiere.model.Callout.exsd @@ -0,0 +1,113 @@ + + + + + + + + + Extension point for bundle to contribute Callout implementation. Use the {extension id}.{methodName} syntax in AD_Column.Callout to reference the extension that will provide the CalloutEngine instance (replace {extension id} with your actual extension id ). This extension point is provided to ease migration from pre-OSGi ADempiere code, new code is recommended to use the org.adempiere.base.IColumnCallout extension point. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Implementation class name that extend org.compiere.model.CalloutEngine + + + + + + + + + + numeric priority value, higher value is of higher priority. + + + + + + + + + + + + 1.0.0 + + + + + + + + + <pre> + <extension + point="org.compiere.model.Callout" + id="org.compiere.model.CalloutOrder" + name="Order Callout"> + <callout + class="org.compiere.model.CalloutOrder"> + </callout> + </extension> + + AD_Column.Callout="org.compiere.model.CalloutOrder.bPartner +</pre> + + + + + + + + + + Class attribute must represent a subclass of org.compiere.model.CalloutEngine + + + + + + diff --git a/org.adempiere.base/src/org/compiere/model/GridTab.java b/org.adempiere.base/src/org/compiere/model/GridTab.java index 6704a8ec95..81e402d276 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTab.java +++ b/org.adempiere.base/src/org/compiere/model/GridTab.java @@ -2854,8 +2854,14 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable { if (methodStart != -1) // no class { - Class cClass = Class.forName(cmd.substring(0,methodStart)); - call = (Callout)cClass.newInstance(); + String className = cmd.substring(0,methodStart); + //first, check matching extension id in extension registry + call = Service.locate(Callout.class, className); + if (call == null) { + //no match from extension registry, check java classpath + Class cClass = Class.forName(className); + call = (Callout)cClass.newInstance(); + } method = cmd.substring(methodStart+1); } } @@ -3170,7 +3176,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable } return tabNo; } - + public GridTab getParentTab() { int parentTabNo = getParentTabNo();