Changed type of parameter for GeoRectangle.expand() to double to allow sub-meter values.
Added MathUtils.wrapValueToWithinLimits() to limit values between []-limit, limit).
Included elevationMeters in remaining Geo-classes. All operations now support elevations, including translation and length calculations.
Geo-objects like lines, polylines, rectangles etc. now always have either no elevation at all, or all their points or corners do have an elevation.
Added unit tests to test elevation behavior.
Included elevationMeters in Geo-classes, so GeoPoints can be 3D. If the elevation is omitted, the point is considered 2D.
Includes moving to Scala 2.12.4 and Akka libraries compiled for Scala 2.12.
Updated dependencies to latest from Maven Central.
Includes moving to Scala 2.12.4 and Akka libraries compiled for Scala 2.12.
Added three properties to control the behavior fo the MongoDBTraceFetcher better:
MongoDBTrace.fetcherThreadSleepMsecs = 250: Specifies how fast the trace fetcher schedules retrieving additional traces to fill its buffer.
MongoDBTrace.fetcherThreadSleepAfterExceptionMsecs = 5000: Specifies how long the trace fetcher will wait and sit and do nothing when a (database) exception occurs.
MongoDBTrace.fetcherQueueMaxSize = 500: Specifies hoe many trace events the trace fetcher will buffer at most, before stopping collectin more events.
Added SecurityHelper methods to get Principal name for authenticated sessions, for convenience.
Made SessionManager.createSecurityContext public, because it’s needed by a security manager implementation.
Removed AuthenticationScheme enum and replaced it with a generic String implementation to be extensible to include one-time-passwords, OAuth, etc.
Removed automatic binding of SecurityInterceptor. Needs to be done explicitly by caller now in a Guice module: binder.bind(SecurityInterceptor.class).in(Singleton.class), where binder is an injected Guice binder. If the bidnding is nor performed, no authentication is enforced; otherwise it is by default enforced on all URLs.
Important: The SMS module has been rewritten to use the Resteasy 3.x client interface, but the APIs seems to be broken. Need to be fixed.
This release is not fully compatible with previous releases: the Tracer interfaces have changed.
The tracer module has been places at top-level, rather than under mongodb. This means you need to include the tracer separately in your POMs, and the package names have changed to com.tomtom.speedtools.tracer.
This release is not fully compatible with previous releases due to an Akka upgrade, which has deprecated the use of typed actors.
Implemented full security for REST APIs in module rest.security.
Updated Akka dependencies to 2.5.3.
Remove module akka, which has become superfluous. Move the Duration utilities from AkkaUtils to core/time.
Removed TokenBucket class entirely. This was more of a utility class.
Removed all classes for typed actors, like ActorFactory, TypedActorContext.
Removed RootActor class.
Sorted dependencies in POMs.
Removed secret token from POM.
Fixed issues from code review with Codacy.
Fixed copyright messages for 2017.
Changed from APT to Markdown format for all documentation.
Updated dependencies of JBoss RESTEasy and Maven plugins.
Enabled JavaDoc for all modules in Maven site.
Removed ApiValidator.resetValidator() and replaced with an indication of whether the object is immutable or not. Immutable objects get additional checks and are automatically validated when a getter is executed.
Fixed JSON ignore attribute in ApiDTO.
Fixed TraceHandlerCollection to consider trace methods with the right number of parameters only.
Added compact/verbose mode to GeneralExceptionMapper.
Added explanation in MongoDBTraceFetcher exception which would occur when using a non-capped MongoDB collection for traces.
Corrected MongoDB database authentication and bumped driver version to 3.0.1.
Rename DataBinder to more commonly used DTO.
Made ApiDTO.validate() public to validate polymorph objects.
Made ApiDataBInder.validate() public to allow validating different inherited binders easily.
Added javax.ws.rs exceptions to GeneralExceptionMapper.
Moved to Jackson 2 for RestEasy.
Moved to JDK 1.8 and Java 8 language level.
Refactored REST API handler/controller interface to using Java Lambda expressions.
Introduced Lambda expressions elsewhere in implementation code.
Moved package ‘map’ and classes TileMap from package ‘lbs’ to package ‘geo’.
Fixed many inspection warnings.
Earlier Releases (Pre 3.0.0, Apache License 2.0)
Fixed additional static code anaylsis checks from IntelliJ IDEA 13.1.
Updated copyright notices.
Fixed getMin/Max of MetricsCollector.
Rename addValue to addValueNow (and addValueNow to addValue).
Corrected port check in MongoDB trace property.
Upgraded Resteasy to 3.0.8.Final (from 2.3.5.Final).
Packet size table auto-added if none present for V7 TTBin files.
Added GeoLine.getShortest(from, to) to get shortest GeoLine for two points.
Added automatic TTBin packet size calculation and table generation for all packet types.
Added proper equals/hashCode implementations to be able to comapre two TTBin parse trees.
Added EqualsVerifier unit tests for all TTBin classes.
Replaced Guice annotations with javax.inject annotations whereever possible (Inject, Singleton, see https://github.com/google/guice/wiki/JSR330).
Fixed incorrect name of speedtools.default.properties file (was still safertools).
Changed IntelliJ Nullable and NotNull annotations to JSR305 variants from com.google.code.findbugs.
Changed JCIP Immutable annotation to JSR305 variant from com.google.code.findbugs.
Added TTMain connector to SpeedTools (imported from Texas and adapted to new TTMain dependency).
Fixed blocking JavaDoc for JDK 1.8.
Changed Java language version to 7 (now using JDK 1.7).
Updated package dependencies in POM to latest versions.
exampleCreatingScalableService - example of writing simple OS thread-based and Future-based (high scalability0 )services using the SpeedTools framework.
exampleUsingDatabase - example of using the database mapper and object persistency framework of SpeedTools.
exampleUsingLbsServices - example of the use of several TomTom LBS services using the SpeedTools framework.
Added examples for event tracing and LBS geocoding and routing services (under /web/3/traceme, /web/3/geocoding/[query] and /web/3/route/[from]/[to]).
Moved the library files into a directory called “speedtools” and moved the examples files one level up.
LBS services:
LBS geocoding services;
LBS mapping services;
LBS routing services;
Push notifications:
iOS APNS push notifications;
Android GCM push notifications;
SMS notifications:
MessageBird SMS services;
Nexmo SMS services.