blob: 715bbd07d7a91919ec2f48a1e5b356631e326f8c [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* A simple test case.
*/
@version("1.0.5")
@namespace("org.apache.avro.test")
protocol Simple {
/** A kind of record. */
@aliases(["org.foo.KindOf"])
enum Kind {
FOO,
BAR, // the bar enum value
BAZ
}
enum Status {
A,
B,
C
} = C; // C is the default value used when reading unknown values from another schema version (without it, reading throws an exception).
/** A TestRecord. */
@my-property({"key":3})
record TestRecord {
// Tests that keywords can also appear in identifiers.
@avro.java.`string`("String") string @order("ignore") name = "foo";
/** The kind of record. */
Kind @order("descending") kind;
/** The status of the record. */
Status status = "A";
MD5 hash = "0000000000000000";
// A traditional optional field
union {null, MD5} @aliases(["hash", "hsh"]) nullableHash = null;
// These two fields parse correctly, but will brewak (be changed to strings) when serializing the protocol/schema as JSON.
double value = NaN;
float average = -Infinity;
date d = 0;
// An optional type with a non-null default value (results in a union with null last).
time_ms? t = 0;
@foo.bar("bar.foo") long l = 0;
// Arrays (and maps) may also have properties
@foo.bar.bar("foo.bar2") array<string> a = [];
// An optional type with a null default value (results in a union with null first).
@foo.foo.bar(42) @foo.foo.foo("3foo") string? prop = null;
}
/** An MD5 hash. */
fixed MD5(16);
error TestError {
string message;
}
/** method 'hello' takes @parameter 'greeting' */
string hello(string greeting);
// The value of TestRecord also contains defaults for fields not mentioned.
TestRecord echo(TestRecord `record` = {"name":"bar","kind":"BAR"});
/** method 'add' takes @parameter 'arg1' @parameter 'arg2' */
@specialProp("test")
int add(int arg1, int arg2 = 0);
bytes echoBytes(bytes data);
void `error`() throws TestError;
void ping() oneway;
}