From 6049f1a450dcd84c55683f3527b303f85e85a8bf Mon Sep 17 00:00:00 2001
From: Michael Mwebaze <michael.mwebaze@gmail.com>
Date: Mon, 24 Oct 2022 13:34:33 -0400
Subject: [PATCH] Fixed bug related to issue 3300443

---
 integer_to_decimal.info.yml         |  7 ++++++-
 integer_to_decimal.module           | 11 +++++++++--
 src/Service/FieldUpdaterService.php | 17 +++++++++++------
 3 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/integer_to_decimal.info.yml b/integer_to_decimal.info.yml
index ba3c79d..c00a754 100644
--- a/integer_to_decimal.info.yml
+++ b/integer_to_decimal.info.yml
@@ -4,4 +4,9 @@ description: 'Changes field type numeric with data to field type decimal.'
 package: Other
 core_version_requirement: ^8 || ^9 || ^10
 dependencies:
-  - drupal:node
+  - node
+
+# Information added by Drupal.org packaging script on 2022-06-27
+version: '2.0.1'
+project: 'integer_to_decimal'
+datestamp: 1656349293
diff --git a/integer_to_decimal.module b/integer_to_decimal.module
index deb0031..1dc7298 100644
--- a/integer_to_decimal.module
+++ b/integer_to_decimal.module
@@ -1,5 +1,7 @@
 <?php
 
+use Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException;
+use Drupal\Core\Entity\EntityStorageException;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Entity\EntityForm;
 use Drupal\integer_to_decimal\Util\EntityFromUri;
@@ -96,7 +98,12 @@ function integer_to_decimal_field_storage_config_edit_form(array $form, FormStat
     $scale = $form_state->getValue('scale');
     $bundles = unserialize($form_state->getValue('bundles'));
 
-    $fieldUpdaterService = Drupal::service('field_updater');
-    $fieldUpdaterService->fieldUpdater($field_name, 'decimal',$entity_type, $bundles, $precision, $scale);
+    /** @var Drupal\integer_to_decimal\Service\FieldUpdaterService $field_updater_service */
+    $field_updater_service = Drupal::service('field_updater');
+    try {
+      $field_updater_service->fieldUpdater($field_name, 'decimal', $entity_type, $bundles, $precision, $scale);
+    } catch (InvalidPluginDefinitionException|EntityStorageException $e) {
+      \Drupal::logger('integer_to_decimal')->notice($e->getMessage());
+    }
   }
 }
diff --git a/src/Service/FieldUpdaterService.php b/src/Service/FieldUpdaterService.php
index f283b45..a1d6fb0 100644
--- a/src/Service/FieldUpdaterService.php
+++ b/src/Service/FieldUpdaterService.php
@@ -3,6 +3,7 @@
 namespace Drupal\integer_to_decimal\Service;
 
 use Drupal\Core\Entity\EntityFieldManagerInterface;
+use Drupal\Core\Entity\EntityStorageException;
 use Drupal\Core\Messenger\MessengerInterface;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\field\Entity\FieldConfig;
@@ -46,23 +47,27 @@ class FieldUpdaterService implements FieldUpdaterServiceInterface {
   /**
    * {@inheritdoc}
    *
+   * @throws EntityStorageException
    */
   public function fieldUpdater($field, $type, $entity_type, $bundles, $precision, $scale) {
     $database = $this->connection;
     $existingData = [];
     $tables = [];
-    //$entity_type_manager = \Drupal::getContainer()->get('entity_type.manager');
-    //$entity_field_manager = \Drupal::getContainer()->get('entity_field.manager');
+    $storage = $this->entityTypeManager->getStorage($entity_type);
+
     // Get an instance of Drupal\Core\Entity\Sql\DefaultTableMapping class
-    $table_mapping = $this->entityTypeManager->getStorage($entity_type)->getTableMapping();
+    $table_mapping = $storage->getTableMapping();
     $storage_definitions = $this->entityFieldManager->getFieldStorageDefinitions($entity_type);
     $data_table = $table_mapping->getDedicatedDataTableName($storage_definitions[$field]);
     if ($data_table) {
       $tables[] = $data_table;
     }
-    $revision_table = $table_mapping->getDedicatedRevisionTableName($storage_definitions[$field]);
-    if ($revision_table) {
-      $tables[] = $revision_table;
+
+    if ($storage->getEntityType()->isRevisionable()){
+      $revision_table = $table_mapping->getDedicatedRevisionTableName($storage_definitions[$field]);
+      if ($revision_table) {
+        $tables[] = $revision_table;
+      }
     }
 
     if (empty($tables)) {
-- 
GitLab