Skip to content

Commit 156245f

Browse files
committed
Upgrade to doctrine/dbal:^4
- The old array / object serialization types from doctrine have been moved / integrated into our codebase for backward compatability. - Fix typo in allowed_idp_entity_ids. The db is a medium text, which is 16777215 bytes. This change aligns the column with the mapping. - Make the nullable: false explicit to avoid future confusion. Confusion could stem from the fact that the fields are nullable in code, but not nullable in the database. This is because a serialized `null` results in something like `s:` in the database.
1 parent 45bd19f commit 156245f

10 files changed

Lines changed: 438 additions & 55 deletions

File tree

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
"ext-openssl": "*",
2424
"ext-pdo": "*",
2525
"beberlei/assert": "^3.3.3",
26-
"composer/package-versions-deprecated": "^1.11.99.5",
27-
"doctrine/dbal": "^3.10.3",
26+
"composer/package-versions-deprecated": "^1.11",
27+
"doctrine/dbal": "^4.3.3",
2828
"doctrine/doctrine-bundle": "^2.13.3",
2929
"doctrine/doctrine-migrations-bundle": "^3.6.0",
3030
"doctrine/orm": "^3.5.7",

composer.lock

Lines changed: 30 additions & 38 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/packages/doctrine.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ doctrine:
2323
engineblock_collab_person_uuid: OpenConext\EngineBlockBundle\Doctrine\Type\CollabPersonUuidType
2424
engineblock_metadata_coins: OpenConext\EngineBlockBundle\Doctrine\Type\MetadataCoinType
2525
engineblock_metadata_mdui: OpenConext\EngineBlockBundle\Doctrine\Type\MetadataMduiType
26+
27+
array: OpenConext\EngineBlockBundle\Doctrine\Type\SerializedArrayType
28+
object: OpenConext\EngineBlockBundle\Doctrine\Type\SerializedObjectType
29+
2630
orm:
2731
auto_generate_proxy_classes: "%kernel.debug%"
2832
proxy_dir: '%kernel.cache_dir%/doctrine/orm/Proxies'

src/OpenConext/EngineBlock/Metadata/Entity/AbstractRole.php

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
namespace OpenConext\EngineBlock\Metadata\Entity;
2020

21-
use DateTime;
2221
use Doctrine\ORM\Mapping as ORM;
2322
use OpenConext\EngineBlock\Metadata\Coins;
2423
use OpenConext\EngineBlock\Metadata\ContactPerson;
@@ -28,12 +27,17 @@
2827
use OpenConext\EngineBlock\Metadata\Organization;
2928
use OpenConext\EngineBlock\Metadata\Service;
3029
use OpenConext\EngineBlock\Metadata\X509\X509Certificate;
30+
use OpenConext\EngineBlockBundle\Doctrine\Type\SerializedArrayType;
31+
use OpenConext\EngineBlockBundle\Doctrine\Type\SerializedObjectType;
3132
use RuntimeException;
3233
use SAML2\Constants;
3334

3435
/**
3536
* Abstract base class for configuration entities.
3637
*
38+
* Note: This baseclass is extended by IdentityProvider and ServiceProvider. Both entities are stored in a single table.
39+
* This means all columns defined in both subclasses are nullable by default, even if you pass 'nullable: false'.
40+
*
3741
* @package OpenConext\EngineBlock\Metadata\Entity
3842
* @SuppressWarnings(PHPMD.TooManyFields)
3943
*
@@ -134,25 +138,25 @@ abstract class AbstractRole
134138
* @var Logo
135139
* @deprecated Will be removed in favour of using the Mdui value object, use the getter for this field instead
136140
*/
137-
#[ORM\Column(name: 'logo', type: \Doctrine\DBAL\Types\Types::OBJECT)]
141+
#[ORM\Column(name: 'logo', type: SerializedObjectType::NAME)]
138142
public $logo;
139143

140144
/**
141145
* @var Organization
142146
*/
143-
#[ORM\Column(name: 'organization_nl_name', type: \Doctrine\DBAL\Types\Types::OBJECT, nullable: true, length: 65535)]
147+
#[ORM\Column(name: 'organization_nl_name', type: SerializedObjectType::NAME, length: 65535, nullable: true)]
144148
public $organizationNl;
145149

146150
/**
147151
* @var Organization
148152
*/
149-
#[ORM\Column(name: 'organization_en_name', type: \Doctrine\DBAL\Types\Types::OBJECT, nullable: true, length: 65535)]
153+
#[ORM\Column(name: 'organization_en_name', type: SerializedObjectType::NAME, length: 65535, nullable: true)]
150154
public $organizationEn;
151155

152156
/**
153157
* @var Organization
154158
*/
155-
#[ORM\Column(name: 'organization_pt_name', type: \Doctrine\DBAL\Types\Types::OBJECT, nullable: true, length: 65535)]
159+
#[ORM\Column(name: 'organization_pt_name', type: SerializedObjectType::NAME, length: 65535, nullable: true)]
156160
public $organizationPt;
157161

158162
/**
@@ -179,7 +183,7 @@ abstract class AbstractRole
179183
/**
180184
* @var X509Certificate[]
181185
*/
182-
#[ORM\Column(name: 'certificates', type: \Doctrine\DBAL\Types\Types::ARRAY, length: 65535)]
186+
#[ORM\Column(name: 'certificates', type: SerializedArrayType::NAME, length: 65535)]
183187
public $certificates = array();
184188

185189
/**
@@ -191,7 +195,7 @@ abstract class AbstractRole
191195
/**
192196
* @var ContactPerson[]
193197
*/
194-
#[ORM\Column(name: 'contact_persons', type: \Doctrine\DBAL\Types\Types::ARRAY, length: 65535)]
198+
#[ORM\Column(name: 'contact_persons', type: SerializedArrayType::NAME, length: 65535)]
195199
public $contactPersons;
196200

197201
/**
@@ -203,13 +207,13 @@ abstract class AbstractRole
203207
/**
204208
* @var string[]
205209
*/
206-
#[ORM\Column(name: 'name_id_formats', type: \Doctrine\DBAL\Types\Types::ARRAY, length: 65535)]
210+
#[ORM\Column(name: 'name_id_formats', type: SerializedArrayType::NAME, length: 65535)]
207211
public $supportedNameIdFormats;
208212

209213
/**
210214
* @var Service
211215
*/
212-
#[ORM\Column(name: 'single_logout_service', type: \Doctrine\DBAL\Types\Types::OBJECT, nullable: true, length: 65535)]
216+
#[ORM\Column(name: 'single_logout_service', type: SerializedObjectType::NAME, length: 65535, nullable: true)]
213217
public $singleLogoutService;
214218

215219
/**

src/OpenConext/EngineBlock/Metadata/Entity/IdentityProvider.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
use OpenConext\EngineBlock\Metadata\ShibMdScope;
3333
use OpenConext\EngineBlock\Metadata\Service;
3434
use OpenConext\EngineBlock\Metadata\StepupConnections;
35+
use OpenConext\EngineBlockBundle\Doctrine\Type\SerializedArrayType;
3536
use RobRichards\XMLSecLibs\XMLSecurityKey;
3637
use SAML2\Constants;
3738

@@ -71,7 +72,7 @@ class IdentityProvider extends AbstractRole
7172
/**
7273
* @var Service[]
7374
*/
74-
#[ORM\Column(name: 'single_sign_on_services', type: \Doctrine\DBAL\Types\Types::ARRAY, length: 65535)]
75+
#[ORM\Column(name: 'single_sign_on_services', type: SerializedArrayType::NAME, length: 65535)]
7576
public $singleSignOnServices = array();
7677

7778
/**
@@ -83,7 +84,7 @@ class IdentityProvider extends AbstractRole
8384
/**
8485
* @var ShibMdScope[]
8586
*/
86-
#[ORM\Column(name: 'shib_md_scopes', type: \Doctrine\DBAL\Types\Types::ARRAY, length: 65535)]
87+
#[ORM\Column(name: 'shib_md_scopes', type: SerializedArrayType::NAME, length: 65535)]
8788
public $shibMdScopes = array();
8889

8990
/**

src/OpenConext/EngineBlock/Metadata/Entity/ServiceProvider.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
use OpenConext\EngineBlock\Metadata\RequestedAttribute;
3030
use OpenConext\EngineBlock\Metadata\IndexedService;
3131
use OpenConext\EngineBlock\Metadata\Service;
32+
use OpenConext\EngineBlockBundle\Doctrine\Type\SerializedArrayType;
3233
use RobRichards\XMLSecLibs\XMLSecurityKey;
3334
use SAML2\Constants;
3435

@@ -48,19 +49,19 @@ class ServiceProvider extends AbstractRole
4849
/**
4950
* @var null|AttributeReleasePolicy
5051
*/
51-
#[ORM\Column(name: 'attribute_release_policy', type: \Doctrine\DBAL\Types\Types::ARRAY, length: 65535)]
52+
#[ORM\Column(name: 'attribute_release_policy', type: SerializedArrayType::NAME, length: 65535)]
5253
public $attributeReleasePolicy;
5354

5455
/**
5556
* @var IndexedService[]
5657
*/
57-
#[ORM\Column(name: 'assertion_consumer_services', type: \Doctrine\DBAL\Types\Types::ARRAY, length: 65535)]
58+
#[ORM\Column(name: 'assertion_consumer_services', type: SerializedArrayType::NAME, length: 65535)]
5859
public $assertionConsumerServices;
5960

6061
/**
6162
* @var string[]
6263
*/
63-
#[ORM\Column(name: 'allowed_idp_entity_ids', type: \Doctrine\DBAL\Types\Types::ARRAY, length: 6777215)]
64+
#[ORM\Column(name: 'allowed_idp_entity_ids', type: SerializedArrayType::NAME, length: 6777215)]
6465
public $allowedIdpEntityIds;
6566

6667
/**
@@ -72,7 +73,7 @@ class ServiceProvider extends AbstractRole
7273
/**
7374
* @var null|RequestedAttribute[]
7475
*/
75-
#[ORM\Column(name: 'requested_attributes', type: \Doctrine\DBAL\Types\Types::ARRAY, length: 65535)]
76+
#[ORM\Column(name: 'requested_attributes', type: SerializedArrayType::NAME, length: 65535)]
7677
public $requestedAttributes;
7778

7879
/**

0 commit comments

Comments
 (0)