Skip to content

Commit 7340b5c

Browse files
vbabaninstIncMale
andauthored
Mark PackedBitVector as Beta, aligning with binary quantization preview (#1594)
JAVA-5738 --------- Co-authored-by: Valentin Kovalenko <[email protected]>
1 parent a1ed85c commit 7340b5c

File tree

5 files changed

+118
-0
lines changed

5 files changed

+118
-0
lines changed

bson/src/main/org/bson/BinaryVector.java

+4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package org.bson;
1818

19+
import org.bson.annotations.Beta;
20+
import org.bson.annotations.Reason;
21+
1922
import static org.bson.assertions.Assertions.isTrueArgument;
2023
import static org.bson.assertions.Assertions.notNull;
2124

@@ -59,6 +62,7 @@ public abstract class BinaryVector {
5962
* @return A {@link PackedBitBinaryVector} instance with the {@link DataType#PACKED_BIT} data type.
6063
* @throws IllegalArgumentException If the padding value is greater than 7.
6164
*/
65+
@Beta(Reason.SERVER)
6266
public static PackedBitBinaryVector packedBitVector(final byte[] data, final byte padding) {
6367
notNull("data", data);
6468
isTrueArgument("Padding must be between 0 and 7 bits. Provided padding: " + padding, padding >= 0 && padding <= 7);

bson/src/main/org/bson/PackedBitBinaryVector.java

+4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package org.bson;
1818

19+
import org.bson.annotations.Beta;
20+
import org.bson.annotations.Reason;
21+
1922
import java.util.Arrays;
2023
import java.util.Objects;
2124

@@ -32,6 +35,7 @@
3235
* @see BsonBinary#asVector()
3336
* @since 5.3
3437
*/
38+
@Beta(Reason.SERVER)
3539
public final class PackedBitBinaryVector extends BinaryVector {
3640

3741
private final byte padding;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Copyright 2008-present MongoDB, Inc.
3+
* Copyright 2010 The Guava Authors
4+
* Copyright 2011 The Guava Authors
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
package org.bson.annotations;
20+
21+
import java.lang.annotation.Documented;
22+
import java.lang.annotation.ElementType;
23+
import java.lang.annotation.Retention;
24+
import java.lang.annotation.RetentionPolicy;
25+
import java.lang.annotation.Target;
26+
27+
/**
28+
* Signifies that a public API (public class, method or field) is subject to
29+
* incompatible changes, or even removal, in a future release. An API bearing
30+
* this annotation is exempt from any compatibility guarantees made by its
31+
* containing library. Note that the presence of this annotation implies nothing
32+
* about the quality or performance of the API in question, only the fact that
33+
* it is not "API-frozen."
34+
*
35+
* <p>It is generally safe for <i>applications</i> to depend on beta APIs, at
36+
* the cost of some extra work during upgrades. However it is generally
37+
* inadvisable for <i>libraries</i> (which get included on users' CLASSPATHs,
38+
* outside the library developers' control) to do so.
39+
*
40+
**/
41+
@Retention(RetentionPolicy.CLASS)
42+
@Target({
43+
ElementType.ANNOTATION_TYPE,
44+
ElementType.CONSTRUCTOR,
45+
ElementType.FIELD,
46+
ElementType.METHOD,
47+
ElementType.PACKAGE,
48+
ElementType.TYPE })
49+
@Documented
50+
@Beta(Reason.CLIENT)
51+
public @interface Beta {
52+
/**
53+
* @return The reason an API element is marked with {@link Beta}.
54+
*/
55+
Reason[] value();
56+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* Copyright 2008-present MongoDB, Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.bson.annotations;
18+
19+
/**
20+
* Enumerates the reasons an API element might be marked with annotations like {@link Beta}.
21+
*/
22+
@Beta(Reason.CLIENT)
23+
public enum Reason {
24+
/**
25+
* Indicates that the status of the driver API is the reason for the annotation.
26+
*/
27+
CLIENT,
28+
29+
/**
30+
* The driver API relies on the server API.
31+
* This dependency is the reason for the annotation and suggests that changes in the server API could impact the driver API.
32+
*/
33+
SERVER
34+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright 2008-present MongoDB, Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
/**
18+
* Contains annotations that can apply to any part of the BSON library code.
19+
*/
20+
package org.bson.annotations;

0 commit comments

Comments
 (0)