This task is final part of effort of removing all external dependencies from cayenne-server.
Why to do so:
- keeping cayenne free of outer dependencies will allow easier integration of Cayenne in projects, reducing issues in case of dependencies incompatibilities
- most of commons-collections code used by Cayenne can be replaced by plain java (this will require Java 8) so it will be easier to maintain
- commons-collections v3.2.1 used now have security vulnerabilities (see this issue)
Cayenne use some tricky collections from that lib now and will require to deal with their replacement
Those collections are:
- LRUMap this will be seamlessly replaced by already used ConcurrentLinkedHashMap
- CompositeCollection this will be copied into Cayenne code base as it has almost no dependencies and relatively small
- ReferenceMap this should be implemented by Cayenne as copying this will lead to copying significant part of commons-collections code base, luckily Cayenne actually use only two variants of this map: strong keys + weak values and strong keys + soft values.