hg merge release-1.0c (forward-porting)

This commit is contained in:
Carlos Ruiz 2013-07-31 10:04:55 -05:00
commit d0f1a03dba
79 changed files with 607 additions and 135 deletions

View File

@ -0,0 +1,32 @@
-- Jul 24, 2013 10:16:11 AM COT
-- IDEMPIERE-1187 in make menu window, when select "Summary Level", field "Window" still display
UPDATE AD_Field SET DisplayLogic='@Action@=W & @IsSummary@=N',Updated=TO_DATE('2013-07-24 10:16:11','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206
;
-- Jul 24, 2013 10:16:35 AM COT
-- IDEMPIERE-1187 in make menu window, when select "Summary Level", field "Window" still display
UPDATE AD_Field SET DisplayLogic='@Action@=X & @IsSummary@=N',Updated=TO_DATE('2013-07-24 10:16:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=3612
;
-- Jul 24, 2013 10:16:48 AM COT
-- IDEMPIERE-1187 in make menu window, when select "Summary Level", field "Window" still display
UPDATE AD_Field SET DisplayLogic='@Action@=I & @IsSummary@=N',Updated=TO_DATE('2013-07-24 10:16:48','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201638
;
-- Jul 24, 2013 10:17:27 AM COT
-- IDEMPIERE-1187 in make menu window, when select "Summary Level", field "Window" still display
UPDATE AD_Field SET DisplayLogic='@Action@=P | @Action@=R & @IsSummary@=N',Updated=TO_DATE('2013-07-24 10:17:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=2576
;
-- Jul 24, 2013 10:17:53 AM COT
-- IDEMPIERE-1187 in make menu window, when select "Summary Level", field "Window" still display
UPDATE AD_Field SET DisplayLogic='@Action@=T & @IsSummary@=N',Updated=TO_DATE('2013-07-24 10:17:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=208
;
-- Jul 24, 2013 10:18:05 AM COT
-- IDEMPIERE-1187 in make menu window, when select "Summary Level", field "Window" still display
UPDATE AD_Field SET DisplayLogic='@Action@=F & @IsSummary@=N',Updated=TO_DATE('2013-07-24 10:18:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=207
;
SELECT register_migration_script('20130724102515_IDEMPIERE-1187.sql') FROM dual
;

View File

@ -0,0 +1,7 @@
-- Jul 30, 2013 11:49:17 AM SGT
-- IDEMPIERE-840 Improvement to Request model class
UPDATE AD_ModelValidator SET IsActive='N',Updated=TO_DATE('2013-07-30 11:49:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_ModelValidator_ID=200003
;
SELECT register_migration_script('201307301144_IDEMPIERE-840.sql') FROM dual
;

View File

@ -0,0 +1,25 @@
-- Jul 30, 2013 3:02:24 PM COT
-- IDEMPIERE-1162
UPDATE R_MailText SET MailText='Dear @Name@,
You are receiving this email because you (or somebody pretending to be you) said you have lost your iDempiere password.
To access your iDempiere, use the temporary password from @AD_Client_ID<Name>@ below:
@#NewPassword@
Once you login, you will be directed to change password screen. Please change your password to something you can remember.
Sincerely,
The iDempiere Accounts Team
Note: This email address cannot accept replies.',Updated=TO_DATE('2013-07-30 15:02:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE R_MailText_ID=200000
;
-- Jul 30, 2013 3:02:24 PM COT
-- IDEMPIERE-1162
UPDATE R_MailText_Trl SET IsTranslated='N' WHERE R_MailText_ID=200000
;
SELECT register_migration_script('201307301502_IDEMPIERE-1162.sql') FROM dual
;

View File

@ -0,0 +1,7 @@
-- Jul 30, 2013 11:33:11 PM SGT
-- IDEMPIERE-840 Improvement to Request model class
DELETE FROM AD_ModelValidator WHERE AD_ModelValidator_ID=200003
;
SELECT register_migration_script('201307302339_IDEMPIERE-840.sql') FROM dual
;

View File

@ -0,0 +1,13 @@
-- Jul 31, 2013 9:00:38 AM COT
-- IDEMPIERE-840 Improvement to Request model class
INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,AD_Org_ID,Created,AD_Client_ID) VALUES ('I','Sent by iDempiereMail',200218,'D','e1049e33-cbdc-4fc4-94fa-9e99f6bb07cc','RequestSentBy','Y',TO_DATE('2013-07-31 09:00:30','YYYY-MM-DD HH24:MI:SS'),100,100,0,TO_DATE('2013-07-31 09:00:30','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 31, 2013 9:00:38 AM COT
-- IDEMPIERE-840 Improvement to Request model class
INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Message_Trl_UU ) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=200218 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID)
;
SELECT register_migration_script('201307310904_IDEMPIERE-840.sql') FROM dual
;

View File

@ -0,0 +1,32 @@
-- Jul 24, 2013 10:16:11 AM COT
-- IDEMPIERE-1187 in make menu window, when select "Summary Level", field "Window" still display
UPDATE AD_Field SET DisplayLogic='@Action@=W & @IsSummary@=N',Updated=TO_TIMESTAMP('2013-07-24 10:16:11','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206
;
-- Jul 24, 2013 10:16:35 AM COT
-- IDEMPIERE-1187 in make menu window, when select "Summary Level", field "Window" still display
UPDATE AD_Field SET DisplayLogic='@Action@=X & @IsSummary@=N',Updated=TO_TIMESTAMP('2013-07-24 10:16:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=3612
;
-- Jul 24, 2013 10:16:48 AM COT
-- IDEMPIERE-1187 in make menu window, when select "Summary Level", field "Window" still display
UPDATE AD_Field SET DisplayLogic='@Action@=I & @IsSummary@=N',Updated=TO_TIMESTAMP('2013-07-24 10:16:48','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201638
;
-- Jul 24, 2013 10:17:27 AM COT
-- IDEMPIERE-1187 in make menu window, when select "Summary Level", field "Window" still display
UPDATE AD_Field SET DisplayLogic='@Action@=P | @Action@=R & @IsSummary@=N',Updated=TO_TIMESTAMP('2013-07-24 10:17:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=2576
;
-- Jul 24, 2013 10:17:53 AM COT
-- IDEMPIERE-1187 in make menu window, when select "Summary Level", field "Window" still display
UPDATE AD_Field SET DisplayLogic='@Action@=T & @IsSummary@=N',Updated=TO_TIMESTAMP('2013-07-24 10:17:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=208
;
-- Jul 24, 2013 10:18:05 AM COT
-- IDEMPIERE-1187 in make menu window, when select "Summary Level", field "Window" still display
UPDATE AD_Field SET DisplayLogic='@Action@=F & @IsSummary@=N',Updated=TO_TIMESTAMP('2013-07-24 10:18:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=207
;
SELECT register_migration_script('20130724102515_IDEMPIERE-1187.sql') FROM dual
;

View File

@ -0,0 +1,7 @@
-- Jul 30, 2013 11:49:17 AM SGT
-- IDEMPIERE-840 Improvement to Request model class
UPDATE AD_ModelValidator SET IsActive='N',Updated=TO_TIMESTAMP('2013-07-30 11:49:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_ModelValidator_ID=200003
;
SELECT register_migration_script('201307301144_IDEMPIERE-840.sql') FROM dual
;

View File

@ -0,0 +1,25 @@
-- Jul 30, 2013 3:02:24 PM COT
-- IDEMPIERE-1162
UPDATE R_MailText SET MailText='Dear @Name@,
You are receiving this email because you (or somebody pretending to be you) said you have lost your iDempiere password.
To access your iDempiere, use the temporary password from @AD_Client_ID<Name>@ below:
@#NewPassword@
Once you login, you will be directed to change password screen. Please change your password to something you can remember.
Sincerely,
The iDempiere Accounts Team
Note: This email address cannot accept replies.',Updated=TO_TIMESTAMP('2013-07-30 15:02:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE R_MailText_ID=200000
;
-- Jul 30, 2013 3:02:24 PM COT
-- IDEMPIERE-1162
UPDATE R_MailText_Trl SET IsTranslated='N' WHERE R_MailText_ID=200000
;
SELECT register_migration_script('201307301502_IDEMPIERE-1162.sql') FROM dual
;

View File

@ -0,0 +1,7 @@
-- Jul 30, 2013 11:33:11 PM SGT
-- IDEMPIERE-840 Improvement to Request model class
DELETE FROM AD_ModelValidator WHERE AD_ModelValidator_ID=200003
;
SELECT register_migration_script('201307302339_IDEMPIERE-840.sql') FROM dual
;

View File

@ -0,0 +1,13 @@
-- Jul 31, 2013 9:00:38 AM COT
-- IDEMPIERE-840 Improvement to Request model class
INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,AD_Org_ID,Created,AD_Client_ID) VALUES ('I','Sent by iDempiereMail',200218,'D','e1049e33-cbdc-4fc4-94fa-9e99f6bb07cc','RequestSentBy','Y',TO_TIMESTAMP('2013-07-31 09:00:30','YYYY-MM-DD HH24:MI:SS'),100,100,0,TO_TIMESTAMP('2013-07-31 09:00:30','YYYY-MM-DD HH24:MI:SS'),0)
;
-- Jul 31, 2013 9:00:38 AM COT
-- IDEMPIERE-840 Improvement to Request model class
INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Message_Trl_UU ) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=200218 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID)
;
SELECT register_migration_script('201307310904_IDEMPIERE-840.sql') FROM dual
;

View File

@ -274,6 +274,7 @@ Import-Package: com.sun.mail.auth;version="1.4.5",
org.apache.commons.net.ftp,
org.apache.ecs,
org.apache.ecs.xhtml,
org.apache.felix.scr;version="1.6.0",
org.apache.poi.hssf.usermodel,
org.apache.poi.ss.usermodel,
org.apache.tools.ant,
@ -282,6 +283,7 @@ Import-Package: com.sun.mail.auth;version="1.4.5",
org.eclipse.osgi.framework.console;version="1.1.0",
org.eclipse.osgi.service.datalocation,
org.osgi.framework,
org.osgi.service.cm;version="1.3.0",
org.osgi.service.component;version="1.1.0",
org.osgi.service.event;version="1.2.0",
org.osgi.util.tracker;version="1.5.0",

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.archive.store.archivedb">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.model.ArchiveDB">
<implementation class="org.compiere.model.ArchiveDB"/>
<service>
<provide interface="org.compiere.model.IArchiveStore"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.archive.store.archivefile">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.model.ArchiveFileSystem">
<implementation class="org.compiere.model.ArchiveFileSystem"/>
<service>
<provide interface="org.compiere.model.IArchiveStore"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.attachment.store.attachmentdb">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.model.AttachmentDBSystem">
<implementation class="org.compiere.model.AttachmentDBSystem"/>
<service>
<provide interface="org.compiere.model.IAttachmentStore"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.attachment.store.attachmentfile">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.model.AttachmentFileSystem">
<implementation class="org.compiere.model.AttachmentFileSystem"/>
<service>
<provide interface="org.compiere.model.IAttachmentStore"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.broadcast.util">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.broadcast.BroadCastUtil">
<implementation class="org.idempiere.broadcast.BroadCastUtil"/>
<reference bind="bindMessageService" cardinality="1..1" interface="org.idempiere.distributed.IMessageService" name="IMessageService" policy="dynamic" unbind="unbindMessageService"/>
</scr:component>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.columncallout.factory.default">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.DefaultColumnCalloutFactory">
<implementation class="org.adempiere.base.DefaultColumnCalloutFactory"/>
<service>
<provide interface="org.adempiere.base.IColumnCalloutFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.doc.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.DefaultDocumentFactory">
<implementation class="org.adempiere.base.DefaultDocumentFactory"/>
<service>
<provide interface="org.adempiere.base.IDocFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.lookup.factory.default">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.DefaultLookupFactory">
<implementation class="org.adempiere.base.DefaultLookupFactory"/>
<service>
<provide interface="org.adempiere.base.ILookupFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.model.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.DefaultModelFactory">
<implementation class="org.adempiere.base.DefaultModelFactory"/>
<service>
<provide interface="org.adempiere.base.IModelFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.modelvalidator.factory.default">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.DefaultModelValidatorFactory">
<implementation class="org.adempiere.base.DefaultModelValidatorFactory"/>
<service>
<provide interface="org.adempiere.base.IModelValidatorFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.paymentprocessor.factory.default">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.DefaultPaymentProcessorFactory">
<implementation class="org.adempiere.base.DefaultPaymentProcessorFactory"/>
<service>
<provide interface="org.adempiere.base.IPaymentProcessorFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.process.factory.default">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.DefaultProcessFactory">
<implementation class="org.adempiere.base.DefaultProcessFactory"/>
<service>
<provide interface="org.adempiere.base.IProcessFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.shipmentprocessor.factory.default">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.DefaultShipmentProcessorFactory">
<implementation class="org.adempiere.base.DefaultShipmentProcessorFactory"/>
<service>
<provide interface="org.adempiere.base.IShipmentProcessorFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.ds.locator">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.ds.DynamicServiceLocator">
<property name="service.ranking" type="Integer" value="1"/>
<service>
<provide interface="org.adempiere.base.IServiceLocator"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="org.adempiere.base.event.manager">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="org.adempiere.base.event.EventManager">
<implementation class="org.adempiere.base.event.EventManager"/>
<reference bind="bindEventAdmin" cardinality="1..1" interface="org.osgi.service.event.EventAdmin" name="EventAdmin" policy="static" unbind="unbindEventAdmin"/>
<service>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.keystore.default">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.util.DefaultKeyStore">
<implementation class="org.compiere.util.DefaultKeyStore"/>
<service>
<provide interface="org.adempiere.base.IKeyStore"/>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.0.0">
<OCD description="Request Service" name="Request Service" id="org.adempiere.base.event.RequestEventHandler">
<AD name="Ignore Request Types" id="ignoreRequestTypes" required="true" type="String" default=""/>
</OCD>
<Designate pid="org.adempiere.base.event.RequestEventHandler">
<Object ocdref="org.adempiere.base.event.RequestEventHandler"/>
</Designate>
</metatype:MetaData>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" configuration-policy="optional" name="org.adempiere.base.event.RequestEventHandler">
<implementation class="org.adempiere.base.event.RequestEventHandler"/>
<reference bind="bindEventManager" cardinality="1..1" interface="org.adempiere.base.event.IEventManager" name="IEventManager" policy="static" unbind="unbindEventManager"/>
<service>
<provide interface="org.osgi.service.cm.ManagedService"/>
<provide interface="org.adempiere.base.event.RequestEventHandler"/>
</service>
<property name="service.pid" type="String" value="org.adempiere.base.event.RequestEventHandler"/>
</scr:component>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.event.RequestPropertyService">
<implementation class="org.adempiere.base.event.RequestPropertyService"/>
<reference bind="bindConfigurationAdmin" cardinality="1..1" interface="org.osgi.service.cm.ConfigurationAdmin" name="ConfigurationAdmin" policy="static" unbind="unbindConfigurationAdmin"/>
</scr:component>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.interfaces.server">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.interfaces.impl.ServerBean">
<implementation class="org.compiere.interfaces.impl.ServerBean"/>
<service>
<provide interface="org.compiere.interfaces.Server"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.base.interfaces.status">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.interfaces.impl.StatusBean">
<implementation class="org.compiere.interfaces.impl.StatusBean"/>
<service>
<provide interface="org.compiere.interfaces.Status"/>

View File

@ -28,6 +28,8 @@ bin.includes = META-INF/,\
OSGI-INF/defaultshipmentprocessorfactory.xml,\
OSGI-INF/defaultpaymentprocessorfactory.xml,\
OSGI-INF/broadcastutil.xml,\
OSGI-INF/requesteventhandler.xml,\
OSGI-INF/requestpropertyservice.xml,\
schema/
output.base.jar = build/
src.includes = schema/

View File

@ -42,6 +42,7 @@ import org.osgi.util.tracker.ServiceTracker;
public class BaseActivator implements BundleActivator {
private static BundleContext bundleContext = null;
private ComponentBlackListService blacklistService;
/**
* default constructor
@ -58,6 +59,8 @@ public class BaseActivator implements BundleActivator {
loadInitProperties(Adempiere.getAdempiereHome());
bundleContext = context;
context.registerService(CommandProvider.class.getName(), new StackTraceCommand(), null);
blacklistService = new ComponentBlackListService(context);
}
/*
@ -114,6 +117,10 @@ public class BaseActivator implements BundleActivator {
}
}
trackerCache.clear();
if (blacklistService != null) {
blacklistService.stop(context);
blacklistService = null;
}
Adempiere.stop();
}

View File

@ -0,0 +1,129 @@
/******************************************************************************
* Copyright (C) 2012 Heng Sin Low *
* Copyright (C) 2012 Trek Global *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* 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. *
*****************************************************************************/
package org.adempiere.base;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.felix.scr.Component;
import org.apache.felix.scr.ScrService;
import org.compiere.util.Ini;
import org.compiere.util.Util;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceEvent;
import org.osgi.framework.ServiceListener;
import org.osgi.framework.ServiceReference;
import org.osgi.service.component.ComponentConstants;
/**
* @author hengsin
*
*/
public class ComponentBlackListService implements ServiceListener {
private ScrService scrService = null;
private List<String> blackListComponentNames = null;
protected ComponentBlackListService(BundleContext context) {
ServiceReference<ScrService> ref = context.getServiceReference(ScrService.class);
scrService = context.getService(ref);
blackListComponentNames = new ArrayList<String>();
retrieveBlacklistCandidates();
if (!blackListComponentNames.isEmpty()) {
disableComponents();
}
context.addServiceListener(this);
}
public void stop(BundleContext context) {
scrService = null;
blackListComponentNames = null;
context.removeServiceListener(this);
}
private void retrieveBlacklistCandidates() {
String path = Ini.getAdempiereHome();
File file = new File(path, "components.blacklist");
if (file.exists()) {
BufferedReader br = null;
try {
FileReader reader = new FileReader(file);
br = new BufferedReader(reader);
String s = null;
do {
s = br.readLine();
if (!Util.isEmpty(s)) {
blackListComponentNames.add(s.trim());
}
} while (s != null);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {}
}
}
}
}
private void disableComponents()
{
Component[] comps = scrService.getComponents();
for (Component comp : comps) {
if (blackListComponentNames.contains(comp.getName())) {
comp.disable();
}
}
}
private void disableComponent(String componentName)
{
Component[] comps = scrService.getComponents();
for (Component comp : comps) {
if (comp.getName().equals(componentName)) {
comp.disable();
break;
}
}
}
/* (non-Javadoc)
* @see org.osgi.framework.ServiceListener#serviceChanged(org.osgi.framework.ServiceEvent)
*/
@Override
public void serviceChanged(ServiceEvent event) {
if (event.getType() == ServiceEvent.REGISTERED) {
if (scrService != null && !blackListComponentNames.isEmpty()) {
ServiceReference<?> ref = event.getServiceReference();
String name = (String) ref.getProperty(ComponentConstants.COMPONENT_NAME);
if (!Util.isEmpty(name)) {
if (blackListComponentNames.contains(name)) {
disableComponent(name);
}
}
}
}
}
}

View File

@ -92,5 +92,7 @@ public interface IEventTopics {
public static final String PREF_AFTER_LOAD = "adempiere/pref/afterLoad";
public static final String BROADCAST_MESSAGE = "idempiere/broadcastMsg";
public static final String REQUEST_SEND_EMAIL = "idempiere/requestSendEMail";
}

View File

@ -1,5 +1,5 @@
/******************************************************************************
* Copyright (C) 2013 Elaine Tan *
* Copyright (C) 2013 Nur Yasmin *
* Copyright (C) 2013 Trek Global
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
@ -11,8 +11,7 @@
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
*****************************************************************************/
package org.compiere.model;
package org.adempiere.base.event;
import static org.compiere.model.SystemIDs.MESSAGE_REQUESTUPDATE;
@ -21,75 +20,87 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Dictionary;
import java.util.StringTokenizer;
import java.util.logging.Level;
import org.adempiere.base.event.EventManager;
import org.adempiere.base.event.RequestSendEMailEventData;
import org.adempiere.exceptions.DBException;
import org.compiere.model.I_R_Request;
import org.compiere.model.MClient;
import org.compiere.model.MNote;
import org.compiere.model.MRequest;
import org.compiere.model.MRequestAction;
import org.compiere.model.MRequestType;
import org.compiere.model.MRequestUpdate;
import org.compiere.model.MUser;
import org.compiere.model.PO;
import org.compiere.model.X_AD_User;
import org.compiere.model.X_R_Request;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.util.Msg;
import org.compiere.util.Util;
import org.osgi.service.cm.ConfigurationException;
import org.osgi.service.cm.ManagedService;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
/**
*
* @author Elaine
* Request event handler
* @author Nur Yasmin
*
*/
public class RequestValidator implements ModelValidator, EventHandler
public class RequestEventHandler extends AbstractEventHandler implements ManagedService
{
public static final String ON_REQUEST_SEND_EMAIL_TOPIC = "onRequestSendEMail";
private static CLogger s_log = CLogger.getCLogger (RequestValidator.class);
private int m_AD_Client_ID;
private static CLogger s_log = CLogger.getCLogger (RequestEventHandler.class);
@Override
public void initialize(ModelValidationEngine engine, MClient client)
protected void doHandleEvent(Event event)
{
if (client != null)
m_AD_Client_ID = client.getAD_Client_ID();
engine.addModelChange(I_R_Request.Table_Name, this);
if (EventManager.getInstance() != null)
EventManager.getInstance().register(ON_REQUEST_SEND_EMAIL_TOPIC, this);
}
@Override
public int getAD_Client_ID()
{
return m_AD_Client_ID;
}
@Override
public String login(int AD_Org_ID, int AD_Role_ID, int AD_User_ID)
{
return null;
}
@Override
public String modelChange(PO po, int type) throws Exception
{
if (po instanceof MRequest )
String topic = event.getTopic();
if (topic.equals(IEventTopics.REQUEST_SEND_EMAIL))
{
MRequest r = (MRequest) po;
if (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)
beforeSaveRequest(r, type == TYPE_BEFORE_NEW);
else if (type == TYPE_AFTER_NEW || type == TYPE_AFTER_CHANGE)
afterSaveRequest(r, type == TYPE_AFTER_NEW);
RequestSendEMailEventData eventData = (RequestSendEMailEventData) event.getProperty(EventManager.EVENT_DATA);
if (!eventData.getClient().sendEMail(eventData.getFrom(), eventData.getTo(), eventData.getSubject(), eventData.getMessage(), eventData.getAttachment()))
{
int AD_Message_ID = MESSAGE_REQUESTUPDATE;
MNote note = new MNote(Env.getCtx(), AD_Message_ID, eventData.getTo().getAD_User_ID(),
X_R_Request.Table_ID, eventData.getRequestID(),
eventData.getSubject(), eventData.getMessage(), null);
note.save();
}
}
else if (topic.equals(IEventTopics.PO_BEFORE_NEW) || topic.equals(IEventTopics.PO_BEFORE_CHANGE)
|| topic.equals(IEventTopics.PO_AFTER_NEW) || topic.equals(IEventTopics.PO_AFTER_CHANGE))
{
PO po = getPO(event);
if (po.get_TableName().equals(I_R_Request.Table_Name))
{
MRequest r = (MRequest) po;
MRequestType rt = r.getRequestType();
if (ignoreRequestTypes.contains(rt.getName()))
return;
if (topic.equals(IEventTopics.PO_BEFORE_NEW) || topic.equals(IEventTopics.PO_BEFORE_CHANGE))
beforeSaveRequest(r, topic.equals(IEventTopics.PO_BEFORE_NEW));
else if (topic.equals(IEventTopics.PO_AFTER_NEW) || topic.equals(IEventTopics.PO_AFTER_CHANGE))
afterSaveRequest(r, topic.equals(IEventTopics.PO_AFTER_NEW));
}
}
return null;
}
@Override
public String docValidate(PO po, int timing)
protected void initialize()
{
return null;
registerEvent(IEventTopics.REQUEST_SEND_EMAIL);
registerTableEvent(IEventTopics.PO_BEFORE_NEW, I_R_Request.Table_Name);
registerTableEvent(IEventTopics.PO_BEFORE_CHANGE, I_R_Request.Table_Name);
registerTableEvent(IEventTopics.PO_AFTER_NEW, I_R_Request.Table_Name);
registerTableEvent(IEventTopics.PO_AFTER_CHANGE, I_R_Request.Table_Name);
}
public static String beforeSaveRequest(MRequest r, boolean newRecord)
private String beforeSaveRequest(MRequest r, boolean newRecord)
{
// New
if (newRecord)
@ -208,7 +219,7 @@ public class RequestValidator implements ModelValidator, EventHandler
return null;
}
public static String afterSaveRequest(MRequest r, boolean newRecord)
private String afterSaveRequest(MRequest r, boolean newRecord)
{
// Initial Mail
if (newRecord)
@ -223,7 +234,7 @@ public class RequestValidator implements ModelValidator, EventHandler
* @param columnName column
* @return true if changes
*/
public static boolean checkChange (MRequest r, MRequestAction ra, String columnName)
public boolean checkChange (MRequest r, MRequestAction ra, String columnName)
{
if (r.is_ValueChanged(columnName))
{
@ -237,12 +248,12 @@ public class RequestValidator implements ModelValidator, EventHandler
}
return false;
} // checkChange
/**
* Send Update EMail/Notices
* @param list list of changes
*/
public static void sendNotices(MRequest r, ArrayList<String> list)
private void sendNotices(MRequest r, ArrayList<String> list)
{
// Subject
String subject = Msg.translate(r.getCtx(), "R_Request_ID")
@ -362,7 +373,7 @@ public class RequestValidator implements ModelValidator, EventHandler
|| X_AD_User.NOTIFICATIONTYPE_EMailPlusNotice.equals(NotificationType))
{
RequestSendEMailEventData eventData = new RequestSendEMailEventData(client, from, to, subject, message.toString(), pdf, r.getR_Request_ID());
Event event = EventManager.newEvent(ON_REQUEST_SEND_EMAIL_TOPIC, eventData);
Event event = EventManager.newEvent(IEventTopics.REQUEST_SEND_EMAIL, eventData);
EventManager.getInstance().postEvent(event);
}
// Send Note
@ -393,30 +404,33 @@ public class RequestValidator implements ModelValidator, EventHandler
* @param serverAddress server address
* @return Mail Trailer
*/
public static String getMailTrailer(MRequest r, String serverAddress)
private String getMailTrailer(MRequest r, String serverAddress)
{
StringBuffer sb = new StringBuffer("\n").append(MRequest.SEPARATOR)
.append(Msg.translate(r.getCtx(), "R_Request_ID"))
.append(": ").append(r.getDocumentNo())
.append(" ").append(r.getMailTag())
.append("\nSent by AdempiereMail");
.append("\n")
.append(Msg.getMsg(r.getCtx(), "RequestSentBy"));
if (serverAddress != null)
sb.append(" from ").append(serverAddress);
return sb.toString();
} // getMailTrailer
public static final String IGNORE_REQUEST_TYPES = "ignoreRequestTypes";
private static ArrayList<String> ignoreRequestTypes = new ArrayList<String>();
@SuppressWarnings("rawtypes")
@Override
public void handleEvent(Event event) {
if (event.getTopic() == ON_REQUEST_SEND_EMAIL_TOPIC)
{
RequestSendEMailEventData eventData = (RequestSendEMailEventData) event.getProperty(EventManager.EVENT_DATA);
if (!eventData.getClient().sendEMail(eventData.getFrom(), eventData.getTo(), eventData.getSubject(), eventData.getMessage(), eventData.getAttachment()))
{
int AD_Message_ID = MESSAGE_REQUESTUPDATE;
MNote note = new MNote(Env.getCtx(), AD_Message_ID, eventData.getTo().getAD_User_ID(),
X_R_Request.Table_ID, eventData.getRequestID(),
eventData.getSubject(), eventData.getMessage(), null);
note.save();
public void updated(Dictionary properties) throws ConfigurationException {
if (properties != null) {
String p = (String) properties.get(IGNORE_REQUEST_TYPES);
if (!Util.isEmpty(p)) {
ignoreRequestTypes.clear();
StringTokenizer st = new StringTokenizer(p, ";");
while (st.hasMoreTokens())
ignoreRequestTypes.add(st.nextToken().trim());
}
}
}

View File

@ -0,0 +1,95 @@
/******************************************************************************
* Copyright (C) 2013 Elaine *
* Copyright (C) 2013 Trek Global
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* 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. *
*****************************************************************************/
package org.adempiere.base.event;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.Properties;
import java.util.logging.Level;
import org.compiere.util.CLogger;
import org.compiere.util.Ini;
import org.compiere.util.Util;
import org.osgi.framework.Bundle;
import org.osgi.framework.FrameworkUtil;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
/**
* Request property service
* @author Elaine
*
*/
public class RequestPropertyService {
private static final String REQUESTEVENTHANDLER_PROPERTIES = "requesteventhandler.properties";
private static final CLogger logger = CLogger.getCLogger(RequestPropertyService.class);
public RequestPropertyService() {
}
public void bindConfigurationAdmin(ConfigurationAdmin configurationAdmin) {
readProperties(configurationAdmin);
}
public void unbindConfigurationAdmin(ConfigurationAdmin configurationAdmin) {
}
private void readProperties(ConfigurationAdmin service) {
File file = new File(Ini.getAdempiereHome(), REQUESTEVENTHANDLER_PROPERTIES);
if (file.exists()) {
Properties p = new Properties();
FileInputStream is = null;
try {
is = new FileInputStream(file);
p.load(is);
String ignoreRequesTypes = p.getProperty(RequestEventHandler.IGNORE_REQUEST_TYPES);
if (!Util.isEmpty(ignoreRequesTypes)) {
Configuration configuration = service.getConfiguration(RequestEventHandler.class.getName());
if (configuration.getProperties() == null) {
Dictionary<String, Object> map = new Hashtable<String, Object>();
map.put(RequestEventHandler.IGNORE_REQUEST_TYPES, ignoreRequesTypes);
configuration.update(map);
} else {
Bundle bundle = FrameworkUtil.getBundle(RequestEventHandler.class);
String bundleLocation = bundle.getLocation();
String configLocation = configuration.getBundleLocation();
if (!bundleLocation.equals(configLocation)) {
configuration.setBundleLocation(bundleLocation);
configuration.update();
}
}
}
} catch (FileNotFoundException e) {
logger.log(Level.WARNING, REQUESTEVENTHANDLER_PROPERTIES + " not found.", e);
} catch (IOException e) {
logger.log(Level.SEVERE, "Error reading " + REQUESTEVENTHANDLER_PROPERTIES, e);
} finally {
if (is != null) {
try {
is.close();
} catch (Exception ex) {}
}
}
}
}
}

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.pipo.dictionary.service">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.pipo.srv.PipoDictionaryService">
<implementation class="org.adempiere.pipo.srv.PipoDictionaryService"/>
<service>
<provide interface="org.adempiere.base.IDictionaryService"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.replication.server.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.server.rpl.imp.ReplicationServerFactory">
<implementation class="org.adempiere.server.rpl.imp.ReplicationServerFactory"/>
<service>
<provide interface="org.adempiere.server.IServerFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.report.jasper.swing.viewer.provider">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.report.SwingJRViewerProvider">
<implementation class="org.compiere.report.SwingJRViewerProvider"/>
<service>
<provide interface="org.compiere.report.JRViewerProvider"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.server.factory.defaultacctprocessor">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.server.factory.DefaultAcctProcessorFactory">
<implementation class="org.idempiere.server.factory.DefaultAcctProcessorFactory"/>
<property name="service.ranking" type="Integer" value="0"/>
<service>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.server.factory.defaultalertprocessor">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.server.factory.DefaultAlertProcessorFactory">
<implementation class="org.idempiere.server.factory.DefaultAlertProcessorFactory"/>
<property name="service.ranking" type="Integer" value="0"/>
<service>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.server.factory.defaultldapprocessor">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.server.factory.DefaultLDAPProcessorFactory">
<implementation class="org.idempiere.server.factory.DefaultLDAPProcessorFactory"/>
<property name="service.ranking" type="Integer" value="0"/>
<service>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.server.factory.defaultrequestprocessor">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.server.factory.DefaultRequestProcessorFactory">
<implementation class="org.idempiere.server.factory.DefaultRequestProcessorFactory"/>
<property name="service.ranking" type="Integer" value="0"/>
<service>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.server.factory.defaultscheduler">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.server.factory.DefaultSchedulerFactory">
<implementation class="org.idempiere.server.factory.DefaultSchedulerFactory"/>
<property name="service.ranking" type="Integer" value="0"/>
<service>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.server.factory.defaultworkflowprocessor">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.server.factory.DefaultWorkflowProcessorFactory">
<implementation class="org.idempiere.server.factory.DefaultWorkflowProcessorFactory"/>
<property name="service.ranking" type="Integer" value="0"/>
<service>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.createfrom.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.grid.DefaultCreateFromFactory">
<implementation class="org.compiere.grid.DefaultCreateFromFactory"/>
<service>
<provide interface="org.compiere.grid.ICreateFromFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.editor.factory.default">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.factory.DefaultEditorFactory">
<implementation class="org.adempiere.ui.swing.factory.DefaultEditorFactory"/>
<service>
<provide interface="org.adempiere.ui.swing.factory.IEditorFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.form.factory.default">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.factory.DefaultFormFactory">
<implementation class="org.adempiere.ui.swing.factory.DefaultFormFactory"/>
<service>
<provide interface="org.adempiere.ui.swing.factory.IFormFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.info.factory.default">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.factory.DefaultInfoFactory">
<implementation class="org.adempiere.ui.swing.factory.DefaultInfoFactory"/>
<service>
<provide interface="org.adempiere.ui.swing.factory.IInfoFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.payment.form.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.grid.DefaultPaymentFormFactory">
<implementation class="org.compiere.grid.DefaultPaymentFormFactory"/>
<service>
<provide interface="org.compiere.grid.IPaymentFormFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.shipping.printlabel">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.process.DefaultPrintShippingLabel">
<implementation class="org.adempiere.process.DefaultPrintShippingLabel"/>
<service>
<provide interface="org.adempiere.process.IPrintShippingLabel"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.report.viewer.provider">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.print.SwingViewerProvider">
<implementation class="org.compiere.print.SwingViewerProvider"/>
<service>
<provide interface="org.compiere.print.ReportViewerProvider"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.resource.finder">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.util.ResourceFinder">
<implementation class="org.compiere.util.ResourceFinder"/>
<service>
<provide interface="org.adempiere.base.IResourceFinder"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.interfaces.server">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.client.ServerInterface">
<implementation class="org.adempiere.client.ServerInterface"/>
<service>
<provide interface="org.compiere.interfaces.Server"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.swing.interfaces.status">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.client.StatusInterface">
<implementation class="org.adempiere.client.StatusInterface"/>
<service>
<provide interface="org.compiere.interfaces.Status"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.zk.createfrom.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.webui.apps.form.DefaultCreateFromFactory">
<implementation class="org.adempiere.webui.apps.form.DefaultCreateFromFactory"/>
<service>
<provide interface="org.compiere.grid.ICreateFromFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.zk.editor.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.webui.factory.DefaultEditorFactory">
<implementation class="org.adempiere.webui.factory.DefaultEditorFactory"/>
<service>
<provide interface="org.adempiere.webui.factory.IEditorFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.zk.form.factory.default">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.webui.factory.DefaultFormFactory">
<implementation class="org.adempiere.webui.factory.DefaultFormFactory"/>
<service>
<provide interface="org.adempiere.webui.factory.IFormFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.zk.info.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.webui.factory.DefaultInfoFactory">
<implementation class="org.adempiere.webui.factory.DefaultInfoFactory"/>
<service>
<provide interface="org.adempiere.webui.factory.IInfoFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.zk.payment.form.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.webui.apps.form.DefaultPaymentFormFactory">
<implementation class="org.adempiere.webui.apps.form.DefaultPaymentFormFactory"/>
<service>
<provide interface="org.compiere.grid.IPaymentFormFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.zk.shipping.printlabel">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.webui.process.DefaultPrintShippingLabel">
<implementation class="org.adempiere.webui.process.DefaultPrintShippingLabel"/>
<service>
<provide interface="org.adempiere.process.IPrintShippingLabel"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.zk">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.webui.factory.DefaultFeedbackService">
<implementation class="org.adempiere.webui.factory.DefaultFeedbackService"/>
<service>
<provide interface="org.adempiere.webui.factory.IFeedbackService"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.zk.jrviewer.provider">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.webui.window.ZkJRViewerProvider">
<implementation class="org.adempiere.webui.window.ZkJRViewerProvider"/>
<service>
<provide interface="org.compiere.report.JRViewerProvider"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.zk.process.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.webui.util.ProcessFactoryImpl">
<implementation class="org.adempiere.webui.util.ProcessFactoryImpl"/>
<service>
<provide interface="org.adempiere.base.IProcessFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.zk.reportviewer.provider">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.webui.window.ZkReportViewerProvider">
<implementation class="org.adempiere.webui.window.ZkReportViewerProvider"/>
<service>
<provide interface="org.compiere.print.ReportViewerProvider"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.ui.zk.resource.finder">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.webui.util.WebUIResourceFinder">
<implementation class="org.adempiere.webui.util.WebUIResourceFinder"/>
<service>
<provide interface="org.adempiere.base.IResourceFinder"/>

View File

@ -509,7 +509,9 @@ public class ResetPasswordPanel extends Window implements EventListener<Event>
to.set_ValueOfColumn("Password", newPassword); // will be hashed and validate on saveEx
mailText.setUser(to);
String message = mailText.getMailText(true);
Env.setContext(m_ctx, "#NewPassword", newPassword);
message = Env.parseVariable(message, to, to.get_TrxName(), true);
Env.setContext(m_ctx, "#NewPassword", "");
EMail email = client.createEMail(to.getEMail(), mailText.getMailHeader(), message, mailText.isHtml());
if (mailText.isHtml())
email.setMessageHTML(mailText.getMailHeader(), message);

View File

@ -276,7 +276,7 @@ public class TreeSearchPanel extends Panel implements EventListener<Event>, Tree
protected boolean isFolder(Treeitem treeItem) {
List<Component> list = treeItem.getChildren();
for (Component c : list) {
if (c instanceof Treechildren && ((Treechildren)c).getChildren().size() > 1) {
if (c instanceof Treechildren && ((Treechildren)c).getChildren().size() > 0) {
return true;
}
}

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.db.oracle.provider">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.db.DB_Oracle">
<implementation class="org.compiere.db.DB_Oracle"/>
<service>
<provide interface="org.compiere.db.AdempiereDatabase"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.db.postgresql.provider">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.compiere.db.DB_PostgreSQL">
<implementation class="org.compiere.db.DB_PostgreSQL"/>
<service>
<provide interface="org.compiere.db.AdempiereDatabase"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.fitnesse.fixture.fit.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.fitnesse.fixture.FitFixtureFactory">
<implementation class="org.idempiere.fitnesse.fixture.FitFixtureFactory"/>
<service>
<provide interface="org.idempiere.fitnesse.server.fit.IFitFixtureFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.fitnesse.fixture.slim.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.fitnesse.fixture.SlimFixtureFactory">
<implementation class="org.idempiere.fitnesse.fixture.SlimFixtureFactory"/>
<service>
<provide interface="org.idempiere.fitnesse.server.slim.ISlimFixtureFactory"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.hazelcast.service.cache">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.hazelcast.service.CacheServiceImpl">
<implementation class="org.idempiere.hazelcast.service.CacheServiceImpl"/>
<service>
<provide interface="org.idempiere.distributed.ICacheService"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.hazelcast.service.cluster">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.hazelcast.service.ClusterServiceImpl">
<implementation class="org.idempiere.hazelcast.service.ClusterServiceImpl"/>
<service>
<provide interface="org.idempiere.distributed.IClusterService"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.hazelcast.service.message">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.hazelcast.service.MessageServiceImpl">
<implementation class="org.idempiere.hazelcast.service.MessageServiceImpl"/>
<service>
<provide interface="org.idempiere.distributed.IMessageService"/>

View File

@ -15,7 +15,6 @@ package org.idempiere.hazelcast.service;
import java.io.File;
import java.io.FileNotFoundException;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DateFormat;
import java.util.Date;
@ -75,20 +74,45 @@ public class Activator implements BundleActivator {
future = executor.submit(new Runnable() {
@Override
public void run() {
String dataArea = System.getProperty("osgi.install.area");
File file = null;
//try idempiere home
String dataArea = System.getProperty("IDEMPIERE_HOME");
if (dataArea != null && dataArea.trim().length() > 0) {
try {
URL url = new URL(dataArea);
File file = new File(url.getPath(), "hazelcast.xml");
if (file.exists()) {
try {
Config config = new FileSystemXmlConfig(file);
hazelcastInstance = Hazelcast.newHazelcastInstance(config);
return;
} catch (FileNotFoundException e) {}
}
} catch (MalformedURLException e1) {
file = new File(dataArea, "hazelcast.xml");
if (!file.exists())
file = null;
} catch (Exception e) {}
}
//try working directory
if (file == null) {
dataArea = System.getProperty("user.dir");
if (dataArea != null && dataArea.trim().length() > 0) {
try {
file = new File(dataArea, "hazelcast.xml");
if (!file.exists())
file = null;
} catch (Exception e) {}
}
}
//try osgi install area
if (file == null) {
dataArea = System.getProperty("osgi.install.area");
if (dataArea != null && dataArea.trim().length() > 0) {
try {
URL url = new URL(dataArea);
file = new File(url.getPath(), "hazelcast.xml");
if (!file.exists())
file = null;
} catch (Exception e) {}
}
}
if (file != null && file.exists()) {
try {
Config config = new FileSystemXmlConfig(file);
hazelcastInstance = Hazelcast.newHazelcastInstance(config);
return;
} catch (FileNotFoundException e) {}
}
hazelcastInstance = Hazelcast.newHazelcastInstance(null);
}

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.zk.selenium.fitnesse.fit.factory">
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.idempiere.ui.zk.selenium.fitnesse.FitFixtureFactory">
<implementation class="org.idempiere.ui.zk.selenium.fitnesse.FitFixtureFactory"/>
<service>
<provide interface="org.idempiere.fitnesse.server.fit.IFitFixtureFactory"/>