Moved non-link specific code to json package to prepare for link functionality extraction.
Renamed model package to links
Added json package to private packages declaration.
Use delegation for JSONLinkable instead of inheritance.
Mark decorator as JsonUnwrapped so that we don't have a decorator object in the JSON representation but rather directly its content. Need to check that deserialization works as expected.
Introduced common JSONBase class to gather decorator behavior.
Introduced generic aspect to JSONBase. Next step is to figure out how to inject a new JSONDecorator instance in JSONBase instances cleanly.
Introduced JSONObjectFactory to create JSON objects with proper delegates.
Made default constructor protected.
Removed dependency on JSONLinkable by generifying code base, notably JSONNamed, JSONSubElementContainer and JSONObjectFactory (along with cascading changes). Tests don't pass because of a weird (to me) issue with Jackson and Property.setValue. Deploy status is unknown since new version of Jahia maven plugin is behaving strangely.
Use a null-op deserializer to avoid issues with jackson not finding an appropriate deserializer for decorator.
Moved json package one level up to prepare for extraction into separate module.
Moved representation name to new JSONConstants class.
Removed now unneeded URI parameter in JSONNamed.
Extract names un-/escaping to new Names class.
Extracted JCR session access to a new SessionAccess in json.jcr package. Adapted PowerMock set up to mock SessionAccess instead of API.
Moved generation of type path generation to JSONLinkable since it's only needed to generate links.
Added logger to JSONConstants that the package can use to log messages.
Introduced APIObjectFactory to make sure the whole API implementation uses the same implementation and a single instance.
Moved APIObjectFactory to json package.