Skip to content

Commit c343d3e

Browse files
authored
Merge pull request AuthorizeNet#293 from AuthorizeNet/environment-issue
Adding mutex lock on Configuration Properties
2 parents 705b310 + 2f6ff45 commit c343d3e

File tree

4 files changed

+126
-122
lines changed

4 files changed

+126
-122
lines changed

Authorize.NET/Environment.cs

Lines changed: 121 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -19,130 +19,134 @@ namespace AuthorizeNet
1919
public class Environment {
2020
public static readonly Environment SANDBOX = new Environment("https://test.authorize.net", "https://apitest.authorize.net", "https://test.authorize.net");
2121
public static readonly Environment PRODUCTION = new Environment("https://secure2.authorize.net","https://api2.authorize.net","https://cardpresent.authorize.net");
22-
public static readonly Environment LOCAL_VM = new Environment(null, null, null);
23-
public static readonly Environment HOSTED_VM = new Environment(null, null, null);
22+
public static readonly Environment LOCAL_VM = new Environment(null, null, null);
23+
public static readonly Environment HOSTED_VM = new Environment(null, null, null);
2424
public static Environment CUSTOM = new Environment(null, null, null);
2525

26-
private String _baseUrl;
27-
private String _xmlBaseUrl;
28-
private String _cardPresentUrl;
29-
30-
private Environment(String baseUrl, String xmlBaseUrl, String cardPresentUrl) {
31-
_baseUrl = baseUrl;
32-
_xmlBaseUrl = xmlBaseUrl;
33-
_cardPresentUrl = cardPresentUrl;
34-
}
35-
36-
/**
37-
* @return the baseUrl
38-
*/
39-
public String getBaseUrl() {
40-
return _baseUrl;
41-
}
42-
43-
/**
44-
* @return the xmlBaseUrl
45-
*/
46-
public String getXmlBaseUrl() {
47-
return _xmlBaseUrl;
48-
}
49-
50-
/**
51-
* @return the cardPresentUrl
52-
*/
53-
public String getCardPresentUrl() {
54-
return _cardPresentUrl;
55-
}
56-
57-
/**
58-
* If a custom environment needs to be supported, this convenience create
59-
* method can be used to pass in a custom baseUrl.
60-
*
61-
* @param baseUrl
62-
* @param xmlBaseUrl
63-
* @return Environment object
64-
*/
65-
public static Environment createEnvironment(String baseUrl, String xmlBaseUrl) {
66-
67-
return createEnvironment( baseUrl, xmlBaseUrl, null);
68-
}
69-
70-
/**
71-
* If a custom environment needs to be supported, this convenience create
72-
* method can be used to pass in a custom baseUrl.
73-
*
74-
* @param baseUrl
75-
* @param xmlBaseUrl
76-
* @param cardPresentUrl
77-
*
78-
* @return Environment object
79-
*/
80-
public static Environment createEnvironment(String baseUrl, String xmlBaseUrl, String cardPresentUrl) {
81-
var environment = Environment.CUSTOM;
82-
environment._baseUrl = baseUrl;
83-
environment._xmlBaseUrl = xmlBaseUrl;
84-
environment._cardPresentUrl = cardPresentUrl;
85-
86-
return environment;
87-
}
88-
89-
/**
90-
* Reads a integer value from property file and/or the environment
91-
* Values in property file supersede the values set in environment
92-
* @param propertyName name of the integer property to read
93-
* @return int property value
94-
*/
95-
public static int getIntProperty( String propertyName)
96-
{
97-
var stringValue = GetProperty(propertyName);
26+
private String _baseUrl;
27+
private String _xmlBaseUrl;
28+
private String _cardPresentUrl;
29+
30+
private Environment(String baseUrl, String xmlBaseUrl, String cardPresentUrl) {
31+
_baseUrl = baseUrl;
32+
_xmlBaseUrl = xmlBaseUrl;
33+
_cardPresentUrl = cardPresentUrl;
34+
}
35+
36+
/**
37+
* @return the baseUrl
38+
*/
39+
public String getBaseUrl() {
40+
return _baseUrl;
41+
}
42+
43+
/**
44+
* @return the xmlBaseUrl
45+
*/
46+
public String getXmlBaseUrl() {
47+
return _xmlBaseUrl;
48+
}
49+
50+
/**
51+
* @return the cardPresentUrl
52+
*/
53+
public String getCardPresentUrl() {
54+
return _cardPresentUrl;
55+
}
56+
57+
/**
58+
* If a custom environment needs to be supported, this convenience create
59+
* method can be used to pass in a custom baseUrl.
60+
*
61+
* @param baseUrl
62+
* @param xmlBaseUrl
63+
* @return Environment object
64+
*/
65+
public static Environment createEnvironment(String baseUrl, String xmlBaseUrl) {
66+
67+
return createEnvironment( baseUrl, xmlBaseUrl, null);
68+
}
69+
70+
/**
71+
* If a custom environment needs to be supported, this convenience create
72+
* method can be used to pass in a custom baseUrl.
73+
*
74+
* @param baseUrl
75+
* @param xmlBaseUrl
76+
* @param cardPresentUrl
77+
*
78+
* @return Environment object
79+
*/
80+
public static Environment createEnvironment(String baseUrl, String xmlBaseUrl, String cardPresentUrl) {
81+
var environment = Environment.CUSTOM;
82+
environment._baseUrl = baseUrl;
83+
environment._xmlBaseUrl = xmlBaseUrl;
84+
environment._cardPresentUrl = cardPresentUrl;
85+
86+
return environment;
87+
}
88+
89+
/**
90+
* Reads a integer value from property file and/or the environment
91+
* Values in property file supersede the values set in environment
92+
* @param propertyName name of the integer property to read
93+
* @return int property value
94+
*/
95+
public static int getIntProperty( String propertyName)
96+
{
97+
var stringValue = GetProperty(propertyName);
9898
var value = (AuthorizeNet.Util.StringUtils.ParseInt(stringValue));
99-
100-
return value;
101-
}
102-
103-
/**
104-
* Reads a boolean value from property file and/or the environment
105-
* Values in property file supersede the values set in environment
106-
* @param propertyName name of the boolean property to read
107-
* @return boolean property value
108-
*/
109-
public static bool getBooleanProperty( String propertyName)
110-
{
111-
var value = false;
112-
var stringValue = GetProperty(propertyName);
113-
if ( null != stringValue)
114-
{
115-
Boolean.TryParse(stringValue.Trim(), out value);
116-
}
117-
118-
return value;
119-
}
120-
121-
/// <summary>
122-
/// Reads the value from property file and/or the environment
123-
/// Values in property file supersede the values set in environmen
124-
/// </summary>
99+
100+
return value;
101+
}
102+
103+
/**
104+
* Reads a boolean value from property file and/or the environment
105+
* Values in property file supersede the values set in environment
106+
* @param propertyName name of the boolean property to read
107+
* @return boolean property value
108+
*/
109+
public static bool getBooleanProperty( String propertyName)
110+
{
111+
var value = false;
112+
var stringValue = GetProperty(propertyName);
113+
if ( null != stringValue)
114+
{
115+
Boolean.TryParse(stringValue.Trim(), out value);
116+
}
117+
118+
return value;
119+
}
120+
121+
private static object mutex = new object();
122+
123+
/// <summary>
124+
/// Reads the value from property file and/or the environment
125+
/// Values in property file supersede the values set in environmen
126+
/// </summary>
125127
/// <param name="propertyName">propertyName name of the property to read</param>
126128
/// <returns>String property value</returns>
127-
public static String GetProperty(String propertyName) {
128-
String stringValue = null;
129+
public static String GetProperty(String propertyName) {
130+
String stringValue = null;
131+
String propValue = null;
129132

130-
String propValue = null;
131-
if ( ConfigurationManager.AppSettings.AllKeys.Contains(propertyName))
132-
{
133-
propValue = ConfigurationManager.AppSettings[propertyName];
134-
}
133+
lock(mutex) {
134+
if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings.Get(propertyName)))
135+
{
136+
propValue = ConfigurationManager.AppSettings.Get(propertyName);
137+
}
138+
}
135139

136140
var envValue = System.Environment.GetEnvironmentVariable(propertyName);
137-
if ( null != propValue && propValue.Trim().Length > 0 )
138-
{
139-
stringValue = propValue;
140-
}
141-
else if ( null != envValue && envValue.Trim().Length > 0 )
142-
{
143-
stringValue = envValue;
144-
}
145-
return stringValue;
146-
}
141+
if ( null != propValue && propValue.Trim().Length > 0 )
142+
{
143+
stringValue = propValue;
144+
}
145+
else if ( null != envValue && envValue.Trim().Length > 0 )
146+
{
147+
stringValue = envValue;
148+
}
149+
return stringValue;
150+
}
147151
}
148152
}

Authorize.NET/Properties/AssemblyInfo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
// Revision
3131
//
3232
// See AssemblyFileVersion.cs for Product and Assembly Version
33-
//[assembly: AssemblyVersion("2.0.1.0")]
34-
[assembly: AssemblyFileVersion("2.0.2.0")]
35-
[assembly: AssemblyVersion("2.0.2.0")]
33+
//[assembly: AssemblyVersion("2.0.2.0")]
34+
[assembly: AssemblyFileVersion("2.0.3.0")]
35+
[assembly: AssemblyVersion("2.0.3.0")]
3636

Authorize.NET/Util/Constants.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static class Constants {
2626
public const int HttpConnectionDefaultTimeout = 30000;
2727
public const int HttpReadWriteDefaultTimeout = 30000;
2828

29-
public const string SDKVersion = "2.0.2";
29+
public const string SDKVersion = "2.0.3";
3030

3131
}
3232
#pragma warning restore 1591

AuthorizeNet.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
33
<metadata>
44
<id>AuthorizeNet</id>
5-
<version>2.0.2</version>
5+
<version>2.0.3</version>
66
<title>AuthorizeNet</title>
77
<authors>Authorize.Net</authors>
88
<owners>AuthorizeNet</owners>

0 commit comments

Comments
 (0)