details:   https://code.openbravo.com/erp/devel/main/rev/d40d287ea91a
changeset: 21188:d40d287ea91a
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Tue Jul 30 10:36:44 2013 +0200
summary:   fixed bug 24421, fixed bug 24326: ADCachedStructures thread safe 
issues

-getTab now completely initializes all tabs in the window
-it is now synchronized

Added test cases to check it

details:   https://code.openbravo.com/erp/devel/main/rev/684d905cbcc1
changeset: 21189:684d905cbcc1
user:      RM packaging bot <staff.rm <at> openbravo.com>
date:      Tue Sep 24 20:09:32 2013 +0200
summary:   CI: merge back from main

details:   https://code.openbravo.com/erp/devel/main/rev/f71255ba7557
changeset: 21190:f71255ba7557
user:      Augusto Mauch <augusto.mauch <at> openbravo.com>
date:      Wed Sep 25 10:20:15 2013 +0200
summary:   Fixes issue 24744: Product characteristics filter uses proper icon

details:   https://code.openbravo.com/erp/devel/main/rev/327a7d8af6ce
changeset: 21191:327a7d8af6ce
user:      Shankar Balachandran <shankar.balachandran <at> openbravo.com>
date:      Wed Sep 25 13:28:36 2013 +0530
summary:   Fixes Issue 0024692: Double request to the datasource is done when a 
numeric field is in the first position of the grid

The filter in blur event needs to be applied only if the value is not undefined.
In case there is value in the filter and then the value is cleared,
still the filter will be applied because the value returned will be null and 
not undefined.
Also the additional datasource call will be avoided as in that case, the value 
is undefined.

details:   https://code.openbravo.com/erp/devel/main/rev/8ab8b14e8472
changeset: 21192:8ab8b14e8472
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Wed Sep 25 12:33:35 2013 +0200
summary:   fixed bug 24740: filter list reference columns in HQL defined 
selectors

  Taking into account this case both in the view generation and in the 
DataSource

details:   https://code.openbravo.com/erp/devel/main/rev/a06bf757c7ec
changeset: 21193:a06bf757c7ec
user:      RM packaging bot <staff.rm <at> openbravo.com>
date:      Wed Sep 25 19:37:54 2013 +0200
summary:   CI: update AD_MODULE to version 21192

diffstat:

 modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml  
                                                                                
                                |    2 +-
 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
                       |    4 +-
 modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE.xml       
                                                                                
                                |    2 +-
 
modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
                            |    2 +-
 
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE.xml
                                                                                
                              |    2 +-
 
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
                   |    8 +-
 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/ApplicationDictionaryCachedStructures.java
                                                                |  100 ++-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/form/formitem/ob-formitem-characteristics.js
                                                                  |    2 +-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/form/formitem/ob-formitem-number.js
                                                                           |    
6 +-
 
modules/org.openbravo.client.application/web/org.openbravo.userinterface.smartclient/openbravo/skins/Default/org.openbravo.client.application/images/form/productCharacteristicsFilter_ico.png
 |    0 
 
modules/org.openbravo.client.htmlwidget/src-db/database/sourcedata/AD_MODULE.xml
                                                                                
                               |    2 +-
 
modules/org.openbravo.client.htmlwidget/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
                    |    2 +-
 modules/org.openbravo.client.kernel/src-db/database/sourcedata/AD_MODULE.xml   
                                                                                
                                |    2 +-
 
modules/org.openbravo.client.kernel/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
                        |    6 +-
 
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/KernelUtils.java
                                                                                
                           |    7 +-
 modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_MODULE.xml     
                                                                                
                                |    2 +-
 
modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
                          |    4 +-
 
modules/org.openbravo.client.querylist/src-db/database/sourcedata/AD_MODULE.xml 
                                                                                
                               |    2 +-
 
modules/org.openbravo.client.querylist/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
                     |    2 +-
 modules/org.openbravo.client.widgets/src-db/database/sourcedata/AD_MODULE.xml  
                                                                                
                                |    2 +-
 
modules/org.openbravo.client.widgets/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
                       |    2 +-
 
modules/org.openbravo.financial.paymentreport/src-db/database/sourcedata/AD_MODULE.xml
                                                                                
                         |    2 +-
 
modules/org.openbravo.financial.paymentreport/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
              |    2 +-
 
modules/org.openbravo.reports.ordersawaitingdelivery/src-db/database/sourcedata/AD_MODULE.xml
                                                                                
                  |    2 +-
 
modules/org.openbravo.reports.ordersawaitingdelivery/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
       |    2 +-
 
modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_MODULE.xml
                                                                                
                              |    2 +-
 
modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
                   |   10 +-
 
modules/org.openbravo.service.integration.google/src-db/database/sourcedata/AD_MODULE.xml
                                                                                
                      |    2 +-
 
modules/org.openbravo.service.integration.google/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
           |    4 +-
 
modules/org.openbravo.service.integration.openid/src-db/database/sourcedata/AD_MODULE.xml
                                                                                
                      |    2 +-
 
modules/org.openbravo.service.integration.openid/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
           |    2 +-
 modules/org.openbravo.service.json/src-db/database/sourcedata/AD_MODULE.xml    
                                                                                
                                |    2 +-
 
modules/org.openbravo.service.json/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
                         |    2 +-
 
modules/org.openbravo.userinterface.selector/src-db/database/sourcedata/AD_MODULE.xml
                                                                                
                          |    2 +-
 
modules/org.openbravo.userinterface.selector/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
               |   12 +-
 
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
                                                                       |   33 +-
 
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorComponent.java
                                                                                
   |   18 +-
 
modules/org.openbravo.userinterface.skin.250to300Comp/src-db/database/sourcedata/AD_MODULE.xml
                                                                                
                 |    2 +-
 
modules/org.openbravo.userinterface.skin.250to300Comp/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
      |    2 +-
 
modules/org.openbravo.userinterface.smartclient/src-db/database/sourcedata/AD_MODULE.xml
                                                                                
                       |    2 +-
 
modules/org.openbravo.userinterface.smartclient/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
            |    6 +-
 modules/org.openbravo.v3.datasets/src-db/database/sourcedata/AD_MODULE.xml     
                                                                                
                                |    2 +-
 
modules/org.openbravo.v3.datasets/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
                          |    6 +-
 modules/org.openbravo.v3.framework/src-db/database/sourcedata/AD_MODULE.xml    
                                                                                
                                |    2 +-
 
modules/org.openbravo.v3.framework/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                                                                                
                         |   24 +-
 modules/org.openbravo.v3/src-db/database/sourcedata/AD_MODULE.xml              
                                                                                
                                |    2 +-
 modules/org.openbravo.v3/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml   
                                                                                
                                |   18 +-
 src-db/database/sourcedata/AD_MODULE.xml                                       
                                                                                
                                |    4 +-
 src-test/org/openbravo/test/AllAntTaskTests.java                               
                                                                                
                                |    3 +-
 src-test/org/openbravo/test/base/HiddenObjectHelper.java                       
                                                                                
                                |   86 ++
 src-test/org/openbravo/test/dal/ADCachedMultiThreadTest.java                   
                                                                                
                                |  427 ++++++++++
 51 files changed, 740 insertions(+), 106 deletions(-)

diffs (truncated from 1735 to 300 lines):

diff -r 92740d37c7e2 -r a06bf757c7ec 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml 
    Tue Sep 24 12:46:38 2013 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml 
    Wed Sep 25 19:37:54 2013 +0200
@@ -6,7 +6,7 @@
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <NAME><![CDATA[Advanced Payables and 
Receivables Mngmt]]></NAME>
-<!--A918E3331C404B889D69AA9BFAFB23AC-->  
<VERSION><![CDATA[3.0.21179]]></VERSION>
+<!--A918E3331C404B889D69AA9BFAFB23AC-->  
<VERSION><![CDATA[3.0.21192]]></VERSION>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <DESCRIPTION><![CDATA[Managing your 
finances with an ERP does not have to be difficult. Enjoy a radically improved 
user experience that combines the power of an enterprise grade financial 
application with the simplicity and ease of a web 2.0 personal accounting 
service.]]></DESCRIPTION>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <HELP><![CDATA[Advanced Payables and 
Receivables Management simplifies and automates the business processes around 
the management of financial accounts, from the receipt and issue of payment, to 
the reconciliation of those events with bank statements.
 If you would like to help shape this module you are welcome to take part in 
the forum discussions or register feature requests or issues in the 
corresponding (Forum and Bug Tracking) sections in the Advanced Payables and 
Receivable project in the OB Forge.]]></HELP>
diff -r 92740d37c7e2 -r a06bf757c7ec 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
  Tue Sep 24 12:46:38 2013 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
  Wed Sep 25 19:37:54 2013 +0200
@@ -7,7 +7,7 @@
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[5EB4F15C80684ACA904756BDC12ADBE5]]></AD_DEPENDENT_MODULE_ID>
-<!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<STARTVERSION><![CDATA[2.1.21179]]></STARTVERSION>
+<!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<STARTVERSION><![CDATA[2.1.21192]]></STARTVERSION>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <DEPENDANT_MODULE_NAME><![CDATA[User 
Interface Selector]]></DEPENDANT_MODULE_NAME>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
@@ -21,7 +21,7 @@
 <!--B97FC854C6DD41E692161585645A900F-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--B97FC854C6DD41E692161585645A900F-->  
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
 <!--B97FC854C6DD41E692161585645A900F-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[0]]></AD_DEPENDENT_MODULE_ID>
-<!--B97FC854C6DD41E692161585645A900F-->  
<STARTVERSION><![CDATA[3.0.21179]]></STARTVERSION>
+<!--B97FC854C6DD41E692161585645A900F-->  
<STARTVERSION><![CDATA[3.0.21192]]></STARTVERSION>
 <!--B97FC854C6DD41E692161585645A900F-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--B97FC854C6DD41E692161585645A900F-->  
<DEPENDANT_MODULE_NAME><![CDATA[core]]></DEPENDANT_MODULE_NAME>
 <!--B97FC854C6DD41E692161585645A900F-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
diff -r 92740d37c7e2 -r a06bf757c7ec 
modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE.xml
--- a/modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE.xml  
Tue Sep 24 12:46:38 2013 +0200
+++ b/modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE.xml  
Wed Sep 25 19:37:54 2013 +0200
@@ -6,7 +6,7 @@
 <!--C70732EA90A14EC0916078B85CC33D2D-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--C70732EA90A14EC0916078B85CC33D2D-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--C70732EA90A14EC0916078B85CC33D2D-->  <NAME><![CDATA[JBoss Weld]]></NAME>
-<!--C70732EA90A14EC0916078B85CC33D2D-->  
<VERSION><![CDATA[1.1.21179]]></VERSION>
+<!--C70732EA90A14EC0916078B85CC33D2D-->  
<VERSION><![CDATA[1.1.21192]]></VERSION>
 <!--C70732EA90A14EC0916078B85CC33D2D-->  <DESCRIPTION><![CDATA[JBoss 
Weld]]></DESCRIPTION>
 <!--C70732EA90A14EC0916078B85CC33D2D-->  <HELP><![CDATA[Provides the JBoss 
Weld framework: Java Contexts and Dependency Injection for the Java EE platform 
(CDI). For more information see http://seamframework.org/Weld]]></HELP>
 <!--C70732EA90A14EC0916078B85CC33D2D-->  
<URL><![CDATA[http://forge.openbravo.com/projects/weld]]></URL>
diff -r 92740d37c7e2 -r a06bf757c7ec 
modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
--- 
a/modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
       Tue Sep 24 12:46:38 2013 +0200
+++ 
b/modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
       Wed Sep 25 19:37:54 2013 +0200
@@ -7,7 +7,7 @@
 <!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  
<AD_MODULE_ID><![CDATA[C70732EA90A14EC0916078B85CC33D2D]]></AD_MODULE_ID>
 <!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[0]]></AD_DEPENDENT_MODULE_ID>
-<!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  
<STARTVERSION><![CDATA[3.0.21179]]></STARTVERSION>
+<!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  
<STARTVERSION><![CDATA[3.0.21192]]></STARTVERSION>
 <!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  
<DEPENDANT_MODULE_NAME><![CDATA[Core]]></DEPENDANT_MODULE_NAME>
 <!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
diff -r 92740d37c7e2 -r a06bf757c7ec 
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE.xml
--- 
a/modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE.xml
 Tue Sep 24 12:46:38 2013 +0200
+++ 
b/modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE.xml
 Wed Sep 25 19:37:54 2013 +0200
@@ -6,7 +6,7 @@
 <!--9BA0836A3CD74EE4AB48753A47211BCC-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--9BA0836A3CD74EE4AB48753A47211BCC-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--9BA0836A3CD74EE4AB48753A47211BCC-->  <NAME><![CDATA[User Interface 
Application]]></NAME>
-<!--9BA0836A3CD74EE4AB48753A47211BCC-->  
<VERSION><![CDATA[2.1.21179]]></VERSION>
+<!--9BA0836A3CD74EE4AB48753A47211BCC-->  
<VERSION><![CDATA[2.1.21192]]></VERSION>
 <!--9BA0836A3CD74EE4AB48753A47211BCC-->  <DESCRIPTION><![CDATA[Provides the 
main application components for the openbravo user interface]]></DESCRIPTION>
 <!--9BA0836A3CD74EE4AB48753A47211BCC-->  <HELP><![CDATA[Provides the main 
application components for the openbravo user interface. The main layout 
incorporates a navigation bar and a main view area.]]></HELP>
 <!--9BA0836A3CD74EE4AB48753A47211BCC-->  
<URL><![CDATA[http://forge.openbravo.com/projects/clientapplication]]></URL>
diff -r 92740d37c7e2 -r a06bf757c7ec 
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
--- 
a/modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
      Tue Sep 24 12:46:38 2013 +0200
+++ 
b/modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
      Wed Sep 25 19:37:54 2013 +0200
@@ -7,7 +7,7 @@
 <!--15D7CE8D95D043189162DBABA54A1F61-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--15D7CE8D95D043189162DBABA54A1F61-->  
<AD_MODULE_ID><![CDATA[9BA0836A3CD74EE4AB48753A47211BCC]]></AD_MODULE_ID>
 <!--15D7CE8D95D043189162DBABA54A1F61-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[A44B9BA75C354D8FB2E3F7D6EB6BFDC4]]></AD_DEPENDENT_MODULE_ID>
-<!--15D7CE8D95D043189162DBABA54A1F61-->  
<STARTVERSION><![CDATA[2.1.21179]]></STARTVERSION>
+<!--15D7CE8D95D043189162DBABA54A1F61-->  
<STARTVERSION><![CDATA[2.1.21192]]></STARTVERSION>
 <!--15D7CE8D95D043189162DBABA54A1F61-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--15D7CE8D95D043189162DBABA54A1F61-->  <DEPENDANT_MODULE_NAME><![CDATA[JSON 
Datasource]]></DEPENDANT_MODULE_NAME>
 <!--15D7CE8D95D043189162DBABA54A1F61-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
@@ -21,7 +21,7 @@
 <!--60A170212F36499D83B8AD38D01F46B3-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--60A170212F36499D83B8AD38D01F46B3-->  
<AD_MODULE_ID><![CDATA[9BA0836A3CD74EE4AB48753A47211BCC]]></AD_MODULE_ID>
 <!--60A170212F36499D83B8AD38D01F46B3-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[4B828F4D03264080AA1D2057B13F613C]]></AD_DEPENDENT_MODULE_ID>
-<!--60A170212F36499D83B8AD38D01F46B3-->  
<STARTVERSION><![CDATA[2.1.21179]]></STARTVERSION>
+<!--60A170212F36499D83B8AD38D01F46B3-->  
<STARTVERSION><![CDATA[2.1.21192]]></STARTVERSION>
 <!--60A170212F36499D83B8AD38D01F46B3-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--60A170212F36499D83B8AD38D01F46B3-->  <DEPENDANT_MODULE_NAME><![CDATA[User 
Interface Client Kernel]]></DEPENDANT_MODULE_NAME>
 <!--60A170212F36499D83B8AD38D01F46B3-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
@@ -35,7 +35,7 @@
 <!--824D60CB352E4099B1D8C903CA139DAE-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--824D60CB352E4099B1D8C903CA139DAE-->  
<AD_MODULE_ID><![CDATA[9BA0836A3CD74EE4AB48753A47211BCC]]></AD_MODULE_ID>
 <!--824D60CB352E4099B1D8C903CA139DAE-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[0]]></AD_DEPENDENT_MODULE_ID>
-<!--824D60CB352E4099B1D8C903CA139DAE-->  
<STARTVERSION><![CDATA[3.0.21179]]></STARTVERSION>
+<!--824D60CB352E4099B1D8C903CA139DAE-->  
<STARTVERSION><![CDATA[3.0.21192]]></STARTVERSION>
 <!--824D60CB352E4099B1D8C903CA139DAE-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--824D60CB352E4099B1D8C903CA139DAE-->  
<DEPENDANT_MODULE_NAME><![CDATA[core]]></DEPENDANT_MODULE_NAME>
 <!--824D60CB352E4099B1D8C903CA139DAE-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
@@ -49,7 +49,7 @@
 <!--E8FD820AFE3D4FE08C02FC47769026AD-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--E8FD820AFE3D4FE08C02FC47769026AD-->  
<AD_MODULE_ID><![CDATA[9BA0836A3CD74EE4AB48753A47211BCC]]></AD_MODULE_ID>
 <!--E8FD820AFE3D4FE08C02FC47769026AD-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[EC356CEE3D46416CA1EBEEB9AB82EDB9]]></AD_DEPENDENT_MODULE_ID>
-<!--E8FD820AFE3D4FE08C02FC47769026AD-->  
<STARTVERSION><![CDATA[8.1.21179]]></STARTVERSION>
+<!--E8FD820AFE3D4FE08C02FC47769026AD-->  
<STARTVERSION><![CDATA[8.1.21192]]></STARTVERSION>
 <!--E8FD820AFE3D4FE08C02FC47769026AD-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--E8FD820AFE3D4FE08C02FC47769026AD-->  
<DEPENDANT_MODULE_NAME><![CDATA[Smartclient]]></DEPENDANT_MODULE_NAME>
 <!--E8FD820AFE3D4FE08C02FC47769026AD-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
diff -r 92740d37c7e2 -r a06bf757c7ec 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/ApplicationDictionaryCachedStructures.java
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/ApplicationDictionaryCachedStructures.java
   Tue Sep 24 12:46:38 2013 +0200
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/ApplicationDictionaryCachedStructures.java
   Wed Sep 25 19:37:54 2013 +0200
@@ -11,7 +11,7 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2011 Openbravo SLU 
+ * All portions are Copyright (C) 2011-2013 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -23,6 +23,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javax.enterprise.context.SessionScoped;
 
@@ -30,6 +31,7 @@
 import org.hibernate.Query;
 import org.openbravo.base.exception.OBException;
 import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.openbravo.dal.core.DalUtil;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.erpCommon.utility.ComboTableData;
 import org.openbravo.model.ad.datamodel.Column;
@@ -40,9 +42,12 @@
 import org.openbravo.model.ad.ui.AuxiliaryInput;
 import org.openbravo.model.ad.ui.Field;
 import org.openbravo.model.ad.ui.Tab;
+import org.openbravo.model.ad.ui.Window;
 import org.openbravo.service.db.DalConnectionProvider;
 import org.openbravo.userinterface.selector.Selector;
 import org.openbravo.userinterface.selector.SelectorField;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class caches some AD structures used by the Form Initialization 
component. Basically, it
@@ -59,7 +64,11 @@
   private Map<String, List<Field>> fieldMap = new HashMap<String, 
List<Field>>();
   private Map<String, List<Column>> columnMap = new HashMap<String, 
List<Column>>();
   private Map<String, List<AuxiliaryInput>> auxInputMap = new HashMap<String, 
List<AuxiliaryInput>>();
-  private Map<String, ComboTableData> comboTableDataMap = new HashMap<String, 
ComboTableData>();
+  private Map<String, ComboTableData> comboTableDataMap = new 
ConcurrentHashMap<String, ComboTableData>();
+  private List<String> initializedWindows = new ArrayList<String>();
+
+  private static final Logger log = LoggerFactory
+      .getLogger(ApplicationDictionaryCachedStructures.class);
 
   private boolean useCache;
 
@@ -70,18 +79,66 @@
     useCache = indevelMods.list().size() == 0;
   }
 
-  public Tab getTab(String tabId) {
+  /**
+   * In case caching is enabled, Tab for tabId is returned from cache if 
present. If it is not, this
+   * tab and all the ones in the same window are initialized and cached.
+   * <p>
+   * Note as this method is in charge of doing the full initialization, it 
should be invoked before
+   * any other getter in this class. Other case, partially initialized object 
could be cached, being
+   * potentially harmful if obtained from another thread and tried to be 
initialized.
+   * 
+   * @param tabId
+   *          , ID of the tab to look for
+   * @return Tab for the tabId, from cache if it is enabled
+   */
+  public synchronized Tab getTab(String tabId) {
+    log.debug("get tab {}", tabId);
     if (useCache() && tabMap.containsKey(tabId)) {
+      log.debug("got tab {} from cache", tabId);
       return tabMap.get(tabId);
     }
     Tab tab = OBDal.getInstance().get(Tab.class, tabId);
+    if (!useCache()) {
+      // not using cache, initialize just current tab and go
+      return tab;
+    } else {
+      // using cache, do complete initialization
+      initializeWindow(tab.getWindow().getId());
+    }
+    return tab;
+  }
+
+  /**
+   * Initialized all the tabs for a given window
+   */
+  private void initializeWindow(String windowId) {
+    if (!useCache() || initializedWindows.contains(windowId)) {
+      return;
+    }
+    Window window = OBDal.getInstance().get(Window.class, windowId);
+    for (Tab tab : window.getADTabList()) {
+      initializeTab(tab);
+    }
+    initializedWindows.add(windowId);
+  }
+
+  /**
+   * Initializes a tab and its related elements (table, fields, columns, 
auxiliary inputs and table
+   * combo data). If cache is enabled, tab is obtained from cache if it is 
already present and if
+   * not, it is put in cache after initialization
+   * 
+   * @param tab
+   */
+  private void initializeTab(Tab tab) {
+    String tabId = tab.getId();
     initializeDALObject(tab);
-    initializeDALObject(tab.getADAuxiliaryInputList());
-    initializeDALObject(tab.getADFieldList());
-    initializeDALObject(tab.getTable());
-    initializeDALObject(tab.getTable().getADColumnList());
-    tabMap.put(tabId, tab);
-    return tab;
+    if (useCache()) {
+      tabMap.put(tabId, tab);
+    }
+    // initialize other elements related with the tab
+    getAuxiliarInputList(tabId);
+    getFieldsOfTab(tabId);
+    getColumnsOfTable(tab.getTable().getId());
   }
 
   public Table getTable(String tableId) {
@@ -91,7 +148,9 @@
     Table table = OBDal.getInstance().get(Table.class, tableId);
     initializeDALObject(table);
     initializeDALObject(table.getADColumnList());
-    tableMap.put(tableId, table);
+    if (useCache()) {
+      tableMap.put(tableId, table);
+    }
     return table;
   }
 
@@ -100,6 +159,7 @@
       return fieldMap.get(tabId);
     }
     Tab tab = getTab(tabId);
+    String tableId = (String) DalUtil.getId(tab.getTable());
     List<Field> fields = tab.getADFieldList();
     for (Field f : fields) {
       if (f.getColumn() == null) {
@@ -107,8 +167,16 @@
       }
       initializeDALObject(f.getColumn());
       initializeColumn(f.getColumn());
+
+      // Property fields can link to columns in a different table than tab's 
one, in this case
+      // initialize table
+      if (!tableId.equals(DalUtil.getId(f.getColumn().getTable()))) {
+        initializeDALObject(f.getColumn().getTable());
+      }
     }
-    fieldMap.put(tabId, fields);
+    if (useCache()) {
+      fieldMap.put(tabId, fields);
+    }
     return fields;
   }
 
@@ -121,7 +189,9 @@
     for (Column c : columns) {
       initializeColumn(c);
     }
-    columnMap.put(tableId, columns);
+    if (useCache()) {
+      columnMap.put(tableId, columns);
+    }
     return columns;
   }
 
@@ -172,7 +242,9 @@
     for (AuxiliaryInput auxIn : auxInputs) {
       initializeDALObject(auxIn);
     }
-    auxInputMap.put(tabId, auxInputs);
+    if (useCache()) {
+      auxInputMap.put(tabId, auxInputs);
+    }
     return auxInputs;
   }
 
@@ -193,7 +265,7 @@
     } catch (Exception e) {
       throw new OBException("Error while computing combo table data for column 
" + colName, e);
     }
-    if (comboTableData.canBeCached()) {

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to