1*4eead8d3SAndroid Build Coastguard Workercbor-java 2*4eead8d3SAndroid Build Coastguard Worker========= 3*4eead8d3SAndroid Build Coastguard Worker 4*4eead8d3SAndroid Build Coastguard WorkerA Java 7 implementation of [RFC 7049](http://tools.ietf.org/html/rfc7049): Concise Binary Object Representation ([CBOR](http://cbor.io/)) 5*4eead8d3SAndroid Build Coastguard Worker 6*4eead8d3SAndroid Build Coastguard Worker 7*4eead8d3SAndroid Build Coastguard Worker[](https://travis-ci.org/c-rack/cbor-java) 8*4eead8d3SAndroid Build Coastguard Worker[](https://coveralls.io/github/c-rack/cbor-java?branch=master) 9*4eead8d3SAndroid Build Coastguard Worker[](https://scan.coverity.com/projects/1218) 10*4eead8d3SAndroid Build Coastguard Worker[](https://www.versioneye.com/user/projects/555e2fb6634daa30fb000ea0) 11*4eead8d3SAndroid Build Coastguard Worker 12*4eead8d3SAndroid Build Coastguard Worker 13*4eead8d3SAndroid Build Coastguard Worker## Features 14*4eead8d3SAndroid Build Coastguard Worker 15*4eead8d3SAndroid Build Coastguard Worker* Encodes and decodes **all examples** described in RFC 7049 16*4eead8d3SAndroid Build Coastguard Worker* Provides a **fluent interface builder** for CBOR messages 17*4eead8d3SAndroid Build Coastguard Worker* Supports semantic tags 18*4eead8d3SAndroid Build Coastguard Worker* Supports 64-bit integer values 19*4eead8d3SAndroid Build Coastguard Worker* Passes all [CPD](http://c-rack.github.io/cbor-java/cpd.html), [PMD](http://c-rack.github.io/cbor-java/pmd.html) and [FindBugs](http://c-rack.github.io/cbor-java/findbugs.html) tests 20*4eead8d3SAndroid Build Coastguard Worker 21*4eead8d3SAndroid Build Coastguard Worker## Documentation 22*4eead8d3SAndroid Build Coastguard Worker 23*4eead8d3SAndroid Build Coastguard Worker* [Documentation](http://c-rack.github.io/cbor-java/) 24*4eead8d3SAndroid Build Coastguard Worker* [JavaDoc](http://c-rack.github.io/cbor-java/apidocs/index.html) 25*4eead8d3SAndroid Build Coastguard Worker 26*4eead8d3SAndroid Build Coastguard Worker## Maven Dependency 27*4eead8d3SAndroid Build Coastguard Worker 28*4eead8d3SAndroid Build Coastguard WorkerAdd this to the dependencies section of your pom.xml file: 29*4eead8d3SAndroid Build Coastguard Worker 30*4eead8d3SAndroid Build Coastguard Worker```xml 31*4eead8d3SAndroid Build Coastguard Worker<dependency> 32*4eead8d3SAndroid Build Coastguard Worker <groupId>co.nstant.in</groupId> 33*4eead8d3SAndroid Build Coastguard Worker <artifactId>cbor</artifactId> 34*4eead8d3SAndroid Build Coastguard Worker <version>0.8</version> 35*4eead8d3SAndroid Build Coastguard Worker</dependency> 36*4eead8d3SAndroid Build Coastguard Worker``` 37*4eead8d3SAndroid Build Coastguard Worker 38*4eead8d3SAndroid Build Coastguard Worker## Usage 39*4eead8d3SAndroid Build Coastguard Worker 40*4eead8d3SAndroid Build Coastguard Worker### Encoding Example 41*4eead8d3SAndroid Build Coastguard Worker 42*4eead8d3SAndroid Build Coastguard Worker```java 43*4eead8d3SAndroid Build Coastguard WorkerByteArrayOutputStream baos = new ByteArrayOutputStream(); 44*4eead8d3SAndroid Build Coastguard Workernew CborEncoder(baos).encode(new CborBuilder() 45*4eead8d3SAndroid Build Coastguard Worker .add("text") // add string 46*4eead8d3SAndroid Build Coastguard Worker .add(1234) // add integer 47*4eead8d3SAndroid Build Coastguard Worker .add(new byte[] { 0x10 }) // add byte array 48*4eead8d3SAndroid Build Coastguard Worker .addArray() // add array 49*4eead8d3SAndroid Build Coastguard Worker .add(1) 50*4eead8d3SAndroid Build Coastguard Worker .add("text") 51*4eead8d3SAndroid Build Coastguard Worker .end() 52*4eead8d3SAndroid Build Coastguard Worker .build()); 53*4eead8d3SAndroid Build Coastguard Workerbyte[] encodedBytes = baos.toByteArray(); 54*4eead8d3SAndroid Build Coastguard Worker``` 55*4eead8d3SAndroid Build Coastguard Worker 56*4eead8d3SAndroid Build Coastguard Worker### Decoding Example 57*4eead8d3SAndroid Build Coastguard Worker 58*4eead8d3SAndroid Build Coastguard Worker```java 59*4eead8d3SAndroid Build Coastguard WorkerByteArrayInputStream bais = new ByteArrayInputStream(encodedBytes); 60*4eead8d3SAndroid Build Coastguard WorkerList<DataItem> dataItems = new CborDecoder(bais).decode(); 61*4eead8d3SAndroid Build Coastguard Workerfor(DataItem dataItem : dataItems) { 62*4eead8d3SAndroid Build Coastguard Worker // process data item 63*4eead8d3SAndroid Build Coastguard Worker} 64*4eead8d3SAndroid Build Coastguard Worker``` 65*4eead8d3SAndroid Build Coastguard Worker 66*4eead8d3SAndroid Build Coastguard Worker### Streaming Decoding Example 67*4eead8d3SAndroid Build Coastguard Worker 68*4eead8d3SAndroid Build Coastguard Worker```java 69*4eead8d3SAndroid Build Coastguard WorkerByteArrayInputStream bais = new ByteArrayInputStream(encodedBytes); 70*4eead8d3SAndroid Build Coastguard Workernew CborDecoder(bais).decode(new DataItemListener() { 71*4eead8d3SAndroid Build Coastguard Worker 72*4eead8d3SAndroid Build Coastguard Worker @Override 73*4eead8d3SAndroid Build Coastguard Worker public void onDataItem(DataItem dataItem) { 74*4eead8d3SAndroid Build Coastguard Worker // process data item 75*4eead8d3SAndroid Build Coastguard Worker } 76*4eead8d3SAndroid Build Coastguard Worker 77*4eead8d3SAndroid Build Coastguard Worker}); 78*4eead8d3SAndroid Build Coastguard Worker``` 79*4eead8d3SAndroid Build Coastguard Worker 80*4eead8d3SAndroid Build Coastguard Worker## Contribution Process 81*4eead8d3SAndroid Build Coastguard Worker 82*4eead8d3SAndroid Build Coastguard WorkerThis project uses the [C4 process](https://rfc.zeromq.org/spec:42/C4/) for all code changes. 83*4eead8d3SAndroid Build Coastguard Worker 84*4eead8d3SAndroid Build Coastguard Worker## License 85*4eead8d3SAndroid Build Coastguard Worker 86*4eead8d3SAndroid Build Coastguard Worker Copyright 2013-2017 Constantin Rack 87*4eead8d3SAndroid Build Coastguard Worker 88*4eead8d3SAndroid Build Coastguard Worker Licensed under the Apache License, Version 2.0 (the "License"); 89*4eead8d3SAndroid Build Coastguard Worker you may not use this file except in compliance with the License. 90*4eead8d3SAndroid Build Coastguard Worker You may obtain a copy of the License at 91*4eead8d3SAndroid Build Coastguard Worker 92*4eead8d3SAndroid Build Coastguard Worker http://www.apache.org/licenses/LICENSE-2.0 93*4eead8d3SAndroid Build Coastguard Worker 94*4eead8d3SAndroid Build Coastguard Worker Unless required by applicable law or agreed to in writing, software 95*4eead8d3SAndroid Build Coastguard Worker distributed under the License is distributed on an "AS IS" BASIS, 96*4eead8d3SAndroid Build Coastguard Worker WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 97*4eead8d3SAndroid Build Coastguard Worker See the License for the specific language governing permissions and 98*4eead8d3SAndroid Build Coastguard Worker limitations under the License. 99