@@ -102,34 +102,36 @@ func newSession(sessionID SessionID, storeFactory MessageStoreFactory, settings
102
102
103
103
if sessionID .IsFIXT () {
104
104
if session .defaultApplVerID , err = settings .Setting (config .DefaultApplVerID ); err != nil {
105
- return session , requiredConfigurationMissing ( config . DefaultApplVerID )
105
+ return session , err
106
106
}
107
107
108
108
if applVerID , ok := applVerIDLookup [session .defaultApplVerID ]; ok {
109
109
session .defaultApplVerID = applVerID
110
110
}
111
111
112
112
//If the transport or app data dictionary setting is set, the other also needs to be set.
113
- hasTransportDataDictionary := settings .HasSetting (config .TransportDataDictionary )
114
- hasAppDataDictionary := settings .HasSetting (config .AppDataDictionary )
115
- if hasTransportDataDictionary && hasAppDataDictionary {
116
- transportDataDictionaryPath , _ := settings .Setting (config .TransportDataDictionary )
113
+ if settings .HasSetting (config .TransportDataDictionary ) || settings .HasSetting (config .AppDataDictionary ) {
114
+ transportDataDictionaryPath , err := settings .Setting (config .TransportDataDictionary )
115
+ if err != nil {
116
+ return session , err
117
+ }
118
+
117
119
transportDataDictionary , err := datadictionary .Parse (transportDataDictionaryPath )
118
120
if err != nil {
119
121
return session , err
120
122
}
121
123
122
- appDataDictionaryPath , _ := settings .Setting (config .AppDataDictionary )
124
+ appDataDictionaryPath , err := settings .Setting (config .AppDataDictionary )
125
+ if err != nil {
126
+ return session , err
127
+ }
128
+
123
129
appDataDictionary , err := datadictionary .Parse (appDataDictionaryPath )
124
130
if err != nil {
125
131
return session , err
126
132
}
127
133
128
134
session .validator = & fixtValidator {transportDataDictionary , appDataDictionary , validatorSettings }
129
- } else if hasTransportDataDictionary {
130
- return session , requiredConfigurationMissing (config .AppDataDictionary )
131
- } else if hasAppDataDictionary {
132
- return session , requiredConfigurationMissing (config .TransportDataDictionary )
133
135
}
134
136
} else {
135
137
var dataDictionary * datadictionary.DataDictionary
@@ -170,10 +172,7 @@ func newSession(sessionID SessionID, storeFactory MessageStoreFactory, settings
170
172
}
171
173
}
172
174
173
- switch {
174
- case ! settings .HasSetting (config .StartTime ) && ! settings .HasSetting (config .EndTime ):
175
- //no session times
176
- case settings .HasSetting (config .StartTime ) && settings .HasSetting (config .EndTime ):
175
+ if settings .HasSetting (config .StartTime ) || settings .HasSetting (config .EndTime ) {
177
176
var startTimeStr , endTimeStr string
178
177
if startTimeStr , err = settings .Setting (config .StartTime ); err != nil {
179
178
return session , err
@@ -185,12 +184,12 @@ func newSession(sessionID SessionID, storeFactory MessageStoreFactory, settings
185
184
186
185
start , err := internal .ParseTimeOfDay (startTimeStr )
187
186
if err != nil {
188
- return session , err
187
+ return session , IncorrectFormatForSetting { Setting : config . StartTime , Value : startTimeStr , Err : err }
189
188
}
190
189
191
190
end , err := internal .ParseTimeOfDay (endTimeStr )
192
191
if err != nil {
193
- return session , err
192
+ return session , IncorrectFormatForSetting { Setting : config . EndTime , Value : endTimeStr , Err : err }
194
193
}
195
194
196
195
loc := time .UTC
@@ -202,15 +201,13 @@ func newSession(sessionID SessionID, storeFactory MessageStoreFactory, settings
202
201
203
202
loc , err = time .LoadLocation (locStr )
204
203
if err != nil {
205
- return session , err
204
+ return session , IncorrectFormatForSetting { Setting : config . TimeZone , Value : locStr , Err : err }
206
205
}
207
206
}
208
207
209
- switch {
210
- case ! settings .HasSetting (config .StartDay ) && ! settings .HasSetting (config .EndDay ):
208
+ if ! settings .HasSetting (config .StartDay ) && ! settings .HasSetting (config .EndDay ) {
211
209
session .sessionTime = internal .NewTimeRangeInLocation (start , end , loc )
212
-
213
- case settings .HasSetting (config .StartDay ) && settings .HasSetting (config .EndDay ):
210
+ } else {
214
211
var startDayStr , endDayStr string
215
212
if startDayStr , err = settings .Setting (config .StartDay ); err != nil {
216
213
return session , err
@@ -220,35 +217,26 @@ func newSession(sessionID SessionID, storeFactory MessageStoreFactory, settings
220
217
return session , err
221
218
}
222
219
223
- parseDay := func (dayStr string ) (day time.Weekday , err error ) {
220
+ parseDay := func (setting , dayStr string ) (day time.Weekday , err error ) {
224
221
day , ok := dayLookup [dayStr ]
225
222
if ! ok {
226
- err = fmt . Errorf ( "Cannot parse %v" , dayStr )
223
+ return day , IncorrectFormatForSetting { Setting : setting , Value : dayStr }
227
224
}
228
225
return
229
226
}
230
227
231
- startDay , err := parseDay (startDayStr )
228
+ startDay , err := parseDay (config . StartDay , startDayStr )
232
229
if err != nil {
233
230
return session , err
234
231
}
235
232
236
- endDay , err := parseDay (endDayStr )
233
+ endDay , err := parseDay (config . EndDay , endDayStr )
237
234
if err != nil {
238
235
return session , err
239
236
}
240
237
241
238
session .sessionTime = internal .NewWeekRangeInLocation (start , end , startDay , endDay , loc )
242
- case settings .HasSetting (config .StartDay ):
243
- return session , requiredConfigurationMissing (config .EndDay )
244
- case settings .HasSetting (config .EndDay ):
245
- return session , requiredConfigurationMissing (config .StartDay )
246
239
}
247
-
248
- case settings .HasSetting (config .StartTime ):
249
- return session , requiredConfigurationMissing (config .EndTime )
250
- case settings .HasSetting (config .EndTime ):
251
- return session , requiredConfigurationMissing (config .StartTime )
252
240
}
253
241
254
242
if session .log , err = logFactory .CreateSessionLog (session .sessionID ); err != nil {
0 commit comments