From 969ba70fe19d8d65f4df485a7b758cae09e3e585 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Tue, 19 Mar 2013 15:33:02 +0800 Subject: [PATCH] IDEMPIERE-734 autostarting plug-ins causes a lot of errors if 2Pack/AdempiereActivator is used. --- .../src/org/adempiere/pipo2/PackIn.java | 2 - .../plugin/utils/AdempiereActivator.java | 45 +++++++++++++------ 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java index 54c50a8939..33bb923834 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java @@ -148,8 +148,6 @@ public class PackIn { IDFinder.clearIDCache(); importDetails = new ArrayList(); - System.setProperty("javax.xml.parsers.SAXParserFactory", - "org.apache.xerces.jaxp.SAXParserFactoryImpl"); PackInHandler handler = new PackInHandler(); PIPOContext context = new PIPOContext(); context.trx = Trx.get(trxName, true); diff --git a/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/AdempiereActivator.java b/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/AdempiereActivator.java index f847a30cf4..b0ebb792a2 100644 --- a/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/AdempiereActivator.java +++ b/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/AdempiereActivator.java @@ -11,6 +11,8 @@ import org.adempiere.base.IDictionaryService; import org.adempiere.util.ServerContext; import org.compiere.Adempiere; import org.compiere.model.Query; +import org.compiere.model.ServerStateChangeEvent; +import org.compiere.model.ServerStateChangeListener; import org.compiere.model.X_AD_Package_Imp; import org.compiere.util.CLogger; import org.compiere.util.Env; @@ -114,8 +116,8 @@ public class AdempiereActivator implements BundleActivator, ServiceTrackerCustom } // call 2pack service.merge(context, zipfile); - } catch (Exception e) { - logger.log(Level.SEVERE, "Error on Dictionary service", e); + } catch (Throwable e) { + logger.log(Level.SEVERE, "Pack in failed.", e); } finally{ if (zipstream != null) { @@ -158,18 +160,35 @@ public class AdempiereActivator implements BundleActivator, ServiceTrackerCustom public IDictionaryService addingService( ServiceReference reference) { service = context.getService(reference); - Adempiere.getThreadPoolExecutor().execute(new Runnable() { - @Override - public void run() { - setupPackInContext(); - try { - installPackage(); - } finally { - ServerContext.dispose(); - service = null; + if (Adempiere.getThreadPoolExecutor() != null) { + Adempiere.getThreadPoolExecutor().execute(new Runnable() { + @Override + public void run() { + try { + setupPackInContext(); + installPackage(); + } finally { + ServerContext.dispose(); + service = null; + } } - } - }); + }); + } else { + Adempiere.addServerStateChangeListener(new ServerStateChangeListener() { + @Override + public void stateChange(ServerStateChangeEvent event) { + if (event.getEventType() == ServerStateChangeEvent.SERVER_START && service != null) { + try { + setupPackInContext(); + installPackage(); + } finally { + ServerContext.dispose(); + service = null; + } + } + } + }); + } return null; }