Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make ValidationProblem implement Serializable #437

Merged
merged 4 commits into from
Mar 29, 2018

Conversation

iantabolt
Copy link
Contributor

See #436 for more information.

Just a quick fix to make ValidationFailed exceptions actually serializable.


final private String path;
final private ConfigOrigin origin;
final private transient ConfigOrigin origin;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In discussion of #288 it looks like we are assuming ConfigOrigin is serializable (or at least, subclasses of it used in exceptions are). The transient here can't be the right fix in any case I don't think - we can't reconstruct this field after deserialization, and don't want to lose it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I wasn't sure what to do with that, but looking at your commit here b739f4b, it seems like ConfigOrigin is very intentionally not serializable. Maybe I should follow the lead of ConfigException, and add custom writeObject/readObject methods that call ConfigImplUtil.writeOrigin and ConfigImplUtil.readOrigin?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah, good archaeology, I didn't remember that at all.

I guess you are right - we should copy what ConfigException does with the custom read/write.

Copy link
Contributor Author

@iantabolt iantabolt Nov 2, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok I've updated it to use the custom serialization. I tried to extract a method to reuse some of the other code but maybe it would've been more straightforward to copy/paste the whole thing ¯_(ツ)_/¯. Let me know

@havocp
Copy link
Collaborator

havocp commented Nov 2, 2016

Thanks for working on this!

Copy link
Collaborator

@havocp havocp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems good! Mind adding a unit test or two as appropriate? There's hopefully an existing example for serializing exceptions and test for ValidationProblem could go next to it following a similar pattern. Or test an exception with problems in it.

@iantabolt
Copy link
Contributor Author

Sure thing

Copy link
Contributor

@2m 2m left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good. Great that you have extracted the logic from the way ConfigException was handled. After adding a missing unit test, this can be merged.

@iantabolt
Copy link
Contributor Author

Added a test. Sorry it took almost a year! 😬

@iantabolt
Copy link
Contributor Author

Is this able to be merged?

@havocp havocp merged commit 665a5fd into lightbend:master Mar 29, 2018
@havocp
Copy link
Collaborator

havocp commented Mar 29, 2018

Thanks! sorry for the delay...

aalleexxeeii pushed a commit to aalleexxeeii/typesafe-config that referenced this pull request Jun 6, 2018
Make ValidationProblem implement Serializable
@2m 2m added this to the 1.3.4 milestone Apr 18, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants