Skip to content

Commit dd16b52

Browse files
committed
[SPARK-17800] Introduce InterfaceStability annotation
## What changes were proposed in this pull request? This patch introduces three new annotations under InterfaceStability: - Stable - Evolving - Unstable This is inspired by Hadoop's InterfaceStability, and the first step towards switching over to a new API stability annotation framework. ## How was this patch tested? N/A Author: Reynold Xin <rxin@databricks.com> Closes apache#15374 from rxin/SPARK-17800.
1 parent e56614c commit dd16b52

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.apache.spark.annotation;
19+
20+
import java.lang.annotation.Documented;
21+
22+
/**
23+
* Annotation to inform users of how much to rely on a particular package,
24+
* class or method not changing over time.
25+
*/
26+
public class InterfaceStability {
27+
28+
/**
29+
* Stable APIs that retain source and binary compatibility within a major release.
30+
* These interfaces can change from one major release to another major release
31+
* (e.g. from 1.0 to 2.0).
32+
*/
33+
@Documented
34+
public @interface Stable {};
35+
36+
/**
37+
* APIs that are meant to evolve towards becoming stable APIs, but are not stable APIs yet.
38+
* Evolving interfaces can change from one feature release to another release (i.e. 2.1 to 2.2).
39+
*/
40+
@Documented
41+
public @interface Evolving {};
42+
43+
/**
44+
* Unstable APIs, with no guarantee on stability.
45+
* Classes that are unannotated are considered Unstable.
46+
*/
47+
@Documented
48+
public @interface Unstable {};
49+
}

0 commit comments

Comments
 (0)