This is an automated email from the ASF dual-hosted git repository. liuxun pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push: new 5b6d71af8 [#4007] improvement: Use template to reduce Privileges duplicate codes (#4010) 5b6d71af8 is described below commit 5b6d71af8bd8a361c72e9b6d54e6db8117e7617d Author: rich7420 <101171023+rich7...@users.noreply.github.com> AuthorDate: Thu Jul 4 10:04:45 2024 +0800 [#4007] improvement: Use template to reduce Privileges duplicate codes (#4010) ### What changes were proposed in this pull request? - make the template to reduce these duplicate codes. ### Why are the changes needed? - Currently [Privileges.java](https://github.com/datastrato/gravitino/blob/main/api/src/main/java/com/datastrato/gravitino/authorization/Privileges.java#L266) have more than one thousand duplicate code to instantiation CreateCatalog, AlterCatalog, ... - we can use template to make Privileges.java smaller. Fix: #4007 ### Does this PR introduce _any_ user-facing change? N/A ### How was this patch tested? `./gradlew test` --------- Co-authored-by: user <u...@yyn.myguest.virtualbox.org> --- .../gravitino/authorization/Privileges.java | 1276 +++++--------------- 1 file changed, 293 insertions(+), 983 deletions(-) diff --git a/api/src/main/java/com/datastrato/gravitino/authorization/Privileges.java b/api/src/main/java/com/datastrato/gravitino/authorization/Privileges.java index 24df63521..5fa717cad 100644 --- a/api/src/main/java/com/datastrato/gravitino/authorization/Privileges.java +++ b/api/src/main/java/com/datastrato/gravitino/authorization/Privileges.java @@ -18,40 +18,7 @@ */ package com.datastrato.gravitino.authorization; -import static com.datastrato.gravitino.authorization.Privilege.Name.ADD_GROUP; -import static com.datastrato.gravitino.authorization.Privilege.Name.ADD_USER; -import static com.datastrato.gravitino.authorization.Privilege.Name.ALTER_CATALOG; -import static com.datastrato.gravitino.authorization.Privilege.Name.ALTER_SCHEMA; -import static com.datastrato.gravitino.authorization.Privilege.Name.CREATE_CATALOG; -import static com.datastrato.gravitino.authorization.Privilege.Name.CREATE_FILESET; -import static com.datastrato.gravitino.authorization.Privilege.Name.CREATE_METALAKE; -import static com.datastrato.gravitino.authorization.Privilege.Name.CREATE_ROLE; -import static com.datastrato.gravitino.authorization.Privilege.Name.CREATE_SCHEMA; -import static com.datastrato.gravitino.authorization.Privilege.Name.CREATE_TABLE; -import static com.datastrato.gravitino.authorization.Privilege.Name.CREATE_TOPIC; -import static com.datastrato.gravitino.authorization.Privilege.Name.DELETE_ROLE; -import static com.datastrato.gravitino.authorization.Privilege.Name.DROP_CATALOG; -import static com.datastrato.gravitino.authorization.Privilege.Name.DROP_FILESET; -import static com.datastrato.gravitino.authorization.Privilege.Name.DROP_SCHEMA; -import static com.datastrato.gravitino.authorization.Privilege.Name.DROP_TABLE; -import static com.datastrato.gravitino.authorization.Privilege.Name.DROP_TOPIC; -import static com.datastrato.gravitino.authorization.Privilege.Name.GET_GROUP; -import static com.datastrato.gravitino.authorization.Privilege.Name.GET_ROLE; -import static com.datastrato.gravitino.authorization.Privilege.Name.GET_USER; -import static com.datastrato.gravitino.authorization.Privilege.Name.GRANT_ROLE; -import static com.datastrato.gravitino.authorization.Privilege.Name.MANAGE_METALAKE; -import static com.datastrato.gravitino.authorization.Privilege.Name.READ_FILESET; -import static com.datastrato.gravitino.authorization.Privilege.Name.READ_TABLE; -import static com.datastrato.gravitino.authorization.Privilege.Name.READ_TOPIC; -import static com.datastrato.gravitino.authorization.Privilege.Name.REMOVE_GROUP; -import static com.datastrato.gravitino.authorization.Privilege.Name.REMOVE_USER; -import static com.datastrato.gravitino.authorization.Privilege.Name.REVOKE_ROLE; -import static com.datastrato.gravitino.authorization.Privilege.Name.USE_CATALOG; -import static com.datastrato.gravitino.authorization.Privilege.Name.USE_METALAKE; -import static com.datastrato.gravitino.authorization.Privilege.Name.USE_SCHEMA; -import static com.datastrato.gravitino.authorization.Privilege.Name.WRITE_FILESET; -import static com.datastrato.gravitino.authorization.Privilege.Name.WRITE_TABLE; -import static com.datastrato.gravitino.authorization.Privilege.Name.WRITE_TOPIC; +import java.util.Objects; /** The helper class for {@link Privilege}. */ public class Privileges { @@ -276,26 +243,84 @@ public class Privileges { } } - /** The privilege to create a catalog. */ - public abstract static class CreateCatalog implements Privilege { + /** + * Abstract class representing a generic privilege. + * + * @param <T> the type of the privilege + */ + public abstract static class GenericPrivilege<T extends GenericPrivilege<T>> + implements Privilege { + + /** + * Functional interface for creating instances of GenericPrivilege. + * + * @param <T> the type of the privilege + */ + @FunctionalInterface + public interface GenericPrivilegeFactory<T extends GenericPrivilege<T>> { + /** + * Creates a new instance of the privilege. + * + * @param condition the condition of the privilege + * @param name the name of the privilege + * @return the created privilege instance + */ + T create(Condition condition, Name name); + } + + private final Condition condition; + private final Name name; + + /** + * Constructor for GenericPrivilege. + * + * @param condition the condition of the privilege + * @param name the name of the privilege + */ + protected GenericPrivilege(Condition condition, Name name) { + this.condition = condition; + this.name = name; + } - private static final CreateCatalog ALLOW_INSTANCE = - new CreateCatalog() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; + @Override + public Name name() { + return name; + } + + @Override + public Condition condition() { + return condition; + } + + @Override + public String simpleString() { + return condition.name() + " " + name.name().toLowerCase().replace('_', ' '); + } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof GenericPrivilege)) return false; + GenericPrivilege<?> that = (GenericPrivilege<?>) o; + return condition == that.condition && name == that.name; + } + + @Override + public int hashCode() { + return Objects.hash(condition, name); + } + } + + /** The privilege to create a catalog. */ + public static class CreateCatalog extends GenericPrivilege<CreateCatalog> { + private static final CreateCatalog ALLOW_INSTANCE = + new CreateCatalog(Condition.ALLOW, Name.CREATE_CATALOG); private static final CreateCatalog DENY_INSTANCE = - new CreateCatalog() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new CreateCatalog(Condition.DENY, Name.CREATE_CATALOG); - private CreateCatalog() {} + private CreateCatalog(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static CreateCatalog allow() { @@ -306,40 +331,18 @@ public class Privileges { public static CreateCatalog deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return CREATE_CATALOG; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " create catalog"; - } } /** The privilege to alter a catalog. */ - public abstract static class AlterCatalog implements Privilege { - + public static class AlterCatalog extends GenericPrivilege<AlterCatalog> { private static final AlterCatalog ALLOW_INSTANCE = - new AlterCatalog() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new AlterCatalog(Condition.ALLOW, Name.CREATE_CATALOG); private static final AlterCatalog DENY_INSTANCE = - new AlterCatalog() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new AlterCatalog(Condition.DENY, Name.CREATE_CATALOG); - private AlterCatalog() {} + private AlterCatalog(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static AlterCatalog allow() { @@ -350,40 +353,18 @@ public class Privileges { public static AlterCatalog deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return ALTER_CATALOG; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " alter catalog"; - } } /** The privilege to drop a catalog. */ - public abstract static class DropCatalog implements Privilege { - + public static class DropCatalog extends GenericPrivilege<DropCatalog> { private static final DropCatalog ALLOW_INSTANCE = - new DropCatalog() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new DropCatalog(Condition.ALLOW, Name.CREATE_CATALOG); private static final DropCatalog DENY_INSTANCE = - new DropCatalog() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new DropCatalog(Condition.DENY, Name.CREATE_CATALOG); - private DropCatalog() {} + private DropCatalog(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static DropCatalog allow() { @@ -394,39 +375,18 @@ public class Privileges { public static DropCatalog deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return DROP_CATALOG; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " drop catalog"; - } } /** The privilege to use a catalog. */ - public abstract static class UseCatalog implements Privilege { + public static class UseCatalog extends GenericPrivilege<UseCatalog> { private static final UseCatalog ALLOW_INSTANCE = - new UseCatalog() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new UseCatalog(Condition.ALLOW, Name.CREATE_CATALOG); private static final UseCatalog DENY_INSTANCE = - new UseCatalog() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new UseCatalog(Condition.DENY, Name.CREATE_CATALOG); - private UseCatalog() {} + private UseCatalog(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static UseCatalog allow() { @@ -437,40 +397,18 @@ public class Privileges { public static UseCatalog deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return USE_CATALOG; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " use catalog"; - } } /** The privilege to use a schema. */ - public abstract static class UseSchema implements Privilege { - + public static class UseSchema extends GenericPrivilege<UseSchema> { private static final UseSchema ALLOW_INSTANCE = - new UseSchema() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new UseSchema(Condition.ALLOW, Name.CREATE_CATALOG); private static final UseSchema DENY_INSTANCE = - new UseSchema() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new UseSchema(Condition.DENY, Name.CREATE_CATALOG); - private UseSchema() {} + private UseSchema(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static UseSchema allow() { @@ -481,40 +419,18 @@ public class Privileges { public static UseSchema deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return USE_SCHEMA; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " use schema"; - } } /** The privilege to create a schema. */ - public abstract static class CreateSchema implements Privilege { - + public static class CreateSchema extends GenericPrivilege<CreateSchema> { private static final CreateSchema ALLOW_INSTANCE = - new CreateSchema() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new CreateSchema(Condition.ALLOW, Name.CREATE_CATALOG); private static final CreateSchema DENY_INSTANCE = - new CreateSchema() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new CreateSchema(Condition.DENY, Name.CREATE_CATALOG); - private CreateSchema() {} + private CreateSchema(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static CreateSchema allow() { @@ -525,40 +441,18 @@ public class Privileges { public static CreateSchema deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return CREATE_SCHEMA; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " create schema"; - } } /** The privilege to alter a schema. */ - public abstract static class AlterSchema implements Privilege { - + public static class AlterSchema extends GenericPrivilege<AlterSchema> { private static final AlterSchema ALLOW_INSTANCE = - new AlterSchema() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new AlterSchema(Condition.ALLOW, Name.CREATE_CATALOG); private static final AlterSchema DENY_INSTANCE = - new AlterSchema() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new AlterSchema(Condition.DENY, Name.CREATE_CATALOG); - private AlterSchema() {} + private AlterSchema(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static AlterSchema allow() { @@ -569,40 +463,18 @@ public class Privileges { public static AlterSchema deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return ALTER_SCHEMA; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " alter schema"; - } } /** The privilege to drop a schema. */ - public abstract static class DropSchema implements Privilege { - + public static class DropSchema extends GenericPrivilege<DropSchema> { private static final DropSchema ALLOW_INSTANCE = - new DropSchema() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new DropSchema(Condition.ALLOW, Name.CREATE_CATALOG); private static final DropSchema DENY_INSTANCE = - new DropSchema() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new DropSchema(Condition.DENY, Name.CREATE_CATALOG); - private DropSchema() {} + private DropSchema(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static DropSchema allow() { @@ -613,40 +485,18 @@ public class Privileges { public static DropSchema deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return DROP_SCHEMA; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " drop schema"; - } } /** The privilege to create a table. */ - public abstract static class CreateTable implements Privilege { - + public static class CreateTable extends GenericPrivilege<CreateTable> { private static final CreateTable ALLOW_INSTANCE = - new CreateTable() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new CreateTable(Condition.ALLOW, Name.CREATE_CATALOG); private static final CreateTable DENY_INSTANCE = - new CreateTable() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new CreateTable(Condition.DENY, Name.CREATE_CATALOG); - private CreateTable() {} + private CreateTable(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static CreateTable allow() { @@ -657,38 +507,18 @@ public class Privileges { public static CreateTable deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return CREATE_TABLE; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " create table"; - } } /** The privilege to drop a table. */ - public abstract static class DropTable implements Privilege { - + public static class DropTable extends GenericPrivilege<DropTable> { private static final DropTable ALLOW_INSTANCE = - new DropTable() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new DropTable(Condition.ALLOW, Name.CREATE_CATALOG); private static final DropTable DENY_INSTANCE = - new DropTable() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new DropTable(Condition.DENY, Name.CREATE_CATALOG); + + private DropTable(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static DropTable allow() { @@ -699,38 +529,18 @@ public class Privileges { public static DropTable deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return DROP_TABLE; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " drop table"; - } } /** The privilege to read a table. */ - public abstract static class ReadTable implements Privilege { - + public static class ReadTable extends GenericPrivilege<ReadTable> { private static final ReadTable ALLOW_INSTANCE = - new ReadTable() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new ReadTable(Condition.ALLOW, Name.CREATE_CATALOG); private static final ReadTable DENY_INSTANCE = - new ReadTable() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new ReadTable(Condition.DENY, Name.CREATE_CATALOG); + + private ReadTable(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static ReadTable allow() { @@ -741,38 +551,18 @@ public class Privileges { public static ReadTable deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return READ_TABLE; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " read table"; - } } /** The privilege to write a table. */ - public abstract static class WriteTable implements Privilege { - + public static class WriteTable extends GenericPrivilege<WriteTable> { private static final WriteTable ALLOW_INSTANCE = - new WriteTable() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new WriteTable(Condition.ALLOW, Name.CREATE_CATALOG); private static final WriteTable DENY_INSTANCE = - new WriteTable() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new WriteTable(Condition.DENY, Name.CREATE_CATALOG); + + private WriteTable(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static WriteTable allow() { @@ -783,38 +573,18 @@ public class Privileges { public static WriteTable deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return WRITE_TABLE; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " write table"; - } } /** The privilege to create a fileset. */ - public abstract static class CreateFileset implements Privilege { - + public static class CreateFileset extends GenericPrivilege<CreateFileset> { private static final CreateFileset ALLOW_INSTANCE = - new CreateFileset() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new CreateFileset(Condition.ALLOW, Name.CREATE_CATALOG); private static final CreateFileset DENY_INSTANCE = - new CreateFileset() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new CreateFileset(Condition.DENY, Name.CREATE_CATALOG); + + private CreateFileset(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static CreateFileset allow() { @@ -825,38 +595,18 @@ public class Privileges { public static CreateFileset deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return CREATE_FILESET; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " create fileset"; - } } /** The privilege to drop a fileset. */ - public abstract static class DropFileset implements Privilege { - + public static class DropFileset extends GenericPrivilege<DropFileset> { private static final DropFileset ALLOW_INSTANCE = - new DropFileset() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new DropFileset(Condition.ALLOW, Name.CREATE_CATALOG); private static final DropFileset DENY_INSTANCE = - new DropFileset() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new DropFileset(Condition.DENY, Name.CREATE_CATALOG); + + private DropFileset(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static DropFileset allow() { @@ -867,38 +617,18 @@ public class Privileges { public static DropFileset deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return DROP_FILESET; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " drop fileset"; - } } /** The privilege to read a fileset. */ - public abstract static class ReadFileset implements Privilege { - + public static class ReadFileset extends GenericPrivilege<ReadFileset> { private static final ReadFileset ALLOW_INSTANCE = - new ReadFileset() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new ReadFileset(Condition.ALLOW, Name.CREATE_CATALOG); private static final ReadFileset DENY_INSTANCE = - new ReadFileset() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new ReadFileset(Condition.DENY, Name.CREATE_CATALOG); + + private ReadFileset(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static ReadFileset allow() { @@ -909,38 +639,18 @@ public class Privileges { public static ReadFileset deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return READ_FILESET; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " read fileset"; - } } /** The privilege to write a fileset. */ - public abstract static class WriteFileset implements Privilege { - + public static class WriteFileset extends GenericPrivilege<WriteFileset> { private static final WriteFileset ALLOW_INSTANCE = - new WriteFileset() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new WriteFileset(Condition.ALLOW, Name.CREATE_CATALOG); private static final WriteFileset DENY_INSTANCE = - new WriteFileset() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new WriteFileset(Condition.DENY, Name.CREATE_CATALOG); + + private WriteFileset(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static WriteFileset allow() { @@ -951,40 +661,18 @@ public class Privileges { public static WriteFileset deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return WRITE_FILESET; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " write fileset"; - } } /** The privilege to create a topic. */ - public abstract static class CreateTopic implements Privilege { - + public static class CreateTopic extends GenericPrivilege<CreateTopic> { private static final CreateTopic ALLOW_INSTANCE = - new CreateTopic() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new CreateTopic(Condition.ALLOW, Name.CREATE_CATALOG); private static final CreateTopic DENY_INSTANCE = - new CreateTopic() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new CreateTopic(Condition.DENY, Name.CREATE_CATALOG); - private CreateTopic() {} + private CreateTopic(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static CreateTopic allow() { @@ -995,38 +683,18 @@ public class Privileges { public static CreateTopic deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return CREATE_TOPIC; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " create topic"; - } } /** The privilege to drop a topic. */ - public abstract static class DropTopic implements Privilege { - + public static class DropTopic extends GenericPrivilege<DropTopic> { private static final DropTopic ALLOW_INSTANCE = - new DropTopic() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new DropTopic(Condition.ALLOW, Name.CREATE_CATALOG); private static final DropTopic DENY_INSTANCE = - new DropTopic() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new DropTopic(Condition.DENY, Name.CREATE_CATALOG); + + private DropTopic(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static DropTopic allow() { @@ -1037,38 +705,18 @@ public class Privileges { public static DropTopic deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return DROP_TOPIC; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " drop topic"; - } } /** The privilege to read a topic. */ - public abstract static class ReadTopic implements Privilege { - + public static class ReadTopic extends GenericPrivilege<ReadTopic> { private static final ReadTopic ALLOW_INSTANCE = - new ReadTopic() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new ReadTopic(Condition.ALLOW, Name.CREATE_CATALOG); private static final ReadTopic DENY_INSTANCE = - new ReadTopic() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new ReadTopic(Condition.DENY, Name.CREATE_CATALOG); + + private ReadTopic(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static ReadTopic allow() { @@ -1079,38 +727,18 @@ public class Privileges { public static ReadTopic deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return READ_TOPIC; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " read topic"; - } } /** The privilege to write a topic. */ - public abstract static class WriteTopic implements Privilege { - + public static class WriteTopic extends GenericPrivilege<WriteTopic> { private static final WriteTopic ALLOW_INSTANCE = - new WriteTopic() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new WriteTopic(Condition.ALLOW, Name.CREATE_CATALOG); private static final WriteTopic DENY_INSTANCE = - new WriteTopic() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new WriteTopic(Condition.DENY, Name.CREATE_CATALOG); + + private WriteTopic(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static WriteTopic allow() { @@ -1121,38 +749,18 @@ public class Privileges { public static WriteTopic deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return WRITE_TOPIC; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " write topic"; - } } /** The privilege to manage a metalake. */ - public abstract static class ManageMetalake implements Privilege { - + public static class ManageMetalake extends GenericPrivilege<ManageMetalake> { private static final ManageMetalake ALLOW_INSTANCE = - new ManageMetalake() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new ManageMetalake(Condition.ALLOW, Name.CREATE_CATALOG); private static final ManageMetalake DENY_INSTANCE = - new ManageMetalake() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new ManageMetalake(Condition.DENY, Name.CREATE_CATALOG); + + private ManageMetalake(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static ManageMetalake allow() { @@ -1163,38 +771,18 @@ public class Privileges { public static ManageMetalake deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return MANAGE_METALAKE; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " manage metalake"; - } } - /** The privilege to manage a metalake. */ - public abstract static class CreateMetalake implements Privilege { - + /** The privilege to create a metalake. */ + public static class CreateMetalake extends GenericPrivilege<CreateMetalake> { private static final CreateMetalake ALLOW_INSTANCE = - new CreateMetalake() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new CreateMetalake(Condition.ALLOW, Name.CREATE_CATALOG); private static final CreateMetalake DENY_INSTANCE = - new CreateMetalake() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new CreateMetalake(Condition.DENY, Name.CREATE_CATALOG); + + private CreateMetalake(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static CreateMetalake allow() { @@ -1205,40 +793,18 @@ public class Privileges { public static CreateMetalake deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return CREATE_METALAKE; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " create metalake"; - } } /** The privilege to use a metalake. */ - public abstract static class UseMetalake implements Privilege { - + public static class UseMetalake extends GenericPrivilege<UseMetalake> { private static final UseMetalake ALLOW_INSTANCE = - new UseMetalake() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new UseMetalake(Condition.ALLOW, Name.CREATE_CATALOG); private static final UseMetalake DENY_INSTANCE = - new UseMetalake() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new UseMetalake(Condition.DENY, Name.CREATE_CATALOG); - private UseMetalake() {} + private UseMetalake(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static UseMetalake allow() { @@ -1249,38 +815,16 @@ public class Privileges { public static UseMetalake deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return USE_METALAKE; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " use metalake"; - } } /** The privilege to get a user. */ - public abstract static class GetUser implements Privilege { - - private static final GetUser ALLOW_INSTANCE = - new GetUser() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - - private static final GetUser DENY_INSTANCE = - new GetUser() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + public static class GetUser extends GenericPrivilege<GetUser> { + private static final GetUser ALLOW_INSTANCE = new GetUser(Condition.ALLOW, Name.CREATE_CATALOG); + private static final GetUser DENY_INSTANCE = new GetUser(Condition.DENY, Name.CREATE_CATALOG); + + private GetUser(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static GetUser allow() { @@ -1291,40 +835,16 @@ public class Privileges { public static GetUser deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return GET_USER; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " get user"; - } } /** The privilege to add a user. */ - public abstract static class AddUser implements Privilege { - - private static final AddUser ALLOW_INSTANCE = - new AddUser() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - - private static final AddUser DENY_INSTANCE = - new AddUser() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; - - private AddUser() {} + public static class AddUser extends GenericPrivilege<AddUser> { + private static final AddUser ALLOW_INSTANCE = new AddUser(Condition.ALLOW, Name.CREATE_CATALOG); + private static final AddUser DENY_INSTANCE = new AddUser(Condition.DENY, Name.CREATE_CATALOG); + + private AddUser(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static AddUser allow() { @@ -1335,38 +855,18 @@ public class Privileges { public static AddUser deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return ADD_USER; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " add user"; - } } /** The privilege to remove a user. */ - public abstract static class RemoveUser implements Privilege { - + public static class RemoveUser extends GenericPrivilege<RemoveUser> { private static final RemoveUser ALLOW_INSTANCE = - new RemoveUser() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new RemoveUser(Condition.ALLOW, Name.CREATE_CATALOG); private static final RemoveUser DENY_INSTANCE = - new RemoveUser() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new RemoveUser(Condition.DENY, Name.CREATE_CATALOG); + + private RemoveUser(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static RemoveUser allow() { @@ -1377,40 +877,17 @@ public class Privileges { public static RemoveUser deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return REMOVE_USER; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " remove user"; - } } /** The privilege to add a group. */ - public abstract static class AddGroup implements Privilege { - + public static class AddGroup extends GenericPrivilege<AddGroup> { private static final AddGroup ALLOW_INSTANCE = - new AddGroup() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - - private static final AddGroup DENY_INSTANCE = - new AddGroup() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; - - private AddGroup() {} + new AddGroup(Condition.ALLOW, Name.CREATE_CATALOG); + private static final AddGroup DENY_INSTANCE = new AddGroup(Condition.DENY, Name.CREATE_CATALOG); + + private AddGroup(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static AddGroup allow() { @@ -1421,40 +898,18 @@ public class Privileges { public static AddGroup deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return ADD_GROUP; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " add group"; - } } /** The privilege to remove a group. */ - public abstract static class RemoveGroup implements Privilege { - + public static class RemoveGroup extends GenericPrivilege<RemoveGroup> { private static final RemoveGroup ALLOW_INSTANCE = - new RemoveGroup() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new RemoveGroup(Condition.ALLOW, Name.CREATE_CATALOG); private static final RemoveGroup DENY_INSTANCE = - new RemoveGroup() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new RemoveGroup(Condition.DENY, Name.CREATE_CATALOG); - private RemoveGroup() {} + private RemoveGroup(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static RemoveGroup allow() { @@ -1465,40 +920,17 @@ public class Privileges { public static RemoveGroup deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return REMOVE_GROUP; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " remove group"; - } } /** The privilege to get a group. */ - public abstract static class GetGroup implements Privilege { - + public static class GetGroup extends GenericPrivilege<GetGroup> { private static final GetGroup ALLOW_INSTANCE = - new GetGroup() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - - private static final GetGroup DENY_INSTANCE = - new GetGroup() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; - - private GetGroup() {} + new GetGroup(Condition.ALLOW, Name.CREATE_CATALOG); + private static final GetGroup DENY_INSTANCE = new GetGroup(Condition.DENY, Name.CREATE_CATALOG); + + private GetGroup(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static GetGroup allow() { @@ -1509,38 +941,18 @@ public class Privileges { public static GetGroup deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return GET_GROUP; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " get group"; - } } /** The privilege to create a role. */ - public abstract static class CreateRole implements Privilege { - + public static class CreateRole extends GenericPrivilege<CreateRole> { private static final CreateRole ALLOW_INSTANCE = - new CreateRole() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new CreateRole(Condition.ALLOW, Name.CREATE_CATALOG); private static final CreateRole DENY_INSTANCE = - new CreateRole() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new CreateRole(Condition.DENY, Name.CREATE_CATALOG); + + private CreateRole(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static CreateRole allow() { @@ -1551,40 +963,16 @@ public class Privileges { public static CreateRole deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return CREATE_ROLE; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " create role"; - } } /** The privilege to get a role. */ - public abstract static class GetRole implements Privilege { - - private static final GetRole ALLOW_INSTANCE = - new GetRole() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - - private static final GetRole DENY_INSTANCE = - new GetRole() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; - - private GetRole() {} + public static class GetRole extends GenericPrivilege<GetRole> { + private static final GetRole ALLOW_INSTANCE = new GetRole(Condition.ALLOW, Name.CREATE_CATALOG); + private static final GetRole DENY_INSTANCE = new GetRole(Condition.DENY, Name.CREATE_CATALOG); + + private GetRole(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static GetRole allow() { @@ -1595,40 +983,18 @@ public class Privileges { public static GetRole deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return GET_ROLE; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " get role"; - } } /** The privilege to delete a role. */ - public abstract static class DeleteRole implements Privilege { - + public static class DeleteRole extends GenericPrivilege<DeleteRole> { private static final DeleteRole ALLOW_INSTANCE = - new DeleteRole() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new DeleteRole(Condition.ALLOW, Name.CREATE_CATALOG); private static final DeleteRole DENY_INSTANCE = - new DeleteRole() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new DeleteRole(Condition.DENY, Name.CREATE_CATALOG); - private DeleteRole() {} + private DeleteRole(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static DeleteRole allow() { @@ -1639,40 +1005,18 @@ public class Privileges { public static DeleteRole deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return DELETE_ROLE; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " delete role"; - } } /** The privilege to grant a role to the user or the group. */ - public abstract static class GrantRole implements Privilege { - + public static class GrantRole extends GenericPrivilege<GrantRole> { private static final GrantRole ALLOW_INSTANCE = - new GrantRole() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new GrantRole(Condition.ALLOW, Name.CREATE_CATALOG); private static final GrantRole DENY_INSTANCE = - new GrantRole() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new GrantRole(Condition.DENY, Name.CREATE_CATALOG); - private GrantRole() {} + private GrantRole(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static GrantRole allow() { @@ -1683,40 +1027,18 @@ public class Privileges { public static GrantRole deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return GRANT_ROLE; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " grant role"; - } } /** The privilege to revoke a role from the user or the group. */ - public abstract static class RevokeRole implements Privilege { - + public static class RevokeRole extends GenericPrivilege<RevokeRole> { private static final RevokeRole ALLOW_INSTANCE = - new RevokeRole() { - @Override - public Condition condition() { - return Condition.ALLOW; - } - }; - + new RevokeRole(Condition.ALLOW, Name.CREATE_CATALOG); private static final RevokeRole DENY_INSTANCE = - new RevokeRole() { - @Override - public Condition condition() { - return Condition.DENY; - } - }; + new RevokeRole(Condition.DENY, Name.CREATE_CATALOG); - private RevokeRole() {} + private RevokeRole(Condition condition, Name name) { + super(condition, name); + } /** @return The instance with allow condition of the privilege. */ public static RevokeRole allow() { @@ -1727,17 +1049,5 @@ public class Privileges { public static RevokeRole deny() { return DENY_INSTANCE; } - - /** @return The generic name of the privilege. */ - @Override - public Name name() { - return REVOKE_ROLE; - } - - /** @return A readable string representation for the privilege. */ - @Override - public String simpleString() { - return condition().name() + " revoke role"; - } } }