View Javadoc
1   /*
2    * Copyright (c) 2023. Roland T. Lichti, Kaiserpfalz EDV-Service.
3    *
4    * This program is free software: you can redistribute it and/or modify
5    * it under the terms of the GNU General Public License as published by
6    * the Free Software Foundation, either version 3 of the License, or
7    * (at your option) any later version.
8    *
9    * This program is distributed in the hope that it will be useful,
10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12   * GNU General Public License for more details.
13   *
14   * You should have received a copy of the GNU General Public License
15   * along with this program.  If not, see <https://www.gnu.org/licenses/>.
16   */
17  
18  package de.kaiserpfalzedv.commons.api.resources;
19  
20  import java.io.Serializable;
21  import java.util.List;
22  
23  import org.eclipse.microprofile.openapi.annotations.media.Schema;
24  
25  import jakarta.validation.constraints.Max;
26  import jakarta.validation.constraints.Min;
27  import jakarta.validation.constraints.Size;
28  
29  /**
30   * <p>Status -- .</p>
31   *
32   * @author rlichti {@literal <rlichti@kaiserpfalz-edv.de>}
33   * @since 1.0.0  2023-01-19
34   */
35  public interface Status extends Serializable, Cloneable {
36      /**
37       * Adds a new history entry.
38       *
39       * @param status  The status of this entry.
40       * @param message The generic message for this history entry.
41       * @return TRUE if the history could be added.
42       */
43      Status addHistory(String status, String message);
44  
45      @Schema(
46              name = "observedGeneration",
47              description = "The generation of this resource which is observed.",
48              required = true,
49              example = "0",
50              defaultValue = "0",
51              minimum = "0",
52              maxItems = Integer.MAX_VALUE
53      )
54      @Min(value = 0, message = "The generation must be at least 0.")
55      @Max(value = Integer.MAX_VALUE, message = "The generation must not be bigger than " + Integer.MAX_VALUE + ".")
56      Integer getObservedGeneration();
57  
58      @Schema(
59              name = "history",
60              description = "A list of changes of the resource status.",
61              nullable = true,
62              minItems = 0
63      )
64      @Size
65      List<? extends History> getHistory();
66  }