Open jebax opened 2 years ago
👋 @jebax thanks for the issue, and apologies that our CHANGELOG wasn't more clear. We moved to an entirely static HTTPClient in v5 which is you're encountering issues, now. I just want to confirm, you're not encountering this issue when creating a Configuration class object outside of constructing a BraintreeGateway?
We have another issue open that's related (#123), so we'll be taking another look at gateway and config construction in future versions for sure.
👋 @jebax thanks for the issue, and apologies that our CHANGELOG wasn't more clear. We moved to an entirely static HTTPClient in v5 which is you're encountering issues, now. I just want to confirm, you're not encountering this issue when creating a Configuration class object outside of constructing a BraintreeGateway?
We have another issue open that's related (#123), so we'll be taking another look at gateway and config construction in future versions for sure.
Thanks for the reply.
Yeah there's no issues now that I'm passing a configuration object into the constructor. Sounds like it's just an issue with the changelog then, IMO it's pretty hard to know that a static HTTP client is going to affect the way you instantiate the gateway without looking at the source code!
Sounds like it's just an issue with the changelog then
💯 We can make this more clear in the CHANGELOG and our migration guides, too. I'll keep this issue open until we have that fixed up.
for internal notekeeping, ticket 1615
General information
Issue description
Hi,
Our previous method of instantiating
BraintreeGateway
was to do something like this:Where
CustomBraintreeConfiguration
inherits fromBraintree.Configuration
.Since 5.0.0, instantiating
BraintreeGateway
like this causes all HTTP calls to break with aNullReferenceException
(from trying to accessEnvironment.GatewayURL
here).I can see in the 5.0.0 commit that many classes now use the static property
gateway.Service
instead of instantiating a new service usinggateway.Configuration
. Sincegateway.Service
is assigned during theBraintreeGateway
constructor, settingConfiguration
on the gateway after instantiation will always meanEnvironment
is null.Spent quite a while debugging this, and I think more people could run into this issue unless you either make the
Configuration
read-only or throw a more descriptive error. This breaking change also wasn't in the 5.0.0 changelog or the v5 migration guide.Thanks!