Skip to content

Commit c1c9661

Browse files
committed
Change the framework to look for the SifFramework.config file in the current path first and the application folder second.
1 parent 462c5a0 commit c1c9661

3 files changed

Lines changed: 64 additions & 42 deletions

File tree

Code/Sif3Framework/Sif.Framework/Model/Settings/ConfigFileBasedFrameworkSettings.cs

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016 Systemic Pty Ltd
2+
* Copyright 2017 Systemic Pty Ltd
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -17,6 +17,9 @@
1717
using Sif.Framework.Model.Infrastructure;
1818
using System;
1919
using System.Configuration;
20+
using System.IO;
21+
using System.Reflection;
22+
using System.Web.Hosting;
2023

2124
namespace Sif.Framework.Model.Settings
2225
{
@@ -44,11 +47,11 @@ protected bool GetBooleanSetting(string key, bool defaultValue)
4447

4548
try
4649
{
47-
value = Boolean.Parse(setting.Value);
50+
value = bool.Parse(setting.Value);
4851
}
4952
catch (FormatException)
5053
{
51-
string message = String.Format("The valid values for the {0} setting are \"true\" or \"false\". The value \"{1}\" is not valid.", setting.Key, setting.Value);
54+
string message = $"The valid values for the {setting.Key} setting are \"true\" or \"false\". The value \"{setting.Value}\" is not valid.";
5255
throw new ConfigurationErrorsException(message);
5356
}
5457

@@ -73,11 +76,11 @@ protected int GetIntegerSetting(string key, int defaultValue)
7376

7477
try
7578
{
76-
value = Int32.Parse(setting.Value);
79+
value = int.Parse(setting.Value);
7780
}
7881
catch (FormatException)
7982
{
80-
string message = String.Format("The value \"{1}\" is not a valid integer for the {0} setting.", setting.Key, setting.Value);
83+
string message = $"The value \"{setting.Value}\" is not a valid integer for the {setting.Key} setting.";
8184
throw new ConfigurationErrorsException(message);
8285
}
8386

@@ -120,7 +123,7 @@ protected string GetStringSetting(string key)
120123
/// </summary>
121124
protected ConfigFileBasedFrameworkSettings()
122125
{
123-
string configurationFilePath = System.Web.Hosting.HostingEnvironment.MapPath("~/SifFramework.config");
126+
string configurationFilePath = HostingEnvironment.MapPath("~/SifFramework.config");
124127

125128
if (configurationFilePath == null)
126129
{
@@ -133,14 +136,21 @@ protected ConfigFileBasedFrameworkSettings()
133136

134137
if (!configuration.HasFile)
135138
{
136-
string message = String.Format("Missing configuration file {0}.", configurationFilePath);
139+
string fullPath = Assembly.GetExecutingAssembly().Location;
140+
exeConfigurationFileMap.ExeConfigFilename = Path.GetDirectoryName(fullPath) + "\\SifFramework.config";
141+
configuration = ConfigurationManager.OpenMappedExeConfiguration(exeConfigurationFileMap, ConfigurationUserLevel.None);
142+
}
143+
144+
if (!configuration.HasFile)
145+
{
146+
string message = $"Missing configuration file {configurationFilePath}.";
137147
throw new ConfigurationErrorsException(message);
138148
}
139149

140150
}
141151

142152
/// <summary>
143-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.ApplicationKey"/>
153+
/// <see cref="IFrameworkSettings.ApplicationKey"/>
144154
/// </summary>
145155
public string ApplicationKey
146156
{
@@ -153,7 +163,7 @@ public string ApplicationKey
153163
}
154164

155165
/// <summary>
156-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.AuthenticationMethod"/>
166+
/// <see cref="IFrameworkSettings.AuthenticationMethod"/>
157167
/// </summary>
158168
public string AuthenticationMethod
159169
{
@@ -166,7 +176,7 @@ public string AuthenticationMethod
166176
}
167177

168178
/// <summary>
169-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.CompressPayload"/>
179+
/// <see cref="IFrameworkSettings.CompressPayload"/>
170180
/// </summary>
171181
public bool CompressPayload
172182
{
@@ -179,7 +189,7 @@ public bool CompressPayload
179189
}
180190

181191
/// <summary>
182-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.ConsumerName"/>
192+
/// <see cref="IFrameworkSettings.ConsumerName"/>
183193
/// </summary>
184194
public string ConsumerName
185195
{
@@ -192,7 +202,7 @@ public string ConsumerName
192202
}
193203

194204
/// <summary>
195-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.DataModelNamespace"/>
205+
/// <see cref="IFrameworkSettings.DataModelNamespace"/>
196206
/// </summary>
197207
public string DataModelNamespace
198208
{
@@ -205,7 +215,7 @@ public string DataModelNamespace
205215
}
206216

207217
/// <summary>
208-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.InfrastructureNamespace"/>
218+
/// <see cref="IFrameworkSettings.InfrastructureNamespace"/>
209219
/// </summary>
210220
public string InfrastructureNamespace
211221
{
@@ -218,7 +228,7 @@ public string InfrastructureNamespace
218228
}
219229

220230
/// <summary>
221-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.DeleteOnUnregister"/>
231+
/// <see cref="IFrameworkSettings.DeleteOnUnregister"/>
222232
/// </summary>
223233
public bool DeleteOnUnregister
224234
{
@@ -231,7 +241,7 @@ public bool DeleteOnUnregister
231241
}
232242

233243
/// <summary>
234-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.EnvironmentType"/>
244+
/// <see cref="IFrameworkSettings.EnvironmentType"/>
235245
/// </summary>
236246
public EnvironmentType EnvironmentType
237247
{
@@ -254,7 +264,7 @@ public EnvironmentType EnvironmentType
254264
}
255265
else
256266
{
257-
string message = String.Format("The valid values for the {0} setting are \"BROKERED\" or \"DIRECT\". The value \"{1}\" is not valid.", setting.Key, setting.Value);
267+
string message = $"The valid values for the {setting.Key} setting are \"BROKERED\" or \"DIRECT\". The value \"{setting.Value}\" is not valid.";
258268
throw new ConfigurationErrorsException(message);
259269
}
260270

@@ -266,7 +276,7 @@ public EnvironmentType EnvironmentType
266276
}
267277

268278
/// <summary>
269-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.EnvironmentUrl"/>
279+
/// <see cref="IFrameworkSettings.EnvironmentUrl"/>
270280
/// </summary>
271281
public string EnvironmentUrl
272282
{
@@ -279,7 +289,7 @@ public string EnvironmentUrl
279289
}
280290

281291
/// <summary>
282-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.InstanceId"/>
292+
/// <see cref="IFrameworkSettings.InstanceId"/>
283293
/// </summary>
284294
public string InstanceId
285295
{
@@ -292,7 +302,7 @@ public string InstanceId
292302
}
293303

294304
/// <summary>
295-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.NavigationPageSize"/>
305+
/// <see cref="IFrameworkSettings.NavigationPageSize"/>
296306
/// </summary>
297307
public int NavigationPageSize
298308
{
@@ -305,7 +315,7 @@ public int NavigationPageSize
305315
}
306316

307317
/// <summary>
308-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.SharedSecret"/>
318+
/// <see cref="IFrameworkSettings.SharedSecret"/>
309319
/// </summary>
310320
public string SharedSecret
311321
{
@@ -318,7 +328,7 @@ public string SharedSecret
318328
}
319329

320330
/// <summary>
321-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.SolutionId"/>
331+
/// <see cref="IFrameworkSettings.SolutionId"/>
322332
/// </summary>
323333
public string SolutionId
324334
{
@@ -331,7 +341,7 @@ public string SolutionId
331341
}
332342

333343
/// <summary>
334-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.SupportedInfrastructureVersion"/>
344+
/// <see cref="IFrameworkSettings.SupportedInfrastructureVersion"/>
335345
/// </summary>
336346
public string SupportedInfrastructureVersion
337347
{
@@ -344,7 +354,7 @@ public string SupportedInfrastructureVersion
344354
}
345355

346356
/// <summary>
347-
/// <see cref="Sif.Framework.Model.Settings.IFrameworkSettings.UserToken"/>
357+
/// <see cref="IFrameworkSettings.UserToken"/>
348358
/// </summary>
349359
public string UserToken
350360
{
@@ -390,5 +400,7 @@ public int JobTimeoutFrequency
390400
{
391401
get { return GetIntegerSetting(SettingsPrefix + ".job.timeout.frequency", 60); }
392402
}
403+
393404
}
405+
394406
}

Code/Sif3Framework/Sif.Framework/Service/Sessions/ConfigFileBasedSessionService.cs

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2015 Systemic Pty Ltd
2+
* Copyright 2017 Systemic Pty Ltd
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -17,6 +17,9 @@
1717
using Sif.Framework.Model.Settings;
1818
using System;
1919
using System.Configuration;
20+
using System.IO;
21+
using System.Reflection;
22+
using System.Web.Hosting;
2023

2124
namespace Sif.Framework.Service.Sessions
2225
{
@@ -43,7 +46,7 @@ abstract class ConfigFileBasedSessionService : ISessionService
4346
/// </summary>
4447
public ConfigFileBasedSessionService()
4548
{
46-
string configurationFilePath = System.Web.Hosting.HostingEnvironment.MapPath("~/SifFramework.config");
49+
string configurationFilePath = HostingEnvironment.MapPath("~/SifFramework.config");
4750

4851
if (configurationFilePath == null)
4952
{
@@ -56,30 +59,37 @@ public ConfigFileBasedSessionService()
5659

5760
if (!Configuration.HasFile)
5861
{
59-
string message = String.Format("Missing configuration file {0}.", configurationFilePath);
62+
string fullPath = Assembly.GetExecutingAssembly().Location;
63+
exeConfigurationFileMap.ExeConfigFilename = Path.GetDirectoryName(fullPath) + "\\SifFramework.config";
64+
Configuration = ConfigurationManager.OpenMappedExeConfiguration(exeConfigurationFileMap, ConfigurationUserLevel.None);
65+
}
66+
67+
if (!Configuration.HasFile)
68+
{
69+
string message = $"Missing configuration file {configurationFilePath}.";
6070
throw new ConfigurationErrorsException(message);
6171
}
6272

6373
}
6474

6575
/// <summary>
66-
/// <see cref="Sif.Framework.Service.Sessions.ISessionService.HasSession(System.String, System.String, System.String, System.String)"/>
76+
/// <see cref="ISessionService.HasSession(string, string, string, string)"/>
6777
/// </summary>
6878
public bool HasSession(string applicationKey, string solutionId = null, string userToken = null, string instanceId = null)
6979
{
7080
return (RetrieveSessionToken(applicationKey, solutionId, userToken, instanceId) == null ? false : true);
7181
}
7282

7383
/// <summary>
74-
/// <see cref="Sif.Framework.Service.Sessions.ISessionService.HasSession(System.String)"/>
84+
/// <see cref="ISessionService.HasSession(string)"/>
7585
/// </summary>
7686
public bool HasSession(string sessionToken)
7787
{
7888
return (SessionsSection.Sessions[sessionToken] == null ? false : true);
7989
}
8090

8191
/// <summary>
82-
/// <see cref="Sif.Framework.Service.Sessions.ISessionService.RemoveSession(System.String)"/>
92+
/// <see cref="ISessionService.RemoveSession(string)"/>
8393
/// </summary>
8494
public void RemoveSession(string sessionToken)
8595
{
@@ -94,7 +104,7 @@ public void RemoveSession(string sessionToken)
94104
}
95105

96106
/// <summary>
97-
/// <see cref="Sif.Framework.Service.Sessions.ISessionService.RetrieveEnvironmentUrl(System.String, System.String, System.String, System.String)"/>
107+
/// <see cref="ISessionService.RetrieveEnvironmentUrl(string, string, string, string)"/>
98108
/// </summary>
99109
public string RetrieveEnvironmentUrl(string applicationKey, string solutionId = null, string userToken = null, string instanceId = null)
100110
{
@@ -103,10 +113,10 @@ public string RetrieveEnvironmentUrl(string applicationKey, string solutionId =
103113
foreach (SessionElement session in SessionsSection.Sessions)
104114
{
105115

106-
if (String.Equals(applicationKey, session.ApplicationKey) &&
107-
(solutionId == null ? String.IsNullOrWhiteSpace(session.SolutionId) : solutionId.Equals(session.SolutionId)) &&
108-
(userToken == null ? String.IsNullOrWhiteSpace(session.UserToken) : userToken.Equals(session.UserToken)) &&
109-
(instanceId == null ? String.IsNullOrWhiteSpace(session.InstanceId) : instanceId.Equals(session.InstanceId)))
116+
if (string.Equals(applicationKey, session.ApplicationKey) &&
117+
(solutionId == null ? string.IsNullOrWhiteSpace(session.SolutionId) : solutionId.Equals(session.SolutionId)) &&
118+
(userToken == null ? string.IsNullOrWhiteSpace(session.UserToken) : userToken.Equals(session.UserToken)) &&
119+
(instanceId == null ? string.IsNullOrWhiteSpace(session.InstanceId) : instanceId.Equals(session.InstanceId)))
110120
{
111121
environmentUrl = session.EnvironmentUrl;
112122
break;
@@ -118,7 +128,7 @@ public string RetrieveEnvironmentUrl(string applicationKey, string solutionId =
118128
}
119129

120130
/// <summary>
121-
/// <see cref="Sif.Framework.Service.Sessions.ISessionService.RetrieveSessionToken(System.String, System.String, System.String, System.String)"/>
131+
/// <see cref="ISessionService.RetrieveSessionToken(string, string, string, string)"/>
122132
/// </summary>
123133
public string RetrieveSessionToken(string applicationKey, string solutionId = null, string userToken = null, string instanceId = null)
124134
{
@@ -127,10 +137,10 @@ public string RetrieveSessionToken(string applicationKey, string solutionId = nu
127137
foreach (SessionElement session in SessionsSection.Sessions)
128138
{
129139

130-
if (String.Equals(applicationKey, session.ApplicationKey) &&
131-
(solutionId == null ? String.IsNullOrWhiteSpace(session.SolutionId) : solutionId.Equals(session.SolutionId)) &&
132-
(userToken == null ? String.IsNullOrWhiteSpace(session.UserToken) : userToken.Equals(session.UserToken)) &&
133-
(instanceId == null ? String.IsNullOrWhiteSpace(session.InstanceId) : instanceId.Equals(session.InstanceId)))
140+
if (string.Equals(applicationKey, session.ApplicationKey) &&
141+
(solutionId == null ? string.IsNullOrWhiteSpace(session.SolutionId) : solutionId.Equals(session.SolutionId)) &&
142+
(userToken == null ? string.IsNullOrWhiteSpace(session.UserToken) : userToken.Equals(session.UserToken)) &&
143+
(instanceId == null ? string.IsNullOrWhiteSpace(session.InstanceId) : instanceId.Equals(session.InstanceId)))
134144
{
135145
sessionToken = session.SessionToken;
136146
break;
@@ -142,14 +152,14 @@ public string RetrieveSessionToken(string applicationKey, string solutionId = nu
142152
}
143153

144154
/// <summary>
145-
/// <see cref="Sif.Framework.Service.Sessions.ISessionService.StoreSession(System.String, System.String, System.String, System.String, System.String, System.String)"/>
155+
/// <see cref="ISessionService.StoreSession(string, string, string, string, string, string)"/>
146156
/// </summary>
147157
public void StoreSession(string applicationKey, string sessionToken, string environmentUrl, string solutionId = null, string userToken = null, string instanceId = null)
148158
{
149159

150160
if (HasSession(applicationKey, solutionId, userToken, instanceId))
151161
{
152-
string message = String.Format("Session with the following credentials already exists - [applicationKey={0}]{1}{2}{3}.",
162+
string message = string.Format("Session with the following credentials already exists - [applicationKey={0}]{1}{2}{3}.",
153163
applicationKey,
154164
(solutionId == null ? "" : "[solutionId=" + solutionId + "]"),
155165
(userToken == null ? "" : "[userToken=" + userToken + "]"),
@@ -159,7 +169,7 @@ public void StoreSession(string applicationKey, string sessionToken, string envi
159169

160170
if (HasSession(sessionToken))
161171
{
162-
string message = String.Format("Session already exists with a session token of {0}.", sessionToken);
172+
string message = string.Format("Session already exists with a session token of {0}.", sessionToken);
163173
throw new ConfigurationErrorsException(message);
164174
}
165175

512 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)