@sbernard31 sbernard31 released this Jan 19, 2018 · 22 commits to master since this release

Build artifacts are available on maven central.


A better timeout handling.
A better observation support as client side.
A more flexible way to handle Response Code.
Replace Gson dependency by minimal-json.
We now use the Californium 2.0.0-M6 which :

  • allow us to fix an old security issue (#187),
  • should fixed most of memory leaks,
  • uses sl4j as log facade instead of java.loggin.util.
  • does not dependent on netty anymore.

⚠️ There is compatibility break in the way we serialize Observation and Registration in RegistrationStore. This will impact the experimental RedisRegistrationStore. If you are using it you should look at #454 (which is not integrated in this version).

⚠️ Californium 2.0.0-M6 does not contain the expiremental coap-tcp support. (see eclipse/californium#491)

Many thanks to @achim for its huge work on Californium and @danielhqv, @AlexITC, @rkimsb2 for their Leshan contributions !

Change logs

587dffd: Fix for #459 : support empty ObjectVersion attributes
ee34d7f: #458 Fix NPE in RegistrationSerDes and RegistrationUpdateSerDes
ccaccfd: Add "version" to Objects in LWM2M Model
b699367: Configure simplelogger correctly for leshan-client-demo
63e3352: Error Log only for tests
d103207: Use logback instead of log4j2
6d5c66e: Californium does not use JUL anymore, so remove configuration file.
5faf18d: Fix race condition on AsyncRequestObserver
dd6a4bd: Remove always false condition : issue #452
9f7895e: Rename ExchangeUtil in EndpointContextUtil
145df81: Add tests to ensure we can not send request if identity change
5dc8842: Introduce principal based request-response matcher.
89dcd40: Remove used of deprecated methods
6e84a99: Use Identity as destination.
83ed30e: Add processing of onSendError callback.
1a8cd91: Introduce californium endpoint context.
692569e: Hide CTX_ENDPOINT to end-users this is internal only.
a025dff: Create ObserveUtil to factorize code.
9a95d5c: Make observation immutable and implement equals/hashcode
3dfa899: Add checks to verify observation is add to the store in tests
dd98fe4: Add tests with timedout request
b592795: Timeout is now mandatory or have a default value for sync and async req
d547a7c: Add timeout to AsyncRequestObserver
7b3af16: Fix #449: use minimal-json 0.9.5
5459296: Remove parallel tests waiting 0.9.5 version of minimal-json.
ee91de0: clean some code (missing final ..)
52e905b: Clean observerSpec Test
cf706e6: Issue #441: Use array content instead of array object in LeshanServerBuilder#build
ebbf6f7: Add to README that demos have a "--help" option
8c92892: Remove RE,WE and RWE operation from model according to lwm2m spec
b87781f: Add LICENSE file for github
62addf1: Link CONTRIBUTING.md to the "How to contribute" wiki page.
07a4148: Change README: add link to leshan wiki (documentation).
b7e0d80: Update README (add a link to supported features)
3b8e7a9: remove isAlive test on getRegistrationByEndpoint in redisStore
02d5190: Add clemency for registration expiration to redisStore
6cad580: Deserialize registration in protected block (after lock)
e581476: Do not remove registration by endpoint, if no registration by Id.
3610834: Do not hide CHANGED response on observe
0b9cc17: Fix server-demo ui bug on delete instance
058b97f: Use isValid in server-demo to show if response respect the lwm2m spec
9f38779: Factorize code
c5ced8b: Add ResponseCode.isValid() to know if code is allowed by the lwm2m spec
b959764: Add missing response code defined in the lwm2m specification
3cab54d: Allow to receive error code not defined in the lwm2m spec
2f597fb: Add some utility function
ea6dadb: Add Unknown LWM2M responseCode
6a620f6: Add toLwM2mResponseCode(CoapResponseCode) and use it
a018896: Rename fromCoapCode>toLwM2mResponseCode fromLwM2mCode>toCoapResponseCode
80543cb: Rewrite Coap/lwm2m response code translation
7dc1023: Change ResponseCode from enum to class.
82e4d37: Replace Gson by minimal-json for JSON content format.
6338ed4: Replace Gson by minimal-json for model representation.
ba3a103: #416 : raise CodecException if 2 Tlv resource instance with the same id
69881c0: Issue #423: Fix logging details for onNotification method
e54f0a3: Issue #418: Allow subtypes of Certificate and X509Certificate on LeshanServerBuilder
a2493fa: Issue #421: Support additionalAttributes on LeshanClientBuilder
8a6ac2b: Add observe support for instance and object at client side.
ccf43d6: Observe support in object and instance enablers
cf933b6: Enabled ability to force registration update
673f52d: Spelling fixes in README.md
08594ab: Add values ID deserialization of multi-instance resource in server-demo
cd08129: #392: fix builder and add some unit tests
cf92f70: Add warning in "remove()" if registration does not exist anymore
8cb071b: Limit Jedis resource consumption
c15336a: #389: fix RedisRegistrationStore.getAllRegistrations()
00433fc: #387: add readlock on InMemoryRegistrationStore.getRegistrationByAdress
1616615: Set basename.
5341979: #373: use real bsserver port in bsserver-demo
9c714dc: Warn if client has several security instance with the psk identity.


@sbernard31 sbernard31 released this Oct 3, 2017 · 94 commits to master since this release

Build artifacts are available on maven central.

Bugs already known:

Change logs:
59a89b8: Remove unnecessary cast
4c27477: Add a way to use custom coap endpoint for LeshanClient
931db98: Use only 1 thread to handle DTLS connection by default in LeshanClient
a4c7523: Remove workaround for bug fixed in Californium 2.0.0M5
420a9f7: enhance hack in tests: use Connector to send fake notification
cd4c1d6: Use Californium 2.0.0-M5 version
6b1d7eb: Security store no more mandatory for secured endpoint + javadoc
3b52d54: Rename nonsecure in unsecured in LeshanBootstrapServer
008f8d4: Add a way to deactivate secured/unsecured endpoints for bootstrap server
d6735a2: Rename nonsecure in unsecured in LeshanServer
61ed8ca: Add a way to deactivate secured or unsecured endpoints for Leshan Server
1f63049: Add a way to use custom coap endpoint for LeshanBootstrapServer
95566f2: Add a way to use custom coap endpoint for LeshanServer
d14a7c3: Add default CoAP config in LeshanBootstrapServerBuilder, use it in Demo
54d7d8f: Add default CoAP config in LeshanServerBuilder and use it in Demo
49f483a: Fix Formatting
1efdd04: Disable secured or unsecured endpoint in ClientDemo when it's possible
1eb1189: Rename nonsecure in unsecured in LeshanClient
e3479f8: Use Leshan Client default config in LeshanClientDemo
c728b0f: Add option to deactivate unsecure or secure endpoint for leshan client.
0a824be: Change default networkConfig for Client.
e1d6415: Raise IllegalStateException if we can not extract identity from Exchange
2d57883: Fix concurrent issue between stop/update on leshan client
a6c55c8: Support Californium X509 Prinicipal as identity
09abf95: Add a way to tweak DTLS configuration for Leshan bootstrap server.
dfc8269: Add a builder for the bootstrap server
607c088: Add a way to tweak DTLS configuration for Leshan client.
d538772: Add a way to tweak DTLS configuration for Leshan Server.
c95a637: Rename NetworkConfig in CoapConfig
8c65303: demo: Added mDNS services broadcasting for CoAP and Http
af8b2fd: Registration listener API changes
7fb3544: Add Wakaama test model to Leshan Server Demo
254155d: Use NullMessageIdTracker from Cf instead of SimpleMessageIdProvider
abe95f5: Fix API break on DTLSConnectorConfigBuilder (setAddress)
c311059: Fix CoapRequestBuilderTest cause of coapRequest.getURI() behavior change
09fee7d: Fix API break on MessageObserver
e9218fe: Use Californium 2.0.0-M4 version
4084a7d: Update Legal part of Contribution Guide.
5b7e7b9: Fix typo in exception message.


@msangoi msangoi released this Jun 23, 2017 · 135 commits to master since this release

Build artifacts are available on maven central.

Change logs:
b210cd0: Better support of optional resources in bootstrap config.
c298096: Requests should be immutable.
9212811: Severals fixes about immutability and collections.
8d09257: Fix memory leak about reg update for in memory registrationStore
a1fbd6f: Simple MessageIdProvider (memory consumption fix) (#355)
bed594f: Update LWM2M models of server demo.
bea6830: #349 : fix Sensor Units resource type in server demo (Float => String)
06fd71f: Clean log: spelling fixes
155e297: Clean some code : use new InetSocketAddress(int port) constructor


@msangoi msangoi released this Jun 7, 2017 · 146 commits to master since this release

Build artifacts are available on maven central.

Change logs:
e20760d: Log exceptions raised by the response sent callback (#347)
f88a929: Fix ContentFormat.fromCode() javadoc
9f6bd6e: Remove stale response listener.
0226cbe: Use ObservationUtil shallowClone() instead of serialize/parse.
f38518d: Error message fixes
82c568c: #331: Fix memory consumption issue in DefaultLwM2mNodeEncoder.
696c338: Fix Execute/Delete Response JSON serialization.
57acb2d: Fix DiscoverResponse JSON serialization
01194ed: Add Response Ser/Des test case
a39fe3a: Log Client endpoint in client demo.
33db7ab: Rename serverPublicKeyOrId to serverPublicKey to align with spec
ac0a48a: Return previous SecurityInfo from Redis security store add
349a292: Clean up old PSK id when changing id for existing endpoint
00db6ec: Add test case for non-unique PSK id security store add
a907eda: Check for unique PSK identity on Redis security store add
d96abbb: remove security for GOOD_ENDPOINT in Security integration tests
050d98a: Spelling fixes
e91466c: Javadoc fixes
ece1c3e: #247 : send register response before to fire events
82ba13c: Add javadoc to LeshanServerBuilder.
ef67721: Use str.format like constructor for cancelled-rejected-timeout expection
c01624a: Use String.format like constructor for InvalidResponseException
744150b: Use String.format like constructor for InvalidRequestException
c3a1d07: Make value converter dynamic to allow custom converter for encoding.
e029ede: CodecException enhancement: use clearer constructor and add missing path
796b7a9: Add resource path in message of CodecException in LwM2mNodeEncoderUtil
afed4d7: Better support of empty payload for TLV and JSON format
8ced9b8: Add bootstrap server account timeout to ServerSecurity
5e63089: Spelling fixes
f95d1da: Enhance error report of Bootstrap demo server.
9eda6fa: update from riot 2.3.11 to riot 2.6.7 for bs server demo
21062c1: fix css error in bs server demo
fad0ab9: Add more key and cert input validation to demo bootstrap server
4e65c29: Add X.509 support to demo bootstrap server UI
d31d8b5: Add X.509 support to demo server UI
f833862: Use hostname from URL as default server
730e0a9: JS error message spelling/formatting fix
7e349ed: Add support for X.509 in demo server
dd83b2f: Update and add missing demo server DDFs
dda1195: Update URL to fetch DDF.xml from, set User-Agent on fetching it
660201d: Remove secondary index on ADD if endpoint already register in redisStore
f18199b: Spelling fixes
e545aa0: Return more demo device data
2671ba9: Return runtime free memory instead of random values
b574a67: Allow random battery level to reach 100
2a44239: Use shared final Randoms
400cbfd: Fix Redis Tests : remove all the entry we add in store.
ffb3610: identity => PSK identity javadoc clarification
83fbb9f: Replace close() with destroy() for client and server.
dfbbf8f: register resource, simplify exception logging
d60cc9f: Remove outdated comment
892f1ef: Do not use env var anymore to configure demos (server,bs,cluster)
4bc29cc: Remove MODELS_FOLDER env var as there is CLI option now.
e017ef4: Add CLI option to set models folder for demos (server,bs,cluster)
9b531b3: Update model, load only core objects by default, demos load more objects
1c2ffa5: Add previous registration on RegistrationListener.updated() event.
b5435cb: RegistrationStore.update() now return previous and updated registration
ebc4efc: Use internal Validate instead of commons-lang one
9f8f6a1: Add expired parameter to the unregistered event (#304)
d4fd1fe: Use Californium.properties file for demos (client, server, bs, cluster)
a88668a: Remove redundant object initializers
2ba9056: Fix class name in JsonArrayEntry.toString
9ef8f1a: Compare Numbers with equals() instead of ==
a7239ae: Include message text in Redis send JSON parsing error
8d71a5a: Fix CodecException message on tlv parse error
e14a124: Remove redundant String constructor use
520c162: Use StringBuilder instead of StringBuffer
328dcd7: Use bulk Collections.addAll for array to list copy
f6aa2ac: Redis store cleanup + key renaming
05c623d: Allow to set a custom networkConfig for Leshan bootstrap server.
ac5739d: Allow to set a custom networkConfig for Leshan client.
9552410: Allow to set a custom networkConfig for Leshan server.
1593e9e: Fix tests (Californium observation now check if observe option is set)
8afc739: KeyToken class is no more accessible (use our own class)
aff5785: Adopt CoapEndpoint API change
f8487c4: Adopt Pskstore API changes
fb0637a: Adopt changes in DTLSConnector constructors.
353bf0a: Support object level observe in demo server REST API
f58564d: JSHint semicolon fixes (#285)
5dd1e98: fix error message typo
7063a55: Avoid unnecessary boxing/instantiations
2aea355: Use more foreach loops
ca839e0: Combine identical catch blocks
bdf2fb5: enhance registration event checks in tests.
e560280: add a way to choose content format to use for bootstrap session
a283354: Add RPK and X509 client non-registration test assertions
dd0640b: Use good/bad endpoint name constants
c0e993d: Set up registration monitoring for RPK and X509 test servers
0579faf: Change log level in SecurityCheck.java (warn=> debug)
b703d57: Add lwm2m version parameter when client sends register request.
3d7c9cf: Use constant for default port.
2be3144: add leshan-code-cf to list of modules in the readme.
b24c05b: Update links in readme (point the last v1.0.0, link object registry ...)
cfaac6b: Add tool for generating JSON from DDF list file
a801ddc: Rename LwM2mBootstrapServerImpl in LeshanBootstrapServer
1598557: Add toString to Identity.
1897947: Rename BootstrapSessionManagerImpl to DefaultBootstrapSessionManager
a6aa4d0: Create an interface for bootstrap session
a802f50: Rename clientIdentity to Identity
9318074: Add endpoint and identity on unauthorized session.
db58c41: clean code (rename variable)
bb8c9de: Fix RequestCanceledException import
73237f0: Add discover operation support in REST API
a473d48: Fix Redis observation removal
054a75d: Protect read access in the in-memory reg cleaner
7818af2: Use StandardCharsets instead of charset name
649d244: Spelling fixes
fbd126c: client should accept to create an instance without writable resources.
4f94169: Make registrationStore cleaning period configurable
aca3973: If store don't implement Destroyable use stop on destroy
a283a6f: Enhance the way we stop RegistrationEngine
69041dd: Name all threads
4c8e9fd: Use StandardCharsets


@sbernard31 sbernard31 released this Feb 13, 2017 · 261 commits to master since this release

Build artifacts are available on maven central.

Main changes are :
#192 Merge of Client and Observation registries
#225 support new Content-Format code for TLV/Json
#144 Make naming more consistent

Change logs:
ff2b1c8: Existing observations clean-up
43f4182: Clean addRegistration javadoc
008fc12: complete javadoc : add timeoutexception on lwm2mserver.send()
9d36a5f: Spelling fixes
df8c842: Use SecurityMode instead of magic numbers
9749354: Javadoc error fixes
f261f4f: Remove redundant type arguments
78c438a: Remove unnecessary semicolons
7b49f70: Remove unnecessary casts and warn about them
59b38a9: Make naming consistent (remove Client as we are in client project)
68fdd50: Delete "client" package (move classes in "registration" package)
4020369: Remove unused classes
0fbd090: Rename CaliforniumObservationTest in ObservationServiceTest
8749645: Rename ClientSortObjectTest in RegistrationSortObjectLinksTest
b1da287: Move ObserveSpecParserTest from leshan-client-core to leshan-core
f262300: Remove unnecessary "final" keyword
85e2def: code formatting : format "all line" instead of "edited line"
6203018: Do no create default SecurityStore
f7943cf: Fix config verify messages in RPK and X509 modes
98c9374: Spelling fixes
a4e4fe6: Use InvalidRequestException in ObservationService
84957fb: Update exception handling javadoc of LwM2mServer.
2a0a03e: Throw InvalidResponseException instead of IllegalArgumentException
521bf72: Remove ResourceAccessEx... and enhance server-demo exception handling
8cdb7b5: Create a new InvalidResponseException
fa16c12: Use try-with-resources more
05f9bc0: Zero pad hex encoded bytes in UI
3ee3c21: Add missing @override annotations and warn about them
5aaef6a: Made executors configurable.
7da9fba: remove unused attributes
2036cd9: Remove send with ticket API
7fffadf: Update LwM2Mserver Javadoc.
774b4c3: Add tests : check that CodecException is raised when sending bad payload
daba913: Clean encoder exception handling
2bac473: change CodecException in "unchecked" Exception
961585d: Clean decoder exception handling
04ae191: Remove getPath() to CodecException.
0ca405b: Rename InvalidValueException in CodecException
450abdc: add registration parameters for observations event
82e7c5f: Add observations cancelled on deregister event.
05d647d: RegistrationService.getAllRegistrations() returns an iterator
ca83975: RegistrationStore.getAllRegistrations() returns an iterator
70ce28b: Fix RegistrationStore.getRegistrationByAdress API and use it.
4e57846: Clean RegistrationServiceImpl intern API
5bbca50: #244: Throw UnsupportedOperationEx when encoding format is not supported
19de0ab: Add a test to check we handle error on notification
35d10e3: add toString() to Observation class
c7c25f5: #206 Add a way to handle exception on new notification
2d0a43b: Log exception which could occur during registration and update task
085dfb0: Use SecurityMode instead of hardcoded value
0e4c70d: Move SecurityMode from leshan-server-core to leshan-core
4d1af8d: Fix northbound API contentformat serialization for read/observe request
df1d16f: Remove TODO as we will not check content format on register request
5014323: Remove invalid TODO: 3/0/13 is now typed as Time, Time is unsigned int
9779ac0: Remove invalid TODO (we will not implement this)
995b4fd: Remove invalid TODO : parameters is validate in request constructor
c313f75: Remove code used to handle old bootstrap config.
eb91339: Clean registration tests : </0/0> should not be part of link format.
e11bf35: Rename LinkObject in Link to use the rfc6690 terminology
aa64da8: Rename getFormat in getContentFormat (API consistency)
76b6aa0: Remove bracket on single if+throw block
bdc31b0: Move null check in utility function
3f63359: Add test for invalid registration request.
6d632d4: Remove unnecessary check
8608768: Send BadRequest on InvalidRequestException
b1c4fcc: Add InvalidRequestException on Request constructor
b353b1c: Make registrationID parameter consistent between requests
841f3a5: Remove final keyword on method arguments for Requests.
1054f40: Removed LwM2mObservationStore interface and its implementations
3a213af: Create "leshan-core-cf" project.
55cf279: #225: Support new Content-Format code for TLV/Json
2826841: Remove current queue mode implementation.
65829d5: Add authorizer interface to allow custom LWM2M client authorization
a7a0b0b: Introduced RequestRejectException
ef85b74: Create an InMemorySecurityStore
67ec454: Move Startable, Stopable, Destoyable feature on the stores.
1e870ea: Rename SecurityRegistry in EditableSecurityStore.
b338532: Remove SecurityRegistry from the API, the real contract is SecurityStore
4fc59f1: Remove publicKey, privateKey, certificates from SecurityRegistry
063537a: Rename ObservationRegistry to ObservationService
daa5e4a: Remove addObservation from the ObservationRegistry API
64b2776: Bugfix extracting CN from x509.
a258b71: Rename Client in Registration (so clientUpdate, clientSerDes, ...)
cc2208d: Remove encoder/decoder attributes from LeshanServer
dc8b838: Remove RegistrationService from LeshanServer constructor
6cc8ccd: Rename ClientRegistryListener in RegistrationListener
a36f00e: Rename ClientRegistry in RegistrationService (implementation too)
32623d8: Remove RedisClientRegistry
4174500: Remove register/update/deregister from ClientRegistry interface.
a2fb1e2: #217: fix deadlock in registrationStore.
9ff2b9e: fixed humitidy minimum value to be float instead of string
7e30620: add some javadocs.
7881fc9: Add a test about registration and observe lifecycle
3dfd315: Returns obs on dereg in RedisRegistrationStore (+code rewritting)
7c9336c: Returns obs on dereg in InMemoryRegistrationStore (+code rewritting)
2a49cf3: Add endpoint to request context to be able to lock on endpoint.
0c12f95: Add Deregistration object to know observations removed on deregistration
0863a94: Move Cleaning registration responsibility to registrationStore
9abd641: Merge stores for registration and observation
c6ddbc7: use full path to jar in README.md/Compile and Run
61b9a9c: Use sys.err for error in all command line tool.
91b115d: Improving command line arguments
ae58294: Catch RuntimeException instead of Throwable
0e85181: javadoc typo fix
37496e7: fixed leshan-server-cluster runnable jar
00627e1: change logger pattern to be the same as slf4j-simple used in client demo
18f3063: use slf4j-simple in place of log4j2 for client
8a4c9c7: Fix issue #200: server cannot read null object link
f8e3b9d: Clean-up (typo, replace catching throwable by catching RuntimeException)
2598669: Rename LeshanRedisServer in LeshanClusterServer.
ba16318: Support Observations
83fd62d: add ObserveSpec support to JSON des/serialization
d5ea61f: Remove ObserveSpecParser (parse method is now in ObserverSpec class)
72282f7: Add DownlinkRequest JSON Des/serialization tests + bug fixes
e8c13b3: add ClientUpdate json deserialization and some unit tests
c864f3d: Rename server.demo.cluster package to server.cluster.
4dbe9fb: Add command line tool to run a Cluster instance.
783fd5a: Add token management to know which instance handle which LWM2M client.
53b457b: Add javadoc to RedisRegistrationEventPublished
c19a5af: Add Redis LWM2M Request/Response Handler.
203d715: Add JSON Serializer/Deserialize for Request, Response, LwM2mNode.
31bc52d: Add Add new send API (async with ticket) to LwM2mServer
9e784b7: Add observe option to manually sent notifications.
0c0eb31: Add IPSO TemperatureSensor to demo client.
9bb24bd: Fix initialization with random position.


@jvermillard jvermillard released this Sep 29, 2016 · 406 commits to master since this release

Build artifacts are available on maven central.

Change logs:
f1982ed - Fix LwM2mSingleResource generic constructor.
18d3271 - Replaced Exceptions with BootstrapFailureCause
387bee8 - Added notification of early failure
cd0018f - Hides security-related values from toString() (#179)
58c87fc - Replace int[2] by ObjectLink class
b4fb4ba - Support objlnk for TLV and Text format.
e458b07 - Add project specific: organize import + format on edited line only.
5615cbc - Add Context for observation
51d4ed3 - QueueModeTest clean-up (typo+remove unused method)
a3fdd02 - Change log config for integration tests (off => error)
fb52c95 - use Californium 2.0.0M2
aa764a9 - #168: fixed duplicate observations for the same resource path.
a8df823 - #160: fix QueuedRequestSender race condition
1a68fd3 - fix potential NPE in QueueModeObservationRegistryListener newValue()
89a52c2 - changed clientEndpoint to Client in ResponseListener as described issues #165
947ead6 - Fix fix NPE in BootstrapSecurityStore of bsserver-demo again ...
ddaa6e4 - fixed check-then-act situation in InMemoryMessageStore
cd6738c - Introduced cancelAllPendingMessages in LwM2mRequestSender interface.
efcc708 - enhance content format handling
6081674 - fix NPE in BootstrapSecurityStore of bsserver-demo
defadcf - #155: fix format selection of leshan-server-demo UI
020e3e0 - add toString() equals() method to ContentFormat.
86295f9 - ContentFormat is now mandatory. (remove magic to compute default value


@msangoi msangoi released this Jul 22, 2016 · 433 commits to master since this release

Build artifacts are available on maven central.

Change logs:
b0aaf04 - Bumping nexus-staging-maven-plugin to version 1.6.7
11e7580 - Disable autoReleaseAfterClose when deploying to Nexus
3dd7873 - Code review clean-up
1552b4e - Use encoder/decoder to know if a content format is supported.
ad24783 - Add Timestamped Data support on Observation
6c046c2 - Add Timestamped Data support on LwM2mNodeEncoder/Decoder
3a6eba8 - remove generics
967614f - Add Timestamped Data support on LwM2mNodeJsonEncoder
243a8a0 - Change Time attribute of JsonArrayEntry from Integer to Long.
3608b3b - Add Timestamped Data support on LwM2mNodeJsonDecoder
25e1b55 - Define interface for encoder/decoder
f9b422f - move from static LwM2mNode encoder/decoder to dynamic one
3340178 - Change ContentFormat from enum to class to prepare extensibility
b91f346 - Add cluster support for QueueMode
aeb7586 - Add new send API (async with ticket)
9479dde - Add a Redis "Registration" event publisher
ab1be1b - Remove mokito test dependency
32fd096 - switch log4j2 to test deps


@jvermillard jvermillard released this Jun 30, 2016 · 453 commits to master since this release

Build artifacts are available on maven central.

Change logs:

  • 4ebc105 - Added notion of a BootstrapSession
  • 8e60821 - Move redis implementation to a new leshan-server-cluster module
  • 6690a5c - Added Redis URL command line option support with authentication
  • 4831d3e - Raise unregister notification when registration expired.
  • 4aa7512 - Redis-based implementation of the observation registry
  • 23e1893 - Reimplement observe based on experimental Californium observe impl.
  • a79a50f - Serialize in redis using minimal json
  • fad05de - removed deprecated linkobject methods
  • 117f192 - Added Redis based stores (security & clients)
  • 86c9f9f - Use unsigned byte string representation for bootstrap REST API
  • a06ff2b - fix #141 null raw public key in X.509 mode
  • f87250b - Fix QueueModeIntegrationTestHelper (do not use Standard NetworkConfig)
  • c2ca1f7 - (fix-bs-json-api) Fix broken link to Scandium readme
  • d275f53 - Add Queue Mode interfaces and first in memory implementation.
  • f5e5517 - Move Bootstrap logic from BootstrapResource to BootstrapHandler
  • a0ef125 - Extract RequestObserver from RequestSender & remove 'Client' dependency
  • d413abf - (origin/pr/135) #133: Clear DTLS connection on timeout
  • 6d3e548 - #131: Add Registration life cycle client observer
  • d4abac8 - (origin/pr/136) Add a way to choose content format in LeshanServerDemo
  • 06d4883 - Fix string path constructor of CreateRequest
  • 998335d - (origin/pr/118) Fix JSON encoding/decoding for Create Request
  • 28c3ddf - Refactor LwM2mPath to handle root path and Resource instance path
  • 7f1b743 - Fix JSON Single Resource encoding
  • 92708d2 - ContentFormat on Write and Create request is mandatory.
  • d84b141 - Handle Accept Content format option for Read/Observe request
  • bc3fb53 - OPAQUE format only for single binary resource
  • a1a4684 - Fix float encoding.
  • 413f49f - Add write tests for single resources
  • 70cad9a - Allow TLV for single resource and use it as default format
  • c2879f1 - #134: start leshan server after configuration in leshan server demo


@jvermillard jvermillard released this May 11, 2016 · 486 commits to master since this release

Build artifacts are available on maven central.

Change logs:
d39892c - allow to remove security info for endpoint with "/"
7fc4a58 - Removed unecessary switch case since toValueString is used.
8df9e94 - Guess port from scheme (and vice-versa) at client side
022c8f4 - #119 allow to write empty string in web ui
4559b34 - Limit message log to last 256 messages.
049fe9e - Use "Option.toValueString()" for more descriptive log.
c969b37 - Update response code to be compliant with the last spec changes
a4db616 - #116: Fix regression introduce in commmit 6ec8aeb
f9403f5 - #109: Using the Leshan servlets with other HTTP server (not Jetty)
6ec8aeb - Update on resource is no more allowed
b260c35 - Clean some request constructors (javadoc + validation)
e20db8e - #112: Fix Tlv 24bit length decoding