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();