Skip to content
Snippets Groups Projects
Commit fc3aa782 authored by git's avatar git
Browse files

Removes all uses of watchdog_exception in favor of injected logger use

Fixes $this use error in RecordType::isAllowed static function
parent 2418f17c
No related branches found
No related tags found
No related merge requests found
......@@ -9,15 +9,17 @@ use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Entity\RevisionableContentEntityBase;
use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\Core\Language\LanguageInterface;
use Drupal\salesforce\Exception as SalesforceException;
use Drupal\salesforce\SFID;
use Drupal\salesforce\SObject;
use Drupal\salesforce\SalesforceEvents;
use Drupal\Core\Utility\Error;
use Drupal\salesforce_mapping\MappingConstants;
use Drupal\salesforce_mapping\PushParams;
use Drupal\salesforce_mapping\SalesforcePullEntityValueEvent;
use Drupal\salesforce_mapping\SalesforcePullEvent;
use Drupal\salesforce_mapping\SalesforcePushEvent;
use Drupal\salesforce\Exception as SalesforceException;
use Drupal\salesforce\SalesforceEvents;
use Drupal\salesforce\SFID;
use Drupal\salesforce\SObject;
use Psr\Log\LogLevel;
/**
* Defines a Salesforce Mapped Object entity class. Mapped Objects are content
......@@ -450,7 +452,11 @@ class MappedObject extends RevisionableContentEntityBase implements MappedObject
'@v' => $value,
'@e' => $e->getMessage(),
]);
watchdog_exception(__CLASS__, $e);
$this->logger(__CLASS__)->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
continue;
}
}
......
......@@ -5,12 +5,16 @@ namespace Drupal\salesforce_mapping\Form;
use Drupal\Core\Entity\ContentEntityForm;
use Drupal\Core\Entity\EntityManagerInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Logger\LoggerChannelFactoryInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Utility\Error;
use Drupal\salesforce_mapping\SalesforceMappingStorage;
use Drupal\salesforce\Exception;
use Drupal\salesforce\Rest\RestClient;
use Drupal\salesforce_mapping\SalesforceMappingStorage;
use Psr\Log\LogLevel;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Salesforce Mapping Form base.
*/
......@@ -28,16 +32,26 @@ class MappedObjectForm extends ContentEntityForm {
protected $pushPluginManager;
protected $mapping_storage;
protected $logger;
protected $entityManager;
protected $rest;
protected $route_match;
/**
* Constructs a ContentEntityForm object.
*
* @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
* The entity manager.
*/
public function __construct(EntityManagerInterface $entity_manager, RestClient $rest, RouteMatchInterface $route_match) {
public function __construct(EntityManagerInterface $entity_manager, RestClient $rest, LoggerChannelFactoryInterface $logger_factory, RouteMatchInterface $route_match) {
$this->entityManager = $entity_manager;
$this->mapping_storage = $entity_manager->getStorage('salesforce_mapping');
$this->rest = $rest;
$this->logger = $logger_factory->get(__CLASS__);
$this->route_match = $route_match;
}
......@@ -48,6 +62,7 @@ class MappedObjectForm extends ContentEntityForm {
return new static(
$container->get('entity.manager'),
$container->get('salesforce.client'),
$container->get('logger.factory'),
$container->get('current_route_match')
);
}
......@@ -116,7 +131,11 @@ class MappedObjectForm extends ContentEntityForm {
$mapped_object->push();
}
catch (\Exception $e) {
watchdog_exception(__CLASS__, $e);
$this->logger->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
drupal_set_message(t('Push failed with an exception: %exception', array('%exception' => $e->getMessage())), 'error');
return;
}
......
......@@ -75,7 +75,7 @@ class RecordType extends SalesforceMappingFieldPluginBase {
public static function isAllowed(SalesforceMappingInterface $mapping) {
try {
$record_types =
$this->client()->getRecordTypes($mapping->getSalesforceObjectType());
self::client()->getRecordTypes($mapping->getSalesforceObjectType());
return count($record_types) > 1;
}
catch (\Exception $e) {
......@@ -86,7 +86,7 @@ class RecordType extends SalesforceMappingFieldPluginBase {
/**
* Wrapper for Salesforce client service.
*/
public function client() {
public static function client() {
return \Drupal::service('salesforce.client');
}
......
......@@ -4,9 +4,11 @@ namespace Drupal\salesforce_mapping\Plugin\SalesforceMappingField;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Utility\Error;
use Drupal\field\Field;
use Drupal\salesforce_mapping\SalesforceMappingFieldPluginBase;
use Drupal\salesforce_mapping\Entity\SalesforceMappingInterface;
use Drupal\salesforce_mapping\SalesforceMappingFieldPluginBase;
use Psr\Log\LogLevel;
/**
* Adapter for entity Reference and fields.
......@@ -81,8 +83,11 @@ $mapping) {
->load($field->value);
}
catch (\Exception $e) {
// @TODO something about this exception
watchdog_exception(__CLASS__, $e);
$this->logger(__CLASS__)->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
return;
}
......@@ -163,4 +168,10 @@ $mapping) {
return $options;
}
/**
* Wrapper for Drupal core logger service.
*/
public function logger($log) {
return \Drupal::logger($log);
}
}
......@@ -7,10 +7,7 @@ use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\Core\Language\LanguageInterface;
use Drupal\Tests\UnitTestCase;
use Drupal\salesforce\Rest\RestClientInterface;
use Drupal\salesforce\SFID;
use Drupal\salesforce\SObject;
use Drupal\Core\Utility\Error;
use Drupal\salesforce_mapping\Entity\MappedObject;
use Drupal\salesforce_mapping\Entity\MappedObjectInterface;
use Drupal\salesforce_mapping\Entity\SalesforceMapping;
......@@ -19,7 +16,12 @@ use Drupal\salesforce_mapping\MappingConstants;
use Drupal\salesforce_mapping\Plugin\SalesforceMappingField\Properties;
use Drupal\salesforce_mapping\SalesforceMappingFieldPluginInterface;
use Drupal\salesforce_mapping\SalesforceMappingFieldPluginManager;
use Drupal\salesforce\Rest\RestClientInterface;
use Drupal\salesforce\SFID;
use Drupal\salesforce\SObject;
use Drupal\Tests\UnitTestCase;
use Prophecy\Argument;
use Psr\Log\LogLevel;
/**
* Test Mapped Object instantitation
......@@ -126,7 +128,7 @@ class MappedObjectTest extends UnitTestCase {
->expects($this->any())
->method('id')
->willReturn($this->entity_id);
$this->entity
->expects($this->any())
->method('isTranslatable')
......@@ -211,7 +213,7 @@ class MappedObjectTest extends UnitTestCase {
->willReturn(NULL);
$this->assertNull($this->mapped_object->push());
}
/**
* @covers ::push
*/
......@@ -320,7 +322,11 @@ class MappedObjectTest extends UnitTestCase {
'@v' => $value,
'@e' => $e->getMessage(),
]);
watchdog_exception(__CLASS__, $e);
$this->logger(__CLASS__)->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
continue;
}
}
......@@ -345,7 +351,7 @@ class MappedObjectTest extends UnitTestCase {
->save();
return $this;
}
}
\ No newline at end of file
}
......@@ -5,16 +5,18 @@
* Push updates to Salesforce when a Drupal entity is updated.
*/
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Utility\Error;
use Drupal\salesforce_mapping\Entity\MappedObject;
use Drupal\salesforce_mapping\Entity\MappedObjectInterface;
use Drupal\salesforce_mapping\Entity\SalesforceMapping;
use Drupal\salesforce_mapping\Entity\SalesforceMappingInterface;
use GuzzleHttp\Exception\RequestException;
use Drupal\salesforce_mapping\MappingConstants;
use Drupal\salesforce\SalesforceEvents;
use Drupal\salesforce_mapping\SalesforcePushEvent;
use Drupal\salesforce\SalesforceEvents;
use GuzzleHttp\Exception\RequestException;
use Psr\Log\LogLevel;
/**
* Implements hook_entity_insert().
......@@ -74,7 +76,11 @@ function salesforce_push_entity_crud(EntityInterface $entity, $op) {
}
catch (\Exception $e) {
// Do not allow any exception to prevent entity CRUD.
watchdog_exception('Salesforce Push', $e);
\Drupal::logger('Salesforce Push')->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
}
}
}
......@@ -130,7 +136,11 @@ function salesforce_push_entity_crud_mapping(EntityInterface $entity, $op, Sales
salesforce_push_enqueue_async($entity, $mapping, $mapped_object, $op);
}
catch (\Exception $e) {
watchdog_exception('Salesforce Push', $e);
\Drupal::logger('Salesforce Push')->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
}
return;
}
......@@ -163,12 +173,20 @@ function salesforce_push_entity_crud_mapping(EntityInterface $entity, $op, Sales
new SalesforcePushEvent($mapped_object, NULL, $op)
);
watchdog_exception('Salesforce Push', $e);
\Drupal::logger('Salesforce Push')->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
try {
salesforce_push_enqueue_async($entity, $mapping, $mapped_object, $op);
}
catch (\Exception $e) {
watchdog_exception('Salesforce Push', $e);
\Drupal::logger('Salesforce Push')->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
}
$mapped_object
......@@ -213,6 +231,10 @@ function salesforce_push_cron() {
$queue->processQueues();
}
catch (\Exception $e) {
watchdog_exception('Salesforce Push', $e);
\Drupal::logger('Salesforce Push')->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
}
}
......@@ -13,9 +13,11 @@ use Drupal\Core\Queue\DatabaseQueue;
use Drupal\Core\Queue\RequeueException;
use Drupal\Core\Queue\SuspendQueueException;
use Drupal\Core\State\State;
use Drupal\Core\Utility\Error;
use Drupal\salesforce_mapping\MappedObjectStorage;
use Drupal\salesforce_mapping\SalesforceMappingStorage;
use Drupal\salesforce\EntityNotFoundException;
use Psr\Log\LogLevel;
/**
* Salesforce push queue.
......@@ -38,6 +40,7 @@ class PushQueue extends DatabaseQueue {
protected $limit;
protected $connection;
protected $state;
protected $logger;
protected $queueManager;
protected $max_fails;
......@@ -309,14 +312,22 @@ class PushQueue extends DatabaseQueue {
// Getting a Requeue here is weird for a group of items, but we'll
// deal with it.
$this->releaseItems($items);
watchdog_exception('Salesforce Push', $e);
$this->logger->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
}
catch (SuspendQueueException $e) {
// Getting a SuspendQueue is more likely, e.g. because of a network
// or authorization error. Release items and move on to the next
// mapping in this case.
$this->releaseItems($items);
watchdog_exception('Salesforce Push', $e);
$this->logger->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
continue 2;
}
......@@ -324,7 +335,11 @@ class PushQueue extends DatabaseQueue {
// In case of any other kind of exception, log it and leave the item
// in the queue to be processed again later.
// @TODO: this is how Cron.php queue works, but I don't really understand why it doesn't get re-queued.
watchdog_exception('Salesforce Push', $e);
$this->logger->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
}
finally {
// If we've reached our limit, we're done. Otherwise, continue to next items.
......@@ -404,7 +419,11 @@ class PushQueue extends DatabaseQueue {
return $update->execute();
}
catch (\Exception $e) {
watchdog_exception('Salesforce Push', $e);
$this->logger->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
$this->catchException($e);
// If the table doesn't exist we should consider the item released.
return TRUE;
......
......@@ -2,15 +2,18 @@
namespace Drupal\salesforce\Form;
use GuzzleHttp\Exception\RequestException;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Logger\LoggerChannelFactoryInterface;
use Drupal\Core\State\StateInterface;
use Drupal\Core\Url;
use Drupal\Core\Utility\Error;
use Drupal\salesforce\Exception;
use Drupal\salesforce\Rest\RestClient;
use Drupal\salesforce\SalesforceClient;
use Drupal\Core\Url;
use GuzzleHttp\Exception\RequestException;
use Psr\Log\LogLevel;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
......@@ -28,6 +31,8 @@ class AuthorizeForm extends ConfigFormBase {
*/
protected $state;
protected $logger;
/**
* Constructs a \Drupal\system\ConfigFormBase object.
*
......@@ -40,10 +45,11 @@ class AuthorizeForm extends ConfigFormBase {
* @param \Drupal\Core\State\StateInterface $state
* The state keyvalue collection to use.
*/
public function __construct(ConfigFactoryInterface $config_factory, RestClient $salesforce_client, StateInterface $state) {
public function __construct(ConfigFactoryInterface $config_factory, RestClient $salesforce_client, StateInterface $state, LoggerChannelFactoryInterface $logger_factory) {
parent::__construct($config_factory);
$this->sf_client = $salesforce_client;
$this->state = $state;
$this->logger = $logger_factory->get(__CLASS__);
}
/**
......@@ -53,7 +59,8 @@ class AuthorizeForm extends ConfigFormBase {
return new static(
$container->get('config.factory'),
$container->get('salesforce.client'),
$container->get('state')
$container->get('state'),
$container->get('logger.factory')
);
}
......@@ -120,7 +127,11 @@ class AuthorizeForm extends ConfigFormBase {
];
}
catch (RequestException $e) {
watchdog_exception(__CLASS__, $e);
$this->logger->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
salesforce_set_message($e->getMessage(), 'warning');
}
}
......@@ -156,7 +167,11 @@ class AuthorizeForm extends ConfigFormBase {
}
catch (RequestException $e) {
drupal_set_message(t("Error during authorization: %message", $e->getMessage()), 'error');
watchdog_exception(__CLASS__, $e);
$this->logger->log(
LogLevel::ERROR,
'%type: @message in %function (line %line of %file).',
Error::decodeException($e)
);
}
parent::submitForm($form, $form_state);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment