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