@@ -54,82 +54,88 @@ + (nullable instancetype)initWithBuilderBlock:(nonnull OPTLYProjectConfigBuilder
54
54
}
55
55
56
56
- (instancetype )initWithBuilder : (OPTLYProjectConfigBuilder *)builder {
57
-
58
- if (!builder.datafile ) {
59
- NSError *error = [NSError errorWithDomain: OPTLYErrorHandlerMessagesDomain
60
- code: OPTLYErrorTypesDatafileInvalid
61
- userInfo: @{NSLocalizedDescriptionKey :
62
- NSLocalizedString (OPTLYErrorHandlerMessagesDataFileInvalid, nil )}];
63
- [_errorHandler handleError: error];
64
-
65
- NSString *logMessage = OPTLYErrorHandlerMessagesDataFileInvalid;
66
- [_logger logMessage: logMessage withLevel: OptimizelyLogLevelError];
67
- return nil ;
68
- }
69
-
70
- NSError *datafileError;
71
- @try {
72
- self = [super initWithData: builder.datafile error: &datafileError];
73
- }
74
- @catch (NSException *datafileException) {
75
- [_errorHandler handleException: datafileException];
76
- }
77
-
78
- if (datafileError)
79
- {
80
- NSError *error = [NSError errorWithDomain: OPTLYErrorHandlerMessagesDomain
81
- code: OPTLYErrorTypesDatafileInvalid
82
- userInfo: datafileError.userInfo];
83
- [_errorHandler handleError: error];
84
- return nil ;
85
- }
86
-
57
+ // check for valid error handler and logger
87
58
if (builder.errorHandler ) {
88
- if ([OPTLYErrorHandler conformsToOPTLYErrorHandlerProtocol: [builder.errorHandler class ]]) {
89
- _errorHandler = (id <OPTLYErrorHandler, Ignore>)builder.errorHandler ;
90
- } else {
91
- _errorHandler = [OPTLYErrorHandlerDefault new ];
59
+ if (![OPTLYErrorHandler conformsToOPTLYErrorHandlerProtocol: [builder.errorHandler class ]]) {
92
60
NSError *error = [NSError errorWithDomain: OPTLYErrorHandlerMessagesDomain
93
61
code: OPTLYErrorTypesErrorHandlerInvalid
94
62
userInfo: @{NSLocalizedDescriptionKey :
95
63
NSLocalizedString (OPTLYErrorHandlerMessagesErrorHandlerInvalid, nil )}];
96
- [_errorHandler handleError: error];
64
+ [[[OPTLYErrorHandlerNoOp alloc ] init ] handleError: error];
97
65
98
66
NSString *logMessage = OPTLYErrorHandlerMessagesErrorHandlerInvalid;
99
- [_logger logMessage: logMessage withLevel: OptimizelyLogLevelError];
67
+ [[[OPTLYLoggerDefault alloc ] initWithLogLevel: OptimizelyLogLevelAll] logMessage: logMessage withLevel: OptimizelyLogLevelError];
68
+ return nil ;
100
69
}
101
70
}
102
71
72
+ // check for valid logger
103
73
if (builder.logger) {
104
- if ([builder.logger conformsToProtocol: @protocol (OPTLYLogger)]) {
105
- _logger = (id <OPTLYLogger, Ignore>)builder.logger ;
106
- } else {
107
- _logger = [OPTLYLoggerDefault new ];
74
+ if (![builder.logger conformsToProtocol: @protocol (OPTLYLogger)]) {
75
+ builder.logger = [OPTLYLoggerDefault new ];
108
76
NSError *error = [NSError errorWithDomain: OPTLYErrorHandlerMessagesDomain
109
77
code: OPTLYErrorTypesLoggerInvalid
110
78
userInfo: @{NSLocalizedDescriptionKey :
111
79
NSLocalizedString (OPTLYErrorHandlerMessagesLoggerInvalid, nil )}];
112
- [_errorHandler handleError: error];
80
+ [builder.errorHandler handleError: error];
113
81
114
82
NSString *logMessage = OPTLYErrorHandlerMessagesLoggerInvalid;
115
- [_logger logMessage: logMessage withLevel: OptimizelyLogLevelError];
83
+ [builder.logger logMessage: logMessage withLevel: OptimizelyLogLevelError];
84
+ return nil ;
116
85
}
117
86
}
118
87
88
+ // check that datafile exists
89
+ if (!builder.datafile) {
90
+ NSError *error = [NSError errorWithDomain: OPTLYErrorHandlerMessagesDomain
91
+ code: OPTLYErrorTypesDatafileInvalid
92
+ userInfo: @{NSLocalizedDescriptionKey :
93
+ NSLocalizedString (OPTLYErrorHandlerMessagesDataFileInvalid, nil )}];
94
+ [builder.errorHandler handleError: error];
95
+
96
+ NSString *logMessage = OPTLYErrorHandlerMessagesDataFileInvalid;
97
+ [builder.logger logMessage: logMessage withLevel: OptimizelyLogLevelError];
98
+ return nil ;
99
+ }
100
+
101
+ // check for valid user profile
119
102
if (builder.userProfile) {
120
- if ([OPTLYUserProfileUtility conformsToOPTLYUserProfileProtocol: [builder.userProfile class ]]) {
121
- _userProfile = (id <OPTLYUserProfile, Ignore>)builder.userProfile ;
122
- } else {
103
+ if (![OPTLYUserProfileUtility conformsToOPTLYUserProfileProtocol: [builder.userProfile class ]]) {
123
104
NSError *error = [NSError errorWithDomain: OPTLYErrorHandlerMessagesDomain
124
105
code: OPTLYErrorTypesUserProfile
125
106
userInfo: @{NSLocalizedDescriptionKey :
126
107
NSLocalizedString (OPTLYErrorHandlerMessagesUserProfileInvalid, nil )}];
127
- [_errorHandler handleError: error];
108
+ [builder.errorHandler handleError: error];
128
109
129
110
NSString *logMessage = OPTLYErrorHandlerMessagesUserProfileInvalid;
130
- [_logger logMessage: logMessage withLevel: OptimizelyLogLevelError];
111
+ [builder.logger logMessage: logMessage withLevel: OptimizelyLogLevelError];
112
+ return nil ;
113
+ }
114
+ }
115
+
116
+ // check datafile is valid
117
+ @try {
118
+ NSError *datafileError;
119
+ OPTLYProjectConfig *projectConfig = [[OPTLYProjectConfig alloc ] initWithData: builder.datafile error: &datafileError];
120
+ if (datafileError)
121
+ {
122
+ NSError *error = [NSError errorWithDomain: OPTLYErrorHandlerMessagesDomain
123
+ code: OPTLYErrorTypesDatafileInvalid
124
+ userInfo: datafileError.userInfo];
125
+ [builder.errorHandler handleError: error];
126
+ return nil ;
127
+ }
128
+ else {
129
+ self = projectConfig;
131
130
}
132
131
}
132
+ @catch (NSException *datafileException) {
133
+ [builder.errorHandler handleException: datafileException];
134
+ }
135
+
136
+ _errorHandler = (id <OPTLYErrorHandler, Ignore>)builder.errorHandler;
137
+ _logger = (id <OPTLYLogger, Ignore>)builder.logger;
138
+ _userProfile = (id <OPTLYUserProfile, Ignore>)builder.userProfile;
133
139
return self ;
134
140
}
135
141
0 commit comments