Revert Message dependency from DB exception classes
authorAaron Schulz <aschulz@wikimedia.org>
Fri, 24 Feb 2017 16:20:07 +0000 (08:20 -0800)
committerAaron Schulz <aschulz@wikimedia.org>
Wed, 27 Sep 2017 07:18:15 +0000 (09:18 +0200)
This was added in a90bbf1a.

These classes are in /libs and should not depend on all of MediaWiki.

Change-Id: I67bc818b0c674f1aa3e0dde27a38a9f385fcab75

includes/api/ApiErrorFormatter.php
includes/api/ApiMain.php
includes/libs/rdbms/exception/DBExpectedError.php

index 7fb1352..183f7e2 100644 (file)
@@ -160,6 +160,9 @@ class ApiErrorFormatter {
                if ( $exception instanceof ILocalizedException ) {
                        $msg = $exception->getMessageObject();
                        $params = [];
+               } elseif ( $exception instanceof MessageSpecifier ) {
+                       $msg = Message::newFromSpecifier( $exception );
+                       $params = [];
                } else {
                        // Extract code and data from the exception, if applicable
                        if ( $exception instanceof UsageException ) {
index 1415640..aea441b 100644 (file)
@@ -1054,13 +1054,14 @@ class ApiMain extends ApiBase {
                        if ( ( $e instanceof DBQueryError ) && !$config->get( 'ShowSQLErrors' ) ) {
                                $params = [ 'apierror-databaseerror', WebRequest::getRequestId() ];
                        } else {
-                               $params = [
-                                       'apierror-exceptioncaught',
-                                       WebRequest::getRequestId(),
-                                       $e instanceof ILocalizedException
-                                               ? $e->getMessageObject()
-                                               : wfEscapeWikiText( $e->getMessage() )
-                               ];
+                               if ( $e instanceof ILocalizedException ) {
+                                       $msg = $e->getMessageObject();
+                               } elseif ( $e instanceof MessageSpecifier ) {
+                                       $msg = Message::newFromSpecifier( $e );
+                               } else {
+                                       $msg = wfEscapeWikiText( $e->getMessage() );
+                               }
+                               $params = [ 'apierror-exceptioncaught', WebRequest::getRequestId(), $msg ];
                        }
                        $messages[] = ApiMessage::create( $params, $code );
                }
index 31d8c27..cae7f3e 100644 (file)
@@ -22,8 +22,6 @@
 namespace Wikimedia\Rdbms;
 
 use MessageSpecifier;
-use ILocalizedException;
-use Message;
 
 /**
  * Base class for the more common types of database errors. These are known to occur
@@ -32,7 +30,7 @@ use Message;
  * @ingroup Database
  * @since 1.23
  */
-class DBExpectedError extends DBError implements MessageSpecifier, ILocalizedException {
+class DBExpectedError extends DBError implements MessageSpecifier {
        /** @var string[] Message parameters */
        protected $params;
 
@@ -48,14 +46,6 @@ class DBExpectedError extends DBError implements MessageSpecifier, ILocalizedExc
        public function getParams() {
                return $this->params;
        }
-
-       /**
-        * @inheritDoc
-        * @since 1.29
-        */
-       public function getMessageObject() {
-               return Message::newFromSpecifier( $this );
-       }
 }
 
 class_alias( DBExpectedError::class, 'DBExpectedError' );