This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new c58136c  EMPIREDB-362 Improved logging
c58136c is described below

commit c58136c6a59ce1bb46cac8d97afc378705044789
Author: Rainer Döbele <[email protected]>
AuthorDate: Thu Mar 3 21:48:58 2022 +0100

    EMPIREDB-362 Improved logging
---
 .../empire-db-example-advanced/config.xml          |  73 +++++++--------
 .../empire/samples/db/advanced/SampleAdvApp.java   |   1 +
 .../empire-db-example-basic/config.xml             |  49 +++++-----
 .../src/main/webapp/WEB-INF/config.xml             | 104 +++++++++++++--------
 .../src/main/webapp/WEB-INF/config.xml             | 104 +++++++++++++--------
 .../java/org/apache/empire/db/DBSQLScript.java     |  49 ++++++----
 .../main/java/org/apache/empire/db/DBUtils.java    | 103 ++++++++++++++++----
 .../org/apache/empire/dbms/DBMSHandlerBase.java    |   3 +-
 .../java/org/apache/empire/dbms/DBSqlPhrase.java   |   5 -
 .../org/apache/empire/dbms/hsql/DBCommandHSql.java |   3 -
 .../org/apache/empire/xml/XMLConfiguration.java    |  18 +++-
 11 files changed, 322 insertions(+), 190 deletions(-)

diff --git a/empire-db-examples/empire-db-example-advanced/config.xml 
b/empire-db-examples/empire-db-example-advanced/config.xml
index e53b18a..baa6fa1 100644
--- a/empire-db-examples/empire-db-example-advanced/config.xml
+++ b/empire-db-examples/empire-db-example-advanced/config.xml
@@ -33,7 +33,7 @@
                <jdbcPwd></jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.hsql.DBMSHandlerHSql</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <!-- no properties -->
                </dbmsHandlerProperties>
        </properties-hsqldb>
@@ -47,7 +47,7 @@
                <jdbcPwd>esteam</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.mysql.DBMSHandlerMySQL</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLEADV</databaseName>
                </dbmsHandlerProperties>
        </properties-mysql>
@@ -61,7 +61,7 @@
                <jdbcPwd>DBSAMPLE</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.postgresql.DBMSHandlerPostgreSQL</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <!-- no properties -->
                </dbmsHandlerProperties>
        </properties-postgresql>
@@ -75,7 +75,7 @@
                <jdbcPwd></jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.h2.DBMSHandlerH2</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLEADV</databaseName>
                </dbmsHandlerProperties>
        </properties-h2>
@@ -89,7 +89,7 @@
                <jdbcPwd></jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.derby.DBMSHandlerDerby</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLEADV</databaseName>
                </dbmsHandlerProperties>
        </properties-derby>
@@ -103,7 +103,7 @@
                <jdbcPwd>DBSAMPLEADV</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.oracle.DBMSHandlerOracle</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <schemaName>DBSAMPLEADV</schemaName>
                </dbmsHandlerProperties>
        </properties-oracle>
@@ -116,7 +116,7 @@
                <jdbcPwd>jdbcPwd</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.sqlserver.DBMSHandlerMSSQL</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLEADV</databaseName>
                        <useSequenceTable>false</useSequenceTable>
                        <!-- useDateTime2: set to false for databases using 
DATETIME for timestamps instead of DATETIME2 -->
@@ -127,58 +127,51 @@
        <!-- log4j configuration node -->
        <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/";>
 
+               <!-- Default Appender -->
                <appender name="default" 
class="org.apache.log4j.ConsoleAppender">
-                       <!-- layout class="org.apache.log4j.TTCCLayout"/ -->
                        <layout class="org.apache.log4j.PatternLayout">
-                               <!-- param name="ConversionPattern" 
value="NSB(%c) %-5p %m      at %l%n"/ -->
-                               <param name="ConversionPattern" value="%-5p 
[%d{yyyy/MM/dd HH:mm}]: %m          at %l %n"/>
+                               <param name="ConversionPattern" value="%-5p : 
%m                at %l %n"/>
                        </layout>
                </appender>
        
-               <!-- log detail configuration -->
-
-               <logger name="org.apache.empire.xml" additivity="false">
-                       <level value="info"/>
-                       <appender-ref ref="default"/>
-               </logger>
-               
-               <logger name="org.apache.empire.commons" additivity="false">
-                       <level value="warn"/>
-                       <appender-ref ref="default"/>
-               </logger>
+               <!-- Appender for DBUtils (SQL-Statements) -->
+               <appender name="utils" class="org.apache.log4j.ConsoleAppender">
+                       <layout class="org.apache.log4j.PatternLayout">
+                               <param name="ConversionPattern" 
value="--------------------------------%n%-5p : %m%n"/>
+                       </layout>
+               </appender>
        
+               <!-- Appender for SampleApp -->
+               <appender name="sample" 
class="org.apache.log4j.ConsoleAppender">
+                       <layout class="org.apache.log4j.PatternLayout">
+                               <param name="ConversionPattern" value="%-5p : 
*** %m *** %n"/>
+                       </layout>
+               </appender>
+       
+               <!-- log detail configuration -->
                <logger name="org.apache.empire.db" additivity="false">
                        <level value="warn"/>
                        <appender-ref ref="default"/>
                </logger>
 
-               <!-- Set this level to "debug" to log all SQL-Statements -->    
        
-               <logger name="org.apache.empire.db.DBDatabase" 
additivity="false">
-                       <level value="debug"/>
-                       <appender-ref ref="default"/>
-               </logger>
-               
-               <logger name="org.apache.empire.dbms" additivity="false">
-                       <level value="debug"/>
-                       <appender-ref ref="default"/>
-               </logger>
-               
-               <logger name="org.apache.empire.db.validation" 
additivity="false">
+               <!-- Show Config-file settings -->
+               <logger name="org.apache.empire.xml" additivity="false">
                        <level value="info"/>
                        <appender-ref ref="default"/>
                </logger>
 
-               <!-- Set this level to "debug" to log all DDL-Statements -->    
        
-               <logger name="org.apache.empire.db.DBSQLScript" 
additivity="false">
+               <!-- Set this level to "debug" to log all SQL-Statements or to 
"info" to log DML-Statements only -->            
+               <logger name="org.apache.empire.db.DBUtils" additivity="false">
                        <level value="debug"/>
-                       <appender-ref ref="default"/>
+                       <appender-ref ref="utils"/>
                </logger>
-               
-               <logger name="org.apache.empire.samples.db.advanced" 
additivity="false">
+
+               <!-- This is the log output of the SampleApp -->                
+               <logger name="org.apache.empire.samples" additivity="false">
                        <level value="debug"/>
-                       <appender-ref ref="default"/>
+                       <appender-ref ref="sample"/>
                </logger>
-       
+
                <root>
                        <priority value="info"/>
                        <appender-ref ref="default"/>
diff --git 
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
 
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
index 0cdabfb..6aed30f 100644
--- 
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
+++ 
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
@@ -157,6 +157,7 @@ public class SampleAdvApp
         
         // Done
         log.info("DB Sample Advanced finished successfully.");
+        context.commit();
     }
 
     public void populateDatabase()
diff --git a/empire-db-examples/empire-db-example-basic/config.xml 
b/empire-db-examples/empire-db-example-basic/config.xml
index 577407f..bec257f 100644
--- a/empire-db-examples/empire-db-example-basic/config.xml
+++ b/empire-db-examples/empire-db-example-basic/config.xml
@@ -33,7 +33,7 @@
                <jdbcPwd></jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.hsql.DBMSHandlerHSql</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <!-- no properties -->
                </dbmsHandlerProperties>
        </properties-hsqldb>
@@ -47,7 +47,7 @@
                <jdbcPwd>esteam</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.mysql.DBMSHandlerMySQL</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLE</databaseName>
                </dbmsHandlerProperties>
        </properties-mysql>
@@ -61,7 +61,7 @@
                <jdbcPwd>DBSAMPLE</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.postgresql.DBMSHandlerPostgreSQL</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <!-- no properties -->
                </dbmsHandlerProperties>
        </properties-postgresql>
@@ -75,7 +75,7 @@
                <jdbcPwd></jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.h2.DBMSHandlerH2</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLE</databaseName>
                </dbmsHandlerProperties>
        </properties-h2>
@@ -89,7 +89,7 @@
                <jdbcPwd></jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.derby.DBMSHandlerDerby</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLE</databaseName>
                </dbmsHandlerProperties>
        </properties-derby>
@@ -103,7 +103,7 @@
                <jdbcPwd>DBSAMPLE</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.oracle.DBMSHandlerOracle</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <!-- no properties -->
                </dbmsHandlerProperties>
        </properties-oracle>
@@ -116,23 +116,32 @@
                <jdbcPwd>jdbcPwd</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.sqlserver.DBMSHandlerMSSQL</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLE</databaseName>
                        <useSequenceTable>false</useSequenceTable>
                        <!-- useDateTime2: set to false for databases using 
DATETIME for timestamps instead of DATETIME2 -->
                        <useDateTime2>true</useDateTime2>
                </dbmsHandlerProperties>
        </properties-sqlserver>
-       
+
        <!-- log4j configuration node -->
        <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/";>
 
+               <!-- Default Appender -->
                <appender name="default" 
class="org.apache.log4j.ConsoleAppender">
                        <layout class="org.apache.log4j.PatternLayout">
                                <param name="ConversionPattern" value="%-5p : 
%m                at %l %n"/>
                        </layout>
                </appender>
        
+               <!-- Appender for DBUtils (SQL-Statements) -->
+               <appender name="utils" class="org.apache.log4j.ConsoleAppender">
+                       <layout class="org.apache.log4j.PatternLayout">
+                               <param name="ConversionPattern" 
value="--------------------------------%n%-5p : %m%n"/>
+                       </layout>
+               </appender>
+       
+               <!-- Appender for SampleApp -->
                <appender name="sample" 
class="org.apache.log4j.ConsoleAppender">
                        <layout class="org.apache.log4j.PatternLayout">
                                <param name="ConversionPattern" value="%-5p : 
*** %m *** %n"/>
@@ -140,33 +149,25 @@
                </appender>
        
                <!-- log detail configuration -->
-               <logger name="org.apache.empire.xml" additivity="false">
-                       <level value="info"/>
-                       <appender-ref ref="default"/>
-               </logger>
-
-               <logger name="org.apache.empire.commons" additivity="false">
+               <logger name="org.apache.empire.db" additivity="false">
                        <level value="warn"/>
                        <appender-ref ref="default"/>
                </logger>
 
-               <logger name="org.apache.empire.db" additivity="false">
+               <!-- Show Config-file settings -->
+               <logger name="org.apache.empire.xml" additivity="false">
                        <level value="info"/>
                        <appender-ref ref="default"/>
                </logger>
 
-               <logger name="org.apache.empire.db.context" additivity="false">
+               <!-- Set this level to "debug" to log all SQL-Statements or to 
"info" to log DML-Statements only -->            
+               <logger name="org.apache.empire.db.DBUtils" additivity="false">
                        <level value="debug"/>
-                       <appender-ref ref="default"/>
-               </logger>
-
-               <!-- Set this level to "debug" to log all SQL-Statements -->    
        
-               <logger name="org.apache.empire.db.DBDatabase" 
additivity="false">
-                       <level value="debug"/>
-                       <appender-ref ref="default"/>
+                       <appender-ref ref="utils"/>
                </logger>
 
-               <logger name="org.apache.empire.samples.db" additivity="false">
+               <!-- This is the log output of the SampleApp -->                
+               <logger name="org.apache.empire.samples" additivity="false">
                        <level value="debug"/>
                        <appender-ref ref="sample"/>
                </logger>
diff --git 
a/empire-db-examples/empire-db-example-jsf2/src/main/webapp/WEB-INF/config.xml 
b/empire-db-examples/empire-db-example-jsf2/src/main/webapp/WEB-INF/config.xml
index ca6f2fb..756b130 100644
--- 
a/empire-db-examples/empire-db-example-jsf2/src/main/webapp/WEB-INF/config.xml
+++ 
b/empire-db-examples/empire-db-example-jsf2/src/main/webapp/WEB-INF/config.xml
@@ -1,14 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more 
contributor 
-       license agreements. See the NOTICE file distributed with this work for 
additional 
-       information regarding copyright ownership. The ASF licenses this file 
to 
-       you under the Apache License, Version 2.0 (the "License"); you may not 
use 
-       this file except in compliance with the License. You may obtain a copy 
of 
-       the License at http://www.apache.org/licenses/LICENSE-2.0 Unless 
required 
-       by applicable law or agreed to in writing, software distributed under 
the 
-       License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
CONDITIONS 
-       OF ANY KIND, either express or implied. See the License for the 
specific 
-       language governing permissions and limitations under the License. -->
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+   http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
 <config>
 
        <properties>
@@ -25,7 +33,7 @@
                <jdbcPwd></jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.hsql.DBMSHandlerHSql</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <!-- no properties -->
                </dbmsHandlerProperties>
        </properties-hsqldb>
@@ -39,7 +47,7 @@
                <jdbcPwd>esteam</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.mysql.DBMSHandlerMySQL</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLE</databaseName>
                </dbmsHandlerProperties>
        </properties-mysql>
@@ -48,13 +56,13 @@
                <!-- JDBC properties for a PostreSQL Database connection -->
                <!-- Required jar file: postgresql-8.3-603.jdbc4.jar -->
                <jdbcClass>org.postgresql.Driver</jdbcClass>
-               <jdbcURL>jdbc:postgresql://localhost</jdbcURL>
-               <jdbcUser>postgres</jdbcUser>
-               <jdbcPwd>postgres</jdbcPwd>
+               <jdbcURL>jdbc:postgresql://localhost/dbsample</jdbcURL>
+               <jdbcUser>dbsample</jdbcUser>
+               <jdbcPwd>DBSAMPLE</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.postgresql.DBMSHandlerPostgreSQL</dbmsHandlerClass>
-               <dbmsHandlerProperties>
-                       <databaseName>DBSAMPLE</databaseName>
+               <dbmsHandlerProperties property="false">
+                       <!-- no properties -->
                </dbmsHandlerProperties>
        </properties-postgresql>
        
@@ -67,7 +75,7 @@
                <jdbcPwd></jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.h2.DBMSHandlerH2</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLE</databaseName>
                </dbmsHandlerProperties>
        </properties-h2>
@@ -81,7 +89,7 @@
                <jdbcPwd></jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.derby.DBMSHandlerDerby</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLE</databaseName>
                </dbmsHandlerProperties>
        </properties-derby>
@@ -95,7 +103,7 @@
                <jdbcPwd>DBSAMPLE</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.oracle.DBMSHandlerOracle</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <!-- no properties -->
                </dbmsHandlerProperties>
        </properties-oracle>
@@ -108,7 +116,7 @@
                <jdbcPwd>jdbcPwd</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.sqlserver.DBMSHandlerMSSQL</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLE</databaseName>
                        <useSequenceTable>false</useSequenceTable>
                        <!-- useDateTime2: set to false for databases using 
DATETIME for timestamps instead of DATETIME2 -->
@@ -116,41 +124,57 @@
                </dbmsHandlerProperties>
        </properties-sqlserver>
 
+       <!-- log4j configuration node -->
        <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/";>
 
+               <!-- Default Appender -->
                <appender name="default" 
class="org.apache.log4j.ConsoleAppender">
-                       <!-- layout class="org.apache.log4j.TTCCLayout"/ -->
                        <layout class="org.apache.log4j.PatternLayout">
-                               <!-- param name="ConversionPattern" 
value="NSB(%c) %-5p %m at %l%n"/ -->
-                               <param name="ConversionPattern" value="%-5p 
[%d{yyyy/MM/dd HH:mm}]: %m          at %l %n" />
+                               <param name="ConversionPattern" value="%-5p : 
%m                at %l %n"/>
                        </layout>
                </appender>
-
+       
+               <!-- Appender for DBUtils (SQL-Statements) -->
+               <appender name="utils" class="org.apache.log4j.ConsoleAppender">
+                       <layout class="org.apache.log4j.PatternLayout">
+                               <param name="ConversionPattern" 
value="--------------------------------%n%-5p : %m%n"/>
+                       </layout>
+               </appender>
+       
+               <!-- Appender for SampleApp -->
+               <appender name="sample" 
class="org.apache.log4j.ConsoleAppender">
+                       <layout class="org.apache.log4j.PatternLayout">
+                               <param name="ConversionPattern" value="%-5p : 
*** %m *** %n"/>
+                       </layout>
+               </appender>
+       
                <!-- log detail configuration -->
-               <logger name="org.apache.empire.xml" additivity="false">
-                       <level value="info" />
-                       <appender-ref ref="default" />
+               <logger name="org.apache.empire.db" additivity="false">
+                       <level value="warn"/>
+                       <appender-ref ref="default"/>
                </logger>
 
-               <logger name="org.apache.empire.commons" additivity="false">
-                       <level value="warn" />
-                       <appender-ref ref="default" />
+               <!-- Show Config-file settings -->
+               <logger name="org.apache.empire.xml" additivity="false">
+                       <level value="info"/>
+                       <appender-ref ref="default"/>
                </logger>
 
-               <logger name="org.apache.empire.db" additivity="false">
-                       <level value="info" />
-                       <appender-ref ref="default" />
+               <!-- Set this level to "debug" to log all SQL-Statements or to 
"info" to log DML-Statements only -->            
+               <logger name="org.apache.empire.db.DBUtils" additivity="false">
+                       <level value="debug"/>
+                       <appender-ref ref="utils"/>
                </logger>
 
-               <!-- Set this level to "debug" to log all SQL-Statements -->
-               <logger name="org.apache.empire.db.DBDatabase" 
additivity="false">
-                       <level value="debug" />
-                       <appender-ref ref="default" />
+               <!-- This is the log output of the SampleApp -->                
+               <logger name="org.apache.empire.jsf2.websample" 
additivity="false">
+                       <level value="info"/>
+                       <appender-ref ref="sample"/>
                </logger>
 
                <root>
-                       <priority value="info" />
-                       <appender-ref ref="default" />
+                       <priority value="info"/>
+                       <appender-ref ref="default"/>
                </root>
 
        </log4j:configuration>
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/WEB-INF/config.xml 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/WEB-INF/config.xml
index ca6f2fb..5471754 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/WEB-INF/config.xml
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/WEB-INF/config.xml
@@ -1,14 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more 
contributor 
-       license agreements. See the NOTICE file distributed with this work for 
additional 
-       information regarding copyright ownership. The ASF licenses this file 
to 
-       you under the Apache License, Version 2.0 (the "License"); you may not 
use 
-       this file except in compliance with the License. You may obtain a copy 
of 
-       the License at http://www.apache.org/licenses/LICENSE-2.0 Unless 
required 
-       by applicable law or agreed to in writing, software distributed under 
the 
-       License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
CONDITIONS 
-       OF ANY KIND, either express or implied. See the License for the 
specific 
-       language governing permissions and limitations under the License. -->
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+   http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
 <config>
 
        <properties>
@@ -25,7 +33,7 @@
                <jdbcPwd></jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.hsql.DBMSHandlerHSql</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <!-- no properties -->
                </dbmsHandlerProperties>
        </properties-hsqldb>
@@ -39,7 +47,7 @@
                <jdbcPwd>esteam</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.mysql.DBMSHandlerMySQL</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLE</databaseName>
                </dbmsHandlerProperties>
        </properties-mysql>
@@ -48,13 +56,13 @@
                <!-- JDBC properties for a PostreSQL Database connection -->
                <!-- Required jar file: postgresql-8.3-603.jdbc4.jar -->
                <jdbcClass>org.postgresql.Driver</jdbcClass>
-               <jdbcURL>jdbc:postgresql://localhost</jdbcURL>
-               <jdbcUser>postgres</jdbcUser>
-               <jdbcPwd>postgres</jdbcPwd>
+               <jdbcURL>jdbc:postgresql://localhost/dbsample</jdbcURL>
+               <jdbcUser>dbsample</jdbcUser>
+               <jdbcPwd>DBSAMPLE</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.postgresql.DBMSHandlerPostgreSQL</dbmsHandlerClass>
-               <dbmsHandlerProperties>
-                       <databaseName>DBSAMPLE</databaseName>
+               <dbmsHandlerProperties property="false">
+                       <!-- no properties -->
                </dbmsHandlerProperties>
        </properties-postgresql>
        
@@ -67,7 +75,7 @@
                <jdbcPwd></jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.h2.DBMSHandlerH2</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLE</databaseName>
                </dbmsHandlerProperties>
        </properties-h2>
@@ -81,7 +89,7 @@
                <jdbcPwd></jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.derby.DBMSHandlerDerby</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLE</databaseName>
                </dbmsHandlerProperties>
        </properties-derby>
@@ -95,7 +103,7 @@
                <jdbcPwd>DBSAMPLE</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.oracle.DBMSHandlerOracle</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <!-- no properties -->
                </dbmsHandlerProperties>
        </properties-oracle>
@@ -108,7 +116,7 @@
                <jdbcPwd>jdbcPwd</jdbcPwd>
                <!-- Empire-db driver configuration -->
                
<dbmsHandlerClass>org.apache.empire.dbms.sqlserver.DBMSHandlerMSSQL</dbmsHandlerClass>
-               <dbmsHandlerProperties>
+               <dbmsHandlerProperties property="false">
                        <databaseName>DBSAMPLE</databaseName>
                        <useSequenceTable>false</useSequenceTable>
                        <!-- useDateTime2: set to false for databases using 
DATETIME for timestamps instead of DATETIME2 -->
@@ -116,41 +124,57 @@
                </dbmsHandlerProperties>
        </properties-sqlserver>
 
+       <!-- log4j configuration node -->
        <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/";>
 
+               <!-- Default Appender -->
                <appender name="default" 
class="org.apache.log4j.ConsoleAppender">
-                       <!-- layout class="org.apache.log4j.TTCCLayout"/ -->
                        <layout class="org.apache.log4j.PatternLayout">
-                               <!-- param name="ConversionPattern" 
value="NSB(%c) %-5p %m at %l%n"/ -->
-                               <param name="ConversionPattern" value="%-5p 
[%d{yyyy/MM/dd HH:mm}]: %m          at %l %n" />
+                               <param name="ConversionPattern" value="%-5p : 
%m                at %l %n"/>
                        </layout>
                </appender>
-
+       
+               <!-- Appender for DBUtils (SQL-Statements) -->
+               <appender name="utils" class="org.apache.log4j.ConsoleAppender">
+                       <layout class="org.apache.log4j.PatternLayout">
+                               <param name="ConversionPattern" 
value="--------------------------------%n%-5p : %m%n"/>
+                       </layout>
+               </appender>
+       
+               <!-- Appender for SampleApp -->
+               <appender name="sample" 
class="org.apache.log4j.ConsoleAppender">
+                       <layout class="org.apache.log4j.PatternLayout">
+                               <param name="ConversionPattern" value="%-5p : 
*** %m *** %n"/>
+                       </layout>
+               </appender>
+       
                <!-- log detail configuration -->
-               <logger name="org.apache.empire.xml" additivity="false">
-                       <level value="info" />
-                       <appender-ref ref="default" />
+               <logger name="org.apache.empire.db" additivity="false">
+                       <level value="warn"/>
+                       <appender-ref ref="default"/>
                </logger>
 
-               <logger name="org.apache.empire.commons" additivity="false">
-                       <level value="warn" />
-                       <appender-ref ref="default" />
+               <!-- Show Config-file settings -->
+               <logger name="org.apache.empire.xml" additivity="false">
+                       <level value="info"/>
+                       <appender-ref ref="default"/>
                </logger>
 
-               <logger name="org.apache.empire.db" additivity="false">
-                       <level value="info" />
-                       <appender-ref ref="default" />
+               <!-- Set this level to "debug" to log all SQL-Statements or to 
"info" to log DML-Statements only -->            
+               <logger name="org.apache.empire.db.DBUtils" additivity="false">
+                       <level value="debug"/>
+                       <appender-ref ref="utils"/>
                </logger>
 
-               <!-- Set this level to "debug" to log all SQL-Statements -->
-               <logger name="org.apache.empire.db.DBDatabase" 
additivity="false">
-                       <level value="debug" />
-                       <appender-ref ref="default" />
+               <!-- This is the log output of the SampleApp -->                
+               <logger name="org.apache.empire.rest" additivity="false">
+                       <level value="info"/>
+                       <appender-ref ref="sample"/>
                </logger>
 
                <root>
-                       <priority value="info" />
-                       <appender-ref ref="default" />
+                       <priority value="info"/>
+                       <appender-ref ref="default"/>
                </root>
 
        </log4j:configuration>
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBSQLScript.java 
b/empire-db/src/main/java/org/apache/empire/db/DBSQLScript.java
index 5793b13..08df268 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBSQLScript.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBSQLScript.java
@@ -18,6 +18,7 @@
  */
 package org.apache.empire.db;
 
+import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -331,31 +332,43 @@ public class DBSQLScript implements DBContextAware, 
Iterable<String>
      */
     public int executeAll(boolean ignoreErrors)
     {
-        log.debug("Running script containing " + String.valueOf(getCount()) + 
" statements.");
+        log.info("Running script containing " + String.valueOf(getCount()) + " 
statements.");
+        int errors = 0;
         int result = 0;
-        DBMSHandler dbms = context.getDbms(); 
+        DBMSHandler dbms = context.getDbms();
+        Connection  conn = context.getConnection();
+        DBUtils    utils = context.getUtils(); // Use DBUtils for log helpers 
only
         for (SQLStmt stmt : sqlStmtList)
-        {
-            try
-            {
+        {   try
+            {   // execute
+                String sqlCmd = stmt.getCmd();
+                Object[] sqlParams = stmt.getParams();
+                // Debug
+                if (log.isDebugEnabled())
+                {   // Log with or without parameters   
+                    if (sqlParams!=null && sqlParams.length>0)
+                        log.debug("Executing Stmt: {}{}{}Parameters: [{}]", 
utils.LOG_NEW_LINE, sqlCmd, utils.LOG_NEW_LINE, 
utils.paramsToString(sqlParams));
+                    else
+                        log.debug("Executing Stmt: {}{}", utils.LOG_NEW_LINE, 
sqlCmd);
+                }
                 // Execute Statement
-                log.debug("Executing: {}", stmt.getCmd());
-                int count = dbms.executeSQL(stmt.getCmd(), stmt.getParams(), 
context.getConnection(), null);
+                int count = dbms.executeSQL(sqlCmd, sqlParams, conn, null);
                 result += (count >= 0 ? count : 0);
             }
             catch (SQLException e)
-            {
-                // SQLException
-                log.error(e.toString(), e);
+            {   // SQLException
+                log.warn("Statement '"+stmt.getCmd()+"' failed with 
SQLException "+e.toString(), e);
                 if (ignoreErrors == false)
                 { // forward exception
                     throw new EmpireSQLException(dbms, e);
                 }
                 // continue
                 log.debug("Ignoring error. Continuing with script...");
+                errors++;
             }
         }
-        log.debug("Script completed. {} records affected.", result);
+        // done
+        log.info("Script completed with {} errors. {} records affected.", 
errors, result);
         return result;
     }
 
@@ -374,11 +387,9 @@ public class DBSQLScript implements DBContextAware, 
Iterable<String>
      */
     public int executeBatch()
     {
-        log.debug("Running batch containing " + String.valueOf(getCount()) + " 
statements.");
         DBMSHandler dbms = context.getDbms();
         try
-        {
-            // Execute Statement
+        {   // Execute Statement
             int count = sqlStmtList.size();
             String[] cmdList = new String[count];
             Object[][] paramList = null;
@@ -396,16 +407,16 @@ public class DBSQLScript implements DBContextAware, 
Iterable<String>
                 i++;
             }
             // Execute batch
+            log.info("Running batch containing " + String.valueOf(getCount()) 
+ " statements.");
             int[] res = dbms.executeBatch(cmdList, paramList, 
context.getConnection());
             for (count = 0, i = 0; i < (res != null ? res.length : 0); i++)
-                count += (res[i] >= 0 ? res[i] : 0);
-            log.debug("Script completed. {} records affected.", count);
+                 count+= (res[i] >= 0 ? res[i] : 0);
+            log.info("Script completed. {} records affected.", count);
             return count;
         }
         catch (SQLException e)
-        {
-            // SQLException
-            log.error(e.toString(), e);
+        {   // SQLException
+            log.warn("Execute Batch failed with SQLException "+e.toString(), 
e);
             throw new EmpireSQLException(dbms, e);
         }
     }
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBUtils.java 
b/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
index 1a29c3e..b6a9fdc 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
 public class DBUtils implements DBContextAware
 {
     // Logger (Use logger from DBDatabase.class)
-    protected static final Logger log = 
LoggerFactory.getLogger(DBDatabase.class);
+    protected static final Logger log = LoggerFactory.getLogger(DBUtils.class);
     
     // Threshold for long running queries in milliseconds
     protected long longRunndingStmtThreshold = 30000;
@@ -49,6 +49,10 @@ public class DBUtils implements DBContextAware
     protected int  DEFAULT_LIST_CAPACITY  = 10;
     // Max-Rows for list queries
     protected int  MAX_QUERY_ROWS  = 999;
+    // Log max String length
+    protected int LOG_MAX_STRING_LENGTH = 40;
+    // Log New-Line
+    protected String LOG_NEW_LINE = "\r\n";
     
     // the context
     protected final DBContext context;
@@ -76,6 +80,67 @@ public class DBUtils implements DBContextAware
     }
 
     /**
+     * Get single parameter as string (for logging only)
+     * @param param the parameter
+     */
+    protected String paramValueToString(Object param)
+    {
+        if (param==null)
+            return "NULL";
+        DataType dataType = DataType.fromJavaType(param.getClass());
+        if (dataType.isText())
+        {   // text handling
+            String str = param.toString();
+            // limit length
+            if (str.length()>LOG_MAX_STRING_LENGTH)
+            {   StringBuilder b = new StringBuilder(LOG_MAX_STRING_LENGTH+10);
+                b.append(str.substring(0, LOG_MAX_STRING_LENGTH));
+                b.append("~(");
+                b.append(String.valueOf(str.length()));
+                b.append(")");
+                str = b.toString();
+            }
+            // make sure param does not contain the separator
+            if (str.indexOf('|')>=0)
+                str = str.replace('|', '?');
+            // done
+            return str;
+        }
+        if (dataType==DataType.UNKNOWN ||
+            dataType==DataType.BLOB ||
+            dataType==DataType.CLOB)
+        {   // get the class name
+            return param.getClass().getName();
+        }
+        // just convert to String
+        return String.valueOf(param);
+    }
+    
+    /**
+     * Get all parameters as string (for logging only)
+     * @param params the parameter
+     */
+    protected String paramsToString(Object[] params)
+    {
+        if (params == null || params.length < 1)
+            return null; // Empty
+        if (params.length > 1)
+        {   // more than one
+            StringBuilder buf = new StringBuilder();
+            for (int i = 0; i < params.length; i++)
+            {
+                if (i>0)
+                    buf.append('|');
+                // append
+                buf.append(paramValueToString(params[i]));
+            }
+            return buf.toString();
+        }
+        // Only one parameter
+        return paramValueToString(params[0]);
+    }
+
+    /**
      * Log Query Statement
      * @param sqlCmd
      * @param sqlParams
@@ -83,9 +148,11 @@ public class DBUtils implements DBContextAware
     protected void logQueryStatement(String sqlCmd, Object[] sqlParams)
     {
         if (log.isDebugEnabled())
-        {   log.debug("Executing DQL: " + sqlCmd);
+        {   // Log with or without parameters   
             if (sqlParams!=null && sqlParams.length>0)
-                log.debug("Parameters: " + 
StringUtils.arrayToString(sqlParams, "|"));
+                log.debug("Executing DQL: {}{}{}Parameters: [{}]", 
LOG_NEW_LINE, sqlCmd, LOG_NEW_LINE, paramsToString(sqlParams));
+            else
+                log.debug("Executing DQL: {}{}", LOG_NEW_LINE, sqlCmd);
         }
     }
 
@@ -97,9 +164,11 @@ public class DBUtils implements DBContextAware
     protected void logUpdateStatement(String sqlCmd, Object[] sqlParams)
     {
         if (log.isInfoEnabled())
-        {   log.info("Executing DML: " + sqlCmd);
+        {   // Log with or without parameters   
             if (sqlParams!=null && sqlParams.length>0)
-                log.info("Parameters: " + StringUtils.arrayToString(sqlParams, 
"|"));
+                log.info("Executing DML: {}{}{}Parameters: [{}]", 
LOG_NEW_LINE, sqlCmd, LOG_NEW_LINE, paramsToString(sqlParams));
+            else
+                log.info("Executing DML: {}{}", LOG_NEW_LINE, sqlCmd);
         }
     }
 
@@ -424,10 +493,10 @@ public class DBUtils implements DBContextAware
     {   // Start query
         ResultSet rs = null;
         try
-        {   // Log performance
+        {
+            logQueryStatement(sqlCmd, sqlParams);
+            // Log performance
             long start = System.currentTimeMillis();
-            if (log.isDebugEnabled())
-                log.debug("Executing: " + sqlCmd);
             // Get the next Value
             rs = dbms.executeQuery(sqlCmd, sqlParams, false, 
context.getConnection());
             if (rs == null)
@@ -517,10 +586,10 @@ public class DBUtils implements DBContextAware
     {   // Execute the  Statement
         ResultSet rs = null;
         try
-        {   // Debug
+        {
+            logQueryStatement(sqlCmd, sqlParams);
+            // Debug
             long start = System.currentTimeMillis();
-            if (log.isDebugEnabled())
-                log.debug("Executing: " + sqlCmd);
             // Get the next Value
             rs = dbms.executeQuery(sqlCmd, sqlParams, false, 
context.getConnection());
             if (rs == null)
@@ -593,10 +662,10 @@ public class DBUtils implements DBContextAware
     {   // Perform query
         ResultSet rs = null;
         try
-        {   // Log performance
+        {
+            logQueryStatement(sqlCmd, sqlParams);
+            // Log performance
             long start = System.currentTimeMillis();
-            if (log.isDebugEnabled())
-                log.debug("Executing: " + sqlCmd);
             // Get the next Value
             rs = dbms.executeQuery(sqlCmd, sqlParams, false, 
context.getConnection());
             if (rs == null)
@@ -917,7 +986,7 @@ public class DBUtils implements DBContextAware
                     rownum++;
                 }
                 else
-                    log.warn("Record {} is not valid thus it will not be added 
to the RecordListQuery.", rownum);
+                    log.trace("Record {} is not valid thus it will not be 
added to the RecordListQuery.", rownum);
                 // Decrease count
                 if (maxCount > 0)
                     maxCount--;
@@ -986,7 +1055,7 @@ public class DBUtils implements DBContextAware
         DBBeanListFactory<T> factory = 
DBBeanFactoryCache.getFactoryForType(beanType);
         if (factory==null)
         {   // Create default factory
-            log.info("No factory found for bean type '{}' and rowset {}. 
Creating default", beanType.getName(), rowset.getName());
+            log.debug("No factory found for bean type '{}' and rowset {}. 
Creating default", beanType.getName(), rowset.getName());
             factory= createDefaultBeanListFactory(beanType, 
rowset.getKeyColumns(), rowset.getColumns());
             DBBeanFactoryCache.setFactoryForType(beanType, factory);
         }
@@ -1007,7 +1076,7 @@ public class DBUtils implements DBContextAware
             if (!cmd.hasSelectExpr())
                 throw new CommandWithoutSelectException(cmd);
             // Create default factory
-            log.info("No factory found for bean type '{}'. Creating default", 
beanType.getName());
+            log.debug("No factory found for bean type '{}'. Creating default", 
beanType.getName());
             factory= createDefaultBeanListFactory(beanType, null, 
cmd.getSelectExpressions());
             DBBeanFactoryCache.setFactoryForType(beanType, factory);
         }
diff --git 
a/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandlerBase.java 
b/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandlerBase.java
index 2f10919..6f7d485 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandlerBase.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandlerBase.java
@@ -733,7 +733,8 @@ public abstract class DBMSHandlerBase implements DBMSHandler
             }
         } catch(SQLException e) {
             // close statement (if not null)
-            log.error("Error executing query '"+sqlCmd+"' --> 
"+e.getMessage(), e);
+            if (log.isDebugEnabled())
+                log.debug("Error executeQuery '"+sqlCmd+"' --> 
"+e.getMessage(), e);
             closeStatement(stmt);
             throw e;
         }
diff --git a/empire-db/src/main/java/org/apache/empire/dbms/DBSqlPhrase.java 
b/empire-db/src/main/java/org/apache/empire/dbms/DBSqlPhrase.java
index ae94efe..a13e64c 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/DBSqlPhrase.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/DBSqlPhrase.java
@@ -1,10 +1,5 @@
 package org.apache.empire.dbms;
 
-import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBColumn;
-import org.apache.empire.db.DBColumnExpr;
-import org.apache.empire.db.expr.column.DBFuncExpr;
-
 /**
  * Enum for all SQL phrases that may be supplied by the dbms
  * @author rainer
diff --git 
a/empire-db/src/main/java/org/apache/empire/dbms/hsql/DBCommandHSql.java 
b/empire-db/src/main/java/org/apache/empire/dbms/hsql/DBCommandHSql.java
index bc829a6..89f435d 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/hsql/DBCommandHSql.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/hsql/DBCommandHSql.java
@@ -29,10 +29,7 @@ import org.apache.empire.db.DBRowSet;
 import org.apache.empire.db.exceptions.NoPrimaryKeyException;
 import org.apache.empire.db.expr.column.DBAliasExpr;
 import org.apache.empire.db.expr.column.DBValueExpr;
-import org.apache.empire.db.expr.join.DBColumnJoinExpr;
-import org.apache.empire.db.expr.join.DBJoinExpr;
 import org.apache.empire.db.expr.set.DBSetExpr;
-import org.apache.empire.exceptions.ObjectNotValidException;
 
 /**
  * This class handles the special features of an HSqlDB database.
diff --git 
a/empire-db/src/main/java/org/apache/empire/xml/XMLConfiguration.java 
b/empire-db/src/main/java/org/apache/empire/xml/XMLConfiguration.java
index 2823a9d..a41c38e 100644
--- a/empire-db/src/main/java/org/apache/empire/xml/XMLConfiguration.java
+++ b/empire-db/src/main/java/org/apache/empire/xml/XMLConfiguration.java
@@ -42,6 +42,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.xml.sax.InputSource;
@@ -184,10 +185,25 @@ public class XMLConfiguration
             if (item.getNodeType() != Node.ELEMENT_NODE)
                 continue;
             // Get the Text and set the Property
-            setPropertyValue(bean, item);
+            if (isProperty(item))
+                setPropertyValue(bean, item);
         }
     }
     
+    protected boolean isProperty(Node item)
+    {
+        NamedNodeMap map = item.getAttributes();
+        if (map==null)
+            return false; // not an element?
+        Node propAttr = map.getNamedItem("property");
+        if (propAttr==null)
+            return true; // assume yes
+        String value = propAttr.getNodeValue();
+        if (value==null)
+            return true; // assume yes
+        return ObjectUtils.getBoolean(value);
+    }
+    
     protected void setPropertyValue(Object bean, Node item)
     {
         // Get the Text and set the Property

Reply via email to