diff --git a/core/trunk/core/tests/class/DataObjectController.php b/core/trunk/core/tests/class/DataObjectController.php
index e286630f1bbbbca02f153c7b9ee0cb7c10360b5d..5f8814a421bdefbcaceb8f4e1cd2557613ea8e90 100644
--- a/core/trunk/core/tests/class/DataObjectController.php
+++ b/core/trunk/core/tests/class/DataObjectController.php
@@ -34,9 +34,11 @@ class dataObjectController extends DOMDocument
         $this->messageController = new MessageController();
         $this->messageController->logLevel = Message::INFO;
         $this->messageController->debug = true;
-        $this->messageController->caller = __FILE__;
         
-        $this->messageController->loadMessageFile($_SESSION['config']['corepath'] . '/core/xml/DataObjectController_Messages.xml');
+        $this->messageController->loadMessageFile(
+            $_SESSION['config']['corepath'] 
+                . '/core/xml/DataObjectController_Messages.xml'
+        );
         
     }
     
@@ -45,7 +47,7 @@ class dataObjectController extends DOMDocument
         $this->schema = new DataObjectSchema();
         $this->schema->loadSchema($xsdFile);
         
-        $dasSources = $this->schema->getDataAccessServiceSources();
+        $dasSources = $this->schema->getSources();
         for($i=0; $i<count($dasSources); $i++) {
             $dasSource = $dasSources[$i];
             switch($dasSource->type) {
@@ -57,7 +59,7 @@ class dataObjectController extends DOMDocument
                     $dasSource->dbname, 
                     $dasSource->port
                 );
-                $options = $this->schema->getDataAccessServiceSourceOptions($dasSource);
+                $options = $this->schema->getSourceOptions($dasSource);
                 $this->dataAccessServices[$dasSource->name] = 
                     new dataAccessService_Database(
                         $dsn, 
@@ -133,12 +135,10 @@ class dataObjectController extends DOMDocument
                 $messageId = 'libxml' . $libXMLError->code;
                 $messageParams = array($libXMLError->message);
                 $messageLang = $_SESSION['config']['lang'];
-                $messageFunc = 'dataObjectController::validate';
                 $message = $this->messageController->sendMessage(
                     $messageId,
                     $messageParams,
-                    $messageLang,                    
-                    $messageFunc
+                    $messageLang
                 );
                 $this->messages[] = $message;
             }
@@ -252,8 +252,11 @@ class dataObjectController extends DOMDocument
     public function getLabel($objectName)
     {
         $objectSchema = $this->schema->getObjectSchema($objectName);
-        if($objectSchema->{'das:label'}) return $objectSchema->{'das:label'};
-        else return $objectSchema->name;
+        if($objectSchema->{'das:label'}) {
+            return $objectSchema->{'das:label'};
+        } else {
+            return $objectSchema->name;
+        }
     }
     
     public function getContentLabels($objectName) 
diff --git a/core/trunk/core/tests/class/DataObjectSchema.php b/core/trunk/core/tests/class/DataObjectSchema.php
index 1842bb73e9851cdc4bcff99370f47f4a269e1375..69630a1b9a5e2528e6fd0165e40ae57b24830ff4 100644
--- a/core/trunk/core/tests/class/DataObjectSchema.php
+++ b/core/trunk/core/tests/class/DataObjectSchema.php
@@ -64,7 +64,7 @@ class DataObjectSchema
         return $this->xpath->query($query, $contextElement);
     }
     
-    public function getDataAccessServiceSources()
+    public function getSources()
     {
         $DSnodes = $this->xpath('/xsd:schema/xsd:annotation/xsd:appinfo/das:source');
         for($i=0; $i<$DSnodes->length; $i++) {
@@ -73,7 +73,7 @@ class DataObjectSchema
         return $DS;
     }
     
-    public function getDataAccessServiceSourceOptions($datasource)
+    public function getSourceOptions($datasource)
     {
         $optionNodes = $this->xpath('./das:option', $datasource);
         for($i=0; $i<$optionNodes->length; $i++) {
diff --git a/core/trunk/core/tests/class/MessageController.php b/core/trunk/core/tests/class/MessageController.php
index fc673b3f03b2dcb4fb661cb80c737ea59ac37e07..e7ad3ee5bc06ffda00aa74d573bb7d5bd25ca999 100644
--- a/core/trunk/core/tests/class/MessageController.php
+++ b/core/trunk/core/tests/class/MessageController.php
@@ -4,8 +4,6 @@ class MessageController
     extends DOMDocument
 {
 	
-    
-    private $caller;
     private $logLevel;
     private $debug;
     private $xpath;
@@ -13,7 +11,6 @@ class MessageController
     public function __set($name, $value)
     {
         switch($name) {
-            case 'caller' : $this->caller = $value;
             case 'logLevel' : $this->logLevel = $value;
             case 'debug' : $this->debug = $value;
         }
@@ -49,31 +46,77 @@ class MessageController
         return $this->xpath->query($query, $contextElement);
     }
     
-    public function sendMessage(
+    
+    public function getMessageDefinition($messageId)
+    {
+        $messageDefinitions = $this->xpath("//message[@id='".$messageId."']");
+        if($messageDefinitions->length === 0) return false;
+        $messageDefinition = $messageDefinitions->item(0);
+        return $messageDefinition;
+    }
+    
+    public function getMessageText(
         $messageId,
         $messageParams = array(),
-        $messageLang = 'fr',                    
-        $messageFunc = false
+        $messageLang = 'fr'
         )
     {
         // Get message definition
-        $messageDefinitions = $this->xpath("//message[@id='".$messageId."']");
-        if($messageDefinitions->length === 0) return false;
-        $messageDefinition = $messageDefinitions->item(0);
+        $messageDefinition = $this->getMessageDefinition($messageId);
+        
+        // Get Text
+        $messageText = $this->makeMessageText(
+            $messageDefinition,
+            $messageParams,
+            $messageLang
+        );
         
+        return $messageText;
+    }
+    
+    private function makeMessageText(
+        $messageDefinition,
+        $messageParams = array(),
+        $messageLang = 'fr'
+        )
+    {
         // Get message text in requested language
         $messageTexts = $this->xpath("./text[@lang='".$messageLang."']", $messageDefinition);
         if($messageTexts->length === 0) $messageText = $this->xpath("./text", $messageDefinition)->item(0)->nodeValue;
         $messageText = $messageTexts->item(0)->nodeValue;
         $messageText = vsprintf($messageText, $messageParams);
         
+        return $messageText;
+    
+    }
+    
+    public function sendMessage(
+        $messageId,
+        $messageParams = array(),
+        $messageLang = 'fr'
+        )
+    {
+        // Get message definition
+        $messageDefinition = $this->getMessageDefinition($messageId);
+        
+        // Make Text
+        $messageText = $this->makeMessageText(
+            $messageDefinition,
+            $messageParams,
+            $messageLang
+        );
+
+        // Get backtrace
+        $backtrace = debug_backtrace();
+        $messageBacktrace = $backtrace[1];
+        
         // Create message object
         $message = new Message(
             $messageDefinition->level, 
             $messageDefinition->id, 
             $messageText,
-            $this->caller,
-            $messageFunc
+            $messageLang,
+            $messageBacktrace
             );
         
         $_SESSION['messages'][] = $message;
@@ -107,18 +150,25 @@ class Message
     public $level;
     public $id;
     public $text;
-    public $file;
-    public $func;
-    public $debug;
-        
-    function Message($level, $id, $text, $file, $func)
+    public $lang;
+    public $file; 
+    public $line; 
+    public $class;
+    public $func; 
+    
+    
+            
+    function Message($level, $id, $text, $lang, $backtrace)
     {
         $this->timestamp = date('Y-m-d H-i-s.u');
         $this->level = $level;
         $this->id = $id;
-        $this->text = $text;
-        $this->file = $file;
-        $this->func = $func;
+        $this->text = trim($text);
+        $this->lang = $lang;
+        $this->file = $backtrace['file'];
+        $this->line = $backtrace['line'];
+        $this->class = $backtrace['class'];
+        $this->func = $backtrace['function'];
     }
 
 }
\ No newline at end of file