Skip to content

Commit

Permalink
More sealed types
Browse files Browse the repository at this point in the history
  • Loading branch information
prdoyle committed Feb 18, 2024
1 parent 30fad0d commit 063cc06
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.vena.bosk;

interface AddressableByIdentifier<T> {
sealed interface AddressableByIdentifier<T> permits EnumerableByIdentifier {
/**
* @return The item with the given <code>id</code>, or null if no such item exists.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

import java.util.List;

public interface EnumerableByIdentifier<T> extends AddressableByIdentifier<T> {
sealed public interface EnumerableByIdentifier<T> extends AddressableByIdentifier<T> permits Catalog, SideTable {
List<Identifier> ids();
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import static io.vena.bosk.drivers.mongo.Formatter.REVISION_ZERO;

@RequiredArgsConstructor
abstract class AbstractFormatDriver<R extends StateTreeNode> implements FormatDriver<R> {
non-sealed abstract class AbstractFormatDriver<R extends StateTreeNode> implements FormatDriver<R> {
final RootReference<R> rootRef;
final Formatter formatter;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import org.slf4j.LoggerFactory;

@RequiredArgsConstructor
class DisconnectedDriver<R extends StateTreeNode> implements FormatDriver<R> {
final class DisconnectedDriver<R extends StateTreeNode> implements FormatDriver<R> {
private final Throwable reason;
@Override
public <T> void submitReplacement(Reference<T> target, T newValue) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@
* Implementing {@link #initialRoot} or {@link #refurbish()}
* </li></ol>
*/
interface FormatDriver<R extends StateTreeNode> extends MongoDriver<R> {
sealed interface FormatDriver<R extends StateTreeNode>
extends MongoDriver<R>
permits AbstractFormatDriver, DisconnectedDriver {
void onEvent(ChangeStreamDocument<BsonDocument> event) throws UnprocessableEventException;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
* are delegated to a {@link FormatDriver} object that can be swapped out dynamically
* as the database evolves.
*/
class MainDriver<R extends StateTreeNode> implements MongoDriver<R> {
final class MainDriver<R extends StateTreeNode> implements MongoDriver<R> {
private final Bosk<R> bosk;
private final ChangeReceiver receiver;
private final MongoDriverSettings driverSettings;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@
import io.vena.bosk.drivers.mongo.status.MongoStatus;
import java.io.IOException;

public interface MongoDriver<R extends StateTreeNode> extends BoskDriver<R> {
public sealed interface MongoDriver<R extends StateTreeNode>
extends BoskDriver<R>
permits MainDriver, FormatDriver {

/**
* Deserializes and re-serializes the entire bosk contents,
* thus updating the database to match the current serialized format.
Expand Down

0 comments on commit 063cc06

Please sign in to comment.