Skip to content

Commit cd460ec

Browse files
authored
Rationalize input validation exceptions and assertion failures (#4107)
* Rationalize input validation exceptions and assertions ... under a single ThrowHandler concept. This makes it possible to set an alternative ThrowHandler in our C# bindings that properly translates input validation exceptions to the correct .NET exception types. * Rename api/input_validation.h to util/exception.h * Reimplement util/hard_assert.h in terms of util/exception.h
1 parent 7e78166 commit cd460ec

35 files changed

+421
-415
lines changed

Firestore/Source/API/FIRCollectionReference.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,17 @@
2424
#import "Firestore/Source/API/FSTUserDataConverter.h"
2525

2626
#include "Firestore/core/src/firebase/firestore/api/collection_reference.h"
27-
#include "Firestore/core/src/firebase/firestore/api/input_validation.h"
2827
#include "Firestore/core/src/firebase/firestore/model/resource_path.h"
2928
#include "Firestore/core/src/firebase/firestore/util/error_apple.h"
29+
#include "Firestore/core/src/firebase/firestore/util/exception.h"
3030
#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
3131

3232
namespace util = firebase::firestore::util;
3333
using firebase::firestore::api::CollectionReference;
3434
using firebase::firestore::api::DocumentReference;
35-
using firebase::firestore::api::ThrowInvalidArgument;
3635
using firebase::firestore::core::ParsedSetData;
3736
using firebase::firestore::model::ResourcePath;
37+
using firebase::firestore::util::ThrowInvalidArgument;
3838

3939
NS_ASSUME_NONNULL_BEGIN
4040

Firestore/Source/API/FIRDocumentReference.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@
3030

3131
#include "Firestore/core/src/firebase/firestore/api/document_reference.h"
3232
#include "Firestore/core/src/firebase/firestore/api/document_snapshot.h"
33-
#include "Firestore/core/src/firebase/firestore/api/input_validation.h"
3433
#include "Firestore/core/src/firebase/firestore/api/source.h"
3534
#include "Firestore/core/src/firebase/firestore/core/event_listener.h"
3635
#include "Firestore/core/src/firebase/firestore/model/document_key.h"
3736
#include "Firestore/core/src/firebase/firestore/model/document_set.h"
3837
#include "Firestore/core/src/firebase/firestore/model/resource_path.h"
3938
#include "Firestore/core/src/firebase/firestore/util/error_apple.h"
39+
#include "Firestore/core/src/firebase/firestore/util/exception.h"
4040
#include "Firestore/core/src/firebase/firestore/util/status.h"
4141
#include "Firestore/core/src/firebase/firestore/util/statusor.h"
4242
#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
@@ -49,7 +49,6 @@
4949
using firebase::firestore::api::ListenerRegistration;
5050
using firebase::firestore::api::Source;
5151
using firebase::firestore::api::MakeSource;
52-
using firebase::firestore::api::ThrowInvalidArgument;
5352
using firebase::firestore::core::EventListener;
5453
using firebase::firestore::core::ListenOptions;
5554
using firebase::firestore::core::ParsedSetData;
@@ -59,6 +58,7 @@
5958
using firebase::firestore::util::Status;
6059
using firebase::firestore::util::StatusOr;
6160
using firebase::firestore::util::StatusOrCallback;
61+
using firebase::firestore::util::ThrowInvalidArgument;
6262

6363
NS_ASSUME_NONNULL_BEGIN
6464

Firestore/Source/API/FIRDocumentSnapshot.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@
3131

3232
#include "Firestore/core/src/firebase/firestore/api/document_snapshot.h"
3333
#include "Firestore/core/src/firebase/firestore/api/firestore.h"
34-
#include "Firestore/core/src/firebase/firestore/api/input_validation.h"
3534
#include "Firestore/core/src/firebase/firestore/api/settings.h"
3635
#include "Firestore/core/src/firebase/firestore/model/database_id.h"
3736
#include "Firestore/core/src/firebase/firestore/model/document_key.h"
3837
#include "Firestore/core/src/firebase/firestore/model/field_value.h"
3938
#include "Firestore/core/src/firebase/firestore/model/field_value_options.h"
4039
#include "Firestore/core/src/firebase/firestore/nanopb/nanopb_util.h"
40+
#include "Firestore/core/src/firebase/firestore/util/exception.h"
4141
#include "Firestore/core/src/firebase/firestore/util/hard_assert.h"
4242
#include "Firestore/core/src/firebase/firestore/util/log.h"
4343
#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
@@ -50,7 +50,6 @@
5050
using firebase::firestore::api::MakeFIRGeoPoint;
5151
using firebase::firestore::api::MakeFIRTimestamp;
5252
using firebase::firestore::api::SnapshotMetadata;
53-
using firebase::firestore::api::ThrowInvalidArgument;
5453
using firebase::firestore::model::DatabaseId;
5554
using firebase::firestore::model::Document;
5655
using firebase::firestore::model::DocumentKey;
@@ -59,6 +58,7 @@
5958
using firebase::firestore::model::ObjectValue;
6059
using firebase::firestore::model::ServerTimestampBehavior;
6160
using firebase::firestore::nanopb::MakeNSData;
61+
using firebase::firestore::util::ThrowInvalidArgument;
6262

6363
NS_ASSUME_NONNULL_BEGIN
6464

Firestore/Source/API/FIRFieldPath.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@
2323

2424
#import "Firestore/Source/API/FIRFieldPath+Internal.h"
2525

26-
#include "Firestore/core/src/firebase/firestore/api/input_validation.h"
2726
#include "Firestore/core/src/firebase/firestore/model/field_path.h"
27+
#include "Firestore/core/src/firebase/firestore/util/exception.h"
2828
#include "Firestore/core/src/firebase/firestore/util/hashing.h"
2929
#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
3030

3131
namespace util = firebase::firestore::util;
32-
using firebase::firestore::api::ThrowInvalidArgument;
3332
using firebase::firestore::model::FieldPath;
33+
using firebase::firestore::util::ThrowInvalidArgument;
3434

3535
NS_ASSUME_NONNULL_BEGIN
3636

Firestore/Source/API/FIRFirestore.mm

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939

4040
#include "Firestore/core/src/firebase/firestore/api/collection_reference.h"
4141
#include "Firestore/core/src/firebase/firestore/api/firestore.h"
42-
#include "Firestore/core/src/firebase/firestore/api/input_validation.h"
4342
#include "Firestore/core/src/firebase/firestore/api/write_batch.h"
4443
#include "Firestore/core/src/firebase/firestore/auth/credentials_provider.h"
4544
#include "Firestore/core/src/firebase/firestore/core/database_info.h"
@@ -48,9 +47,10 @@
4847
#include "Firestore/core/src/firebase/firestore/util/async_queue.h"
4948
#include "Firestore/core/src/firebase/firestore/util/empty.h"
5049
#include "Firestore/core/src/firebase/firestore/util/error_apple.h"
50+
#include "Firestore/core/src/firebase/firestore/util/exception.h"
51+
#include "Firestore/core/src/firebase/firestore/util/exception_apple.h"
5152
#include "Firestore/core/src/firebase/firestore/util/executor_libdispatch.h"
5253
#include "Firestore/core/src/firebase/firestore/util/hard_assert.h"
53-
#include "Firestore/core/src/firebase/firestore/util/hard_assert_apple.h"
5454
#include "Firestore/core/src/firebase/firestore/util/log.h"
5555
#include "Firestore/core/src/firebase/firestore/util/status.h"
5656
#include "Firestore/core/src/firebase/firestore/util/statusor.h"
@@ -60,16 +60,16 @@
6060
using firebase::firestore::api::DocumentReference;
6161
using firebase::firestore::api::Firestore;
6262
using firebase::firestore::api::ListenerRegistration;
63-
using firebase::firestore::api::ThrowIllegalState;
64-
using firebase::firestore::api::ThrowInvalidArgument;
6563
using firebase::firestore::auth::CredentialsProvider;
6664
using firebase::firestore::core::EventListener;
6765
using firebase::firestore::model::DatabaseId;
68-
using firebase::firestore::util::ObjcFailureHandler;
6966
using firebase::firestore::util::AsyncQueue;
70-
using firebase::firestore::util::SetFailureHandler;
71-
using firebase::firestore::util::StatusOr;
7267
using firebase::firestore::util::Empty;
68+
using firebase::firestore::util::ObjcThrowHandler;
69+
using firebase::firestore::util::SetThrowHandler;
70+
using firebase::firestore::util::StatusOr;
71+
using firebase::firestore::util::ThrowIllegalState;
72+
using firebase::firestore::util::ThrowInvalidArgument;
7373

7474
NS_ASSUME_NONNULL_BEGIN
7575

@@ -89,7 +89,7 @@ @implementation FIRFirestore {
8989

9090
+ (void)initialize {
9191
if (self == [FIRFirestore class]) {
92-
SetFailureHandler(ObjcFailureHandler);
92+
SetThrowHandler(ObjcThrowHandler);
9393
}
9494
}
9595

Firestore/Source/API/FIRFirestoreSettings.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
#import "FIRFirestoreSettings.h"
1818

19-
#include "Firestore/core/src/firebase/firestore/api/input_validation.h"
2019
#include "Firestore/core/src/firebase/firestore/api/settings.h"
20+
#include "Firestore/core/src/firebase/firestore/util/exception.h"
2121
#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
2222
#include "Firestore/core/src/firebase/firestore/util/warnings.h"
2323
#include "absl/base/attributes.h"
@@ -28,7 +28,7 @@
2828
namespace api = firebase::firestore::api;
2929
namespace util = firebase::firestore::util;
3030
using api::Settings;
31-
using api::ThrowInvalidArgument;
31+
using util::ThrowInvalidArgument;
3232

3333
// Public constant
3434
ABSL_CONST_INIT extern "C" const int64_t kFIRFirestoreCacheSizeUnlimited =

Firestore/Source/API/FIRGeoPoint.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
#import "Firestore/Source/API/FIRGeoPoint+Internal.h"
1818

1919
#include "Firestore/core/include/firebase/firestore/geo_point.h"
20-
#include "Firestore/core/src/firebase/firestore/api/input_validation.h"
2120
#include "Firestore/core/src/firebase/firestore/util/comparison.h"
21+
#include "Firestore/core/src/firebase/firestore/util/exception.h"
2222

23-
using firebase::firestore::api::ThrowInvalidArgument;
23+
using firebase::firestore::util::ThrowInvalidArgument;
2424
using firebase::firestore::util::DoubleBitwiseEquals;
2525
using firebase::firestore::util::DoubleBitwiseHash;
2626
using firebase::firestore::util::WrapCompare;

Firestore/Source/API/FIRQuery.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
#import "Firestore/Source/API/FIRSnapshotMetadata+Internal.h"
3535
#import "Firestore/Source/API/FSTUserDataConverter.h"
3636

37-
#include "Firestore/core/src/firebase/firestore/api/input_validation.h"
3837
#include "Firestore/core/src/firebase/firestore/api/query_core.h"
3938
#include "Firestore/core/src/firebase/firestore/api/query_listener_registration.h"
4039
#include "Firestore/core/src/firebase/firestore/core/bound.h"
@@ -48,6 +47,7 @@
4847
#include "Firestore/core/src/firebase/firestore/model/field_value.h"
4948
#include "Firestore/core/src/firebase/firestore/model/resource_path.h"
5049
#include "Firestore/core/src/firebase/firestore/util/error_apple.h"
50+
#include "Firestore/core/src/firebase/firestore/util/exception.h"
5151
#include "Firestore/core/src/firebase/firestore/util/hard_assert.h"
5252
#include "Firestore/core/src/firebase/firestore/util/statusor.h"
5353
#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
@@ -61,7 +61,6 @@
6161
using firebase::firestore::api::QuerySnapshot;
6262
using firebase::firestore::api::SnapshotMetadata;
6363
using firebase::firestore::api::Source;
64-
using firebase::firestore::api::ThrowInvalidArgument;
6564
using firebase::firestore::core::AsyncEventListener;
6665
using firebase::firestore::core::Bound;
6766
using firebase::firestore::core::Direction;
@@ -80,6 +79,7 @@
8079
using firebase::firestore::model::ResourcePath;
8180
using firebase::firestore::util::MakeNSError;
8281
using firebase::firestore::util::StatusOr;
82+
using firebase::firestore::util::ThrowInvalidArgument;
8383

8484
NS_ASSUME_NONNULL_BEGIN
8585

Firestore/Source/API/FIRQuerySnapshot.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,19 @@
2525
#import "Firestore/Source/API/FIRQuery+Internal.h"
2626
#import "Firestore/Source/API/FIRSnapshotMetadata+Internal.h"
2727

28-
#include "Firestore/core/src/firebase/firestore/api/input_validation.h"
2928
#include "Firestore/core/src/firebase/firestore/core/view_snapshot.h"
3029
#include "Firestore/core/src/firebase/firestore/model/document_set.h"
3130
#include "Firestore/core/src/firebase/firestore/util/delayed_constructor.h"
31+
#include "Firestore/core/src/firebase/firestore/util/exception.h"
3232

3333
using firebase::firestore::api::DocumentChange;
3434
using firebase::firestore::api::DocumentSnapshot;
3535
using firebase::firestore::api::Firestore;
3636
using firebase::firestore::api::QuerySnapshot;
3737
using firebase::firestore::api::SnapshotMetadata;
38-
using firebase::firestore::api::ThrowInvalidArgument;
3938
using firebase::firestore::core::ViewSnapshot;
4039
using firebase::firestore::util::DelayedConstructor;
40+
using firebase::firestore::util::ThrowInvalidArgument;
4141

4242
NS_ASSUME_NONNULL_BEGIN
4343

Firestore/Source/API/FIRTransaction.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,20 @@
2626
#import "Firestore/Source/API/FIRTransaction+Internal.h"
2727
#import "Firestore/Source/API/FSTUserDataConverter.h"
2828

29-
#include "Firestore/core/src/firebase/firestore/api/input_validation.h"
3029
#include "Firestore/core/src/firebase/firestore/core/transaction.h"
3130
#include "Firestore/core/src/firebase/firestore/util/error_apple.h"
31+
#include "Firestore/core/src/firebase/firestore/util/exception.h"
3232
#include "Firestore/core/src/firebase/firestore/util/hard_assert.h"
3333
#include "Firestore/core/src/firebase/firestore/util/status.h"
3434

35-
using firebase::firestore::api::ThrowInvalidArgument;
3635
using firebase::firestore::core::ParsedSetData;
3736
using firebase::firestore::core::ParsedUpdateData;
3837
using firebase::firestore::core::Transaction;
3938
using firebase::firestore::model::Document;
4039
using firebase::firestore::model::MaybeDocument;
4140
using firebase::firestore::util::MakeNSError;
4241
using firebase::firestore::util::Status;
42+
using firebase::firestore::util::ThrowInvalidArgument;
4343

4444
NS_ASSUME_NONNULL_BEGIN
4545

0 commit comments

Comments
 (0)