xref: /aosp_15_r20/external/cbor-java/README.md (revision 4eead8d3538b10e865ab0d026faa50435ed6a63c)
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[![Build Status](https://travis-ci.org/c-rack/cbor-java.svg?branch=master)](https://travis-ci.org/c-rack/cbor-java)
8*4eead8d3SAndroid Build Coastguard Worker[![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*4eead8d3SAndroid Build Coastguard Worker[![Coverity Scan Build Status](https://scan.coverity.com/projects/1218/badge.svg)](https://scan.coverity.com/projects/1218)
10*4eead8d3SAndroid Build Coastguard Worker[![Dependency Status](https://www.versioneye.com/user/projects/555e2fb6634daa30fb000ea0/badge.svg?style=flat)](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