diff --git a/bouncy-castle/bcfips-include-test/src/test/java/org/apache/pulsar/client/TlsProducerConsumerBase.java b/bouncy-castle/bcfips-include-test/src/test/java/org/apache/pulsar/client/TlsProducerConsumerBase.java index 756079f2a62c4..c73d4a04da418 100644 --- a/bouncy-castle/bcfips-include-test/src/test/java/org/apache/pulsar/client/TlsProducerConsumerBase.java +++ b/bouncy-castle/bcfips-include-test/src/test/java/org/apache/pulsar/client/TlsProducerConsumerBase.java @@ -31,8 +31,8 @@ import org.apache.pulsar.client.api.ProducerConsumerBase; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.impl.auth.AuthenticationTls; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -104,10 +104,10 @@ protected void internalSetUpForNamespace() throws Exception { admin = spy(PulsarAdmin.builder().serviceHttpUrl(brokerUrlTls.toString()) .tlsTrustCertsFilePath(TLS_TRUST_CERT_FILE_PATH).allowTlsInsecureConnection(false) .authentication(AuthenticationTls.class.getName(), authParams).build()); - admin.clusters().createCluster(clusterName, new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/my-ns"); } } diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloader.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloader.java index 32fbc9ca8fd7f..ead9db73965e4 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloader.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloader.java @@ -27,7 +27,7 @@ import org.apache.bookkeeper.common.annotation.InterfaceAudience; import org.apache.bookkeeper.common.annotation.InterfaceStability; import org.apache.bookkeeper.mledger.proto.MLDataFormats; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; /** * Interface for offloading ledgers to long-term storage. @@ -211,7 +211,7 @@ default CompletableFuture deleteOffloaded(UUID uid, * * @return offload policies */ - OffloadPolicies getOffloadPolicies(); + OffloadPoliciesImpl getOffloadPolicies(); /** * Close the resources if necessary diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java index dd0e6c962b9cd..c854996cd1685 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java @@ -23,7 +23,7 @@ import org.apache.bookkeeper.common.annotation.InterfaceAudience.LimitedPrivate; import org.apache.bookkeeper.common.annotation.InterfaceStability.Evolving; import org.apache.bookkeeper.common.util.OrderedScheduler; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.protocol.schema.SchemaStorage; /** @@ -50,7 +50,7 @@ public interface LedgerOffloaderFactory { * @return the offloader instance * @throws IOException when fail to create an offloader */ - T create(OffloadPolicies offloadPolicies, + T create(OffloadPoliciesImpl offloadPolicies, Map userMetadata, OrderedScheduler scheduler) throws IOException; @@ -65,10 +65,10 @@ T create(OffloadPolicies offloadPolicies, * @return the offloader instance * @throws IOException when fail to create an offloader */ - default T create(OffloadPolicies offloadPolicies, - Map userMetadata, - SchemaStorage schemaStorage, - OrderedScheduler scheduler) + default T create(OffloadPoliciesImpl offloadPolicies, + Map userMetadata, + SchemaStorage schemaStorage, + OrderedScheduler scheduler) throws IOException { return create(offloadPolicies, userMetadata, scheduler); } diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java index a338c3067eb3c..49fddac0e5306 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java @@ -128,7 +128,7 @@ import org.apache.pulsar.common.api.proto.CommandSubscribe.InitialPosition; import org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfig; import org.apache.pulsar.common.policies.data.ManagedLedgerInternalStats; -import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.util.DateFormatter; import org.apache.pulsar.common.util.FutureUtil; diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/NullLedgerOffloader.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/NullLedgerOffloader.java index aa3aae71d1db7..b9a4df59cce00 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/NullLedgerOffloader.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/NullLedgerOffloader.java @@ -24,7 +24,7 @@ import org.apache.bookkeeper.client.api.ReadHandle; import org.apache.bookkeeper.mledger.LedgerOffloader; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; /** * Null implementation that throws an error on any invokation. @@ -63,7 +63,7 @@ public CompletableFuture deleteOffloaded(long ledgerId, UUID uid, } @Override - public OffloadPolicies getOffloadPolicies() { + public OffloadPoliciesImpl getOffloadPolicies() { return null; } diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadLedgerDeleteTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadLedgerDeleteTest.java index 736cd8bd8362b..258987cbfe31c 100644 --- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadLedgerDeleteTest.java +++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadLedgerDeleteTest.java @@ -33,7 +33,7 @@ import org.apache.bookkeeper.mledger.util.MockClock; import org.apache.bookkeeper.test.MockedBookKeeperTestCase; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -210,7 +210,7 @@ public void testLaggedDeleteSlowConsumer() throws Exception { @Test public void isOffloadedNeedsDeleteTest() throws Exception { - OffloadPolicies offloadPolicies = new OffloadPolicies(); + OffloadPoliciesImpl offloadPolicies = new OffloadPoliciesImpl(); LedgerOffloader ledgerOffloader = Mockito.mock(LedgerOffloader.class); Mockito.when(ledgerOffloader.getOffloadPolicies()).thenReturn(offloadPolicies); diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java index cc23f74dddd34..426a00db25ec8 100644 --- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java +++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java @@ -58,8 +58,8 @@ import org.apache.bookkeeper.mledger.util.MockClock; import org.apache.bookkeeper.net.BookieId; import org.apache.bookkeeper.test.MockedBookKeeperTestCase; -import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.testng.Assert; import org.testng.annotations.Test; @@ -202,14 +202,14 @@ static class MockLedgerOffloader implements LedgerOffloader { ConcurrentHashMap offloads = new ConcurrentHashMap(); - OffloadPolicies offloadPolicies = OffloadPolicies.create("S3", "", "", "", + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create("S3", "", "", "", null, null, null, null, - OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES, - OffloadPolicies.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS, - OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY); + OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS, + OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY); @Override @@ -246,7 +246,7 @@ public CompletableFuture deleteOffloaded(long ledgerId, UUID uuid, }; @Override - public OffloadPolicies getOffloadPolicies() { + public OffloadPoliciesImpl getOffloadPolicies() { return offloadPolicies; } diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java index ffbc2ae27a68d..a7092e4ec46f6 100644 --- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java +++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java @@ -48,7 +48,7 @@ import org.apache.bookkeeper.mledger.proto.MLDataFormats.ManagedLedgerInfo.LedgerInfo; import org.apache.bookkeeper.test.MockedBookKeeperTestCase; import org.apache.commons.lang3.tuple.Pair; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.Test; @@ -991,14 +991,14 @@ Set deletedOffloads() { return deletes.keySet(); } - OffloadPolicies offloadPolicies = OffloadPolicies.create("S3", "", "", "", + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create("S3", "", "", "", null, null, null, null, - OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES, - OffloadPolicies.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS, - OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY); + OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS, + OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY); @Override public String getOffloadDriverName() { @@ -1044,7 +1044,7 @@ public CompletableFuture deleteOffloaded(long ledgerId, UUID uuid, }; @Override - public OffloadPolicies getOffloadPolicies() { + public OffloadPoliciesImpl getOffloadPolicies() { return offloadPolicies; } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java index 94a4ba17627c4..4cfcff0951e1f 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java @@ -25,7 +25,6 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Properties; import java.util.Set; @@ -34,18 +33,16 @@ import lombok.Setter; import org.apache.bookkeeper.client.api.DigestType; import org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider; -import org.apache.pulsar.broker.validator.MultipleListenerValidator; import org.apache.pulsar.common.configuration.Category; import org.apache.pulsar.common.configuration.FieldContext; import org.apache.pulsar.common.configuration.PulsarConfiguration; import org.apache.pulsar.common.nar.NarClassLoader; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.TopicType; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.common.sasl.SaslConstants; -import org.apache.pulsar.policies.data.loadbalancer.AdvertisedListener; /** * Pulsar service configuration object. @@ -1581,7 +1578,7 @@ public class ServiceConfiguration implements PulsarConfiguration { @FieldContext(category = CATEGORY_STORAGE_ML, doc = "Read priority when ledgers exists in both bookkeeper and the second layer storage.") - private String managedLedgerDataReadPriority = OffloadPolicies.OffloadedReadPriority.TIERED_STORAGE_FIRST + private String managedLedgerDataReadPriority = OffloadedReadPriority.TIERED_STORAGE_FIRST .getValue(); /*** --- Load balancer --- ****/ diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationProvider.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationProvider.java index f8e73c39a8fda..cfb191b8fc1f4 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationProvider.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationProvider.java @@ -33,11 +33,10 @@ import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.PolicyName; import org.apache.pulsar.common.policies.data.PolicyOperation; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.NamespaceOperation; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; -import org.apache.pulsar.common.policies.data.TopicPolicies; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.RestException; @@ -79,7 +78,7 @@ default CompletableFuture isSuperUser(String role, ServiceConfiguration * @return a CompletableFuture containing a boolean in which true means the role is an admin user * and false if it is not */ - default CompletableFuture isTenantAdmin(String tenant, String role, TenantInfo tenantInfo, + default CompletableFuture isTenantAdmin(String tenant, String role, TenantInfoImpl tenantInfo, AuthenticationDataSource authenticationData) { return CompletableFuture.completedFuture(role != null && tenantInfo.getAdminRoles() != null && tenantInfo.getAdminRoles().contains(role) ? true : false); } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationService.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationService.java index 403542f00112b..83a9944633643 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationService.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationService.java @@ -29,7 +29,7 @@ import org.apache.pulsar.common.policies.data.NamespaceOperation; import org.apache.pulsar.common.policies.data.PolicyName; import org.apache.pulsar.common.policies.data.PolicyOperation; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; import org.apache.pulsar.common.util.FutureUtil; @@ -80,7 +80,7 @@ public CompletableFuture isSuperUser(String user, AuthenticationDataSou return FutureUtil.failedFuture(new IllegalStateException("No authorization provider configured")); } - public CompletableFuture isTenantAdmin(String tenant, String role, TenantInfo tenantInfo, + public CompletableFuture isTenantAdmin(String tenant, String role, TenantInfoImpl tenantInfo, AuthenticationDataSource authenticationData) { if (provider != null) { return provider.isTenantAdmin(tenant, role, tenantInfo, authenticationData); diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/PulsarAuthorizationProvider.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/PulsarAuthorizationProvider.java index 05c9fb25071f6..ecd17f8a7f7b3 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/PulsarAuthorizationProvider.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/PulsarAuthorizationProvider.java @@ -39,7 +39,7 @@ import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; import org.apache.pulsar.common.policies.data.PolicyOperation; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; import org.apache.pulsar.common.util.FutureUtil; @@ -634,7 +634,7 @@ public CompletableFuture validateTenantAdminAccess(String tenantName, return CompletableFuture.completedFuture(true); } else { try { - TenantInfo tenantInfo = pulsarResources.getTenantResources() + TenantInfoImpl tenantInfo = pulsarResources.getTenantResources() .get(path(POLICIES, tenantName)) .orElseThrow(() -> new RestException(Response.Status.NOT_FOUND, "Tenant does not exist")); return isTenantAdmin(tenantName, role, tenantInfo, authData); diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java index fa29bdfdde73a..03069a113440c 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java @@ -24,12 +24,11 @@ import static org.apache.commons.lang3.StringUtils.isNotBlank; import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.broker.resources.PulsarResources; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.ResourceGroup; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.zookeeper.ZooKeeperCache; @@ -55,13 +54,13 @@ public class ConfigurationCacheService { private static final Logger LOG = LoggerFactory.getLogger(ConfigurationCacheService.class); private final ZooKeeperCache cache; - private ZooKeeperDataCache propertiesCache; + private ZooKeeperDataCache propertiesCache; private ZooKeeperDataCache policiesCache; - private ZooKeeperDataCache clustersCache; + private ZooKeeperDataCache clustersCache; private ZooKeeperChildrenCache clustersListCache; private ZooKeeperChildrenCache failureDomainListCache; private ZooKeeperDataCache namespaceIsolationPoliciesCache; - private ZooKeeperDataCache failureDomainCache; + private ZooKeeperDataCache failureDomainCache; @Getter private PulsarResources pulsarResources; @@ -89,10 +88,10 @@ public ConfigurationCacheService(ZooKeeperCache cache, String configuredClusterN initZK(); - this.propertiesCache = new ZooKeeperDataCache(cache) { + this.propertiesCache = new ZooKeeperDataCache(cache) { @Override - public TenantInfo deserialize(String path, byte[] content) throws Exception { - return ObjectMapperFactory.getThreadLocal().readValue(content, TenantInfo.class); + public TenantInfoImpl deserialize(String path, byte[] content) throws Exception { + return ObjectMapperFactory.getThreadLocal().readValue(content, TenantInfoImpl.class); } }; @@ -103,10 +102,10 @@ public Policies deserialize(String path, byte[] content) throws Exception { } }; - this.clustersCache = new ZooKeeperDataCache(cache) { + this.clustersCache = new ZooKeeperDataCache(cache) { @Override - public ClusterData deserialize(String path, byte[] content) throws Exception { - return ObjectMapperFactory.getThreadLocal().readValue(content, ClusterData.class); + public ClusterDataImpl deserialize(String path, byte[] content) throws Exception { + return ObjectMapperFactory.getThreadLocal().readValue(content, ClusterDataImpl.class); } }; @@ -122,15 +121,15 @@ public ClusterData deserialize(String path, byte[] content) throws Exception { @SuppressWarnings("unchecked") public NamespaceIsolationPolicies deserialize(String path, byte[] content) throws Exception { return new NamespaceIsolationPolicies(ObjectMapperFactory - .getThreadLocal().readValue(content, new TypeReference>() { + .getThreadLocal().readValue(content, new TypeReference>() { })); } }; - this.failureDomainCache = new ZooKeeperDataCache(cache) { + this.failureDomainCache = new ZooKeeperDataCache(cache) { @Override - public FailureDomain deserialize(String path, byte[] content) throws Exception { - return ObjectMapperFactory.getThreadLocal().readValue(content, FailureDomain.class); + public FailureDomainImpl deserialize(String path, byte[] content) throws Exception { + return ObjectMapperFactory.getThreadLocal().readValue(content, FailureDomainImpl.class); } }; } @@ -183,7 +182,7 @@ public ZooKeeperCache cache() { return cache; } - public ZooKeeperDataCache propertiesCache() { + public ZooKeeperDataCache propertiesCache() { return this.propertiesCache; } @@ -191,7 +190,7 @@ public ZooKeeperDataCache policiesCache() { return this.policiesCache; } - public ZooKeeperDataCache clustersCache() { + public ZooKeeperDataCache clustersCache() { return this.clustersCache; } @@ -211,7 +210,7 @@ public ZooKeeperDataCache namespaceIsolationPolicies return this.namespaceIsolationPoliciesCache; } - public ZooKeeperDataCache failureDomainCache() { + public ZooKeeperDataCache failureDomainCache() { return this.failureDomainCache; } } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java index 083a7d75eda84..3a91e5b7c55b3 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java @@ -20,10 +20,10 @@ import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.broker.resources.PulsarResources; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; import org.apache.pulsar.zookeeper.ZooKeeperCache; import org.apache.pulsar.zookeeper.ZooKeeperChildrenCache; @@ -44,7 +44,7 @@ public ZooKeeperCache cache() { throw new UnsupportedOperationException(); } - public ZooKeeperDataCache propertiesCache() { + public ZooKeeperDataCache propertiesCache() { throw new UnsupportedOperationException(); } @@ -52,7 +52,7 @@ public ZooKeeperDataCache policiesCache() { throw new UnsupportedOperationException(); } - public ZooKeeperDataCache clustersCache() { + public ZooKeeperDataCache clustersCache() { throw new UnsupportedOperationException(); } @@ -72,7 +72,7 @@ public ZooKeeperDataCache namespaceIsolationPolicies throw new UnsupportedOperationException(); } - public ZooKeeperDataCache failureDomainCache() { + public ZooKeeperDataCache failureDomainCache() { throw new UnsupportedOperationException(); } } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/ClusterResources.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/ClusterResources.java index 938d667a62043..dcfc52dd7c074 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/ClusterResources.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/ClusterResources.java @@ -22,30 +22,30 @@ import java.util.Set; import lombok.Getter; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.metadata.api.MetadataStoreException; import org.apache.pulsar.metadata.api.extended.MetadataStoreExtended; -public class ClusterResources extends BaseResources { +public class ClusterResources extends BaseResources { public static final String CLUSTERS_ROOT = "/admin/clusters"; @Getter private FailureDomainResources failureDomainResources; public ClusterResources(MetadataStoreExtended store, int operationTimeoutSec) { - super(store, ClusterData.class, operationTimeoutSec); - this.failureDomainResources = new FailureDomainResources(store, FailureDomain.class, operationTimeoutSec); + super(store, ClusterDataImpl.class, operationTimeoutSec); + this.failureDomainResources = new FailureDomainResources(store, FailureDomainImpl.class, operationTimeoutSec); } public Set list() throws MetadataStoreException { return new HashSet<>(super.getChildren(CLUSTERS_ROOT)); } - public static class FailureDomainResources extends BaseResources { + public static class FailureDomainResources extends BaseResources { public static final String FAILURE_DOMAIN = "failureDomain"; - public FailureDomainResources(MetadataStoreExtended store, Class clazz, + public FailureDomainResources(MetadataStoreExtended store, Class clazz, int operationTimeoutSec) { super(store, clazz, operationTimeoutSec); } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/NamespaceResources.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/NamespaceResources.java index 4cb08f1e28f4b..58d493ee17135 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/NamespaceResources.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/NamespaceResources.java @@ -24,7 +24,7 @@ import lombok.Getter; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; import org.apache.pulsar.metadata.api.MetadataStoreException; @@ -43,14 +43,14 @@ public NamespaceResources(MetadataStoreExtended configurationStore, int operatio partitionedTopicResources = new PartitionedTopicResources(configurationStore, operationTimeoutSec); } - public static class IsolationPolicyResources extends BaseResources> { + public static class IsolationPolicyResources extends BaseResources> { public IsolationPolicyResources(MetadataStoreExtended store, int operationTimeoutSec) { - super(store, new TypeReference>() { + super(store, new TypeReference>() { }, operationTimeoutSec); } public Optional getPolicies(String path) throws MetadataStoreException { - Optional> data = super.get(path); + Optional> data = super.get(path); return data.isPresent() ? Optional.of(new NamespaceIsolationPolicies(data.get())) : Optional.empty(); } } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/TenantResources.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/TenantResources.java index a92c660a8a02e..3ae40ede2f75f 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/TenantResources.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/TenantResources.java @@ -18,11 +18,11 @@ */ package org.apache.pulsar.broker.resources; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.api.extended.MetadataStoreExtended; -public class TenantResources extends BaseResources { +public class TenantResources extends BaseResources { public TenantResources(MetadataStoreExtended store, int operationTimeoutSec) { - super(store, TenantInfo.class, operationTimeoutSec); + super(store, TenantInfoImpl.class, operationTimeoutSec); } } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java index d3aedb2c1df58..6eb415394ab2a 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java @@ -19,7 +19,7 @@ package org.apache.pulsar; import static org.apache.pulsar.broker.cache.ConfigurationCacheService.POLICIES_ROOT; -import static org.apache.pulsar.common.policies.data.Policies.getBundles; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.getBundles; import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter; import java.io.IOException; @@ -36,9 +36,9 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.worker.WorkerUtils; import org.apache.pulsar.metadata.api.GetResult; @@ -236,14 +236,15 @@ public static void main(String[] args) throws Exception { createMetadataNode(configStore, "/admin/clusters", new byte[0]); - ClusterData clusterData = new ClusterData(arguments.clusterWebServiceUrl, arguments.clusterWebServiceUrlTls, - arguments.clusterBrokerServiceUrl, arguments.clusterBrokerServiceUrlTls); + ClusterDataImpl clusterData = new ClusterDataImpl(arguments.clusterWebServiceUrl, + arguments.clusterWebServiceUrlTls, arguments.clusterBrokerServiceUrl, + arguments.clusterBrokerServiceUrlTls); byte[] clusterDataJson = ObjectMapperFactory.getThreadLocal().writeValueAsBytes(clusterData); createMetadataNode(configStore, "/admin/clusters/" + arguments.cluster, clusterDataJson); // Create marker for "global" cluster - ClusterData globalClusterData = new ClusterData(null, null); + ClusterDataImpl globalClusterData = new ClusterDataImpl(null, null); byte[] globalClusterDataJson = ObjectMapperFactory.getThreadLocal().writeValueAsBytes(globalClusterData); createMetadataNode(configStore, "/admin/clusters/global", globalClusterDataJson); @@ -278,14 +279,14 @@ static void createTenantIfAbsent(MetadataStore configStore, String tenant, Strin Optional getResult = configStore.get(tenantPath).get(); if (!getResult.isPresent()) { - TenantInfo publicTenant = new TenantInfo(Collections.emptySet(), Collections.singleton(cluster)); + TenantInfoImpl publicTenant = new TenantInfoImpl(Collections.emptySet(), Collections.singleton(cluster)); createMetadataNode(configStore, tenantPath, ObjectMapperFactory.getThreadLocal().writeValueAsBytes(publicTenant)); } else { // Update existing public tenant with new cluster byte[] content = getResult.get().getValue(); - TenantInfo publicTenant = ObjectMapperFactory.getThreadLocal().readValue(content, TenantInfo.class); + TenantInfoImpl publicTenant = ObjectMapperFactory.getThreadLocal().readValue(content, TenantInfoImpl.class); // Only update z-node if the list of clusters should be modified if (!publicTenant.getAllowedClusters().contains(cluster)) { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java index 749920e559e1c..dfaafd2366001 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java @@ -34,8 +34,8 @@ import org.apache.pulsar.client.admin.PulsarAdminBuilder; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.functions.worker.WorkerConfig; import org.apache.pulsar.functions.worker.WorkerService; import org.apache.pulsar.functions.worker.service.WorkerServiceLoader; @@ -305,8 +305,8 @@ public void start() throws Exception { webServiceUrl.toString()).authentication( config.getBrokerClientAuthenticationPlugin(), config.getBrokerClientAuthenticationParameters()).build(); - ClusterData clusterData = - new ClusterData(webServiceUrl.toString(), null, brokerServiceUrl, null); + ClusterDataImpl clusterData = + new ClusterDataImpl(webServiceUrl.toString(), null, brokerServiceUrl, null); createSampleNameSpace(clusterData, cluster); } else { URL webServiceUrlTls = new URL( @@ -333,7 +333,8 @@ public void start() throws Exception { } admin = builder.build(); - ClusterData clusterData = new ClusterData(null, webServiceUrlTls.toString(), null, brokerServiceUrlTls); + ClusterDataImpl clusterData = new ClusterDataImpl(null, webServiceUrlTls.toString(), + null, brokerServiceUrlTls); createSampleNameSpace(clusterData, cluster); } @@ -354,7 +355,7 @@ private void createNameSpace(String cluster, String publicTenant, String default try { if (!admin.tenants().getTenants().contains(publicTenant)) { admin.tenants().createTenant(publicTenant, - new TenantInfo(Sets.newHashSet(config.getSuperUserRoles()), Sets.newHashSet(cluster))); + new TenantInfoImpl(Sets.newHashSet(config.getSuperUserRoles()), Sets.newHashSet(cluster))); } if (!admin.namespaces().getNamespaces(publicTenant).contains(defaultNamespace)) { admin.namespaces().createNamespace(defaultNamespace); @@ -366,7 +367,7 @@ private void createNameSpace(String cluster, String publicTenant, String default } } - private void createSampleNameSpace(ClusterData clusterData, String cluster) { + private void createSampleNameSpace(ClusterDataImpl clusterData, String cluster) { // Create a sample namespace final String tenant = "sample"; final String globalCluster = "global"; @@ -382,12 +383,12 @@ private void createSampleNameSpace(ClusterData clusterData, String cluster) { try { admin.clusters().getCluster(globalCluster); } catch (PulsarAdminException.NotFoundException ex) { - admin.clusters().createCluster(globalCluster, new ClusterData(null, null)); + admin.clusters().createCluster(globalCluster, new ClusterDataImpl(null, null)); } if (!admin.tenants().getTenants().contains(tenant)) { admin.tenants().createTenant(tenant, - new TenantInfo(Sets.newHashSet(config.getSuperUserRoles()), Sets.newHashSet(cluster))); + new TenantInfoImpl(Sets.newHashSet(config.getSuperUserRoles()), Sets.newHashSet(cluster))); } if (!admin.namespaces().getNamespaces(tenant).contains(namespace)) { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java index 6bb1a1611a94f..7b71a9f7803a1 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java @@ -123,8 +123,8 @@ import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.protocol.schema.SchemaStorage; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.netty.EventLoopUtil; @@ -642,7 +642,7 @@ config, localMetadataStore, getZkClient(), bkClientFactory, ioEventLoopGroup schemaStorage, config.getSchemaRegistryCompatibilityCheckers()); this.defaultOffloader = createManagedLedgerOffloader( - OffloadPolicies.create(this.getConfiguration().getProperties())); + OffloadPoliciesImpl.create(this.getConfiguration().getProperties())); this.brokerInterceptor = BrokerInterceptors.load(config); brokerService.setInterceptor(getBrokerInterceptor()); this.brokerInterceptor.initialize(this); @@ -729,8 +729,8 @@ public Boolean get() { this.brokerServiceUrlTls = brokerUrlTls(config); if (null != this.webSocketService) { - ClusterData clusterData = - new ClusterData(webServiceAddress, webServiceAddressTls, brokerServiceUrl, brokerServiceUrlTls); + ClusterDataImpl clusterData = + new ClusterDataImpl(webServiceAddress, webServiceAddressTls, brokerServiceUrl, brokerServiceUrlTls); this.webSocketService.setLocalCluster(clusterData); } @@ -1117,7 +1117,7 @@ public ManagedLedgerStorage getManagedLedgerClientFactory() { * @param offloadPolicies the OffloadPolicies * @return LedgerOffloader */ - public LedgerOffloader getManagedLedgerOffloader(NamespaceName namespaceName, OffloadPolicies offloadPolicies) { + public LedgerOffloader getManagedLedgerOffloader(NamespaceName namespaceName, OffloadPoliciesImpl offloadPolicies) { if (offloadPolicies == null) { return getDefaultOffloader(); } @@ -1138,7 +1138,7 @@ public LedgerOffloader getManagedLedgerOffloader(NamespaceName namespaceName, Of }); } - public synchronized LedgerOffloader createManagedLedgerOffloader(OffloadPolicies offloadPolicies) + public synchronized LedgerOffloader createManagedLedgerOffloader(OffloadPoliciesImpl offloadPolicies) throws PulsarServerException { try { if (StringUtils.isNotBlank(offloadPolicies.getManagedLedgerOffloadDriver())) { @@ -1245,7 +1245,7 @@ public synchronized Compactor getCompactor() throws PulsarServerException { return this.compactor; } - protected synchronized OrderedScheduler getOffloaderScheduler(OffloadPolicies offloadPolicies) { + protected synchronized OrderedScheduler getOffloaderScheduler(OffloadPoliciesImpl offloadPolicies) { if (this.offloaderScheduler == null) { this.offloaderScheduler = OrderedScheduler.newSchedulerBuilder() .numThreads(offloadPolicies.getManagedLedgerOffloadMaxThreads()) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java index ce0f2211918a8..dd1f3faee8a60 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java @@ -56,10 +56,10 @@ import org.apache.pulsar.client.admin.Namespaces; import org.apache.pulsar.common.naming.Constants; import org.apache.pulsar.common.naming.NamedEntity; -import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicyImpl; import org.apache.pulsar.common.util.FutureUtil; @@ -95,16 +95,16 @@ public Set getClusters() throws Exception { @Path("/{cluster}") @ApiOperation( value = "Get the configuration for the specified cluster.", - response = ClusterData.class, + response = ClusterDataImpl.class, notes = "This operation requires Pulsar superuser privileges." ) @ApiResponses(value = { - @ApiResponse(code = 200, message = "Return the cluster data.", response = ClusterData.class), + @ApiResponse(code = 200, message = "Return the cluster data.", response = ClusterDataImpl.class), @ApiResponse(code = 403, message = "Don't have admin permission."), @ApiResponse(code = 404, message = "Cluster doesn't exist."), @ApiResponse(code = 500, message = "Internal server error.") }) - public ClusterData getCluster( + public ClusterDataImpl getCluster( @ApiParam( value = "The cluster name", required = true @@ -159,7 +159,7 @@ public void createCluster( ) ) ) - ClusterData clusterData + ClusterDataImpl clusterData ) { validateSuperUserAccess(); validatePoliciesReadOnlyAccess(); @@ -212,7 +212,7 @@ public void updateCluster( ) ) ) - ClusterData clusterData + ClusterDataImpl clusterData ) { validateSuperUserAccess(); validatePoliciesReadOnlyAccess(); @@ -329,7 +329,7 @@ public Set getPeerCluster( ) { validateSuperUserAccess(); try { - ClusterData clusterData = clusterResources().get(path("clusters", cluster)) + ClusterDataImpl clusterData = clusterResources().get(path("clusters", cluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster does not exist")); return clusterData.getPeerClusterNames(); } catch (Exception e) { @@ -433,7 +433,7 @@ private void deleteFailureDomain(String clusterPath) { @Path("/{cluster}/namespaceIsolationPolicies") @ApiOperation( value = "Get the namespace isolation policies assigned to the cluster.", - response = NamespaceIsolationData.class, + response = NamespaceIsolationDataImpl.class, responseContainer = "Map", notes = "This operation requires Pulsar superuser privileges." ) @@ -442,7 +442,7 @@ private void deleteFailureDomain(String clusterPath) { @ApiResponse(code = 404, message = "Cluster doesn't exist."), @ApiResponse(code = 500, message = "Internal server error.") }) - public Map getNamespaceIsolationPolicies( + public Map getNamespaceIsolationPolicies( @ApiParam( value = "The cluster name", required = true @@ -471,7 +471,7 @@ public Map getNamespaceIsolationPolicies( @Path("/{cluster}/namespaceIsolationPolicies/{policyName}") @ApiOperation( value = "Get the single namespace isolation policy assigned to the cluster.", - response = NamespaceIsolationData.class, + response = NamespaceIsolationDataImpl.class, notes = "This operation requires Pulsar superuser privileges." ) @ApiResponses(value = { @@ -480,7 +480,7 @@ public Map getNamespaceIsolationPolicies( @ApiResponse(code = 412, message = "Cluster doesn't exist."), @ApiResponse(code = 500, message = "Internal server error.") }) - public NamespaceIsolationData getNamespaceIsolationPolicy( + public NamespaceIsolationDataImpl getNamespaceIsolationPolicy( @ApiParam( value = "The cluster name", required = true @@ -520,7 +520,7 @@ public NamespaceIsolationData getNamespaceIsolationPolicy( @Path("/{cluster}/namespaceIsolationPolicies/brokers") @ApiOperation( value = "Get list of brokers with namespace-isolation policies attached to them.", - response = BrokerNamespaceIsolationData.class, + response = BrokerNamespaceIsolationDataImpl.class, responseContainer = "set", notes = "This operation requires Pulsar superuser privileges." ) @@ -530,7 +530,7 @@ public NamespaceIsolationData getNamespaceIsolationPolicy( @ApiResponse(code = 412, message = "Cluster doesn't exist."), @ApiResponse(code = 500, message = "Internal server error.") }) - public List getBrokersWithNamespaceIsolationPolicy( + public List getBrokersWithNamespaceIsolationPolicy( @ApiParam( value = "The cluster name", required = true @@ -541,7 +541,7 @@ public List getBrokersWithNamespaceIsolationPolicy Set availableBrokers; final String nsIsolationPoliciesPath = AdminResource.path("clusters", cluster, NAMESPACE_ISOLATION_POLICIES); - Map nsPolicies; + Map nsPolicies; try { availableBrokers = pulsar().getLoadManager().get().getAvailableBrokers(); } catch (Exception e) { @@ -560,7 +560,7 @@ public List getBrokersWithNamespaceIsolationPolicy throw new RestException(e); } return availableBrokers.stream().map(broker -> { - BrokerNamespaceIsolationData brokerIsolationData = new BrokerNamespaceIsolationData(); + BrokerNamespaceIsolationDataImpl brokerIsolationData = new BrokerNamespaceIsolationDataImpl(); brokerIsolationData.brokerName = broker; if (nsPolicies != null) { nsPolicies.forEach((name, policyData) -> { @@ -584,7 +584,7 @@ public List getBrokersWithNamespaceIsolationPolicy @Path("/{cluster}/namespaceIsolationPolicies/brokers/{broker}") @ApiOperation( value = "Get a broker with namespace-isolation policies attached to it.", - response = BrokerNamespaceIsolationData.class, + response = BrokerNamespaceIsolationDataImpl.class, notes = "This operation requires Pulsar superuser privileges." ) @ApiResponses(value = { @@ -593,7 +593,7 @@ public List getBrokersWithNamespaceIsolationPolicy @ApiResponse(code = 412, message = "Cluster doesn't exist."), @ApiResponse(code = 500, message = "Internal server error.") }) - public BrokerNamespaceIsolationData getBrokerWithNamespaceIsolationPolicy( + public BrokerNamespaceIsolationDataImpl getBrokerWithNamespaceIsolationPolicy( @ApiParam( value = "The cluster name", required = true @@ -609,7 +609,7 @@ public BrokerNamespaceIsolationData getBrokerWithNamespaceIsolationPolicy( validateClusterExists(cluster); final String nsIsolationPoliciesPath = AdminResource.path("clusters", cluster, NAMESPACE_ISOLATION_POLICIES); - Map nsPolicies; + Map nsPolicies; try { Optional nsPoliciesResult = namespaceIsolationPolicies() .getPolicies(nsIsolationPoliciesPath); @@ -621,7 +621,7 @@ public BrokerNamespaceIsolationData getBrokerWithNamespaceIsolationPolicy( log.error("[{}] Failed to get namespace isolation-policies {}", clientAppId(), cluster, e); throw new RestException(e); } - BrokerNamespaceIsolationData brokerIsolationData = new BrokerNamespaceIsolationData(); + BrokerNamespaceIsolationDataImpl brokerIsolationData = new BrokerNamespaceIsolationDataImpl(); brokerIsolationData.brokerName = broker; if (nsPolicies != null) { nsPolicies.forEach((name, policyData) -> { @@ -669,7 +669,7 @@ public void setNamespaceIsolationPolicy( value = "The namespace isolation policy data", required = true ) - NamespaceIsolationData policyData + NamespaceIsolationDataImpl policyData ) { validateSuperUserAccess(); validateClusterExists(cluster); @@ -722,7 +722,7 @@ public void setNamespaceIsolationPolicy( // get matched namespaces; call unload for each namespaces; private void filterAndUnloadMatchedNameSpaces(AsyncResponse asyncResponse, - NamespaceIsolationData policyData) throws Exception { + NamespaceIsolationDataImpl policyData) throws Exception { Namespaces namespaces = pulsar().getAdminClient().namespaces(); List nssToUnload = Lists.newArrayList(); @@ -886,7 +886,7 @@ public void setFailureDomain( value = "The configuration data of a failure domain", required = true ) - FailureDomain domain + FailureDomainImpl domain ) throws Exception { validateSuperUserAccess(); validateClusterExists(cluster); @@ -911,7 +911,7 @@ public void setFailureDomain( @Path("/{cluster}/failureDomains") @ApiOperation( value = "Get the cluster failure domains.", - response = FailureDomain.class, + response = FailureDomainImpl.class, responseContainer = "Map", notes = "This operation requires Pulsar superuser privileges." ) @@ -919,7 +919,7 @@ public void setFailureDomain( @ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 500, message = "Internal server error") }) - public Map getFailureDomains( + public Map getFailureDomains( @ApiParam( value = "The cluster name", required = true @@ -928,13 +928,13 @@ public Map getFailureDomains( ) throws Exception { validateSuperUserAccess(); - Map domains = Maps.newHashMap(); + Map domains = Maps.newHashMap(); try { final String failureDomainRootPath = pulsar().getConfigurationCache().CLUSTER_FAILURE_DOMAIN_ROOT; FailureDomainResources failureDomainListCache = clusterResources().getFailureDomainResources(); for (String domainName : failureDomainListCache.getChildren(failureDomainRootPath)) { try { - Optional domain = failureDomainListCache + Optional domain = failureDomainListCache .get(joinPath(failureDomainRootPath, domainName)); domain.ifPresent(failureDomain -> domains.put(domainName, failureDomain)); } catch (Exception e) { @@ -955,7 +955,7 @@ public Map getFailureDomains( @Path("/{cluster}/failureDomains/{domainName}") @ApiOperation( value = "Get a domain in a cluster", - response = FailureDomain.class, + response = FailureDomainImpl.class, notes = "This operation requires Pulsar superuser privileges." ) @ApiResponses(value = { @@ -964,7 +964,7 @@ public Map getFailureDomains( @ApiResponse(code = 412, message = "Cluster doesn't exist"), @ApiResponse(code = 500, message = "Internal server error") }) - public FailureDomain getDomain( + public FailureDomainImpl getDomain( @ApiParam( value = "The cluster name", required = true @@ -1034,7 +1034,7 @@ public void deleteFailureDomain( } private void validateBrokerExistsInOtherDomain(final String cluster, final String inputDomainName, - final FailureDomain inputDomain) { + final FailureDomainImpl inputDomain) { if (inputDomain != null && inputDomain.brokers != null) { try { final String failureDomainRootPath = pulsar().getConfigurationCache().CLUSTER_FAILURE_DOMAIN_ROOT; @@ -1044,7 +1044,7 @@ private void validateBrokerExistsInOtherDomain(final String cluster, final Strin continue; } try { - Optional domain = + Optional domain = clusterResources().getFailureDomainResources() .get(joinPath(failureDomainRootPath, domainName)); if (domain.isPresent() && domain.get().brokers != null) { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java index 6eb130189b08b..bb19dae45e76b 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java @@ -42,9 +42,10 @@ import org.apache.pulsar.client.api.Message; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.functions.worker.WorkerService; import org.apache.pulsar.functions.worker.service.api.Functions; @@ -303,7 +304,7 @@ public void updateFunction( ) final @FormDataParam("functionConfig") FunctionConfig functionConfig, @ApiParam(value = "The update options is for the Pulsar Function that needs to be updated.") - final @FormDataParam("updateOptions") UpdateOptions updateOptions) throws IOException { + final @FormDataParam("updateOptions") UpdateOptionsImpl updateOptions) throws IOException { functions().updateFunction(tenant, namespace, functionName, uploadedInputStream, fileDetail, functionPkgUrl, functionConfig, clientAppId(), clientAuthData(), updateOptions); @@ -403,7 +404,7 @@ public FunctionStatus getFunctionStatus( @GET @ApiOperation( value = "Displays the stats of a Pulsar Function", - response = FunctionStats.class + response = FunctionStatsImpl.class ) @ApiResponses(value = { @ApiResponse(code = 307, message = "Current broker doesn't serve the namespace of this function"), @@ -413,7 +414,7 @@ public FunctionStatus getFunctionStatus( }) @Produces(MediaType.APPLICATION_JSON) @Path("/{tenant}/{namespace}/{functionName}/stats") - public FunctionStats getFunctionStats( + public FunctionStatsImpl getFunctionStats( @ApiParam(value = "The tenant of a Pulsar Function") final @PathParam("tenant") String tenant, @ApiParam(value = "The namespace of a Pulsar Function") @@ -427,7 +428,7 @@ public FunctionStats getFunctionStats( @GET @ApiOperation( value = "Displays the stats of a Pulsar Function instance", - response = FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class + response = FunctionInstanceStatsDataImpl.class ) @ApiResponses(value = { @ApiResponse(code = 307, message = "Current broker doesn't serve the namespace of this function"), @@ -437,7 +438,7 @@ public FunctionStats getFunctionStats( }) @Produces(MediaType.APPLICATION_JSON) @Path("/{tenant}/{namespace}/{functionName}/{instanceId}/stats") - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunctionInstanceStats( + public FunctionInstanceStatsDataImpl getFunctionInstanceStats( @ApiParam(value = "The tenant of a Pulsar Function") final @PathParam("tenant") String tenant, @ApiParam(value = "The namespace of a Pulsar Function") final @PathParam("namespace") String namespace, @ApiParam(value = "The name of a Pulsar Function") final @PathParam("functionName") String functionName, diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java index e7ef32e712ecc..6bae8f89b92ea 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java @@ -23,8 +23,8 @@ import static org.apache.pulsar.broker.cache.ConfigurationCacheService.POLICIES; import static org.apache.pulsar.broker.cache.ConfigurationCacheService.RESOURCEGROUPS; import static org.apache.pulsar.broker.cache.LocalZooKeeperCacheService.LOCAL_POLICIES_ROOT; -import static org.apache.pulsar.common.policies.data.Policies.defaultBundle; -import static org.apache.pulsar.common.policies.data.Policies.getBundles; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.defaultBundle; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.getBundles; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.google.common.collect.Sets.SetView; @@ -66,7 +66,6 @@ import org.apache.pulsar.broker.web.RestException; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.SubscriptionType; -import org.apache.pulsar.common.api.proto.CommandSubscribe.SubType; import org.apache.pulsar.common.naming.NamedEntity; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.NamespaceBundleFactory; @@ -82,13 +81,13 @@ import org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType; import org.apache.pulsar.common.policies.data.BookieAffinityGroupData; import org.apache.pulsar.common.policies.data.BundlesData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.LocalPolicies; import org.apache.pulsar.common.policies.data.NamespaceOperation; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; @@ -193,7 +192,8 @@ protected void internalDeleteNamespace(AsyncResponse asyncResponse, boolean auth && !policies.replication_clusters.contains(config().getClusterName())) { // the only replication cluster is other cluster, redirect String replCluster = Lists.newArrayList(policies.replication_clusters).get(0); - ClusterData replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) + ClusterDataImpl replClusterData = clusterResources().get( + AdminResource.path("clusters", replCluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster " + replCluster + " does not exist")); URL replClusterUrl; @@ -356,7 +356,8 @@ protected void internalDeleteNamespaceForcefully(AsyncResponse asyncResponse, bo && !policies.replication_clusters.contains(config().getClusterName())) { // the only replication cluster is other cluster, redirect String replCluster = Lists.newArrayList(policies.replication_clusters).get(0); - ClusterData replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) + ClusterDataImpl replClusterData = + clusterResources().get(AdminResource.path("clusters", replCluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster " + replCluster + " does not exist")); URL replClusterUrl; @@ -508,7 +509,8 @@ protected void internalDeleteNamespaceBundle(String bundleRange, boolean authori && !policies.replication_clusters.contains(config().getClusterName())) { // the only replication cluster is other cluster, redirect String replCluster = Lists.newArrayList(policies.replication_clusters).get(0); - ClusterData replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) + ClusterDataImpl replClusterData = + clusterResources().get(AdminResource.path("clusters", replCluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster " + replCluster + " does not exist")); URL replClusterUrl; @@ -581,7 +583,8 @@ protected void internalDeleteNamespaceBundleForcefully(String bundleRange, boole && !policies.replication_clusters.contains(config().getClusterName())) { // the only replication cluster is other cluster, redirect String replCluster = Lists.newArrayList(policies.replication_clusters).get(0); - ClusterData replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) + ClusterDataImpl replClusterData = + clusterResources().get(AdminResource.path("clusters", replCluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster " + replCluster + " does not exist")); URL replClusterUrl; @@ -1938,7 +1941,7 @@ private void unsubscribe(NamespaceName nsName, String bundleRange, String subscr */ private void validatePeerClusterConflict(String clusterName, Set replicationClusters) { try { - ClusterData clusterData = clusterResources().get(path("clusters", clusterName)).orElseThrow( + ClusterDataImpl clusterData = clusterResources().get(path("clusters", clusterName)).orElseThrow( () -> new RestException(Status.PRECONDITION_FAILED, "Invalid replication cluster " + clusterName)); Set peerClusters = clusterData.getPeerClusterNames(); if (peerClusters != null && !peerClusters.isEmpty()) { @@ -2261,7 +2264,7 @@ protected void internalSetOffloadThreshold(long newThreshold) { final String path = path(POLICIES, namespaceName.toString()); updatePolicies(path, (policies) -> { if (policies.offload_policies == null) { - policies.offload_policies = new OffloadPolicies(); + policies.offload_policies = new OffloadPoliciesImpl(); } policies.offload_policies.setManagedLedgerOffloadThresholdInBytes(newThreshold); policies.offload_threshold = newThreshold; @@ -2296,7 +2299,7 @@ protected void internalSetOffloadDeletionLag(Long newDeletionLagMs) { final String path = path(POLICIES, namespaceName.toString()); updatePolicies(path, (policies) -> { if (policies.offload_policies == null) { - policies.offload_policies = new OffloadPolicies(); + policies.offload_policies = new OffloadPoliciesImpl(); } policies.offload_policies.setManagedLedgerOffloadDeletionLagInMillis(newDeletionLagMs); policies.offload_deletion_lag_ms = newDeletionLagMs; @@ -2398,7 +2401,7 @@ protected Set internalGetSubscriptionTypesEnabled() { PolicyOperation.READ); Set subscriptionTypes = new HashSet<>(); getNamespacePolicies(namespaceName).subscription_types_enabled.forEach(subType -> - subscriptionTypes.add(SubscriptionType.valueOf(subType.name()))); + subscriptionTypes.add(SubscriptionType.valueOf(subType))); return subscriptionTypes; } @@ -2406,8 +2409,8 @@ protected void internalSetSubscriptionTypesEnabled(Set subscri validateNamespacePolicyOperation(namespaceName, PolicyName.SUBSCRIPTION_AUTH_MODE, PolicyOperation.WRITE); validatePoliciesReadOnlyAccess(); - Set subTypes = new HashSet<>(); - subscriptionTypesEnabled.forEach(subscriptionType -> subTypes.add(SubType.valueOf(subscriptionType.name()))); + Set subTypes = new HashSet<>(); + subscriptionTypesEnabled.forEach(subscriptionType -> subTypes.add(subscriptionType.name())); mutatePolicy((policies) -> { policies.subscription_types_enabled = subTypes; return policies; @@ -2446,7 +2449,7 @@ private void mutatePolicy(Function policyTransformation, } } - protected void internalSetOffloadPolicies(AsyncResponse asyncResponse, OffloadPolicies offloadPolicies) { + protected void internalSetOffloadPolicies(AsyncResponse asyncResponse, OffloadPoliciesImpl offloadPolicies) { validateNamespacePolicyOperation(namespaceName, PolicyName.OFFLOAD, PolicyOperation.WRITE); validatePoliciesReadOnlyAccess(); validateOffloadPolicies(offloadPolicies); @@ -2455,13 +2458,13 @@ protected void internalSetOffloadPolicies(AsyncResponse asyncResponse, OffloadPo final String path = path(POLICIES, namespaceName.toString()); namespaceResources().setAsync(path, (policies) -> { if (Objects.equals(offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis(), - OffloadPolicies.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS)) { + OffloadPoliciesImpl.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS)) { offloadPolicies.setManagedLedgerOffloadDeletionLagInMillis(policies.offload_deletion_lag_ms); } else { policies.offload_deletion_lag_ms = offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis(); } if (Objects.equals(offloadPolicies.getManagedLedgerOffloadThresholdInBytes(), - OffloadPolicies.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES)) { + OffloadPoliciesImpl.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES)) { offloadPolicies.setManagedLedgerOffloadThresholdInBytes(policies.offload_threshold); } else { policies.offload_threshold = offloadPolicies.getManagedLedgerOffloadThresholdInBytes(); @@ -2513,7 +2516,7 @@ protected void internalRemoveOffloadPolicies(AsyncResponse asyncResponse) { } } - private void validateOffloadPolicies(OffloadPolicies offloadPolicies) { + private void validateOffloadPolicies(OffloadPoliciesImpl offloadPolicies) { if (offloadPolicies == null) { log.warn("[{}] Failed to update offload configuration for namespace {}: offloadPolicies is null", clientAppId(), namespaceName); @@ -2523,9 +2526,9 @@ private void validateOffloadPolicies(OffloadPolicies offloadPolicies) { if (!offloadPolicies.driverSupported()) { log.warn("[{}] Failed to update offload configuration for namespace {}: " + "driver is not supported, support value: {}", - clientAppId(), namespaceName, OffloadPolicies.getSupportedDriverNames()); + clientAppId(), namespaceName, OffloadPoliciesImpl.getSupportedDriverNames()); throw new RestException(Status.PRECONDITION_FAILED, - "The driver is not supported, support value: " + OffloadPolicies.getSupportedDriverNames()); + "The driver is not supported, support value: " + OffloadPoliciesImpl.getSupportedDriverNames()); } if (!offloadPolicies.bucketValid()) { log.warn("[{}] Failed to update offload configuration for namespace {}: bucket must be specified", @@ -2535,11 +2538,11 @@ private void validateOffloadPolicies(OffloadPolicies offloadPolicies) { } } - protected OffloadPolicies internalGetOffloadPolicies() { + protected OffloadPoliciesImpl internalGetOffloadPolicies() { validateNamespacePolicyOperation(namespaceName, PolicyName.OFFLOAD, PolicyOperation.READ); Policies policies = getNamespacePolicies(namespaceName); - return policies.offload_policies; + return (OffloadPoliciesImpl) policies.offload_policies; } protected int internalGetMaxTopicsPerNamespace() { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java index 2d2ea69564e77..dfa8e16f3d2bf 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java @@ -26,9 +26,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; import io.netty.buffer.ByteBuf; import java.io.IOException; import java.util.ArrayList; @@ -108,7 +105,7 @@ import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.NamespaceOperation; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -772,18 +769,19 @@ protected CompletableFuture internalGetDelayedDeliveryP return CompletableFuture.completedFuture(delayedDeliveryPolicies); } - protected CompletableFuture internalGetOffloadPolicies(boolean applied) { - OffloadPolicies offloadPolicies = + protected CompletableFuture internalGetOffloadPolicies(boolean applied) { + OffloadPoliciesImpl offloadPolicies = getTopicPolicies(topicName).map(TopicPolicies::getOffloadPolicies).orElse(null); if (applied) { - OffloadPolicies namespacePolicy = getNamespacePolicies(namespaceName).offload_policies; - offloadPolicies = OffloadPolicies.mergeConfiguration(offloadPolicies + OffloadPoliciesImpl namespacePolicy = + (OffloadPoliciesImpl) getNamespacePolicies(namespaceName).offload_policies; + offloadPolicies = OffloadPoliciesImpl.mergeConfiguration(offloadPolicies , namespacePolicy, pulsar().getConfiguration().getProperties()); } return CompletableFuture.completedFuture(offloadPolicies); } - protected CompletableFuture internalSetOffloadPolicies(OffloadPolicies offloadPolicies) { + protected CompletableFuture internalSetOffloadPolicies(OffloadPoliciesImpl offloadPolicies) { TopicPolicies topicPolicies = null; try { topicPolicies = pulsar().getTopicPoliciesService().getTopicPolicies(topicName); @@ -853,7 +851,7 @@ protected CompletableFuture internalSetInactiveTopicPolicies(InactiveTopic return pulsar().getTopicPoliciesService().updateTopicPoliciesAsync(topicName, topicPolicies); } - private CompletableFuture internalUpdateOffloadPolicies(OffloadPolicies offloadPolicies, + private CompletableFuture internalUpdateOffloadPolicies(OffloadPoliciesImpl offloadPolicies, TopicName topicName) { return pulsar().getBrokerService().getTopicIfExists(topicName.toString()) .thenAccept(optionalTopic -> { @@ -1147,7 +1145,7 @@ protected void internalGetManagedLedgerInfo(AsyncResponse asyncResponse, boolean getPartitionedTopicMetadataAsync(topicName, authoritative, false).thenAccept(partitionMetadata -> { if (partitionMetadata.partitions > 0) { - final List> futures = Lists.newArrayList(); + final List> futures = Lists.newArrayList(); PartitionedManagedLedgerInfo partitionedManagedLedgerInfo = new PartitionedManagedLedgerInfo(); @@ -1156,21 +1154,20 @@ protected void internalGetManagedLedgerInfo(AsyncResponse asyncResponse, boolean try { futures.add(pulsar().getAdminClient().topics() .getInternalInfoAsync( - topicNamePartition.toString()).whenComplete((jsonObject, throwable) -> { + topicNamePartition.toString()).whenComplete((response, throwable) -> { if (throwable != null) { log.error("[{}] Failed to get managed info for {}", clientAppId(), topicNamePartition, throwable); asyncResponse.resume(new RestException(throwable)); } - Gson gson = new GsonBuilder().setPrettyPrinting().create(); try { partitionedManagedLedgerInfo.partitions.put(topicNamePartition.toString(), - jsonMapper().readValue(gson.toJson(jsonObject), + jsonMapper().readValue(response, ManagedLedgerInfo.class)); } catch (JsonProcessingException ex) { log.error("[{}] Failed to parse ManagedLedgerInfo for {} from [{}]", clientAppId(), - topicNamePartition, gson.toJson(jsonObject), ex); + topicNamePartition, response, ex); } })); } catch (Exception e) { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SinksBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SinksBase.java index 5d57723eb03a8..e2d3a2d124595 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SinksBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SinksBase.java @@ -37,7 +37,7 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.apache.pulsar.broker.admin.AdminResource; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; @@ -252,7 +252,7 @@ public void updateSink(@ApiParam(value = "The tenant of a Pulsar Sink") final @P ) final @FormDataParam("sinkConfig") SinkConfig sinkConfig, @ApiParam(value = "Update options for the Pulsar Sink") - final @FormDataParam("updateOptions") UpdateOptions updateOptions) { + final @FormDataParam("updateOptions") UpdateOptionsImpl updateOptions) { sinks().updateSink(tenant, namespace, sinkName, uploadedInputStream, fileDetail, sinkPkgUrl, sinkConfig, clientAppId(), clientAuthData(), updateOptions); diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SourcesBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SourcesBase.java index 2d951b0e77d72..a798f0d22e93a 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SourcesBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SourcesBase.java @@ -37,7 +37,7 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.apache.pulsar.broker.admin.AdminResource; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SourceConfig; @@ -211,7 +211,7 @@ public void updateSource( ) final @FormDataParam("sourceConfig") SourceConfig sourceConfig, @ApiParam(value = "Update options for Pulsar Source") - final @FormDataParam("updateOptions") UpdateOptions updateOptions) { + final @FormDataParam("updateOptions") UpdateOptionsImpl updateOptions) { sources().updateSource(tenant, namespace, sourceName, uploadedInputStream, fileDetail, sourcePkgUrl, sourceConfig, clientAppId(), clientAuthData(), updateOptions); } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TenantsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TenantsBase.java index 390b1fb96d0a1..df42b0dc65de7 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TenantsBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TenantsBase.java @@ -47,7 +47,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.naming.Constants; import org.apache.pulsar.common.naming.NamedEntity; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -115,7 +115,7 @@ public void getTenantAdmin(@Suspended final AsyncResponse asyncResponse, @ApiResponse(code = 412, message = "Clusters do not exist") }) public void createTenant(@Suspended final AsyncResponse asyncResponse, @ApiParam(value = "The tenant name") @PathParam("tenant") String tenant, - @ApiParam(value = "TenantInfo") TenantInfo tenantInfo) { + @ApiParam(value = "TenantInfo") TenantInfoImpl tenantInfo) { final String clientAppId = clientAppId(); try { @@ -181,7 +181,7 @@ public void createTenant(@Suspended final AsyncResponse asyncResponse, @ApiResponse(code = 412, message = "Clusters do not exist") }) public void updateTenant(@Suspended final AsyncResponse asyncResponse, @ApiParam(value = "The tenant name") @PathParam("tenant") String tenant, - @ApiParam(value = "TenantInfo") TenantInfo newTenantAdmin) { + @ApiParam(value = "TenantInfo") TenantInfoImpl newTenantAdmin) { try { validateSuperUserAccess(); validatePoliciesReadOnlyAccess(); @@ -197,7 +197,7 @@ public void updateTenant(@Suspended final AsyncResponse asyncResponse, asyncResponse.resume(new RestException(Status.NOT_FOUND, "Tenant " + tenant + " not found")); return; } - TenantInfo oldTenantAdmin = tenantAdmin.get(); + TenantInfoImpl oldTenantAdmin = tenantAdmin.get(); Set newClusters = new HashSet<>(newTenantAdmin.getAllowedClusters()); canUpdateCluster(tenant, oldTenantAdmin.getAllowedClusters(), newClusters).thenApply(r -> { tenantResources().setAsync(path(POLICIES, tenant), old -> { @@ -334,7 +334,7 @@ protected void internalDeleteTenantForcefully(AsyncResponse asyncResponse, Strin }); } - private void validateClusters(TenantInfo info) { + private void validateClusters(TenantInfoImpl info) { // empty cluster shouldn't be allowed if (info == null || info.getAllowedClusters().stream().filter(c -> !StringUtils.isBlank(c)) .collect(Collectors.toSet()).isEmpty() diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java index 2fea9259aab8d..bcc989269c42d 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java @@ -19,7 +19,7 @@ package org.apache.pulsar.broker.admin.v1; import static org.apache.pulsar.broker.cache.ConfigurationCacheService.POLICIES; -import static org.apache.pulsar.common.policies.data.Policies.getBundles; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.getBundles; import com.google.common.collect.Lists; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java index c153ac40227c3..85a6ac67a8702 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.broker.admin.v2; -import static org.apache.pulsar.common.policies.data.Policies.getBundles; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.getBundles; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -57,7 +57,7 @@ import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.NamespaceOperation; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; @@ -1649,7 +1649,7 @@ public void setSchemaValidtionEnforced(@PathParam("tenant") String tenant, message = "OffloadPolicies is empty or driver is not supported or bucket is not valid")}) public void setOffloadPolicies(@PathParam("tenant") String tenant, @PathParam("namespace") String namespace, @ApiParam(value = "Offload policies for the specified namespace", required = true) - OffloadPolicies offload, + OffloadPoliciesImpl offload, @Suspended final AsyncResponse asyncResponse) { try { validateNamespaceName(tenant, namespace); @@ -1688,8 +1688,8 @@ public void removeOffloadPolicies(@PathParam("tenant") String tenant, @PathParam @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 404, message = "Namespace does not exist")}) - public OffloadPolicies getOffloadPolicies(@PathParam("tenant") String tenant, - @PathParam("namespace") String namespace) { + public OffloadPoliciesImpl getOffloadPolicies(@PathParam("tenant") String tenant, + @PathParam("namespace") String namespace) { validateNamespaceName(tenant, namespace); return internalGetOffloadPolicies(); } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java index 9c317f8032014..ce8eada750e71 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java @@ -61,7 +61,7 @@ import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentOfflineTopicStats; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; @@ -306,7 +306,7 @@ public void setOffloadPolicies(@Suspended final AsyncResponse asyncResponse, @PathParam("namespace") String namespace, @PathParam("topic") @Encoded String encodedTopic, @ApiParam(value = "Offload policies for the specified topic") - OffloadPolicies offloadPolicies) { + OffloadPoliciesImpl offloadPolicies) { validateTopicName(tenant, namespace, encodedTopic); validateAdminAccessForTenant(tenant); internalSetOffloadPolicies(offloadPolicies).whenComplete((res, ex) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java index 60bfad3e35179..6fd2884033f66 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java @@ -69,7 +69,7 @@ import org.apache.pulsar.common.naming.NamespaceBundleFactory; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.ServiceUnitId; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.LocalPolicies; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.stats.Metrics; @@ -1030,7 +1030,7 @@ private void refreshBrokerToFailureDomainMap() { Map tempBrokerToFailureDomainMap = Maps.newHashMap(); for (String domainName : pulsar.getConfigurationCache().failureDomainListCache().get()) { try { - Optional domain = pulsar.getConfigurationCache().failureDomainCache() + Optional domain = pulsar.getConfigurationCache().failureDomainCache() .get(clusterDomainRootPath + "/" + domainName); if (domain.isPresent()) { for (String broker : domain.get().brokers) { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/namespace/NamespaceService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/namespace/NamespaceService.java index 01000d9ff77f4..a4164746eef09 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/namespace/NamespaceService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/namespace/NamespaceService.java @@ -85,7 +85,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.NamespaceIsolationPolicy; import org.apache.pulsar.common.policies.data.BrokerAssignment; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.LocalPolicies; import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; @@ -146,7 +146,7 @@ public enum AddressType { public static final String NAMESPACE_ISOLATION_POLICIES = "namespaceIsolationPolicies"; - private final ConcurrentOpenHashMap namespaceClients; + private final ConcurrentOpenHashMap namespaceClients; private final List bundleOwnershipListeners; @@ -1213,14 +1213,14 @@ public CompletableFuture> getListOfNonPersistentTopics(NamespaceNam }); } - private CompletableFuture> getNonPersistentTopicsFromPeerCluster(ClusterData peerClusterData, - NamespaceName namespace) { + private CompletableFuture> getNonPersistentTopicsFromPeerCluster(ClusterDataImpl peerClusterData, + NamespaceName namespace) { PulsarClientImpl client = getNamespaceClient(peerClusterData); return client.getLookup().getTopicsUnderNamespace(namespace, Mode.NON_PERSISTENT); } - public PulsarClientImpl getNamespaceClient(ClusterData cluster) { + public PulsarClientImpl getNamespaceClient(ClusterDataImpl cluster) { PulsarClientImpl client = namespaceClients.get(cluster); if (client != null) { return client; diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManager.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManager.java index 7cebe43a435d7..8f0f009ce470b 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManager.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManager.java @@ -42,7 +42,7 @@ import org.apache.pulsar.client.api.ReaderListener; import org.apache.pulsar.common.allocator.PulsarByteBufAllocator; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -190,7 +190,7 @@ private void createTenantAndNamespace() throws PulsarServerException, PulsarAdmi if (!tenantList.contains(tenant)) { try { admin.tenants().createTenant(tenant, - new TenantInfo(Sets.newHashSet(config.getSuperUserRoles()), Sets.newHashSet(cluster))); + new TenantInfoImpl(Sets.newHashSet(config.getSuperUserRoles()), Sets.newHashSet(cluster))); } catch (PulsarAdminException ex1) { if (!(ex1 instanceof PulsarAdminException.ConflictException)) { LOG.error("Unexpected exception {} when creating tenant {}", ex1, tenant); diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java index 1d8bff79fcb5a..210691ae85257 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java @@ -142,9 +142,9 @@ import org.apache.pulsar.common.policies.data.AutoSubscriptionCreationOverride; import org.apache.pulsar.common.policies.data.AutoTopicCreationOverride; import org.apache.pulsar.common.policies.data.BacklogQuota; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.LocalPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentOfflineTopicStats; import org.apache.pulsar.common.policies.data.Policies; @@ -1017,7 +1017,7 @@ public PulsarClient getReplicationClient(String cluster) { return replicationClients.computeIfAbsent(cluster, key -> { try { String path = PulsarWebResource.path("clusters", cluster); - ClusterData data = this.pulsar.getConfigurationCache().clustersCache().get(path) + ClusterDataImpl data = this.pulsar.getConfigurationCache().clustersCache().get(path) .orElseThrow(() -> new KeeperException.NoNodeException(path)); ClientBuilder clientBuilder = PulsarClient.builder() .enableTcpNoDelay(false) @@ -1071,7 +1071,7 @@ public PulsarAdmin getClusterPulsarAdmin(String cluster) { return clusterAdmins.computeIfAbsent(cluster, key -> { try { String path = PulsarWebResource.path("clusters", cluster); - ClusterData data = this.pulsar.getConfigurationCache().clustersCache().get(path) + ClusterDataImpl data = this.pulsar.getConfigurationCache().clustersCache().get(path) .orElseThrow(() -> new KeeperException.NoNodeException(path)); ServiceConfiguration conf = pulsar.getConfig(); @@ -1269,7 +1269,7 @@ public CompletableFuture getManagedLedgerConfig(TopicName t PersistencePolicies persistencePolicies = null; RetentionPolicies retentionPolicies = null; - OffloadPolicies topicLevelOffloadPolicies = null; + OffloadPoliciesImpl topicLevelOffloadPolicies = null; if (pulsar.getConfig().isTopicLevelPoliciesEnabled()) { TopicName cloneTopicName = topicName; @@ -1362,10 +1362,11 @@ public CompletableFuture getManagedLedgerConfig(TopicName t managedLedgerConfig.setAutoSkipNonRecoverableData(serviceConfig.isAutoSkipNonRecoverableData()); managedLedgerConfig.setLazyCursorRecovery(serviceConfig.isLazyCursorRecovery()); - OffloadPolicies nsLevelOffloadPolicies = policies.map(p -> p.offload_policies).orElse(null); - OffloadPolicies offloadPolicies = OffloadPolicies.mergeConfiguration( + OffloadPoliciesImpl nsLevelOffloadPolicies = + (OffloadPoliciesImpl) policies.map(p -> p.offload_policies).orElse(null); + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.mergeConfiguration( topicLevelOffloadPolicies, - OffloadPolicies.oldPoliciesCompatible(nsLevelOffloadPolicies, policies.orElse(null)), + OffloadPoliciesImpl.oldPoliciesCompatible(nsLevelOffloadPolicies, policies.orElse(null)), getPulsar().getConfig().getProperties()); if (topicLevelOffloadPolicies != null) { try { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentSubscription.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentSubscription.java index 1a00f0bd37e47..c16065dddeb52 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentSubscription.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentSubscription.java @@ -470,7 +470,7 @@ public NonPersistentSubscriptionStats getStats() { }); } - subStats.type = getType(); + subStats.type = getTypeString(); subStats.msgDropRate = dispatcher.getMessageDropRate().getValueRate(); return subStats; } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java index 99f28201fd0af..b65916530931b 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java @@ -996,14 +996,15 @@ public SubscriptionStats getStats(Boolean getPreciseBacklog, boolean subscriptio }); } - subStats.type = getType(); + SubType subType = getType(); + subStats.type = getTypeString(); if (dispatcher instanceof PersistentDispatcherSingleActiveConsumer) { Consumer activeConsumer = ((PersistentDispatcherSingleActiveConsumer) dispatcher).getActiveConsumer(); if (activeConsumer != null) { subStats.activeConsumerName = activeConsumer.consumerName(); } } - if (Subscription.isIndividualAckMode(subStats.type)) { + if (Subscription.isIndividualAckMode(subType)) { if (dispatcher instanceof PersistentDispatcherMultipleConsumers) { PersistentDispatcherMultipleConsumers d = (PersistentDispatcherMultipleConsumers) dispatcher; subStats.unackedMessages = d.getTotalUnackedMessages(); diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java index ae6aa4ae0f039..58273e846b216 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java @@ -3052,7 +3052,7 @@ private boolean checkNsAndBrokerSubscriptionTypesEnable(TopicName topicName, Sub return getBrokerService().getPulsar().getConfiguration() .getSubscriptionTypesEnabled().contains(subType.name()); } else { - return policies.get().subscription_types_enabled.contains(subType); + return policies.get().subscription_types_enabled.contains(subType.name()); } } else { return getBrokerService().getPulsar().getConfiguration() diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java index 2f39897c98e28..78526a94f9dd8 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java @@ -76,12 +76,12 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.BundlesData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceOperation; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; import org.apache.pulsar.common.policies.data.PolicyOperation; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; import org.apache.pulsar.common.policies.path.PolicyPath; @@ -268,7 +268,7 @@ protected static void validateAdminAccessForTenant(PulsarService pulsar, String (isClientAuthenticated(clientAppId)), clientAppId); } - TenantInfo tenantInfo = pulsar.getPulsarResources().getTenantResources().get(path(POLICIES, tenant)) + TenantInfoImpl tenantInfo = pulsar.getPulsarResources().getTenantResources().get(path(POLICIES, tenant)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Tenant does not exist")); if (pulsar.getConfiguration().isAuthenticationEnabled() && pulsar.getConfiguration().isAuthorizationEnabled()) { @@ -322,7 +322,7 @@ protected static void validateAdminAccessForTenant(PulsarService pulsar, String } protected void validateClusterForTenant(String tenant, String cluster) { - TenantInfo tenantInfo; + TenantInfoImpl tenantInfo; try { tenantInfo = pulsar().getPulsarResources().getTenantResources().get(path(POLICIES, tenant)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Tenant does not exist")); @@ -352,7 +352,8 @@ protected void validateClusterForTenant(String tenant, String cluster) { */ protected void validateClusterOwnership(String cluster) throws WebApplicationException { try { - ClusterData differentClusterData = getClusterDataIfDifferentCluster(pulsar(), cluster, clientAppId()).get(); + ClusterDataImpl differentClusterData = + getClusterDataIfDifferentCluster(pulsar(), cluster, clientAppId()).get(); if (differentClusterData != null) { URI redirect = getRedirectionUrl(differentClusterData); // redirect to the cluster requested @@ -373,7 +374,7 @@ protected void validateClusterOwnership(String cluster) throws WebApplicationExc } - private URI getRedirectionUrl(ClusterData differentClusterData) throws MalformedURLException { + private URI getRedirectionUrl(ClusterDataImpl differentClusterData) throws MalformedURLException { try { PulsarServiceNameResolver serviceNameResolver = new PulsarServiceNameResolver(); if (isRequestHttps() && pulsar.getConfiguration().getWebServicePortTls().isPresent() @@ -389,10 +390,11 @@ private URI getRedirectionUrl(ClusterData differentClusterData) throws Malformed } } - protected static CompletableFuture getClusterDataIfDifferentCluster(PulsarService pulsar, - String cluster, String clientAppId) { + protected static CompletableFuture getClusterDataIfDifferentCluster(PulsarService pulsar, + String cluster, + String clientAppId) { - CompletableFuture clusterDataFuture = new CompletableFuture<>(); + CompletableFuture clusterDataFuture = new CompletableFuture<>(); if (!isValidCluster(pulsar, cluster)) { try { @@ -664,7 +666,7 @@ protected CompletableFuture validateTopicOwnershipAsync(TopicName topicNam protected void validateGlobalNamespaceOwnership(NamespaceName namespace) { int timeout = pulsar().getConfiguration().getZooKeeperOperationTimeoutSeconds(); try { - ClusterData peerClusterData = checkLocalOrGetPeerReplicationCluster(pulsar(), namespace) + ClusterDataImpl peerClusterData = checkLocalOrGetPeerReplicationCluster(pulsar(), namespace) .get(timeout, SECONDS); // if peer-cluster-data is present it means namespace is owned by that peer-cluster and request should be // redirect to the peer-cluster @@ -717,12 +719,12 @@ protected CompletableFuture validateGlobalNamespaceOwnershipAsync(Namespac }); } - public static CompletableFuture checkLocalOrGetPeerReplicationCluster(PulsarService pulsarService, - NamespaceName namespace) { + public static CompletableFuture checkLocalOrGetPeerReplicationCluster(PulsarService pulsarService, + NamespaceName namespace) { if (!namespace.isGlobal()) { return CompletableFuture.completedFuture(null); } - final CompletableFuture validationFuture = new CompletableFuture<>(); + final CompletableFuture validationFuture = new CompletableFuture<>(); final String localCluster = pulsarService.getConfiguration().getClusterName(); final String path = AdminResource.path(POLICIES, namespace.toString()); @@ -736,7 +738,7 @@ public static CompletableFuture checkLocalOrGetPeerReplicationClust log.warn(msg); validationFuture.completeExceptionally(new RestException(Status.PRECONDITION_FAILED, msg)); } else if (!policies.replication_clusters.contains(localCluster)) { - ClusterData ownerPeerCluster = getOwnerFromPeerClusterList(pulsarService, + ClusterDataImpl ownerPeerCluster = getOwnerFromPeerClusterList(pulsarService, policies.replication_clusters); if (ownerPeerCluster != null) { // found a peer that own this namespace @@ -767,14 +769,14 @@ public static CompletableFuture checkLocalOrGetPeerReplicationClust return validationFuture; } - private static ClusterData getOwnerFromPeerClusterList(PulsarService pulsar, Set replicationClusters) { + private static ClusterDataImpl getOwnerFromPeerClusterList(PulsarService pulsar, Set replicationClusters) { String currentCluster = pulsar.getConfiguration().getClusterName(); if (replicationClusters == null || replicationClusters.isEmpty() || isBlank(currentCluster)) { return null; } try { - Optional cluster = pulsar.getConfigurationCache().clustersCache() + Optional cluster = pulsar.getConfigurationCache().clustersCache() .get(path("clusters", currentCluster)); if (!cluster.isPresent() || cluster.get().getPeerClusterNames() == null) { return null; diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/SLAMonitoringTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/SLAMonitoringTest.java index 4437b43f29527..2ee0829e16dfe 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/SLAMonitoringTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/SLAMonitoringTest.java @@ -36,9 +36,9 @@ import org.apache.pulsar.broker.namespace.NamespaceService; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.testng.Assert; import org.testng.annotations.AfterClass; @@ -108,12 +108,12 @@ void setup() throws Exception { private void createTenant(PulsarAdmin pulsarAdmin) throws PulsarAdminException { - ClusterData clusterData = new ClusterData(); + ClusterDataImpl clusterData = new ClusterDataImpl(); clusterData.setServiceUrl(pulsarAdmin.getServiceUrl()); pulsarAdmins[0].clusters().createCluster("my-cluster", clusterData); Set allowedClusters = new HashSet<>(); allowedClusters.add("my-cluster"); - TenantInfo adminConfig = new TenantInfo(); + TenantInfoImpl adminConfig = new TenantInfoImpl(); adminConfig.setAllowedClusters(allowedClusters); Set adminRoles = new HashSet<>(); adminRoles.add(""); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiDelayedDelivery.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiDelayedDelivery.java index 304b79e74f55e..d5658ed7a8ed1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiDelayedDelivery.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiDelayedDelivery.java @@ -24,9 +24,9 @@ import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.client.api.*; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,8 +51,8 @@ public class AdminApiDelayedDelivery extends MockedPulsarServiceBaseTest { public void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("delayed-delivery-messages", tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiGetLastMessageIdTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiGetLastMessageIdTest.java index fb20be6b7781c..a0d653b200da1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiGetLastMessageIdTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiGetLastMessageIdTest.java @@ -27,8 +27,8 @@ import org.apache.pulsar.client.api.MessageRoutingMode; import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.impl.MessageIdImpl; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; @@ -70,9 +70,9 @@ public void initPersistentTopics() throws Exception { @BeforeMethod protected void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("prop", - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("prop/ns-abc"); admin.namespaces().setNamespaceReplicationClusters("prop/ns-abc", Sets.newHashSet("test")); persistentTopics = spy(new PersistentTopics()); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiMaxUnackedMessages.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiMaxUnackedMessages.java index 9f57532f5017a..7c11e04901b45 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiMaxUnackedMessages.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiMaxUnackedMessages.java @@ -29,8 +29,8 @@ import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.client.api.SubscriptionInitialPosition; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -51,8 +51,8 @@ public class AdminApiMaxUnackedMessages extends MockedPulsarServiceBaseTest { public void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("max-unacked-messages", tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java index c59685af23a4f..b28aa9cd0a01b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java @@ -46,9 +46,10 @@ import org.apache.pulsar.client.impl.MessageIdImpl; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -74,8 +75,8 @@ public void setup() throws Exception { super.internalSetup(); // Setup namespaces - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(testTenant, tenantInfo); admin.namespaces().createNamespace(myNamespace, Sets.newHashSet("test")); } @@ -170,17 +171,17 @@ public void testOffloadPolicies() throws Exception { String endpoint = "test-endpoint"; long offloadThresholdInBytes = 0; long offloadDeletionLagInMillis = 100L; - OffloadPolicies.OffloadedReadPriority priority = OffloadPolicies.OffloadedReadPriority.TIERED_STORAGE_FIRST; + OffloadedReadPriority priority = OffloadedReadPriority.TIERED_STORAGE_FIRST; - OffloadPolicies offload1 = OffloadPolicies.create( + OffloadPoliciesImpl offload1 = OffloadPoliciesImpl.create( driver, region, bucket, endpoint, null, null, null, null, 100, 100, offloadThresholdInBytes, offloadDeletionLagInMillis, priority); admin.namespaces().setOffloadPolicies(namespaceName, offload1); - OffloadPolicies offload2 = admin.namespaces().getOffloadPolicies(namespaceName); + OffloadPoliciesImpl offload2 = (OffloadPoliciesImpl) admin.namespaces().getOffloadPolicies(namespaceName); assertEquals(offload1, offload2); admin.namespaces().removeOffloadPolicies(namespaceName); - OffloadPolicies offload3 = admin.namespaces().getOffloadPolicies(namespaceName); + OffloadPoliciesImpl offload3 = (OffloadPoliciesImpl) admin.namespaces().getOffloadPolicies(namespaceName); assertNull(offload3); } @@ -191,9 +192,9 @@ public void testOffloadPoliciesApi() throws Exception { pulsarClient.newProducer().topic(topicName).create().close(); Awaitility.await() .until(() -> pulsar.getTopicPoliciesService().cacheIsInitialized(TopicName.get(topicName))); - OffloadPolicies offloadPolicies = admin.topics().getOffloadPolicies(topicName); + OffloadPoliciesImpl offloadPolicies = (OffloadPoliciesImpl) admin.topics().getOffloadPolicies(topicName); assertNull(offloadPolicies); - OffloadPolicies offload = new OffloadPolicies(); + OffloadPoliciesImpl offload = new OffloadPoliciesImpl(); String path = "fileSystemPath"; offload.setFileSystemProfilePath(path); admin.topics().setOffloadPolicies(topicName, offload); @@ -214,8 +215,8 @@ public void testOffloadPoliciesAppliedApi() throws Exception { pulsarClient.newProducer().topic(topicName).create().close(); Awaitility.await() .until(() -> pulsar.getTopicPoliciesService().cacheIsInitialized(TopicName.get(topicName))); - OffloadPolicies offloadPolicies = admin.topics().getOffloadPolicies(topicName, true); - OffloadPolicies brokerPolicies = OffloadPolicies + OffloadPoliciesImpl offloadPolicies = (OffloadPoliciesImpl) admin.topics().getOffloadPolicies(topicName, true); + OffloadPoliciesImpl brokerPolicies = OffloadPoliciesImpl .mergeConfiguration(null,null, pulsar.getConfiguration().getProperties()); assertEquals(offloadPolicies, brokerPolicies); @@ -224,7 +225,7 @@ public void testOffloadPoliciesAppliedApi() throws Exception { when(topicOffloaded.getOffloadDriverName()).thenReturn("mock"); doReturn(topicOffloaded).when(pulsar).createManagedLedgerOffloader(any()); - OffloadPolicies namespacePolicies = new OffloadPolicies(); + OffloadPoliciesImpl namespacePolicies = new OffloadPoliciesImpl(); namespacePolicies.setManagedLedgerOffloadThresholdInBytes(100L); namespacePolicies.setManagedLedgerOffloadDeletionLagInMillis(200L); namespacePolicies.setManagedLedgerOffloadDriver("s3"); @@ -235,7 +236,7 @@ public void testOffloadPoliciesAppliedApi() throws Exception { assertEquals( admin.topics().getOffloadPolicies(topicName, true), namespacePolicies); - OffloadPolicies topicPolicies = new OffloadPolicies(); + OffloadPoliciesImpl topicPolicies = new OffloadPoliciesImpl(); topicPolicies.setManagedLedgerOffloadThresholdInBytes(200L); topicPolicies.setManagedLedgerOffloadDeletionLagInMillis(400L); topicPolicies.setManagedLedgerOffloadDriver("s3"); @@ -293,7 +294,7 @@ private void testOffload(boolean isPartitioned) throws Exception { , "NullLedgerOffloader"); } //3 construct a topic level offloadPolicies - OffloadPolicies offloadPolicies = new OffloadPolicies(); + OffloadPoliciesImpl offloadPolicies = new OffloadPoliciesImpl(); offloadPolicies.setOffloadersDirectory("."); offloadPolicies.setManagedLedgerOffloadDriver("mock"); offloadPolicies.setManagedLedgerOffloadPrefetchRounds(10); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaAutoUpdateTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaAutoUpdateTest.java index 4d5bd1368bfc7..61387462f442e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaAutoUpdateTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaAutoUpdateTest.java @@ -32,8 +32,8 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.Schema; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrategy; import org.slf4j.Logger; @@ -55,8 +55,8 @@ public void setup() throws Exception { super.internalSetup(); // Setup namespaces - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); admin.namespaces().createNamespace("prop-xyz/test/ns1"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java index 177d2049e4893..7153311b9470e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java @@ -41,10 +41,10 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.api.schema.SchemaDefinition; import org.apache.pulsar.client.impl.schema.StringSchema; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrategy; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaInfoWithVersion; import org.testng.annotations.AfterMethod; @@ -66,8 +66,8 @@ public void setup() throws Exception { super.internalSetup(); // Setup namespaces - admin.clusters().createCluster(cluster, new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster(cluster, new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("schematest", tenantInfo); admin.namespaces().createNamespace("schematest/test", Sets.newHashSet("test")); admin.namespaces().createNamespace("schematest/"+cluster+"/test", Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaValidationEnforced.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaValidationEnforced.java index 2056ed47b5d54..465c1dfe9772f 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaValidationEnforced.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaValidationEnforced.java @@ -30,8 +30,8 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.Schema; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.protocol.schema.PostSchemaPayload; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaType; @@ -55,8 +55,8 @@ public class AdminApiSchemaValidationEnforced extends MockedPulsarServiceBaseTes public void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("schema-validation-enforced", tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java index 350eb5c33e709..58255f7418284 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java @@ -36,9 +36,7 @@ import com.google.common.collect.Range; import com.google.common.collect.Sets; import com.google.common.hash.Hashing; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; + import java.lang.reflect.Field; import java.net.URL; import java.util.ArrayList; @@ -105,15 +103,16 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType; import org.apache.pulsar.common.policies.data.BacklogQuota.RetentionPolicy; import org.apache.pulsar.common.policies.data.BrokerAssignment; import org.apache.pulsar.common.policies.data.BrokerInfo; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ConsumerStats; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; @@ -121,9 +120,10 @@ import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.Policies; +import org.apache.pulsar.common.policies.data.PoliciesUtil; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.common.util.Codec; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -185,8 +185,8 @@ public void setup() throws Exception { otheradmin = mockPulsarSetup.getAdmin(); // Setup namespaces - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); } @@ -233,26 +233,26 @@ public Object[][] topicNamesForAllTypesProvider() { @Test public void clusters() throws Exception { admin.clusters().createCluster("usw", - new ClusterData("http://broker.messaging.use.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.use.example.com:8080")); // "test" cluster is part of config-default cluster and it's znode gets created when PulsarService creates // failure-domain znode of this default cluster assertEquals(admin.clusters().getClusters(), Lists.newArrayList("test", "usw")); assertEquals(admin.clusters().getCluster("test"), - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.clusters().updateCluster("usw", - new ClusterData("http://new-broker.messaging.usw.example.com:8080")); + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080")); assertEquals(admin.clusters().getClusters(), Lists.newArrayList("test", "usw")); assertEquals(admin.clusters().getCluster("usw"), - new ClusterData("http://new-broker.messaging.usw.example.com:8080")); + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080")); admin.clusters().updateCluster("usw", - new ClusterData("http://new-broker.messaging.usw.example.com:8080", + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080", "https://new-broker.messaging.usw.example.com:4443")); assertEquals(admin.clusters().getClusters(), Lists.newArrayList("test", "usw")); assertEquals(admin.clusters().getCluster("usw"), - new ClusterData("http://new-broker.messaging.usw.example.com:8080", + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080", "https://new-broker.messaging.usw.example.com:4443")); admin.clusters().deleteCluster("usw"); @@ -266,7 +266,7 @@ public void clusters() throws Exception { // Check name validation try { - admin.clusters().createCluster("bf!", new ClusterData("http://dummy.messaging.example.com")); + admin.clusters().createCluster("bf!", new ClusterDataImpl("http://dummy.messaging.example.com")); fail("should have failed"); } catch (PulsarAdminException e) { assertTrue(e instanceof PreconditionFailedException); @@ -278,14 +278,14 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { try { // create String policyName1 = "policy-1"; - NamespaceIsolationData nsPolicyData1 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData1 = new NamespaceIsolationDataImpl(); nsPolicyData1.namespaces = new ArrayList(); nsPolicyData1.namespaces.add("other/use/other.*"); nsPolicyData1.primary = new ArrayList(); nsPolicyData1.primary.add("prod1-broker[4-6].messaging.use.example.com"); nsPolicyData1.secondary = new ArrayList(); nsPolicyData1.secondary.add("prod1-broker.*.messaging.use.example.com"); - nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData1.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData1.auto_failover_policy.parameters = new HashMap(); nsPolicyData1.auto_failover_policy.parameters.put("min_limit", "1"); @@ -293,14 +293,14 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { admin.clusters().createNamespaceIsolationPolicy("test", policyName1, nsPolicyData1); String policyName2 = "policy-2"; - NamespaceIsolationData nsPolicyData2 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData2 = new NamespaceIsolationDataImpl(); nsPolicyData2.namespaces = new ArrayList(); nsPolicyData2.namespaces.add("other/use/other.*"); nsPolicyData2.primary = new ArrayList(); nsPolicyData2.primary.add("prod1-broker[4-6].messaging.use.example.com"); nsPolicyData2.secondary = new ArrayList(); nsPolicyData2.secondary.add("prod1-broker.*.messaging.use.example.com"); - nsPolicyData2.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData2.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData2.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData2.auto_failover_policy.parameters = new HashMap(); nsPolicyData2.auto_failover_policy.parameters.put("min_limit", "1"); @@ -308,7 +308,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { admin.clusters().createNamespaceIsolationPolicy("test", policyName2, nsPolicyData2); // verify create indirectly with get - Map policiesMap = admin.clusters().getNamespaceIsolationPolicies("test"); + Map policiesMap = admin.clusters().getNamespaceIsolationPolicies("test"); assertEquals(policiesMap.get(policyName1), nsPolicyData1); assertEquals(policiesMap.get(policyName2), nsPolicyData2); @@ -347,7 +347,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { assertEquals(policiesMap.get(policyName1), nsPolicyData1); // verify single get - NamespaceIsolationData policy1Data = admin.clusters().getNamespaceIsolationPolicy("test", policyName1); + NamespaceIsolationDataImpl policy1Data = (NamespaceIsolationDataImpl) admin.clusters().getNamespaceIsolationPolicy("test", policyName1); assertEquals(policy1Data, nsPolicyData1); // verify creation of more than one policy @@ -419,12 +419,12 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { } // validate regex: invlid regex for primary and seconday - NamespaceIsolationData nsRegexPolicy = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsRegexPolicy = new NamespaceIsolationDataImpl(); nsRegexPolicy.namespaces = new ArrayList(); nsRegexPolicy.namespaces.add("other/use/other.*"); nsRegexPolicy.primary = new ArrayList(); nsRegexPolicy.primary.add("prod1-broker[45-46].messaging.use.example.com"); - nsRegexPolicy.auto_failover_policy = new AutoFailoverPolicyData(); + nsRegexPolicy.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsRegexPolicy.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsRegexPolicy.auto_failover_policy.parameters = new HashMap(); nsRegexPolicy.auto_failover_policy.parameters.put("min_limit", "1"); @@ -656,14 +656,14 @@ public void properties() throws PulsarAdminException { } Set allowedClusters = Sets.newHashSet("test"); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), allowedClusters); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), allowedClusters); admin.tenants().updateTenant("prop-xyz", tenantInfo); assertEquals(admin.tenants().getTenants(), Lists.newArrayList("prop-xyz")); assertEquals(admin.tenants().getTenantInfo("prop-xyz"), tenantInfo); - TenantInfo newTenantAdmin = new TenantInfo(Sets.newHashSet("role3", "role4"), allowedClusters); + TenantInfoImpl newTenantAdmin = new TenantInfoImpl(Sets.newHashSet("role3", "role4"), allowedClusters); admin.tenants().updateTenant("prop-xyz", newTenantAdmin); assertEquals(admin.tenants().getTenantInfo("prop-xyz"), newTenantAdmin); @@ -683,12 +683,12 @@ public void properties() throws PulsarAdminException { @Test public void namespaces() throws Exception { - admin.clusters().createCluster("usw", new ClusterData()); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), + admin.clusters().createCluster("usw", new ClusterDataImpl()); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); - assertEquals(admin.namespaces().getPolicies("prop-xyz/ns1").bundles, Policies.defaultBundle()); + assertEquals(admin.namespaces().getPolicies("prop-xyz/ns1").bundles, PoliciesUtil.defaultBundle()); admin.namespaces().createNamespace("prop-xyz/ns2", Sets.newHashSet("test")); @@ -723,7 +723,7 @@ public void namespaces() throws Exception { Policies policies = new Policies(); policies.replication_clusters = Sets.newHashSet("test"); - policies.bundles = Policies.defaultBundle(); + policies.bundles = PoliciesUtil.defaultBundle(); policies.auth_policies.namespace_auth.put("spiffe://developer/passport-role", EnumSet.allOf(AuthAction.class)); policies.auth_policies.namespace_auth.put("my-role", EnumSet.allOf(AuthAction.class)); @@ -1094,23 +1094,21 @@ public void testGetPartitionedInternalInfo() throws Exception { String partitionTopic0 = partitionedTopicName + "-partition-0"; String partitionTopic1 = partitionedTopicName + "-partition-1"; - JsonObject partitionTopic0Info = admin.topics().getInternalInfo(partitionTopic0); - JsonObject partitionTopic1Info = admin.topics().getInternalInfo(partitionTopic1); - - Gson gson = new GsonBuilder().create(); + String partitionTopic0InfoResponse = admin.topics().getInternalInfo(partitionTopic0); + String partitionTopic1InfoResponse = admin.topics().getInternalInfo(partitionTopic1); // expected managed info PartitionedManagedLedgerInfo partitionedManagedLedgerInfo = new PartitionedManagedLedgerInfo(); partitionedManagedLedgerInfo.version = 0L; partitionedManagedLedgerInfo.partitions.put(partitionTopic0, - ObjectMapperFactory.getThreadLocal().readValue(gson.toJson(partitionTopic0Info), ManagedLedgerInfo.class)); + ObjectMapperFactory.getThreadLocal().readValue(partitionTopic0InfoResponse, ManagedLedgerInfo.class)); partitionedManagedLedgerInfo.partitions.put(partitionTopic1, - ObjectMapperFactory.getThreadLocal().readValue(gson.toJson(partitionTopic1Info), ManagedLedgerInfo.class)); + ObjectMapperFactory.getThreadLocal().readValue(partitionTopic1InfoResponse, ManagedLedgerInfo.class)); String expectedResult = ObjectMapperFactory.getThreadLocal().writeValueAsString(partitionedManagedLedgerInfo); - JsonObject partitionTopicInfo = admin.topics().getInternalInfo(partitionedTopicName); - assertEquals(gson.toJson(partitionTopicInfo), expectedResult); + String partitionTopicInfoResponse = admin.topics().getInternalInfo(partitionedTopicName); + assertEquals(partitionTopicInfoResponse, expectedResult); } @Test @@ -1183,7 +1181,7 @@ public void testDeleteTenantForcefully() throws Exception { // create tenant admin.tenants().createTenant(tenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test"))); assertTrue(admin.tenants().getTenants().contains(tenant)); @@ -1214,7 +1212,7 @@ public void testDeleteTenantForcefully() throws Exception { assertFalse(admin.tenants().getTenants().contains(tenant)); admin.tenants().createTenant(tenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test"))); assertTrue(admin.tenants().getTenants().contains(tenant)); assertTrue(admin.namespaces().getNamespaces(tenant).isEmpty()); @@ -1232,7 +1230,7 @@ public void testForceDeleteTenantNotAllowed() throws Exception { // create tenant admin.tenants().createTenant(tenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test"))); assertTrue(admin.tenants().getTenants().contains(tenant)); @@ -2205,12 +2203,12 @@ public void persistentTopicsInvalidCursorReset() throws Exception { @Test public void testObjectWithUnknownProperties() { - class CustomTenantAdmin extends TenantInfo { + class CustomTenantAdmin extends TenantInfoImpl { @SuppressWarnings("unused") public int newTenant; } - TenantInfo pa = new TenantInfo(Sets.newHashSet("test_appid1", "test_appid2"), Sets.newHashSet("test")); + TenantInfoImpl pa = new TenantInfoImpl(Sets.newHashSet("test_appid1", "test_appid2"), Sets.newHashSet("test")); CustomTenantAdmin cpa = new CustomTenantAdmin(); cpa.setAdminRoles(pa.getAdminRoles()); cpa.setAllowedClusters(pa.getAllowedClusters()); @@ -2597,8 +2595,8 @@ public PulsarAdmin getAdmin() { @Test public void testTopicBundleRangeLookup() throws PulsarAdminException, PulsarServerException, Exception { - admin.clusters().createCluster("usw", new ClusterData()); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), + admin.clusters().createCluster("usw", new ClusterDataImpl()); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/getBundleNs", 100); @@ -2781,8 +2779,8 @@ public void testSubscriptionExpiry() throws Exception { @Test public void testCreateAndDeleteNamespaceWithBundles() throws Exception { - admin.clusters().createCluster("usw", new ClusterData()); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), + admin.clusters().createCluster("usw", new ClusterDataImpl()); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java index 0e5d52b9a12ec..d9e1eaee2f641 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java @@ -41,7 +41,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.UUID; @@ -79,19 +78,21 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicDomain; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ConsumerStats; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.awaitility.Awaitility; import org.testng.Assert; @@ -119,8 +120,8 @@ public void setup() throws Exception { mockPulsarSetup.setup(); // Setup namespaces - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); } @@ -258,8 +259,8 @@ public void testTopicPoliciesWithMultiBroker() throws Exception { conf.setTopicLevelPoliciesEnabled(true); super.internalSetup(); admin.clusters().createCluster("test" - , new ClusterData(pulsar.getWebServiceAddress() + ",localhost:1026," + "localhost:2050")); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + , new ClusterDataImpl(pulsar.getWebServiceAddress() + ",localhost:1026," + "localhost:2050")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); conf.setBrokerServicePort(Optional.of(1024)); @@ -654,13 +655,13 @@ public void testLoadReportApi() throws Exception { @Test public void testPeerCluster() throws Exception { admin.clusters().createCluster("us-west1", - new ClusterData("http://broker.messaging.west1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west1.example.com:8080")); admin.clusters().createCluster("us-west2", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-east1", - new ClusterData("http://broker.messaging.east1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.east1.example.com:8080")); admin.clusters().createCluster("us-east2", - new ClusterData("http://broker.messaging.east2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.east2.example.com:8080")); admin.clusters().updatePeerClusterNames("us-west1", Sets.newLinkedHashSet(Lists.newArrayList("us-west2"))); assertEquals(admin.clusters().getCluster("us-west1").getPeerClusterNames(), Lists.newArrayList("us-west2")); @@ -699,18 +700,18 @@ public void testPeerCluster() throws Exception { @Test public void testReplicationPeerCluster() throws Exception { admin.clusters().createCluster("us-west1", - new ClusterData("http://broker.messaging.west1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west1.example.com:8080")); admin.clusters().createCluster("us-west2", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-west3", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-west4", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-east1", - new ClusterData("http://broker.messaging.east1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.east1.example.com:8080")); admin.clusters().createCluster("us-east2", - new ClusterData("http://broker.messaging.east2.example.com:8080")); - admin.clusters().createCluster("global", new ClusterData()); + new ClusterDataImpl("http://broker.messaging.east2.example.com:8080")); + admin.clusters().createCluster("global", new ClusterDataImpl()); List allClusters = admin.clusters().getClusters(); Collections.sort(allClusters); @@ -720,7 +721,7 @@ public void testReplicationPeerCluster() throws Exception { final String property = "peer-prop"; Set allowedClusters = Sets.newHashSet("us-west1", "us-west2", "us-west3", "us-west4", "us-east1", "us-east2", "global"); - TenantInfo propConfig = new TenantInfo(Sets.newHashSet("test"), allowedClusters); + TenantInfoImpl propConfig = new TenantInfoImpl(Sets.newHashSet("test"), allowedClusters); admin.tenants().createTenant(property, propConfig); final String namespace = property + "/global/conflictPeer"; @@ -758,7 +759,7 @@ public void clusterFailureDomain() throws PulsarAdminException { final String cluster = pulsar.getConfiguration().getClusterName(); // create - FailureDomain domain = new FailureDomain(); + FailureDomainImpl domain = new FailureDomainImpl(); domain.setBrokers(Sets.newHashSet("b1", "b2", "b3")); admin.clusters().createFailureDomain(cluster, "domain-1", domain); admin.clusters().updateFailureDomain(cluster, "domain-1", domain); @@ -894,7 +895,7 @@ public void testPublishConsumerStats() throws Exception { @Test public void testTenantNameWithUnderscore() throws Exception { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop_xyz", tenantInfo); admin.namespaces().createNamespace("prop_xyz/my-namespace", Sets.newHashSet("test")); @@ -911,7 +912,7 @@ public void testTenantNameWithUnderscore() throws Exception { @Test public void testTenantNameWithInvalidCharacters() { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); // If we try to create property with invalid characters, it should fail immediately try { @@ -935,7 +936,7 @@ public void testTenantWithNonexistentClusters() throws Exception { assertFalse(admin.clusters().getClusters().contains("cluster-non-existing")); Set allowedClusters = Sets.newHashSet("cluster-non-existing"); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), allowedClusters); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), allowedClusters); // If we try to create tenant with nonexistent clusters, it should fail immediately try { @@ -968,14 +969,14 @@ public void brokerNamespaceIsolationPolicies() throws Exception { String namespaceRegex = "other/" + cluster + "/other.*"; String brokerName = pulsar.getAdvertisedAddress(); String brokerAddress = brokerName + ":" + pulsar.getConfiguration().getWebServicePort().get(); - NamespaceIsolationData nsPolicyData1 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData1 = new NamespaceIsolationDataImpl(); nsPolicyData1.namespaces = new ArrayList<>(); nsPolicyData1.namespaces.add(namespaceRegex); nsPolicyData1.primary = new ArrayList<>(); nsPolicyData1.primary.add(brokerName + ":[0-9]*"); nsPolicyData1.secondary = new ArrayList<>(); nsPolicyData1.secondary.add(brokerName + ".*"); - nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData1.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData1.auto_failover_policy.parameters = new HashMap<>(); nsPolicyData1.auto_failover_policy.parameters.put("min_limit", "1"); @@ -985,17 +986,18 @@ public void brokerNamespaceIsolationPolicies() throws Exception { List brokerIsolationDataList = admin.clusters() .getBrokersWithNamespaceIsolationPolicy(cluster); assertEquals(brokerIsolationDataList.size(), 1); - assertEquals(brokerIsolationDataList.get(0).brokerName, brokerAddress); - assertEquals(brokerIsolationDataList.get(0).namespaceRegex.size(), 1); - assertEquals(brokerIsolationDataList.get(0).namespaceRegex.get(0), namespaceRegex); + assertEquals(brokerIsolationDataList.get(0).getBrokerName(), brokerAddress); + assertEquals(brokerIsolationDataList.get(0).getNamespaceRegex().size(), 1); + assertEquals(brokerIsolationDataList.get(0).getNamespaceRegex().get(0), namespaceRegex); - BrokerNamespaceIsolationData brokerIsolationData = admin.clusters() + BrokerNamespaceIsolationDataImpl brokerIsolationData = (BrokerNamespaceIsolationDataImpl) admin.clusters() .getBrokerWithNamespaceIsolationPolicy(cluster, brokerAddress); assertEquals(brokerIsolationData.brokerName, brokerAddress); assertEquals(brokerIsolationData.namespaceRegex.size(), 1); assertEquals(brokerIsolationData.namespaceRegex.get(0), namespaceRegex); - BrokerNamespaceIsolationData isolationData = admin.clusters().getBrokerWithNamespaceIsolationPolicy(cluster, "invalid-broker"); + BrokerNamespaceIsolationDataImpl isolationData = (BrokerNamespaceIsolationDataImpl) admin.clusters() + .getBrokerWithNamespaceIsolationPolicy(cluster, "invalid-broker"); assertFalse(isolationData.isPrimary); } @@ -1017,12 +1019,12 @@ public void brokerNamespaceIsolationPoliciesUpdateOnTime() throws Exception { // create String policyName1 = "policy-1"; String cluster = pulsar.getConfiguration().getClusterName(); - NamespaceIsolationData nsPolicyData1 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData1 = new NamespaceIsolationDataImpl(); nsPolicyData1.namespaces = new ArrayList<>(); nsPolicyData1.namespaces.add(ns1Name); nsPolicyData1.primary = new ArrayList<>(); nsPolicyData1.primary.add(brokerName + ".*"); - nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData1.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData1.auto_failover_policy.parameters = new HashMap<>(); nsPolicyData1.auto_failover_policy.parameters.put("min_limit", "1"); @@ -1057,7 +1059,7 @@ public void brokerNamespaceIsolationPoliciesUpdateOnTime() throws Exception { @Test public void clustersList() throws PulsarAdminException { final String cluster = pulsar.getConfiguration().getClusterName(); - admin.clusters().createCluster("global", new ClusterData("http://localhost:6650")); + admin.clusters().createCluster("global", new ClusterDataImpl("http://localhost:6650")); // Global cluster, if there, should be omitted from the results assertEquals(admin.clusters().getClusters(), Lists.newArrayList(cluster)); @@ -1436,7 +1438,7 @@ public void testMaxNumPartitionsPerPartitionedTopicFailure() { @Test public void testListOfNamespaceBundles() throws Exception { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz2", tenantInfo); admin.namespaces().createNamespace("prop-xyz2/ns1", 10); admin.namespaces().setNamespaceReplicationClusters("prop-xyz2/ns1", Sets.newHashSet("test")); @@ -1449,7 +1451,7 @@ public void testListOfNamespaceBundles() throws Exception { public void testForceDeleteNamespace() throws Exception { conf.setForceDeleteNamespaceAllowed(true); final String namespaceName = "prop-xyz2/ns1"; - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz2", tenantInfo); admin.namespaces().createNamespace(namespaceName, 1); final String topic = "persistent://" + namespaceName + "/test" + UUID.randomUUID(); @@ -1465,7 +1467,7 @@ public void testForceDeleteNamespace() throws Exception { @Test public void testUpdateClusterWithProxyUrl() throws Exception { - ClusterData cluster = new ClusterData(pulsar.getWebServiceAddress()); + ClusterDataImpl cluster = new ClusterDataImpl(pulsar.getWebServiceAddress()); String clusterName = "test2"; admin.clusters().createCluster(clusterName, cluster); Assert.assertEquals(admin.clusters().getCluster(clusterName), cluster); @@ -1482,8 +1484,8 @@ public void testMaxNamespacesPerTenant() throws Exception { super.internalCleanup(); conf.setMaxNamespacesPerTenant(2); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); admin.namespaces().createNamespace("testTenant/ns2", Sets.newHashSet("test")); @@ -1498,7 +1500,7 @@ public void testMaxNamespacesPerTenant() throws Exception { super.internalCleanup(); conf.setMaxNamespacesPerTenant(0); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); for (int i = 0; i < 10; i++) { admin.namespaces().createNamespace("testTenant/ns-" + i, Sets.newHashSet("test")); @@ -1510,8 +1512,8 @@ public void testMaxTopicsPerNamespace() throws Exception { super.internalCleanup(); conf.setMaxTopicsPerNamespace(10); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1533,7 +1535,7 @@ public void testMaxTopicsPerNamespace() throws Exception { super.internalCleanup(); conf.setMaxTopicsPerNamespace(0); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); for (int i = 0; i < 10; ++i) { @@ -1547,7 +1549,7 @@ public void testMaxTopicsPerNamespace() throws Exception { conf.setDefaultNumPartitions(3); conf.setAllowAutoTopicCreationType("partitioned"); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1566,7 +1568,7 @@ public void testMaxTopicsPerNamespace() throws Exception { conf.setMaxTopicsPerNamespace(3); conf.setAllowAutoTopicCreationType("non-partitioned"); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1601,8 +1603,8 @@ public void testMaxSubscriptionsPerTopic() throws Exception { conf.setMaxSubscriptionsPerTopic(2); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1626,7 +1628,7 @@ public void testMaxSubscriptionsPerTopic() throws Exception { conf.setMaxSubscriptionsPerTopic(0); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1642,7 +1644,7 @@ public void testMaxSubscriptionsPerTopic() throws Exception { conf.setMaxSubscriptionsPerTopic(2); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1751,8 +1753,8 @@ public void testMaxSubPerTopicPriority() throws Exception { conf.setMaxSubscriptionsPerTopic(brokerLevelMaxSub); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); final String myNamespace = "prop-xyz/ns" + UUID.randomUUID(); admin.namespaces().createNamespace(myNamespace, Sets.newHashSet("test")); @@ -1808,8 +1810,8 @@ public void testMaxProducersPerTopicUnlimited() throws Exception { conf.setMaxProducersPerTopic(maxProducersPerTopic); super.internalSetup(); //init namespace - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); final String myNamespace = "prop-xyz/ns" + UUID.randomUUID(); admin.namespaces().createNamespace(myNamespace, Sets.newHashSet("test")); @@ -1861,8 +1863,8 @@ public void testMaxConsumersPerTopicUnlimited() throws Exception { conf.setMaxConsumersPerTopic(maxConsumersPerTopic); super.internalSetup(); //init namespace - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); final String myNamespace = "prop-xyz/ns" + UUID.randomUUID(); admin.namespaces().createNamespace(myNamespace, Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java index b3497331a39a4..6fe4033f2c154 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java @@ -50,8 +50,8 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.tls.NoopHostnameVerifier; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.SecurityUtility; import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientProperties; @@ -96,7 +96,7 @@ public void setup() throws Exception { super.internalSetup(); PulsarAdmin admin = buildAdminClient("admin"); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.close(); } @@ -152,7 +152,7 @@ PulsarClient buildClient(String user) throws Exception { public void testSuperUserCanListTenants() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("foobar"), + new TenantInfoImpl(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); Assert.assertEquals(ImmutableSet.of("tenant1"), admin.tenants().getTenants()); } @@ -162,7 +162,7 @@ public void testSuperUserCanListTenants() throws Exception { public void testProxyRoleCantListTenants() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("foobar"), + new TenantInfoImpl(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); } try (PulsarAdmin admin = buildAdminClient("proxy")) { @@ -177,7 +177,7 @@ public void testProxyRoleCantListTenants() throws Exception { public void testProxyRoleCantListNamespacesEvenWithAccess() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy"), + new TenantInfoImpl(ImmutableSet.of("proxy"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -193,7 +193,7 @@ public void testProxyRoleCantListNamespacesEvenWithAccess() throws Exception { public void testAuthorizedUserAsOriginalPrincipal() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy", "user1"), + new TenantInfoImpl(ImmutableSet.of("proxy", "user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -209,7 +209,7 @@ public void testAuthorizedUserAsOriginalPrincipal() throws Exception { public void testUnauthorizedUserAsOriginalPrincipal() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy", "user1"), + new TenantInfoImpl(ImmutableSet.of("proxy", "user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -229,7 +229,7 @@ public void testUnauthorizedUserAsOriginalPrincipal() throws Exception { public void testAuthorizedUserAsOriginalPrincipalButProxyNotAuthorized() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -249,7 +249,7 @@ public void testAuthorizedUserAsOriginalPrincipalButProxyNotAuthorized() throws public void testAuthorizedUserAsOriginalPrincipalProxyIsSuperUser() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -265,7 +265,7 @@ public void testAuthorizedUserAsOriginalPrincipalProxyIsSuperUser() throws Excep public void testUnauthorizedUserAsOriginalPrincipalProxyIsSuperUser() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -285,7 +285,7 @@ public void testUnauthorizedUserAsOriginalPrincipalProxyIsSuperUser() throws Exc public void testProxyUserViaProxy() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy"), + new TenantInfoImpl(ImmutableSet.of("proxy"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -305,7 +305,7 @@ public void testProxyUserViaProxy() throws Exception { public void testSuperProxyUserAndAdminCanListTenants() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of("test"))); } WebTarget root = buildWebClient("superproxy"); @@ -320,7 +320,7 @@ public void testSuperProxyUserAndAdminCanListTenants() throws Exception { public void testSuperProxyUserAndNonAdminCannotListTenants() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy"), + new TenantInfoImpl(ImmutableSet.of("proxy"), ImmutableSet.of("test"))); } WebTarget root = buildWebClient("superproxy"); @@ -339,7 +339,7 @@ public void testSuperProxyUserAndNonAdminCannotListTenants() throws Exception { public void testProxyCannotSetOriginalPrincipalAsEmpty() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -361,7 +361,7 @@ public void testDeleteNamespace() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { log.info("Creating tenant"); admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("admin"), ImmutableSet.of("test"))); + new TenantInfoImpl(ImmutableSet.of("admin"), ImmutableSet.of("test"))); log.info("Creating namespace, and granting perms to user1"); admin.namespaces().createNamespace("tenant1/ns1", ImmutableSet.of("test")); admin.namespaces().grantPermissionOnNamespace("tenant1/ns1", "user1", ImmutableSet.of(AuthAction.produce)); @@ -405,7 +405,7 @@ public void testCertRefreshForPulsarAdmin() throws Exception { // try to call admin-api which should fail due to incorrect key-cert try { admin.tenants().createTenant("tenantX", - new TenantInfo(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); + new TenantInfoImpl(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); Assert.fail("should have failed due to invalid key file"); } catch (Exception e) { //OK @@ -418,7 +418,7 @@ public void testCertRefreshForPulsarAdmin() throws Exception { retryStrategically((test) -> { try { admin.tenants().createTenant("tenantX", - new TenantInfo(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); + new TenantInfoImpl(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); success.setValue(true); return true; }catch(Exception e) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java index 8c3fb37b9eca9..fb646ae2c669a 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java @@ -77,14 +77,14 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BundlesData; import org.apache.pulsar.common.policies.data.BrokerInfo; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.stats.AllocatorStats; import org.apache.pulsar.common.stats.Metrics; @@ -218,7 +218,7 @@ public void clusters() throws Exception { assertEquals(clusters.getClusters(), Lists.newArrayList()); verify(clusters, never()).validateSuperUserAccess(); - clusters.createCluster("use", new ClusterData("http://broker.messaging.use.example.com")); + clusters.createCluster("use", new ClusterDataImpl("http://broker.messaging.use.example.com")); verify(clusters, times(1)).validateSuperUserAccess(); // ensure to read from ZooKeeper directly //clusters.clustersListCache().clear(); @@ -226,7 +226,7 @@ public void clusters() throws Exception { // Check creating existing cluster try { - clusters.createCluster("use", new ClusterData("http://broker.messaging.use.example.com")); + clusters.createCluster("use", new ClusterDataImpl("http://broker.messaging.use.example.com")); fail("should have failed"); } catch (RestException e) { assertEquals(e.getResponse().getStatus(), Status.CONFLICT.getStatusCode()); @@ -240,13 +240,13 @@ public void clusters() throws Exception { assertEquals(e.getResponse().getStatus(), Status.NOT_FOUND.getStatusCode()); } - assertEquals(clusters.getCluster("use"), new ClusterData("http://broker.messaging.use.example.com")); + assertEquals(clusters.getCluster("use"), new ClusterDataImpl("http://broker.messaging.use.example.com")); verify(clusters, times(4)).validateSuperUserAccess(); - clusters.updateCluster("use", new ClusterData("http://new-broker.messaging.use.example.com")); + clusters.updateCluster("use", new ClusterDataImpl("http://new-broker.messaging.use.example.com")); verify(clusters, times(5)).validateSuperUserAccess(); - assertEquals(clusters.getCluster("use"), new ClusterData("http://new-broker.messaging.use.example.com")); + assertEquals(clusters.getCluster("use"), new ClusterDataImpl("http://new-broker.messaging.use.example.com")); verify(clusters, times(6)).validateSuperUserAccess(); try { @@ -255,13 +255,13 @@ public void clusters() throws Exception { } catch (RestException e) { assertEquals(e.getResponse().getStatus(), 404); } - NamespaceIsolationData policyData = new NamespaceIsolationData(); + NamespaceIsolationDataImpl policyData = new NamespaceIsolationDataImpl(); policyData.namespaces = new ArrayList(); policyData.namespaces.add("dummy/colo/ns"); policyData.primary = new ArrayList(); policyData.primary.add("localhost" + ":" + pulsar.getListenPortHTTP()); policyData.secondary = new ArrayList(); - policyData.auto_failover_policy = new AutoFailoverPolicyData(); + policyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); policyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; policyData.auto_failover_policy.parameters = new HashMap(); policyData.auto_failover_policy.parameters.put("min_limit", "1"); @@ -292,7 +292,7 @@ public void clusters() throws Exception { } try { - clusters.updateCluster("use", new ClusterData()); + clusters.updateCluster("use", new ClusterDataImpl()); fail("should have failed"); } catch (RestException e) { assertEquals(e.getResponse().getStatus(), 404); @@ -312,7 +312,7 @@ public void clusters() throws Exception { }); configurationCache.clustersListCache().clear(); // clear caches to load data from metadata-store again - MetadataCacheImpl clusterCache = (MetadataCacheImpl) pulsar.getPulsarResources() + MetadataCacheImpl clusterCache = (MetadataCacheImpl) pulsar.getPulsarResources() .getClusterResources().getCache(); MetadataCacheImpl isolationPolicyCache = (MetadataCacheImpl) pulsar.getPulsarResources() .getNamespaceResources().getIsolationPolicies().getCache(); @@ -331,7 +331,7 @@ public void clusters() throws Exception { && path.equals("/admin/clusters/test"); }); try { - clusters.createCluster("test", new ClusterData("http://broker.messaging.test.example.com")); + clusters.createCluster("test", new ClusterDataImpl("http://broker.messaging.test.example.com")); fail("should have failed"); } catch (RestException e) { assertEquals(e.getResponse().getStatus(), Status.INTERNAL_SERVER_ERROR.getStatusCode()); @@ -344,7 +344,7 @@ public void clusters() throws Exception { clusterCache.invalidateAll(); store.invalidateAll(); try { - clusters.updateCluster("test", new ClusterData("http://broker.messaging.test.example.com")); + clusters.updateCluster("test", new ClusterDataImpl("http://broker.messaging.test.example.com")); fail("should have failed"); } catch (RestException e) { assertEquals(e.getResponse().getStatus(), Status.INTERNAL_SERVER_ERROR.getStatusCode()); @@ -390,7 +390,7 @@ public void clusters() throws Exception { // Check name validations try { - clusters.createCluster("bf@", new ClusterData("http://dummy.messaging.example.com")); + clusters.createCluster("bf@", new ClusterDataImpl("http://dummy.messaging.example.com")); fail("should have filed"); } catch (RestException e) { assertEquals(e.getResponse().getStatus(), Status.PRECONDITION_FAILED.getStatusCode()); @@ -398,10 +398,10 @@ public void clusters() throws Exception { // Check authentication try { - clusters.createCluster("auth", new ClusterData("http://dummy.web.example.com", "", + clusters.createCluster("auth", new ClusterDataImpl("http://dummy.web.example.com", "", "http://dummy.messaging.example.com", "", "authenticationPlugin", "authenticationParameters")); - ClusterData cluster = clusters.getCluster("auth"); + ClusterDataImpl cluster = clusters.getCluster("auth"); assertEquals("authenticationPlugin", cluster.getAuthenticationPlugin()); assertEquals("authenticationParameters", cluster.getAuthenticationParameters()); } catch (RestException e) { @@ -425,11 +425,11 @@ public void properties() throws Throwable { verify(properties, times(1)).validateSuperUserAccess(); // create local cluster - clusters.createCluster(configClusterName, new ClusterData()); + clusters.createCluster(configClusterName, new ClusterDataImpl()); Set allowedClusters = Sets.newHashSet(); allowedClusters.add(configClusterName); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), allowedClusters); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), allowedClusters); response = asynRequests(ctx -> properties.createTenant(ctx, "test-property", tenantInfo)); verify(properties, times(2)).validateSuperUserAccess(); @@ -441,7 +441,7 @@ public void properties() throws Throwable { assertEquals(response, tenantInfo); verify(properties, times(4)).validateSuperUserAccess(); - final TenantInfo newPropertyAdmin = new TenantInfo(Sets.newHashSet("role1", "other-role"), allowedClusters); + final TenantInfoImpl newPropertyAdmin = new TenantInfoImpl(Sets.newHashSet("role1", "other-role"), allowedClusters); response = asynRequests(ctx -> properties.updateTenant(ctx, "test-property", newPropertyAdmin)); verify(properties, times(5)).validateSuperUserAccess(); @@ -486,7 +486,7 @@ public void properties() throws Throwable { } // clear caches to load data from metadata-store again - MetadataCacheImpl cache = (MetadataCacheImpl) pulsar.getPulsarResources() + MetadataCacheImpl cache = (MetadataCacheImpl) pulsar.getPulsarResources() .getTenantResources().getCache(); AbstractMetadataStore store = (AbstractMetadataStore) cache.getStore(); cache.invalidateAll(); @@ -563,7 +563,7 @@ public void properties() throws Throwable { assertEquals(response, Lists.newArrayList()); // Create a namespace to test deleting a non-empty property - TenantInfo newPropertyAdmin2 = new TenantInfo(Sets.newHashSet("role1", "other-role"), Sets.newHashSet("use")); + TenantInfoImpl newPropertyAdmin2 = new TenantInfoImpl(Sets.newHashSet("role1", "other-role"), Sets.newHashSet("use")); response = asynRequests(ctx -> properties.createTenant(ctx, "my-tenant", newPropertyAdmin2)); namespaces.createNamespace("my-tenant", "use", "my-namespace", new BundlesData()); @@ -594,7 +594,7 @@ public void properties() throws Throwable { // Check tenantInfo with empty cluster String blankCluster = ""; Set blankClusters = Sets.newHashSet(blankCluster); - TenantInfo tenantWithEmptyCluster = new TenantInfo(Sets.newHashSet("role1", "role2"), blankClusters); + TenantInfoImpl tenantWithEmptyCluster = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), blankClusters); try { response = asynRequests(ctx -> properties.createTenant(ctx, "tenant-config-is-empty", tenantWithEmptyCluster)); fail("should have failed"); @@ -605,7 +605,7 @@ public void properties() throws Throwable { // Check tenantInfo contains empty cluster Set containBlankClusters = Sets.newHashSet(blankCluster); containBlankClusters.add(configClusterName); - TenantInfo tenantContainEmptyCluster = new TenantInfo(Sets.newHashSet(), containBlankClusters); + TenantInfoImpl tenantContainEmptyCluster = new TenantInfoImpl(Sets.newHashSet(), containBlankClusters); try { response = asynRequests(ctx -> properties.createTenant(ctx, "tenant-config-contain-empty", tenantContainEmptyCluster)); fail("should have failed"); @@ -623,7 +623,7 @@ public void properties() throws Throwable { @Test public void brokers() throws Exception { - clusters.createCluster("use", new ClusterData("http://broker.messaging.use.example.com", + clusters.createCluster("use", new ClusterDataImpl("http://broker.messaging.use.example.com", "https://broker.messaging.use.example.com:4443")); URI requestUri = new URI( @@ -680,9 +680,9 @@ public void resourceQuotas() throws Exception { } // create policies - TenantInfo admin = new TenantInfo(); + TenantInfoImpl admin = new TenantInfoImpl(); admin.getAllowedClusters().add(cluster); - ClusterData clusterData = new ClusterData(cluster); + ClusterDataImpl clusterData = new ClusterDataImpl(cluster); clusters.createCluster(cluster, clusterData ); asynRequests(ctx -> properties.createTenant(ctx, property, admin)); @@ -739,7 +739,7 @@ public void persistentTopics() throws Exception { doReturn(policies).when(resourceQuotas).getNamespacePolicies(NamespaceName.get(property, cluster, namespace)); doReturn("client-id").when(resourceQuotas).clientAppId(); // create policies - TenantInfo admin = new TenantInfo(); + TenantInfoImpl admin = new TenantInfoImpl(); admin.getAllowedClusters().add(cluster); ZkUtils.createFullPathOptimistic(mockZooKeeperGlobal, PulsarWebResource.path(POLICIES, property, cluster, namespace), ObjectMapperFactory.getThreadLocal().writeValueAsBytes(new Policies()), ZooDefs.Ids.OPEN_ACL_UNSAFE, diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BookiesApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BookiesApiTest.java index 7e3793c18e95a..2d568c2f7dbff 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BookiesApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BookiesApiTest.java @@ -53,7 +53,7 @@ public void cleanup() throws Exception { @Test public void testBasic() throws Exception { // no map - BookiesRackConfiguration conf = admin.bookies().getBookiesRackInfo(); + BookiesRackConfiguration conf = (BookiesRackConfiguration) admin.bookies().getBookiesRackInfo(); assertTrue(conf.isEmpty()); String bookie0 = "127.0.0.1:3181"; @@ -79,7 +79,7 @@ public void testBasic() throws Exception { admin.bookies().updateBookieRackInfo(bookie0, "default", newInfo0); BookieInfo readInfo0 = admin.bookies().getBookieRackInfo(bookie0); assertEquals(newInfo0, readInfo0); - conf = admin.bookies().getBookiesRackInfo(); + conf = (BookiesRackConfiguration) admin.bookies().getBookiesRackInfo(); // number of groups assertEquals(1, conf.size()); assertEquals(Optional.of(newInfo0), conf.getBookie(bookie0)); @@ -87,7 +87,7 @@ public void testBasic() throws Exception { admin.bookies().updateBookieRackInfo(bookie1, "default", newInfo1); BookieInfo readInfo1 = admin.bookies().getBookieRackInfo(bookie1); assertEquals(newInfo1, readInfo1); - conf = admin.bookies().getBookiesRackInfo(); + conf = (BookiesRackConfiguration) admin.bookies().getBookiesRackInfo(); // number of groups assertEquals(1, conf.size()); assertEquals(Optional.of(newInfo0), conf.getBookie(bookie0)); @@ -110,7 +110,7 @@ public void testBasic() throws Exception { assertEquals(404, pae.getStatusCode()); } - conf = admin.bookies().getBookiesRackInfo(); + conf = (BookiesRackConfiguration) admin.bookies().getBookiesRackInfo(); assertTrue(conf.isEmpty()); BookiesClusterInfo bookies = admin.bookies().getBookies(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java index bbc70d0216a30..847c0800837d5 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java @@ -34,9 +34,9 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.policies.data.BundlesData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -129,9 +129,9 @@ public void testPersistentList() throws Exception { /***** Broker 2 Started *****/ try (PulsarAdmin admin = buildAdminClient("superproxy")) { - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant", - new TenantInfo(ImmutableSet.of("admin"), + new TenantInfoImpl(ImmutableSet.of("admin"), ImmutableSet.of("test"))); } try (PulsarAdmin admin = buildAdminClient("admin")) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java index c8fe65eb4ab6c..17435936230f9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java @@ -22,7 +22,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import java.util.Collections; -import java.util.concurrent.TimeUnit; import lombok.Cleanup; import org.apache.pulsar.broker.BrokerTestUtil; @@ -34,8 +33,8 @@ import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -58,8 +57,8 @@ public void setup() throws Exception { mockPulsarSetup.setup(); // Setup namespaces - admin.clusters().createCluster("use", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); + admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/use/ns1"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java index 49ffc68e0ef70..132d53e2c6bd8 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java @@ -72,6 +72,7 @@ import org.apache.pulsar.broker.web.RestException; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; +import org.apache.pulsar.client.admin.internal.BaseResource; import org.apache.pulsar.client.api.Consumer; import org.apache.pulsar.client.api.ConsumerBuilder; import org.apache.pulsar.client.api.Producer; @@ -83,15 +84,15 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.BundlesData; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; import org.apache.pulsar.common.policies.data.PolicyOperation; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscribeRate; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.metadata.cache.impl.MetadataCacheImpl; import org.apache.pulsar.metadata.impl.AbstractMetadataStore; @@ -165,13 +166,13 @@ public void setup() throws Exception { doReturn(null).when(namespaces).clientAuthData(); doReturn(Sets.newTreeSet(Lists.newArrayList("use", "usw", "usc", "global"))).when(namespaces).clusters(); - admin.clusters().createCluster("use", new ClusterData("http://broker-use.com:8080")); - admin.clusters().createCluster("usw", new ClusterData("http://broker-usw.com:8080")); - admin.clusters().createCluster("usc", new ClusterData("http://broker-usc.com:8080")); + admin.clusters().createCluster("use", new ClusterDataImpl("http://broker-use.com:8080")); + admin.clusters().createCluster("usw", new ClusterDataImpl("http://broker-usw.com:8080")); + admin.clusters().createCluster("usc", new ClusterDataImpl("http://broker-usc.com:8080")); admin.tenants().createTenant(this.testTenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usc", "usw"))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usc", "usw"))); admin.tenants().createTenant(this.testOtherTenant, - new TenantInfo(Sets.newHashSet("role3", "role4"), Sets.newHashSet("use", "usc", "usw"))); + new TenantInfoImpl(Sets.newHashSet("role3", "role4"), Sets.newHashSet("use", "usc", "usw"))); createTestNamespaces(this.testLocalNamespaces, new BundlesData()); createGlobalTestNamespaces(this.testTenant, this.testGlobalNamespaces.get(0).getLocalName(), @@ -287,7 +288,7 @@ public void testGetNamespaces() throws Exception { && path.equals("/admin/policies/my-tenant"); }); // clear caches to load data from metadata-store again - MetadataCacheImpl tenantCache = (MetadataCacheImpl) pulsar.getPulsarResources() + MetadataCacheImpl tenantCache = (MetadataCacheImpl) pulsar.getPulsarResources() .getTenantResources().getCache(); AbstractMetadataStore store = (AbstractMetadataStore) tenantCache.getStore(); tenantCache.invalidateAll(); @@ -512,7 +513,7 @@ public void testGlobalNamespaceReplicationConfiguration() throws Exception { } admin.tenants().updateTenant(testTenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usc"))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usc"))); try { namespaces.setNamespaceReplicationClusters(this.testTenant, "global", @@ -799,8 +800,11 @@ public boolean matches(NamespaceBundle bundle) { })); CompletableFuture preconditionFailed = new CompletableFuture<>(); - preconditionFailed.completeExceptionally(new PulsarAdminException.PreconditionFailedException( - new ClientErrorException(Status.PRECONDITION_FAILED))); + ClientErrorException cee = new ClientErrorException(Status.PRECONDITION_FAILED); + int statusCode = cee.getResponse().getStatus(); + String httpError = BaseResource.getReasonFromServer(cee); + preconditionFailed.completeExceptionally(new PulsarAdminException.PreconditionFailedException(cee, + httpError, statusCode)); doReturn(preconditionFailed).when(namespacesAdmin) .deleteNamespaceBundleAsync(Mockito.anyString(), Mockito.anyString()); @@ -982,7 +986,7 @@ public void testValidateAdminAccessOnTenant() throws Exception { pulsar.getConfiguration().setAuthorizationEnabled(true); final String path = PulsarWebResource.path(POLICIES, property); final String data = ObjectMapperFactory.getThreadLocal().writeValueAsString( - new TenantInfo(Sets.newHashSet(namespaces.clientAppId()), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet(namespaces.clientAppId()), Sets.newHashSet("use"))); ZkUtils.createFullPathOptimistic(pulsar.getConfigurationCache().getZooKeeper(), path, data.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); @@ -1193,7 +1197,7 @@ public void testSubscribeRate() throws Exception { SubscribeRate subscribeRate = new SubscribeRate(1, 5); String namespace = "my-tenants/my-namespace"; admin.tenants().createTenant("my-tenants", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet(testLocalCluster))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet(testLocalCluster))); admin.namespaces().createNamespace(namespace, Sets.newHashSet(testLocalCluster)); admin.namespaces().setSubscribeRate(namespace, subscribeRate); assertEquals(subscribeRate, admin.namespaces().getSubscribeRate(namespace)); @@ -1242,9 +1246,9 @@ Set deletedOffloads() { return deletes.keySet(); } - OffloadPolicies offloadPolicies; + OffloadPoliciesImpl offloadPolicies; - public MockLedgerOffloader(OffloadPolicies offloadPolicies) { + public MockLedgerOffloader(OffloadPoliciesImpl offloadPolicies) { this.offloadPolicies = offloadPolicies; } @@ -1288,7 +1292,7 @@ public CompletableFuture deleteOffloaded(long ledgerId, UUID uuid, }; @Override - public OffloadPolicies getOffloadPolicies() { + public OffloadPoliciesImpl getOffloadPolicies() { return offloadPolicies; } @@ -1313,14 +1317,14 @@ public void testSetOffloadThreshold() throws Exception { assertEquals(-1, admin.namespaces().getOffloadThreshold(namespace)); // the ledger config should have the expected value ManagedLedgerConfig ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); - MockLedgerOffloader offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", + MockLedgerOffloader offloader = new MockLedgerOffloader(OffloadPoliciesImpl.create("S3", "", "", "", null, null, null, null, - OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, admin.namespaces().getOffloadThreshold(namespace), pulsar.getConfiguration().getManagedLedgerOffloadDeletionLagMs(), - OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY)); + OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY)); ledgerConf.setLedgerOffloader(offloader); assertEquals(ledgerConf.getLedgerOffloader().getOffloadPolicies().getManagedLedgerOffloadThresholdInBytes(), new Long(-1)); @@ -1330,14 +1334,14 @@ public void testSetOffloadThreshold() throws Exception { assertEquals(100, admin.namespaces().getOffloadThreshold(namespace)); ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); admin.namespaces().getOffloadPolicies(namespace); - offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", + offloader = new MockLedgerOffloader(OffloadPoliciesImpl.create("S3", "", "", "", null, null, null, null, - OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, admin.namespaces().getOffloadThreshold(namespace), pulsar.getConfiguration().getManagedLedgerOffloadDeletionLagMs(), - OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY)); + OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY)); ledgerConf.setLedgerOffloader(offloader); assertEquals(ledgerConf.getLedgerOffloader().getOffloadPolicies().getManagedLedgerOffloadThresholdInBytes(), new Long(100)); @@ -1346,14 +1350,14 @@ public void testSetOffloadThreshold() throws Exception { admin.namespaces().setOffloadThreshold(namespace, -2); assertEquals(-2, admin.namespaces().getOffloadThreshold(namespace)); ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); - offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", + offloader = new MockLedgerOffloader(OffloadPoliciesImpl.create("S3", "", "", "", null, null, null, null, - OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, admin.namespaces().getOffloadThreshold(namespace), pulsar.getConfiguration().getManagedLedgerOffloadDeletionLagMs(), - OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY)); + OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY)); ledgerConf.setLedgerOffloader(offloader); assertEquals(ledgerConf.getLedgerOffloader().getOffloadPolicies().getManagedLedgerOffloadThresholdInBytes(), new Long(-2)); @@ -1362,14 +1366,14 @@ public void testSetOffloadThreshold() throws Exception { admin.namespaces().setOffloadThreshold(namespace, -1); assertEquals(-1, admin.namespaces().getOffloadThreshold(namespace)); ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); - offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", + offloader = new MockLedgerOffloader(OffloadPoliciesImpl.create("S3", "", "", "", null, null, null, null, - OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, admin.namespaces().getOffloadThreshold(namespace), pulsar.getConfiguration().getManagedLedgerOffloadDeletionLagMs(), - OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY)); + OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY)); ledgerConf.setLedgerOffloader(offloader); assertEquals(ledgerConf.getLedgerOffloader().getOffloadPolicies().getManagedLedgerOffloadThresholdInBytes(), new Long(-1)); @@ -1473,8 +1477,8 @@ public void testMaxTopicsPerNamespace() throws Exception { super.internalSetup(); String namespace = "testTenant/ns1"; - admin.clusters().createCluster("use", new ClusterData(brokerUrl.toString())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), + admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace(namespace, Sets.newHashSet("use")); @@ -1523,7 +1527,7 @@ public void testMaxTopicsPerNamespace() throws Exception { conf.setAllowAutoTopicCreationType("partitioned"); super.internalSetup(); - admin.clusters().createCluster("use", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace(namespace, Sets.newHashSet("use")); admin.namespaces().setMaxTopicsPerNamespace(namespace, 10); @@ -1553,7 +1557,7 @@ public void testMaxTopicsPerNamespace() throws Exception { conf.setAllowAutoTopicCreationType("non-partitioned"); super.internalSetup(); - admin.clusters().createCluster("use", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace(namespace, Sets.newHashSet("use")); admin.namespaces().setMaxTopicsPerNamespace(namespace, 3); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java index 3f3883be4c9f4..7985beff1061b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java @@ -65,9 +65,9 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.zookeeper.ZooKeeperManagedLedgerCache; import org.apache.zookeeper.KeeperException; @@ -128,10 +128,10 @@ protected void setup() throws Exception { doReturn(mock(AuthenticationDataHttps.class)).when(nonPersistentTopic).clientAuthData(); - admin.clusters().createCluster("use", new ClusterData("http://broker-use.com:8080")); - admin.clusters().createCluster("test", new ClusterData("http://broker-use.com:8080")); + admin.clusters().createCluster("use", new ClusterDataImpl("http://broker-use.com:8080")); + admin.clusters().createCluster("test", new ClusterDataImpl("http://broker-use.com:8080")); admin.tenants().createTenant(this.testTenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet(testLocalCluster, "test"))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet(testLocalCluster, "test"))); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet(testLocalCluster, "test")); } @@ -631,7 +631,7 @@ public void testPeekWithSubscriptionNameNotExist() throws Exception { @Test public void testGetLastMessageId() throws Exception { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); final String topicName = "persistent://prop-xyz/ns1/testGetLastMessageId"; @@ -661,7 +661,7 @@ public void testGetLastMessageId() throws Exception { @Test public void testExamineMessage() throws Exception { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("tenant-xyz", tenantInfo); admin.namespaces().createNamespace("tenant-xyz/ns-abc", Sets.newHashSet("test")); final String topicName = "persistent://tenant-xyz/ns-abc/topic-123"; diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/ResourceGroupsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/ResourceGroupsTest.java index 7c240d5f4880a..9183d95b1a937 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/ResourceGroupsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/ResourceGroupsTest.java @@ -24,9 +24,9 @@ import org.apache.pulsar.broker.web.RestException; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.broker.admin.v2.ResourceGroups; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ResourceGroup; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -173,9 +173,9 @@ public void testNamespaceResourceGroup() throws Exception { } private void prepareData() throws PulsarAdminException { - admin.clusters().createCluster(testCluster, new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster(testCluster, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); admin.tenants().createTenant(testTenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet(testCluster))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet(testCluster))); } } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicMessageTTLTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicMessageTTLTest.java index a31cad6ad0a26..710920a9966f0 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicMessageTTLTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicMessageTTLTest.java @@ -24,8 +24,8 @@ import org.apache.pulsar.broker.service.persistent.PersistentTopic; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.Producer; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.eclipse.jetty.http.HttpStatus; import org.testng.Assert; @@ -35,7 +35,6 @@ import java.lang.reflect.Method; import java.util.UUID; -import java.util.concurrent.TimeUnit; @Slf4j @Test(groups = "flaky") @@ -58,8 +57,8 @@ protected void setup() throws Exception { this.conf.setTtlDurationDefaultInSeconds(3600); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(this.testTenant, tenantInfo); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet("test")); admin.topics().createPartitionedTopic(testTopic, 2); @@ -131,8 +130,8 @@ public void testTopicPolicyDisabled() throws Exception { this.conf.setTopicLevelPoliciesEnabled(false); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(this.testTenant, tenantInfo); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet("test")); admin.topics().createPartitionedTopic(testTopic, 2); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesDisableTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesDisableTest.java index bc194b4adaa10..2420a5b2ad873 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesDisableTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesDisableTest.java @@ -23,13 +23,13 @@ import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.policies.data.BacklogQuota; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PublishRate; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscribeRate; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.eclipse.jetty.http.HttpStatus; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -55,8 +55,8 @@ protected void setup() throws Exception { this.conf.setTopicLevelPoliciesEnabled(false); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(this.testTenant, tenantInfo); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet("test")); admin.topics().createPartitionedTopic(testTopic, 2); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java index 7a9fb069417bf..c227870619504 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java @@ -44,7 +44,7 @@ import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.BacklogQuota; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; @@ -52,7 +52,7 @@ import org.apache.pulsar.common.policies.data.PublishRate; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscribeRate; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -98,8 +98,8 @@ protected void setup() throws Exception { this.conf.setDefaultNumberOfNamespaceBundles(1); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(this.testTenant, tenantInfo); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet("test")); admin.topics().createPartitionedTopic(testTopic, 2); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java index 47d8c6028b09e..ed60ef3f63a95 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java @@ -47,8 +47,6 @@ import javax.ws.rs.client.InvocationCallback; import javax.ws.rs.client.WebTarget; -import org.apache.pulsar.broker.ConfigHelper; -import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.broker.PulsarService; import org.apache.pulsar.broker.ServiceConfiguration; import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; @@ -82,22 +80,24 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType; import org.apache.pulsar.common.policies.data.BacklogQuota.RetentionPolicy; import org.apache.pulsar.common.policies.data.BrokerAssignment; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; +import org.apache.pulsar.common.policies.data.PoliciesUtil; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.util.Codec; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -164,8 +164,8 @@ public void setup() throws Exception { otheradmin = mockPulsarSetup.getAdmin(); // Setup namespaces - admin.clusters().createCluster("use", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); + admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/use/ns1"); } @@ -201,26 +201,26 @@ public Object[][] topicTypeProvider() { @Test public void clusters() throws Exception { admin.clusters().createCluster("usw", - new ClusterData("http://broker.messaging.use.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.use.example.com:8080")); // "test" cluster is part of config-default cluster and it's znode gets created when PulsarService creates // failure-domain znode of this default cluster assertEquals(admin.clusters().getClusters(), Lists.newArrayList("use", "usw")); assertEquals(admin.clusters().getCluster("use"), - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.clusters().updateCluster("usw", - new ClusterData("http://new-broker.messaging.usw.example.com:8080")); + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080")); assertEquals(admin.clusters().getClusters(), Lists.newArrayList("use", "usw")); assertEquals(admin.clusters().getCluster("usw"), - new ClusterData("http://new-broker.messaging.usw.example.com:8080")); + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080")); admin.clusters().updateCluster("usw", - new ClusterData("http://new-broker.messaging.usw.example.com:8080", + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080", "https://new-broker.messaging.usw.example.com:4443")); assertEquals(admin.clusters().getClusters(), Lists.newArrayList("use", "usw")); assertEquals(admin.clusters().getCluster("usw"), - new ClusterData("http://new-broker.messaging.usw.example.com:8080", + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080", "https://new-broker.messaging.usw.example.com:4443")); admin.clusters().deleteCluster("usw"); @@ -234,7 +234,7 @@ public void clusters() throws Exception { // Check name validation try { - admin.clusters().createCluster("bf!", new ClusterData("http://dummy.messaging.example.com")); + admin.clusters().createCluster("bf!", new ClusterDataImpl("http://dummy.messaging.example.com")); fail("should have failed"); } catch (PulsarAdminException e) { assertTrue(e instanceof PreconditionFailedException); @@ -246,7 +246,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { try { // create String policyName1 = "policy-1"; - NamespaceIsolationData nsPolicyData1 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData1 = new NamespaceIsolationDataImpl(); nsPolicyData1.namespaces = new ArrayList<>(); nsPolicyData1.namespaces.add("other/use/other.*"); nsPolicyData1.primary = new ArrayList<>(); @@ -255,7 +255,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { nsPolicyData1.secondary = new ArrayList<>(); nsPolicyData1.secondary.add("prod1-broker.*.messaging.use.example.com"); - nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData1.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData1.auto_failover_policy.parameters = new HashMap<>(); nsPolicyData1.auto_failover_policy.parameters.put("min_limit", "1"); @@ -263,14 +263,14 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { admin.clusters().createNamespaceIsolationPolicy("use", policyName1, nsPolicyData1); String policyName2 = "policy-2"; - NamespaceIsolationData nsPolicyData2 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData2 = new NamespaceIsolationDataImpl(); nsPolicyData2.namespaces = new ArrayList<>(); nsPolicyData2.namespaces.add("other/use/other.*"); nsPolicyData2.primary = new ArrayList<>(); nsPolicyData2.primary.add("prod1-broker[4-6].messaging.use.example.com"); nsPolicyData2.secondary = new ArrayList<>(); nsPolicyData2.secondary.add("prod1-broker.*.messaging.use.example.com"); - nsPolicyData2.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData2.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData2.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData2.auto_failover_policy.parameters = new HashMap<>(); nsPolicyData2.auto_failover_policy.parameters.put("min_limit", "1"); @@ -278,14 +278,14 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { admin.clusters().createNamespaceIsolationPolicy("use", policyName2, nsPolicyData2); // verify create indirectly with get - Map policiesMap = admin.clusters().getNamespaceIsolationPolicies("use"); + Map policiesMap = admin.clusters().getNamespaceIsolationPolicies("use"); assertEquals(policiesMap.get(policyName1), nsPolicyData1); assertEquals(policiesMap.get(policyName2), nsPolicyData2); // verify local broker get matched. List isoList = admin.clusters().getBrokersWithNamespaceIsolationPolicy("use"); assertEquals(isoList.size(), 1); - assertTrue(isoList.get(0).isPrimary); + assertTrue(isoList.get(0).isPrimary()); // verify update of primary nsPolicyData1.primary.remove(0); @@ -322,7 +322,8 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { assertEquals(policiesMap.get(policyName1), nsPolicyData1); // verify single get - NamespaceIsolationData policy1Data = admin.clusters().getNamespaceIsolationPolicy("use", policyName1); + NamespaceIsolationDataImpl policy1Data = + (NamespaceIsolationDataImpl) admin.clusters().getNamespaceIsolationPolicy("use", policyName1); assertEquals(policy1Data, nsPolicyData1); // verify creation of more than one policy @@ -575,14 +576,14 @@ public void testGetDynamicLocalConfiguration() throws Exception { @Test public void properties() throws PulsarAdminException { Set allowedClusters = Sets.newHashSet("use"); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), allowedClusters); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), allowedClusters); admin.tenants().updateTenant("prop-xyz", tenantInfo); assertEquals(admin.tenants().getTenants(), Lists.newArrayList("prop-xyz")); assertEquals(admin.tenants().getTenantInfo("prop-xyz"), tenantInfo); - TenantInfo newPropertyAdmin = new TenantInfo(Sets.newHashSet("role3", "role4"), allowedClusters); + TenantInfoImpl newPropertyAdmin = new TenantInfoImpl(Sets.newHashSet("role3", "role4"), allowedClusters); admin.tenants().updateTenant("prop-xyz", newPropertyAdmin); assertEquals(admin.tenants().getTenantInfo("prop-xyz"), newPropertyAdmin); @@ -602,12 +603,12 @@ public void properties() throws PulsarAdminException { @Test public void namespaces() throws Exception { - admin.clusters().createCluster("usw", new ClusterData()); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), + admin.clusters().createCluster("usw", new ClusterDataImpl()); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); - assertEquals(admin.namespaces().getPolicies("prop-xyz/use/ns1").bundles, Policies.defaultBundle()); + assertEquals(admin.namespaces().getPolicies("prop-xyz/use/ns1").bundles, PoliciesUtil.defaultBundle()); admin.namespaces().createNamespace("prop-xyz/use/ns2"); @@ -641,7 +642,7 @@ public void namespaces() throws Exception { admin.namespaces().grantPermissionOnNamespace("prop-xyz/use/ns1", "my-role", EnumSet.allOf(AuthAction.class)); Policies policies = new Policies(); - policies.bundles = Policies.defaultBundle(); + policies.bundles = PoliciesUtil.defaultBundle(); policies.auth_policies.namespace_auth.put("my-role", EnumSet.allOf(AuthAction.class)); assertEquals(admin.namespaces().getPolicies("prop-xyz/use/ns1"), policies); @@ -1688,12 +1689,12 @@ public void persistentTopicsInvalidCursorReset() throws Exception { @Test public void testObjectWithUnknownProperties() { - class CustomPropertyAdmin extends TenantInfo { + class CustomPropertyAdmin extends TenantInfoImpl { @SuppressWarnings("unused") public int newProperty; } - TenantInfo pa = new TenantInfo(Sets.newHashSet("test_appid1", "test_appid2"), Sets.newHashSet("use")); + TenantInfoImpl pa = new TenantInfoImpl(Sets.newHashSet("test_appid1", "test_appid2"), Sets.newHashSet("use")); CustomPropertyAdmin cpa = new CustomPropertyAdmin(); cpa.setAdminRoles(pa.getAdminRoles()); cpa.setAllowedClusters(pa.getAllowedClusters()); @@ -1964,8 +1965,8 @@ public PulsarAdmin getAdmin() { @Test public void testTopicBundleRangeLookup() throws Exception { - admin.clusters().createCluster("usw", new ClusterData()); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), + admin.clusters().createCluster("usw", new ClusterDataImpl()); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/use/getBundleNs", 100); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java index 2410843ba41d6..71f64b4307f0f 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java @@ -59,15 +59,16 @@ import org.apache.pulsar.client.impl.MessageIdImpl; import org.apache.pulsar.common.naming.TopicDomain; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ConsumerStats; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.NonPersistentTopicStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.TopicStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscriptionStats; import org.testng.annotations.AfterMethod; @@ -93,8 +94,8 @@ public void setup() throws Exception { mockPulsarSetup.setup(); // Setup namespaces - admin.clusters().createCluster("use", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); + admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/use/ns1"); } @@ -549,13 +550,13 @@ public void testLoadReportApi() throws Exception { @Test public void testPeerCluster() throws Exception { admin.clusters().createCluster("us-west1", - new ClusterData("http://broker.messaging.west1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west1.example.com:8080")); admin.clusters().createCluster("us-west2", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-east1", - new ClusterData("http://broker.messaging.east1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.east1.example.com:8080")); admin.clusters().createCluster("us-east2", - new ClusterData("http://broker.messaging.east2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.east2.example.com:8080")); admin.clusters().updatePeerClusterNames("us-west1", Sets.newLinkedHashSet(Lists.newArrayList("us-west2"))); assertEquals(admin.clusters().getCluster("us-west1").getPeerClusterNames(), Lists.newArrayList("us-west2")); @@ -594,23 +595,23 @@ public void testPeerCluster() throws Exception { @Test public void testReplicationPeerCluster() throws Exception { admin.clusters().createCluster("us-west1", - new ClusterData("http://broker.messaging.west1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west1.example.com:8080")); admin.clusters().createCluster("us-west2", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-west3", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-west4", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-east1", - new ClusterData("http://broker.messaging.east1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.east1.example.com:8080")); admin.clusters().createCluster("us-east2", - new ClusterData("http://broker.messaging.east2.example.com:8080")); - admin.clusters().createCluster("global", new ClusterData()); + new ClusterDataImpl("http://broker.messaging.east2.example.com:8080")); + admin.clusters().createCluster("global", new ClusterDataImpl()); final String property = "peer-prop"; Set allowedClusters = Sets.newHashSet("us-west1", "us-west2", "us-west3", "us-west4", "us-east1", "us-east2"); - TenantInfo propConfig = new TenantInfo(Sets.newHashSet("test"), allowedClusters); + TenantInfoImpl propConfig = new TenantInfoImpl(Sets.newHashSet("test"), allowedClusters); admin.tenants().createTenant(property, propConfig); final String namespace = property + "/global/conflictPeer"; @@ -648,9 +649,9 @@ public void clusterFailureDomain() throws PulsarAdminException { final String cluster = pulsar.getConfiguration().getClusterName(); admin.clusters().createCluster(cluster, - new ClusterData(pulsar.getSafeWebServiceAddress(), pulsar.getWebServiceAddressTls())); + new ClusterDataImpl(pulsar.getSafeWebServiceAddress(), pulsar.getWebServiceAddressTls())); // create - FailureDomain domain = new FailureDomain(); + FailureDomainImpl domain = new FailureDomainImpl(); domain.setBrokers(Sets.newHashSet("b1", "b2", "b3")); admin.clusters().createFailureDomain(cluster, "domain-1", domain); admin.clusters().updateFailureDomain(cluster, "domain-1", domain); @@ -789,7 +790,7 @@ public void testPublishConsumerStats() throws Exception { @Test public void testTenantNameWithUnderscore() throws Exception { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("prop_xyz", tenantInfo); admin.namespaces().createNamespace("prop_xyz/use/my-namespace"); @@ -809,7 +810,7 @@ public void testTenantNameWithUnderscore() throws Exception { @Test public void testTenantNameWithInvalidCharacters() throws Exception { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); // If we try to create property with invalid characters, it should fail immediately try { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v3/AdminApiTransactionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v3/AdminApiTransactionTest.java index 34ec6c0005cf0..cad1f18c4c96d 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v3/AdminApiTransactionTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v3/AdminApiTransactionTest.java @@ -36,9 +36,9 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicDomain; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ManagedLedgerInternalStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TransactionBufferStats; import org.apache.pulsar.common.policies.data.TransactionCoordinatorInternalStats; import org.apache.pulsar.common.policies.data.TransactionCoordinatorStats; @@ -72,8 +72,8 @@ protected void setup() throws Exception { conf.setSystemTopicEnabled(true); conf.setTransactionBufferSnapshotMaxTransactionCount(1); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("pulsar", tenantInfo); admin.namespaces().createNamespace("pulsar/system", Sets.newHashSet("test")); admin.tenants().createTenant("public", tenantInfo); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthLogsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthLogsTest.java index bb9f54166aa83..d128e957fcd58 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthLogsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthLogsTest.java @@ -20,8 +20,8 @@ import static org.testng.Assert.fail; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; @@ -69,9 +69,9 @@ public void setup() throws Exception { try (PulsarAdmin admin = PulsarAdmin.builder() .authentication(new MockAuthentication("pass.pass")) .serviceHttpUrl(brokerUrl.toString()).build()) { - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("public/default"); admin.namespaces().setNamespaceReplicationClusters("public/default", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthorizationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthorizationTest.java index 5c68a7bde34b1..5e5e7421064fa 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthorizationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthorizationTest.java @@ -28,8 +28,8 @@ import org.apache.pulsar.client.admin.PulsarAdminBuilder; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.SubscriptionAuthMode; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; @@ -74,8 +74,8 @@ public void simple() throws Exception { assertFalse(auth.canLookup(TopicName.get("persistent://p1/c1/ns1/ds1"), "my-role", null)); - admin.clusters().createCluster("c1", new ClusterData()); - admin.tenants().createTenant("p1", new TenantInfo(Sets.newHashSet("role1"), Sets.newHashSet("c1"))); + admin.clusters().createCluster("c1", new ClusterDataImpl()); + admin.tenants().createTenant("p1", new TenantInfoImpl(Sets.newHashSet("role1"), Sets.newHashSet("c1"))); waitForChange(); admin.namespaces().createNamespace("p1/c1/ns1"); waitForChange(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockAuthorizationProvider.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockAuthorizationProvider.java index 421da4fec81a2..f61b0de5b4bc3 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockAuthorizationProvider.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockAuthorizationProvider.java @@ -31,7 +31,7 @@ import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.PolicyName; import org.apache.pulsar.common.policies.data.PolicyOperation; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.NamespaceOperation; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; @@ -58,7 +58,7 @@ public CompletableFuture isSuperUser(String role, ServiceConfiguration } @Override - public CompletableFuture isTenantAdmin(String tenant, String role, TenantInfo tenantInfo, + public CompletableFuture isTenantAdmin(String tenant, String role, TenantInfoImpl tenantInfo, AuthenticationDataSource authenticationData) { return roleAuthorizedAsync(role); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java index 2175a3a231ad8..ac5f104ec1b64 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java @@ -23,7 +23,7 @@ import static org.mockito.Mockito.spy; import com.google.common.collect.Sets; import com.google.common.util.concurrent.MoreExecutors; -import com.google.common.util.concurrent.ThreadFactoryBuilder; + import java.lang.reflect.Field; import io.netty.channel.EventLoopGroup; import java.net.URI; @@ -34,8 +34,6 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.function.Predicate; import java.util.function.Supplier; @@ -56,8 +54,8 @@ import org.apache.pulsar.client.api.ClientBuilder; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.apache.pulsar.tests.TestRetrySupport; import org.apache.pulsar.zookeeper.ZooKeeperClientFactory; @@ -312,14 +310,14 @@ protected void waitForZooKeeperWatchers() { } } - protected TenantInfo createDefaultTenantInfo() throws PulsarAdminException { + protected TenantInfoImpl createDefaultTenantInfo() throws PulsarAdminException { // create local cluster if not exist if (!admin.clusters().getClusters().contains(configClusterName)) { - admin.clusters().createCluster(configClusterName, new ClusterData()); + admin.clusters().createCluster(configClusterName, new ClusterDataImpl()); } Set allowedClusters = Sets.newHashSet(); allowedClusters.add(configClusterName); - return new TenantInfo(Sets.newHashSet(), allowedClusters); + return new TenantInfoImpl(Sets.newHashSet(), allowedClusters); } public static MockZooKeeper createMockZooKeeper() throws Exception { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java index a827912df1e5f..f125984cb0f66 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java @@ -55,9 +55,9 @@ import org.apache.pulsar.common.naming.NamespaceBundles; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.ServiceUnitId; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet; @@ -168,7 +168,7 @@ void shutdown() throws Exception { private void createCluster(ZooKeeper zk, ServiceConfiguration config) throws Exception { ZkUtils.createFullPathOptimistic(zk, "/admin/clusters/" + config.getClusterName(), ObjectMapperFactory.getThreadLocal().writeValueAsBytes( - new ClusterData("http://" + config.getAdvertisedAddress() + ":" + config.getWebServicePort().get())), + new ClusterDataImpl("http://" + config.getAdvertisedAddress() + ":" + config.getWebServicePort().get())), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } @@ -211,7 +211,7 @@ public void testAntiAffinityNamespaceFilteringWithDomain() throws Exception { pulsar1.getConfiguration().setFailureDomainsEnabled(true); admin1.tenants().createTenant("my-tenant", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); for (int i = 0; i < totalNamespaces; i++) { final String ns = namespace + i; @@ -307,7 +307,7 @@ public void testAntiAffinityNamespaceFilteringWithoutDomain() throws Exception { final String bundle = "/0x00000000_0xffffffff"; admin1.tenants().createTenant("my-tenant", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); for (int i = 0; i < totalNamespaces; i++) { final String ns = namespace + i; @@ -402,15 +402,15 @@ public void testBrokerSelectionForAntiAffinityGroup() throws Exception { final String namespace2 = tenant + "/" + cluster + "/ns2"; final String namespaceAntiAffinityGroup = "group"; - FailureDomain domain1 = new FailureDomain(); + FailureDomainImpl domain1 = new FailureDomainImpl(); domain1.brokers = Sets.newHashSet(broker1); admin1.clusters().createFailureDomain(cluster, "domain1", domain1); - FailureDomain domain2 = new FailureDomain(); + FailureDomainImpl domain2 = new FailureDomainImpl(); domain2.brokers = Sets.newHashSet(broker2); admin1.clusters().createFailureDomain(cluster, "domain2", domain2); - admin1.tenants().createTenant(tenant, new TenantInfo(null, Sets.newHashSet(cluster))); + admin1.tenants().createTenant(tenant, new TenantInfoImpl(null, Sets.newHashSet(cluster))); admin1.namespaces().createNamespace(namespace1); admin1.namespaces().createNamespace(namespace2); @@ -460,7 +460,7 @@ public void testLoadSheddingUtilWithAntiAffinityNamespace() throws Exception { final String bundle = "/0x00000000_0xffffffff"; admin1.tenants().createTenant("my-tenant", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); for (int i = 0; i < totalNamespaces; i++) { final String ns = namespace + i; @@ -513,7 +513,7 @@ public void testLoadSheddingWithAntiAffinityNamespace() throws Exception { final String bundle = "0x00000000_0xffffffff"; admin1.tenants().createTenant("my-tenant", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); for (int i = 0; i < totalNamespaces; i++) { final String ns = namespace + i; diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LeaderElectionServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LeaderElectionServiceTest.java index 5f0a1fb61defe..b1fd3682bf78b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LeaderElectionServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LeaderElectionServiceTest.java @@ -33,8 +33,8 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.functions.worker.WorkerService; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.mockito.Mockito; @@ -87,8 +87,8 @@ public void anErrorShouldBeThrowBeforeLeaderElected() throws PulsarServerExcepti final String namespace = "ns"; @Cleanup PulsarAdmin adminClient = PulsarAdmin.builder().serviceHttpUrl(pulsar.getWebServiceAddress()).build(); - adminClient.clusters().createCluster(clusterName, new ClusterData(pulsar.getWebServiceAddress())); - adminClient.tenants().createTenant(tenant, new TenantInfo(Sets.newHashSet("appid1", "appid2"), + adminClient.clusters().createCluster(clusterName, new ClusterDataImpl(pulsar.getWebServiceAddress())); + adminClient.tenants().createTenant(tenant, new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(clusterName))); adminClient.namespaces().createNamespace(tenant + "/" + namespace, 16); @Cleanup diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java index 073694d4be610..d48c2caeedd0b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java @@ -51,10 +51,10 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.internal.NamespacesImpl; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BundlesData; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; @@ -708,7 +708,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { NamespaceIsolationPolicies policies = new NamespaceIsolationPolicies(); // set up policy that use this broker as primary - NamespaceIsolationData policyData = new NamespaceIsolationData(); + NamespaceIsolationDataImpl policyData = new NamespaceIsolationDataImpl(); policyData.namespaces = new ArrayList(); policyData.namespaces.add("pulsar/use/primary-ns.*"); policyData.primary = new ArrayList(); @@ -716,7 +716,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { policyData.primary.add(pulsarServices[i].getAdvertisedAddress()); } policyData.secondary = new ArrayList(); - policyData.auto_failover_policy = new AutoFailoverPolicyData(); + policyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); policyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; policyData.auto_failover_policy.parameters = new HashMap<>(); policyData.auto_failover_policy.parameters.put("min_limit", "1"); @@ -724,7 +724,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { policies.setPolicy("primaryBrokerPolicy", policyData); // set up policy that use this broker as secondary - policyData = new NamespaceIsolationData(); + policyData = new NamespaceIsolationDataImpl(); policyData.namespaces = new ArrayList(); policyData.namespaces.add("pulsar/use/secondary-ns.*"); policyData.primary = new ArrayList(); @@ -733,7 +733,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { for (int i = 1; i < BROKER_COUNT; i++) { policyData.secondary.add(pulsarServices[i].getAdvertisedAddress()); } - policyData.auto_failover_policy = new AutoFailoverPolicyData(); + policyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); policyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; policyData.auto_failover_policy.parameters = new HashMap(); policyData.auto_failover_policy.parameters.put("min_limit", "1"); @@ -741,7 +741,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { policies.setPolicy("secondaryBrokerPolicy", policyData); // set up policy that do not use this broker (neither primary nor secondary) - policyData = new NamespaceIsolationData(); + policyData = new NamespaceIsolationDataImpl(); policyData.namespaces = new ArrayList(); policyData.namespaces.add("pulsar/use/shared-ns.*"); policyData.primary = new ArrayList(); @@ -750,7 +750,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { for (int i = 1; i < BROKER_COUNT; i++) { policyData.secondary.add(pulsarServices[i].getAdvertisedAddress()); } - policyData.auto_failover_policy = new AutoFailoverPolicyData(); + policyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); policyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; policyData.auto_failover_policy.parameters = new HashMap(); policyData.auto_failover_policy.parameters.put("min_limit", "1"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java index 3414afbfbdb56..575a418d6aadd 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java @@ -68,9 +68,9 @@ import org.apache.pulsar.common.naming.NamespaceBundles; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.ServiceUnitId; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.metadata.api.Notification; import org.apache.pulsar.metadata.api.NotificationType; @@ -493,9 +493,9 @@ public void testNamespaceIsolationPoliciesForPrimaryAndSecondaryBrokers() throws final String broker1Address = pulsar1.getAdvertisedAddress() + "0"; final String broker2Address = pulsar2.getAdvertisedAddress() + "1"; final String sharedBroker = "broker3"; - admin1.clusters().createCluster(cluster, new ClusterData("http://" + pulsar1.getAdvertisedAddress())); + admin1.clusters().createCluster(cluster, new ClusterDataImpl("http://" + pulsar1.getAdvertisedAddress())); admin1.tenants().createTenant(tenant, - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(cluster))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(cluster))); admin1.namespaces().createNamespace(tenant + "/" + cluster + "/" + namespace); // set a new policy @@ -505,8 +505,8 @@ public void testNamespaceIsolationPoliciesForPrimaryAndSecondaryBrokers() throws broker2Address, 1); String newPolicyName = "my-ns-isolation-policies"; ObjectMapper jsonMapper = ObjectMapperFactory.create(); - NamespaceIsolationData nsPolicyData = jsonMapper.readValue(newPolicyJson.getBytes(), - NamespaceIsolationData.class); + NamespaceIsolationDataImpl nsPolicyData = jsonMapper.readValue(newPolicyJson.getBytes(), + NamespaceIsolationDataImpl.class); admin1.clusters().createNamespaceIsolationPolicy("use", newPolicyName, nsPolicyData); SimpleResourceAllocationPolicies simpleResourceAllocationPolicies = new SimpleResourceAllocationPolicies( @@ -553,7 +553,7 @@ public boolean isEnableNonPersistentTopics(String brokerUrl) { newPolicyJson = String.format(newPolicyJsonTemplate, tenant, cluster, namespace, broker1Address, broker2Address, 2); - nsPolicyData = jsonMapper.readValue(newPolicyJson.getBytes(), NamespaceIsolationData.class); + nsPolicyData = jsonMapper.readValue(newPolicyJson.getBytes(), NamespaceIsolationDataImpl.class); admin1.clusters().createNamespaceIsolationPolicy("use", newPolicyName, nsPolicyData); // test1: shared=1, primary=1, secondary=1 => It should return primary + secondary diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java index 4307955fa5dda..5e19d4fa0b434 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java @@ -67,9 +67,9 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.NamespaceName; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -174,14 +174,14 @@ void shutdown() throws Exception { private void createNamespacePolicies(PulsarService pulsar) throws Exception { NamespaceIsolationPolicies policies = new NamespaceIsolationPolicies(); // set up policy that use this broker as primary - NamespaceIsolationData policyData = new NamespaceIsolationData(); + NamespaceIsolationDataImpl policyData = new NamespaceIsolationDataImpl(); policyData.namespaces = new ArrayList<>(); policyData.namespaces.add("pulsar/use/primary-ns.*"); policyData.primary = new ArrayList<>(); policyData.primary.add(pulsar1.getAdvertisedAddress() + "*"); policyData.secondary = new ArrayList<>(); policyData.secondary.add("prod2-broker([78]).messaging.usw.example.co.*"); - policyData.auto_failover_policy = new AutoFailoverPolicyData(); + policyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); policyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; policyData.auto_failover_policy.parameters = new HashMap<>(); policyData.auto_failover_policy.parameters.put("min_limit", "1"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/lookup/http/HttpTopicLookupv2Test.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/lookup/http/HttpTopicLookupv2Test.java index 8fb06af370c83..a5642528700c1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/lookup/http/HttpTopicLookupv2Test.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/lookup/http/HttpTopicLookupv2Test.java @@ -51,7 +51,7 @@ import org.apache.pulsar.broker.web.PulsarWebResource; import org.apache.pulsar.broker.web.RestException; import org.apache.pulsar.common.naming.TopicDomain; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.zookeeper.ZooKeeperChildrenCache; import org.apache.pulsar.zookeeper.ZooKeeperDataCache; @@ -73,7 +73,7 @@ public class HttpTopicLookupv2Test { private ServiceConfiguration config; private ConfigurationCacheService mockConfigCache; private ZooKeeperChildrenCache clustersListCache; - private ZooKeeperDataCache clustersCache; + private ZooKeeperDataCache clustersCache; private ZooKeeperDataCache policiesCache; private Set clusters; @@ -93,9 +93,9 @@ public void setUp() throws Exception { clusters.add("use"); clusters.add("usc"); clusters.add("usw"); - ClusterData useData = new ClusterData("http://broker.messaging.use.example.com:8080"); - ClusterData uscData = new ClusterData("http://broker.messaging.usc.example.com:8080"); - ClusterData uswData = new ClusterData("http://broker.messaging.usw.example.com:8080"); + ClusterDataImpl useData = new ClusterDataImpl("http://broker.messaging.use.example.com:8080"); + ClusterDataImpl uscData = new ClusterDataImpl("http://broker.messaging.usc.example.com:8080"); + ClusterDataImpl uswData = new ClusterDataImpl("http://broker.messaging.usw.example.com:8080"); doReturn(config).when(pulsar).getConfiguration(); doReturn(mockConfigCache).when(pulsar).getConfigurationCache(); doReturn(clustersListCache).when(mockConfigCache).clustersListCache(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipCacheForCurrentServerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipCacheForCurrentServerTest.java index 8d5fe5ac31a6b..7c85c3a1d8474 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipCacheForCurrentServerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipCacheForCurrentServerTest.java @@ -21,8 +21,8 @@ import com.google.common.collect.Sets; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -40,9 +40,9 @@ protected void setup() throws Exception { internalSetup(); String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE); admin.topics().createNonPartitionedTopic(TOPIC_TEST); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupServiceTest.java index df2e6a4128fdb..2f9a00c1e39ae 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupServiceTest.java @@ -29,7 +29,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.AfterClass; @@ -245,6 +245,6 @@ public void testResourceGroupOps() throws PulsarAdminException, InterruptedExcep private static final int PUBLISH_INTERVAL_SECS = 500; private void prepareData() throws PulsarAdminException { this.conf.setResourceUsageTransportPublishIntervalInSecs(PUBLISH_INTERVAL_SECS); - admin.clusters().createCluster("test", new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getBrokerServiceUrl())); } } \ No newline at end of file diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupUsageAggregationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupUsageAggregationTest.java index a8892b2ea8300..de5aee659d5cb 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupUsageAggregationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupUsageAggregationTest.java @@ -32,11 +32,9 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; @@ -251,9 +249,9 @@ private void prepareData() throws PulsarAdminException { this.conf.setAllowAutoTopicCreation(true); final String clusterName = "test"; - admin.clusters().createCluster(clusterName, new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster(clusterName, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); admin.tenants().createTenant(TenantName, - new TenantInfo(Sets.newHashSet("fakeAdminRole"), Sets.newHashSet(clusterName))); + new TenantInfoImpl(Sets.newHashSet("fakeAdminRole"), Sets.newHashSet(clusterName))); admin.namespaces().createNamespace(TenantAndNsName); admin.namespaces().setNamespaceReplicationClusters(TenantAndNsName, Sets.newHashSet(clusterName)); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManagerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManagerTest.java index 89246d8d609de..1f9f735c9c078 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManagerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManagerTest.java @@ -23,7 +23,7 @@ import org.apache.pulsar.broker.service.resource.usage.ResourceUsage; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -115,6 +115,6 @@ public void acceptResourceUsage(String broker, ResourceUsage resourceUsage) { private void prepareData() throws PulsarAdminException { this.conf.setResourceUsageTransportClassName("org.apache.pulsar.broker.resourcegroup.ResourceUsageTransportManager"); this.conf.setResourceUsageTransportPublishIntervalInSecs(PUBLISH_INTERVAL_SECS); - admin.clusters().createCluster("test", new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getBrokerServiceUrl())); } } \ No newline at end of file diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java index e73c437e81b49..f960e01c55499 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java @@ -46,9 +46,9 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.common.policies.data.BacklogQuota; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.awaitility.Awaitility; @@ -99,9 +99,9 @@ void setup() throws Exception { adminUrl = new URL("http://127.0.0.1" + ":" + pulsar.getListenPortHTTP().get()); admin = PulsarAdmin.builder().serviceHttpUrl(adminUrl.toString()).build(); - admin.clusters().createCluster("usc", new ClusterData(adminUrl.toString())); + admin.clusters().createCluster("usc", new ClusterDataImpl(adminUrl.toString())); admin.tenants().createTenant("prop", - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("usc"))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet("usc"))); admin.namespaces().createNamespace("prop/ns-quota"); admin.namespaces().setNamespaceReplicationClusters("prop/ns-quota", Sets.newHashSet("usc")); admin.namespaces().createNamespace("prop/quotahold"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BkEnsemblesTestBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BkEnsemblesTestBase.java index 68fc1ed50884f..fbc4a9986fd55 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BkEnsemblesTestBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BkEnsemblesTestBase.java @@ -24,8 +24,8 @@ import org.apache.pulsar.broker.PulsarService; import org.apache.pulsar.broker.ServiceConfiguration; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.tests.TestRetrySupport; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.testng.Assert; @@ -98,9 +98,9 @@ protected void setup() throws Exception { admin = PulsarAdmin.builder().serviceHttpUrl(pulsar.getWebServiceAddress()).build(); - admin.clusters().createCluster("usc", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("usc", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("prop", - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("usc"))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet("usc"))); } catch (Throwable t) { log.error("Error setting up broker test", t); Assert.fail("Broker test setup failed"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBookieIsolationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBookieIsolationTest.java index b30150c691a98..1a7df976d93d7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBookieIsolationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBookieIsolationTest.java @@ -62,9 +62,9 @@ import org.apache.pulsar.common.policies.data.BookieAffinityGroupData; import org.apache.pulsar.common.policies.data.BookieInfo; import org.apache.pulsar.common.policies.data.BookiesRackConfiguration; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfig; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.apache.pulsar.zookeeper.ZkBookieRackAffinityMapping; @@ -167,9 +167,9 @@ public void testBookieIsolation() throws Exception { PulsarAdmin admin = PulsarAdmin.builder().serviceHttpUrl(pulsarService.getWebServiceAddress()).build(); - ClusterData clusterData = new ClusterData(pulsarService.getWebServiceAddress()); + ClusterDataImpl clusterData = new ClusterDataImpl(pulsarService.getWebServiceAddress()); admin.clusters().createCluster(cluster, clusterData); - TenantInfo tenantInfo = new TenantInfo(null, Sets.newHashSet(cluster)); + TenantInfoImpl tenantInfo = new TenantInfoImpl(null, Sets.newHashSet(cluster)); admin.tenants().createTenant(tenant1, tenantInfo); admin.namespaces().createNamespace(ns1); admin.namespaces().createNamespace(ns2); @@ -310,9 +310,9 @@ public void testBookieIsolationWithSecondaryGroup() throws Exception { PulsarAdmin admin = PulsarAdmin.builder().serviceHttpUrl(pulsarService.getWebServiceAddress()).build(); - ClusterData clusterData = new ClusterData(pulsarService.getWebServiceAddress()); + ClusterDataImpl clusterData = new ClusterDataImpl(pulsarService.getWebServiceAddress()); admin.clusters().createCluster(cluster, clusterData); - TenantInfo tenantInfo = new TenantInfo(null, Sets.newHashSet(cluster)); + TenantInfoImpl tenantInfo = new TenantInfoImpl(null, Sets.newHashSet(cluster)); admin.tenants().createTenant(tenant1, tenantInfo); admin.namespaces().createNamespace(ns1); admin.namespaces().createNamespace(ns2); @@ -432,9 +432,9 @@ public void testDeleteIsolationGroup() throws Exception { PulsarAdmin admin = PulsarAdmin.builder().serviceHttpUrl(pulsarService.getWebServiceAddress()).build(); - ClusterData clusterData = new ClusterData(pulsarService.getWebServiceAddress()); + ClusterDataImpl clusterData = new ClusterDataImpl(pulsarService.getWebServiceAddress()); admin.clusters().createCluster(cluster, clusterData); - TenantInfo tenantInfo = new TenantInfo(null, Sets.newHashSet(cluster)); + TenantInfoImpl tenantInfo = new TenantInfoImpl(null, Sets.newHashSet(cluster)); admin.tenants().createTenant(tenant1, tenantInfo); admin.namespaces().createNamespace(ns2); admin.namespaces().createNamespace(ns3); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java index 96272348eeb23..380786abd726a 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java @@ -30,6 +30,7 @@ import static org.testng.Assert.fail; import com.google.common.collect.Lists; import com.google.common.collect.Sets; +import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import java.io.BufferedReader; @@ -366,7 +367,8 @@ public void testBrokerStatsMetrics() throws Exception { } consumer.close(); Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT); - JsonArray metrics = brokerStatsClient.getMetrics(); + String json = brokerStatsClient.getMetrics(); + JsonArray metrics = new Gson().fromJson(json, JsonArray.class); // these metrics seem to be arriving in different order at different times... // is the order really relevant here? @@ -414,7 +416,8 @@ public void testBrokerServiceNamespaceStats() throws Exception { } rolloverPerIntervalStats(); - JsonObject topicStats = brokerStatsClient.getTopics(); + String json = brokerStatsClient.getTopics(); + JsonObject topicStats = new Gson().fromJson(json, JsonObject.class); assertEquals(topicStats.size(), 2, topicStats.toString()); for (String ns : nsList) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java index 4830efbb6861f..b00ac20d80f52 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java @@ -18,11 +18,10 @@ */ package org.apache.pulsar.broker.service; -import org.apache.pulsar.broker.PulsarService; import org.apache.pulsar.broker.ServiceConfiguration; import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,9 +43,9 @@ public void baseSetup(ServiceConfiguration serviceConfiguration) throws Exceptio } private void baseSetupCommon() throws Exception { - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("prop", - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("prop/ns-abc"); admin.namespaces().setNamespaceReplicationClusters("prop/ns-abc", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/MaxMessageSizeTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/MaxMessageSizeTest.java index b0dcb83d3c9ce..4b80bcb1a43f3 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/MaxMessageSizeTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/MaxMessageSizeTest.java @@ -32,8 +32,8 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -76,9 +76,9 @@ void setup() { String url = "http://127.0.0.1:" + pulsar.getListenPortHTTP().get(); admin = PulsarAdmin.builder().serviceHttpUrl(url).build(); - admin.clusters().createCluster("max_message_test", new ClusterData(url)); + admin.clusters().createCluster("max_message_test", new ClusterDataImpl(url)); admin.tenants() - .createTenant("test", new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("max_message_test"))); + .createTenant("test", new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet("max_message_test"))); admin.namespaces().createNamespace("test/message", Sets.newHashSet("max_message_test")); } catch (Exception e) { e.printStackTrace(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java index dc23429dfc7b8..fd544f266fc50 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java @@ -71,7 +71,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuota.RetentionPolicy; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ReplicatorStats; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; @@ -206,7 +206,7 @@ public Void call() throws Exception { public void activeBrokerParse() throws Exception { pulsar1.getConfiguration().setAuthorizationEnabled(true); //init clusterData - ClusterData cluster2Data = new ClusterData(); + ClusterDataImpl cluster2Data = new ClusterDataImpl(); String cluster2ServiceUrls = String.format("%s,localhost:1234,localhost:5678", pulsar2.getWebServiceAddress()); cluster2Data.setServiceUrl(cluster2ServiceUrls); String cluster2 = "activeCLuster2"; diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java index aeaacf90bfdff..d81eb1e6ed39f 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java @@ -47,8 +47,8 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.TypedMessageBuilder; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.apache.pulsar.zookeeper.ZookeeperServerTest; import org.slf4j.Logger; @@ -156,15 +156,15 @@ protected void setup() throws Exception { admin3 = PulsarAdmin.builder().serviceHttpUrl(url3.toString()).build(); // Provision the global namespace - admin1.clusters().createCluster("r1", new ClusterData(url1.toString(), urlTls1.toString(), + admin1.clusters().createCluster("r1", new ClusterDataImpl(url1.toString(), urlTls1.toString(), pulsar1.getSafeBrokerServiceUrl(), pulsar1.getBrokerServiceUrlTls())); - admin1.clusters().createCluster("r2", new ClusterData(url2.toString(), urlTls2.toString(), + admin1.clusters().createCluster("r2", new ClusterDataImpl(url2.toString(), urlTls2.toString(), pulsar2.getSafeBrokerServiceUrl(), pulsar2.getBrokerServiceUrlTls())); - admin1.clusters().createCluster("r3", new ClusterData(url3.toString(), urlTls3.toString(), + admin1.clusters().createCluster("r3", new ClusterDataImpl(url3.toString(), urlTls3.toString(), pulsar3.getSafeBrokerServiceUrl(), pulsar3.getBrokerServiceUrlTls())); admin1.tenants().createTenant("pulsar", - new TenantInfo(Sets.newHashSet("appid1", "appid2", "appid3"), Sets.newHashSet("r1", "r2", "r3"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2", "appid3"), Sets.newHashSet("r1", "r2", "r3"))); admin1.namespaces().createNamespace("pulsar/ns", Sets.newHashSet("r1", "r2", "r3")); admin1.namespaces().createNamespace("pulsar/ns1", Sets.newHashSet("r1", "r2")); @@ -176,7 +176,7 @@ protected void setup() throws Exception { assertEquals(admin2.clusters().getCluster("r3").getBrokerServiceUrl(), pulsar3.getSafeBrokerServiceUrl()); // Also create V1 namespace for compatibility check - admin1.clusters().createCluster("global", new ClusterData("http://global:8080", "https://global:8443")); + admin1.clusters().createCluster("global", new ClusterDataImpl("http://global:8080", "https://global:8443")); admin1.namespaces().createNamespace("pulsar/global/ns"); admin1.namespaces().setNamespaceReplicationClusters("pulsar/global/ns", Sets.newHashSet("r1", "r2", "r3")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ResendRequestTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ResendRequestTest.java index c5214e12bead0..6faa62b53dd38 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ResendRequestTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ResendRequestTest.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.api.Consumer; import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.impl.ConsumerBase; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.AfterMethod; @@ -421,7 +421,7 @@ public void testExclusiveSingleAckedPartitionedTopic() throws Exception { final String messagePredicate = "my-message-" + key + "-"; final int totalMessages = 10; final int numberOfPartitions = 4; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName, numberOfPartitions); // Special step to create partitioned topic @@ -477,7 +477,7 @@ public void testSharedSingleAckedPartitionedTopic() throws Exception { final String messagePredicate = "my-message-" + key + "-"; final int totalMessages = 10; final int numberOfPartitions = 3; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName, numberOfPartitions); Random rn = new Random(); @@ -578,7 +578,7 @@ public void testFailoverSingleAckedPartitionedTopic() throws Exception { final String messagePredicate = "my-message-" + key + "-"; final int totalMessages = 10; final int numberOfPartitions = 3; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName, numberOfPartitions); Random rn = new Random(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesServiceTest.java index 4d2b8cf3f003f..79715c23cdb0b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesServiceTest.java @@ -25,8 +25,8 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicPolicies; import org.awaitility.Awaitility; import org.testng.Assert; @@ -205,9 +205,9 @@ public void testCacheCleanup() throws Exception { } private void prepareData() throws PulsarAdminException { - admin.clusters().createCluster("test", new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getBrokerServiceUrl())); admin.tenants().createTenant("system-topic", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet("test"))); admin.namespaces().createNamespace(NAMESPACE1); admin.namespaces().createNamespace(NAMESPACE2); admin.namespaces().createNamespace(NAMESPACE3); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicOwnerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicOwnerTest.java index 6b287bf29dcd8..28cc9da98acf9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicOwnerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicOwnerTest.java @@ -46,8 +46,8 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.api.extended.MetadataStoreExtended; import org.apache.pulsar.metadata.api.extended.SessionEvent; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; @@ -117,8 +117,8 @@ void setup() throws Exception { leaderAdmin = pulsarAdmins[0]; Thread.sleep(1000); - pulsarAdmins[0].clusters().createCluster(testCluster, new ClusterData(pulsarServices[0].getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(); + pulsarAdmins[0].clusters().createCluster(testCluster, new ClusterDataImpl(pulsarServices[0].getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Sets.newHashSet(testCluster)); pulsarAdmins[0].tenants().createTenant(testTenant, tenantInfo); pulsarAdmins[0].namespaces().createNamespace(testNamespace, 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedLedgerMetricsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedLedgerMetricsTest.java index 41ee681f8f912..9d19e3e4a3c26 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedLedgerMetricsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedLedgerMetricsTest.java @@ -32,7 +32,7 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.stats.Metrics; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; import org.apache.pulsar.transaction.coordinator.impl.MLTransactionLogImpl; @@ -97,7 +97,7 @@ public void testManagedLedgerMetrics() throws Exception { @Test public void testTransactionTopic() throws Exception { admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 1); ManagedLedgerConfig managedLedgerConfig = new ManagedLedgerConfig(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/systopic/NamespaceEventsSystemTopicServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/systopic/NamespaceEventsSystemTopicServiceTest.java index eb08913fca727..daaf4a3444b72 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/systopic/NamespaceEventsSystemTopicServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/systopic/NamespaceEventsSystemTopicServiceTest.java @@ -29,8 +29,8 @@ import org.apache.pulsar.common.events.TopicPoliciesEvent; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicPolicies; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -123,9 +123,9 @@ public void checkSystemTopic() throws PulsarAdminException { } private void prepareData() throws PulsarAdminException { - admin.clusters().createCluster("test", new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getBrokerServiceUrl())); admin.tenants().createTenant("system-topic", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet("test"))); admin.namespaces().createNamespace(NAMESPACE1); admin.namespaces().createNamespace(NAMESPACE2); admin.namespaces().createNamespace(NAMESPACE3); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TopicTransactionBufferRecoverTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TopicTransactionBufferRecoverTest.java index c1913ec4e4517..2078b265123d3 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TopicTransactionBufferRecoverTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TopicTransactionBufferRecoverTest.java @@ -53,8 +53,8 @@ import org.apache.pulsar.common.events.EventsTopicNames; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; @@ -85,16 +85,16 @@ protected void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); admin.topics().createNonPartitionedTopic(RECOVER_COMMIT); admin.topics().createNonPartitionedTopic(RECOVER_ABORT); admin.topics().createNonPartitionedTopic(TAKE_SNAPSHOT); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionClientReconnectTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionClientReconnectTest.java index a672149494343..9c5c36614e776 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionClientReconnectTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionClientReconnectTest.java @@ -28,8 +28,8 @@ import org.apache.pulsar.client.impl.transaction.TransactionImpl; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; @@ -53,12 +53,12 @@ public void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace("public/txn", 10); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createNonPartitionedTopic(RECONNECT_TOPIC); admin.topics().createSubscription(RECONNECT_TOPIC, "test", MessageId.latest); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionConsumeTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionConsumeTest.java index 644ea9e3326dc..1d0b28e9d805c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionConsumeTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionConsumeTest.java @@ -42,8 +42,8 @@ import org.apache.pulsar.common.api.proto.MessageIdData; import org.apache.pulsar.common.api.proto.MessageMetadata; import org.apache.pulsar.common.api.proto.TxnAction; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.protocol.Commands; import org.awaitility.Awaitility; import org.testng.Assert; @@ -69,9 +69,9 @@ public void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace("public/txn", 10); admin.topics().createNonPartitionedTopic(CONSUME_TOPIC); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionProduceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionProduceTest.java index a5bae35d6ec48..6b69bf1899ec1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionProduceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionProduceTest.java @@ -56,8 +56,8 @@ import org.apache.pulsar.common.api.proto.MessageMetadata; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.protocol.Commands; import org.awaitility.Awaitility; import org.testng.Assert; @@ -87,9 +87,9 @@ protected void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); admin.topics().createPartitionedTopic(PRODUCE_COMMIT_TOPIC, 3); admin.topics().createPartitionedTopic(PRODUCE_ABORT_TOPIC, 3); @@ -97,7 +97,7 @@ protected void setup() throws Exception { admin.topics().createPartitionedTopic(ACK_ABORT_TOPIC, 3); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionBufferClientTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionBufferClientTest.java index e66333bc8d8a9..5fb58ae42b284 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionBufferClientTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionBufferClientTest.java @@ -54,8 +54,8 @@ import org.apache.pulsar.client.impl.PulsarClientImpl; import org.apache.pulsar.common.api.proto.TxnAction; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.awaitility.Awaitility; import org.mockito.Mockito; @@ -85,8 +85,8 @@ public class TransactionBufferClientTest extends TransactionMetaStoreTestBase { @Override protected void afterSetup() throws Exception { - pulsarAdmins[0].clusters().createCluster("my-cluster", new ClusterData(pulsarServices[0].getWebServiceAddress())); - pulsarAdmins[0].tenants().createTenant("public", new TenantInfo(Sets.newHashSet(), Sets.newHashSet("my-cluster"))); + pulsarAdmins[0].clusters().createCluster("my-cluster", new ClusterDataImpl(pulsarServices[0].getWebServiceAddress())); + pulsarAdmins[0].tenants().createTenant("public", new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet("my-cluster"))); pulsarAdmins[0].namespaces().createNamespace(namespace, 10); pulsarAdmins[0].topics().createPartitionedTopic(partitionedTopicName.getPartitionedTopicName(), partitions); pulsarClient.newConsumer() diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionLowWaterMarkTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionLowWaterMarkTest.java index e7f1b8c7814c4..20d92fb0c7bb7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionLowWaterMarkTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionLowWaterMarkTest.java @@ -56,8 +56,8 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; import org.apache.pulsar.transaction.coordinator.TransactionMetadataStore; @@ -86,13 +86,13 @@ protected void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); admin.topics().createNonPartitionedTopic(TOPIC); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java index 893715395fef5..3c91884ebd67d 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java @@ -39,8 +39,8 @@ import org.apache.pulsar.client.impl.PulsarClientImpl; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -63,13 +63,13 @@ protected void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); admin.topics().createNonPartitionedTopic(TOPIC); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckInMemoryDeleteTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckInMemoryDeleteTest.java index db7d1a81da81e..5ed73f3c47261 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckInMemoryDeleteTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckInMemoryDeleteTest.java @@ -41,8 +41,8 @@ import org.apache.pulsar.client.api.transaction.TxnID; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.collections.BitSetRecyclable; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; @@ -80,12 +80,12 @@ protected void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckPersistentTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckPersistentTest.java index da2442675b5d5..3143916963270 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckPersistentTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckPersistentTest.java @@ -46,8 +46,8 @@ import org.apache.pulsar.client.api.transaction.Transaction; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -68,13 +68,13 @@ public void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace("public/txn", 10); admin.topics().createNonPartitionedTopic(PENDING_ACK_REPLAY_TOPIC); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/WebServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/WebServiceTest.java index 5036f078264b4..ea99572a8d5ed 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/WebServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/WebServiceTest.java @@ -63,8 +63,8 @@ import org.apache.pulsar.client.admin.PulsarAdminBuilder; import org.apache.pulsar.client.admin.PulsarAdminException.ConflictException; import org.apache.pulsar.client.impl.auth.AuthenticationTls; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.SecurityUtility; import org.apache.pulsar.metadata.impl.ZKMetadataStore; @@ -272,7 +272,7 @@ public void testMaxRequestSize() throws Exception { .setHeader("Content-Type", "application/json"); // HTTP server is configured to reject everything > 10K - TenantInfo info1 = new TenantInfo(); + TenantInfoImpl info1 = new TenantInfoImpl(); info1.setAdminRoles(Collections.singleton(StringUtils.repeat("*", 20 * 1024))); builder.setBody(ObjectMapperFactory.getThreadLocal().writeValueAsBytes(info1)); Response res = builder.execute().get(); @@ -283,8 +283,8 @@ public void testMaxRequestSize() throws Exception { // Create local cluster String localCluster = "test"; String clusterPath = PulsarWebResource.path("clusters", localCluster); - pulsar.getPulsarResources().getClusterResources().create(clusterPath, new ClusterData()); - TenantInfo info2 = new TenantInfo(); + pulsar.getPulsarResources().getClusterResources().create(clusterPath, new ClusterDataImpl()); + TenantInfoImpl info2 = new TenantInfoImpl(); info2.setAdminRoles(Collections.singleton(StringUtils.repeat("*", 1 * 1024))); info2.setAllowedClusters(Sets.newHashSet(localCluster)); builder.setBody(ObjectMapperFactory.getThreadLocal().writeValueAsBytes(info2)); @@ -434,7 +434,7 @@ public CompletableFuture create(String serverList, SessionType sessio try { pulsarAdmin.clusters().createCluster(config.getClusterName(), - new ClusterData(pulsar.getSafeWebServiceAddress())); + new ClusterDataImpl(pulsar.getSafeWebServiceAddress())); } catch (ConflictException ce) { // This is OK. } finally { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ZooKeeperSessionExpireRecoveryTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ZooKeeperSessionExpireRecoveryTest.java index 6bf84b3a4dcb6..acd631ed71c6e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ZooKeeperSessionExpireRecoveryTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ZooKeeperSessionExpireRecoveryTest.java @@ -25,7 +25,7 @@ import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.zookeeper.KeeperException.Code; import org.apache.zookeeper.MockZooKeeper; import org.testng.annotations.AfterMethod; @@ -52,7 +52,7 @@ protected void cleanup() throws Exception { */ @Test public void testSessionExpired() throws Exception { - admin.clusters().createCluster("my-cluster", new ClusterData("test-url")); + admin.clusters().createCluster("my-cluster", new ClusterDataImpl("test-url")); assertTrue(Sets.newHashSet(admin.clusters().getClusters()).contains("my-cluster")); @@ -64,12 +64,12 @@ public void testSessionExpired() throws Exception { assertTrue(Sets.newHashSet(admin.clusters().getClusters()).contains("my-cluster")); try { - admin.clusters().createCluster("my-cluster-2", new ClusterData("test-url")); + admin.clusters().createCluster("my-cluster-2", new ClusterDataImpl("test-url")); fail("Should have failed, because global zk is down"); } catch (PulsarAdminException e) { // Ok } - admin.clusters().createCluster("cluster-2", new ClusterData("test-url")); + admin.clusters().createCluster("cluster-2", new ClusterDataImpl("test-url")); } } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java index f6fa07c3123e7..86445b626eb67 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java @@ -37,8 +37,8 @@ import org.apache.pulsar.client.impl.auth.AuthenticationBasic; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.zookeeper.KeeperException.Code; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -171,10 +171,10 @@ public void testTlsSyncProducerAndConsumer(int batchMessageDelayMs) throws Excep authTls.configure(authParams); internalSetup(authTls); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); testSyncProducerAndConsumer(batchMessageDelayMs); @@ -189,10 +189,10 @@ public void testBasicCryptSyncProducerAndConsumer(int batchMessageDelayMs) throw authPassword.configure("{\"userId\":\"superUser\",\"password\":\"supepass\"}"); internalSetup(authPassword); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); testSyncProducerAndConsumer(batchMessageDelayMs); @@ -207,10 +207,10 @@ public void testBasicArp1SyncProducerAndConsumer(int batchMessageDelayMs) throws authPassword.configure("{\"userId\":\"superUser2\",\"password\":\"superpassword\"}"); internalSetup(authPassword); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); testSyncProducerAndConsumer(batchMessageDelayMs); @@ -229,10 +229,10 @@ public void testAnonymousSyncProducerAndConsumer(int batchMessageDelayMs) throws authTls.configure(authParams); internalSetup(authTls); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("anonymousUser"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("anonymousUser"), Sets.newHashSet("test"))); // make a PulsarAdmin instance as "anonymousUser" for http request admin.close(); @@ -270,7 +270,7 @@ public void testAuthenticationFilterNegative() throws Exception { internalSetup(authTls); final String cluster = "test"; - final ClusterData clusterData = new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + final ClusterDataImpl clusterData = new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls()); try { admin.clusters().createCluster(cluster, clusterData); @@ -298,10 +298,10 @@ public void testInternalServerExceptionOnLookup() throws Exception { authTls.configure(authParams); internalSetup(authTls); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); String namespace = "my-property/my-ns"; admin.namespaces().createNamespace(namespace, Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java index 6904943af4996..75ff745ce9f0a 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java @@ -34,8 +34,8 @@ import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.tls.PublicSuffixMatcher; import org.apache.pulsar.common.tls.TlsHostnameVerifier; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.Assert; @@ -117,10 +117,10 @@ protected void setupClient() throws Exception { .tlsTrustCertsFilePath(TLS_MIM_TRUST_CERT_FILE_PATH).allowTlsInsecureConnection(true) .authentication(authTls).enableTls(true).enableTlsHostnameVerification(hostnameVerificationEnabled)); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java index c6751d6504a84..47c23bbef8daf 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java @@ -48,12 +48,11 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceOperation; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; -import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.RestException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -130,10 +129,10 @@ public void testProducerAndConsumerAuthorization() throws Exception { .operationTimeout(1000, TimeUnit.MILLISECONDS) .authentication(authenticationInvalidRole).build(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); // (1) Valid Producer and consumer creation @@ -195,10 +194,10 @@ public void testSubscriberPermission() throws Exception { Authentication authentication = new ClientAuthentication(subscriptionRole); - superAdmin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + superAdmin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); superAdmin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet(tenantRole), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet(tenantRole), Sets.newHashSet("test"))); superAdmin.namespaces().createNamespace(namespace, Sets.newHashSet("test")); tenantAdmin.namespaces().grantPermissionOnNamespace(namespace, subscriptionRole, Collections.singleton(AuthAction.consume)); @@ -292,10 +291,10 @@ public void testSubscriptionPrefixAuthorization() throws Exception { .authentication(authentication)); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("prop-prefix", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("prop-prefix/ns", Sets.newHashSet("test")); // (1) Valid subscription name will be approved by authorization service @@ -513,7 +512,7 @@ public CompletableFuture revokeSubscriptionPermissionAsync(NamespaceName n } @Override - public CompletableFuture isTenantAdmin(String tenant, String role, TenantInfo tenantInfo, AuthenticationDataSource authenticationData) { + public CompletableFuture isTenantAdmin(String tenant, String role, TenantInfoImpl tenantInfo, AuthenticationDataSource authenticationData) { return CompletableFuture.completedFuture(true); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java index 6ce907ceaf661..8fa8d45f159d5 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java @@ -83,8 +83,8 @@ import org.apache.pulsar.common.naming.ServiceUnitId; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.SecurityUtility; import org.apache.pulsar.discovery.service.DiscoveryService; @@ -271,9 +271,9 @@ public void testMultipleBrokerDifferentClusterLookup() throws Exception { String broker2ServiceUrl = "pulsar://localhost:" + conf2.getBrokerServicePort().get(); admin.clusters().createCluster(newCluster, - new ClusterData(pulsar.getWebServiceAddress(), null, broker2ServiceUrl, null)); + new ClusterDataImpl(pulsar.getWebServiceAddress(), null, broker2ServiceUrl, null)); admin.tenants().createTenant(property, - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(newCluster))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(newCluster))); admin.namespaces().createNamespace(property + "/" + newCluster + "/my-ns"); @Cleanup @@ -1085,9 +1085,9 @@ public void testPartitionedMetadataWithDeprecatedVersion() throws Exception { final int totalPartitions = 10; final TopicName dest = TopicName.get("persistent", property, cluster, namespace, topicName); admin.clusters().createCluster(cluster, - new ClusterData(pulsar.getWebServiceAddress(), null, null, null)); + new ClusterDataImpl(pulsar.getWebServiceAddress(), null, null, null)); admin.tenants().createTenant(property, - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(cluster))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(cluster))); admin.namespaces().createNamespace(property + "/" + cluster + "/" + namespace); admin.topics().createPartitionedTopic(dest.toString(), totalPartitions); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationFailureTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationFailureTest.java index 18de76eed9a10..b28c39b88b3fd 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationFailureTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationFailureTest.java @@ -46,9 +46,9 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.impl.BatchMessageIdImpl; import org.apache.pulsar.client.impl.MessageIdImpl; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.RetentionPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.testng.annotations.AfterMethod; @@ -106,7 +106,7 @@ void setup(Method method) throws Exception { primaryHost = pulsar.getWebServiceAddress(); // update cluster metadata - ClusterData clusterData = new ClusterData(url.toString()); + ClusterDataImpl clusterData = new ClusterDataImpl(url.toString()); admin.clusters().createCluster(config.getClusterName(), clusterData); if (pulsarClient != null) { @@ -115,7 +115,7 @@ void setup(Method method) throws Exception { ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(pulsar.getBrokerServiceUrl()).maxBackoffInterval(1, TimeUnit.SECONDS); pulsarClient = clientBuilder.build(); - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); admin.tenants().createTenant(tenant, tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MessageDispatchThrottlingTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MessageDispatchThrottlingTest.java index 7bb2699108688..e58f21a5c4799 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MessageDispatchThrottlingTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MessageDispatchThrottlingTest.java @@ -38,7 +38,7 @@ import org.apache.pulsar.broker.service.BrokerService; import org.apache.pulsar.broker.service.persistent.DispatchRateLimiter; import org.apache.pulsar.broker.service.persistent.PersistentTopic; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.Policies; import org.slf4j.Logger; @@ -668,7 +668,7 @@ public void testGlobalNamespaceThrottling() throws Exception { final int messageRate = 5; DispatchRate dispatchRate = new DispatchRate(messageRate, -1, 360); - admin.clusters().createCluster("global", new ClusterData("http://global:8080")); + admin.clusters().createCluster("global", new ClusterDataImpl("http://global:8080")); admin.namespaces().createNamespace(namespace); admin.namespaces().setNamespaceReplicationClusters(namespace, Sets.newHashSet("test")); admin.namespaces().setDispatchRate(namespace, dispatchRate); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java index deaee353c7e26..a766b40e5cf21 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java @@ -59,12 +59,12 @@ import org.apache.pulsar.client.impl.ProducerImpl; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NonPersistentPublisherStats; import org.apache.pulsar.common.policies.data.NonPersistentSubscriptionStats; import org.apache.pulsar.common.policies.data.NonPersistentTopicStats; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.apache.pulsar.zookeeper.ZookeeperServerTest; import org.slf4j.Logger; @@ -1004,15 +1004,15 @@ void setupReplicationCluster() throws Exception { admin3 = PulsarAdmin.builder().serviceHttpUrl(url3.toString()).build(); // Provision the global namespace - admin1.clusters().createCluster("r1", new ClusterData(url1.toString(), null, pulsar1.getSafeBrokerServiceUrl(), + admin1.clusters().createCluster("r1", new ClusterDataImpl(url1.toString(), null, pulsar1.getSafeBrokerServiceUrl(), pulsar1.getBrokerServiceUrlTls())); - admin1.clusters().createCluster("r2", new ClusterData(url2.toString(), null, pulsar2.getSafeBrokerServiceUrl(), + admin1.clusters().createCluster("r2", new ClusterDataImpl(url2.toString(), null, pulsar2.getSafeBrokerServiceUrl(), pulsar1.getBrokerServiceUrlTls())); - admin1.clusters().createCluster("r3", new ClusterData(url3.toString(), null, pulsar3.getSafeBrokerServiceUrl(), + admin1.clusters().createCluster("r3", new ClusterDataImpl(url3.toString(), null, pulsar3.getSafeBrokerServiceUrl(), pulsar1.getBrokerServiceUrlTls())); - admin1.clusters().createCluster("global", new ClusterData("http://global:8080")); - admin1.tenants().createTenant("pulsar", new TenantInfo( + admin1.clusters().createCluster("global", new ClusterDataImpl("http://global:8080")); + admin1.tenants().createTenant("pulsar", new TenantInfoImpl( Sets.newHashSet("appid1", "appid2", "appid3"), Sets.newHashSet("r1", "r2", "r3"))); admin1.namespaces().createNamespace("pulsar/global/ns"); admin1.namespaces().setNamespaceReplicationClusters("pulsar/global/ns", diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ProducerConsumerBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ProducerConsumerBase.java index 27e3131335c5b..6bcfcdfb85341 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ProducerConsumerBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ProducerConsumerBase.java @@ -25,8 +25,8 @@ import java.util.Set; import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.BeforeMethod; @@ -39,15 +39,15 @@ public void beforeMethod(Method m) throws Exception { } protected void producerBaseSetup() throws Exception { - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns"); admin.namespaces().setNamespaceReplicationClusters("my-property/my-ns", Sets.newHashSet("test")); // so that clients can test short names admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("public/default"); admin.namespaces().setNamespaceReplicationClusters("public/default", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PulsarMultiListenersWithInternalListenerNameTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PulsarMultiListenersWithInternalListenerNameTest.java index 0b45289eaf581..a35475142378c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PulsarMultiListenersWithInternalListenerNameTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PulsarMultiListenersWithInternalListenerNameTest.java @@ -44,8 +44,8 @@ import org.apache.pulsar.client.impl.PulsarClientImpl; import org.apache.pulsar.client.impl.conf.ClientConfigurationData; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -109,8 +109,8 @@ protected void customizeNewPulsarClientBuilder(ClientBuilder clientBuilder) { } @Test public void testFindBrokerWithListenerName() throws Exception { - admin.clusters().createCluster("localhost", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(); + admin.clusters().createCluster("localhost", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Sets.newHashSet("localhost")); this.admin.tenants().createTenant("public", tenantInfo); this.admin.namespaces().createNamespace("public/default"); @@ -149,8 +149,8 @@ private void doFindBrokerWithListenerName(boolean useHttp) throws Exception { @Test public void testHttpLookupRedirect() throws Exception { - admin.clusters().createCluster("localhost", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(); + admin.clusters().createCluster("localhost", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Sets.newHashSet("localhost")); this.admin.tenants().createTenant("public", tenantInfo); this.admin.namespaces().createNamespace("public/default"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerStatTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerStatTest.java index 17d4b056c8408..106a6e9cc7aba 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerStatTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerStatTest.java @@ -33,6 +33,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; +import com.google.gson.Gson; import org.apache.pulsar.broker.stats.NamespaceStats; import org.apache.pulsar.client.admin.PulsarAdminException; import org.slf4j.Logger; @@ -394,7 +395,8 @@ public void testAddBrokerLatencyStats() throws Exception { pulsar.getBrokerService().updateRates(); - JsonArray metrics = admin.brokerStats().getMetrics(); + String json = admin.brokerStats().getMetrics(); + JsonArray metrics = new Gson().fromJson(json, JsonArray.class); boolean latencyCaptured = false; for (int i = 0; i < metrics.size(); i++) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TenantTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TenantTest.java index 11e4daa4f79bd..79a5cd266fe90 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TenantTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TenantTest.java @@ -21,8 +21,8 @@ import com.google.common.collect.Sets; import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -47,8 +47,8 @@ protected void cleanup() throws Exception { public void testMaxTenant() throws Exception { conf.setMaxTenants(2); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("testTenant1", tenantInfo); admin.tenants().createTenant("testTenant2", tenantInfo); try { @@ -61,7 +61,7 @@ public void testMaxTenant() throws Exception { super.internalCleanup(); conf.setMaxTenants(0); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); for (int i = 0; i < 10; i++) { admin.tenants().createTenant("testTenant-unlimited" + i, tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TlsProducerConsumerBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TlsProducerConsumerBase.java index bd758c205568c..28870a70e8ac4 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TlsProducerConsumerBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TlsProducerConsumerBase.java @@ -28,8 +28,8 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.impl.auth.AuthenticationTls; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.*; import com.google.common.collect.Sets; @@ -102,10 +102,10 @@ protected void internalSetUpForNamespace() throws Exception { admin = spy(PulsarAdmin.builder().serviceHttpUrl(brokerUrlTls.toString()) .tlsTrustCertsFilePath(TLS_TRUST_CERT_FILE_PATH).allowTlsInsecureConnection(false) .authentication(AuthenticationTls.class.getName(), authParams).build()); - admin.clusters().createCluster(clusterName, new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/my-ns"); } } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenAuthenticatedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenAuthenticatedProducerConsumerTest.java index 51d755a0b4d76..7c57768f145c5 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenAuthenticatedProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenAuthenticatedProducerConsumerTest.java @@ -28,8 +28,8 @@ import java.util.concurrent.TimeUnit; import org.apache.pulsar.broker.authentication.AuthenticationProviderToken; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.AfterMethod; @@ -129,9 +129,9 @@ public void testTokenProducerAndConsumer() throws Exception { clientSetup(); // test rest by admin - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); // test protocol by producer/consumer diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java index d2a5eef230ad9..28fa7ddfdda95 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java @@ -35,12 +35,11 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.impl.ProducerImpl; import org.apache.pulsar.client.impl.auth.oauth2.AuthenticationFactoryOAuth2; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; @@ -152,9 +151,9 @@ public void testTokenProducerAndConsumer() throws Exception { clientSetup(); // test rest by admin - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); // test protocol by producer/consumer @@ -169,9 +168,9 @@ public void testOAuth2TokenRefreshedWithoutReconnect() throws Exception { clientSetup(); // test rest by admin - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); Consumer consumer = pulsarClient.newConsumer().topic("persistent://my-property/my-ns/my-topic") diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/v1/V1_ProducerConsumerBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/v1/V1_ProducerConsumerBase.java index 1119a3e76529b..67c1ee2a58b09 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/v1/V1_ProducerConsumerBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/v1/V1_ProducerConsumerBase.java @@ -24,8 +24,8 @@ import java.util.Set; import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.BeforeMethod; @@ -38,9 +38,9 @@ public void beforeMethod(Method m) throws Exception { } public void producerBaseSetup() throws Exception { - admin.clusters().createCluster("use", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/AdminApiKeyStoreTlsAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/AdminApiKeyStoreTlsAuthTest.java index 5142bbdf4efd9..6985c09b9f864 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/AdminApiKeyStoreTlsAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/AdminApiKeyStoreTlsAuthTest.java @@ -47,8 +47,8 @@ import org.apache.pulsar.client.api.ProducerConsumerBase; import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; import org.apache.pulsar.common.tls.NoopHostnameVerifier; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.keystoretls.KeyStoreSSLContext; import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientProperties; @@ -177,9 +177,9 @@ PulsarAdmin buildAdminClient() throws Exception { @Test public void testSuperUserCanListTenants() throws Exception { try (PulsarAdmin admin = buildAdminClient()) { - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("foobar"), + new TenantInfoImpl(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); Assert.assertEquals(ImmutableSet.of("tenant1"), admin.tenants().getTenants()); } @@ -188,9 +188,9 @@ public void testSuperUserCanListTenants() throws Exception { @Test public void testSuperUserCantListNamespaces() throws Exception { try (PulsarAdmin admin = buildAdminClient()) { - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy"), + new TenantInfoImpl(ImmutableSet.of("proxy"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); Assert.assertTrue(admin.namespaces().getNamespaces("tenant1").contains("tenant1/ns1")); @@ -200,9 +200,9 @@ public void testSuperUserCantListNamespaces() throws Exception { @Test public void testAuthorizedUserAsOriginalPrincipal() throws Exception { try (PulsarAdmin admin = buildAdminClient()) { - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy", "user1"), + new TenantInfoImpl(ImmutableSet.of("proxy", "user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -219,9 +219,9 @@ public void testPersistentList() throws Exception { log.info("-- Starting {} test --", methodName); try (PulsarAdmin admin = buildAdminClient()) { - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("foobar"), + new TenantInfoImpl(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); Assert.assertEquals(ImmutableSet.of("tenant1"), admin.tenants().getTenants()); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/BrokerClientIntegrationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/BrokerClientIntegrationTest.java index f7ce13b9203b8..859a8f3b0a858 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/BrokerClientIntegrationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/BrokerClientIntegrationTest.java @@ -92,7 +92,7 @@ import org.apache.pulsar.client.impl.schema.writer.JacksonJsonWriter; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.protocol.PulsarHandler; import org.apache.pulsar.common.util.FutureUtil; @@ -745,7 +745,7 @@ public long getTimestamp() { public void testCleanProducer() throws Exception { log.info("-- Starting {} test --", methodName); - admin.clusters().createCluster("global", new ClusterData()); + admin.clusters().createCluster("global", new ClusterDataImpl()); admin.namespaces().createNamespace("my-property/global/lookup"); final int operationTimeOut = 500; diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ConsumerConfigurationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ConsumerConfigurationTest.java index 5feef1b622599..0b55ec4a4344e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ConsumerConfigurationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ConsumerConfigurationTest.java @@ -23,8 +23,8 @@ import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.client.api.PulsarClientException.InvalidConfigurationException; import org.apache.pulsar.client.api.SubscriptionType; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -39,9 +39,9 @@ public class ConsumerConfigurationTest extends MockedPulsarServiceBaseTest { public void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("use", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithAuthTest.java index c79cb5d1eea8d..35811dce80177 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithAuthTest.java @@ -39,8 +39,8 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -155,10 +155,10 @@ protected void internalSetUpForNamespace() throws Exception { .tlsTrustStorePassword(BROKER_TRUSTSTORE_PW) .allowTlsInsecureConnection(false) .authentication(AuthenticationKeyStoreTls.class.getName(), authParams).build()); - admin.clusters().createCluster(clusterName, new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/my-ns"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithoutAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithoutAuthTest.java index 185df02b122fb..f09f3de02d9b2 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithoutAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithoutAuthTest.java @@ -37,8 +37,8 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -141,10 +141,10 @@ protected void internalSetUpForNamespace() throws Exception { .tlsTrustStorePassword(BROKER_TRUSTSTORE_PW) .allowTlsInsecureConnection(true) .authentication(AuthenticationKeyStoreTls.class.getName(), authParams).build()); - admin.clusters().createCluster(clusterName, new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/my-ns"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageParserTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageParserTest.java index 78d9d1c360c21..20897cde43c65 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageParserTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageParserTest.java @@ -42,8 +42,8 @@ import org.apache.pulsar.common.api.raw.MessageParser; import org.apache.pulsar.common.api.raw.RawMessage; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; @@ -56,9 +56,9 @@ public class MessageParserTest extends MockedPulsarServiceBaseTest { public void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-tenant", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-tenant/my-ns", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MultiTopicsReaderTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MultiTopicsReaderTest.java index ebdfb52d0aac4..89a974046bea0 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MultiTopicsReaderTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MultiTopicsReaderTest.java @@ -47,11 +47,11 @@ import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.RetentionPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.Murmur3_32Hash; import org.awaitility.Awaitility; @@ -71,9 +71,9 @@ protected void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); Policies policies = new Policies(); policies.replication_clusters = Sets.newHashSet("test"); // infinite retention diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PatternTopicsConsumerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PatternTopicsConsumerImplTest.java index bf6edf434c693..b7215f4c89f6b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PatternTopicsConsumerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PatternTopicsConsumerImplTest.java @@ -45,7 +45,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.naming.NamespaceName; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.AfterMethod; @@ -86,7 +86,7 @@ public void testPatternTopicsSubscribeWithBuilderFail() throws Exception { final String patternString = "persistent://my-property/my-ns/pattern-topic.*"; Pattern pattern = Pattern.compile(patternString); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -146,7 +146,7 @@ public void testBinaryProtoToGetTopicsOfNamespacePersistent() throws Exception { Pattern pattern = Pattern.compile("my-property/my-ns/pattern-topic.*"); // 1. create partition - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -250,7 +250,7 @@ public void testBinaryProtoToGetTopicsOfNamespaceNonPersistent() throws Exceptio Pattern pattern = Pattern.compile("my-property/my-ns/np-pattern-topic.*"); // 1. create partition - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -341,7 +341,7 @@ public void testBinaryProtoToGetTopicsOfNamespaceAll() throws Exception { Pattern pattern = Pattern.compile("my-property/my-ns/pattern-topic.*"); // 1. create partition - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -491,7 +491,7 @@ public void testStartEmptyPatternConsumer() throws Exception { Pattern pattern = Pattern.compile("persistent://my-property/my-ns/pattern-topic.*"); // 1. create partition - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -579,7 +579,7 @@ public void testAutoSubscribePatternConsumer() throws Exception { Pattern pattern = Pattern.compile("persistent://my-property/my-ns/pattern-topic.*"); // 1. create partition - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -688,7 +688,7 @@ public void testAutoUnsubscribePatternConsumer() throws Exception { Pattern pattern = Pattern.compile("persistent://my-property/my-ns/pattern-topic.*"); // 1. create partition - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PerMessageUnAcknowledgedRedeliveryTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PerMessageUnAcknowledgedRedeliveryTest.java index 9a49460f05b71..298a46916232e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PerMessageUnAcknowledgedRedeliveryTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PerMessageUnAcknowledgedRedeliveryTest.java @@ -29,7 +29,7 @@ import org.apache.pulsar.client.api.MessageRoutingMode; import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.SubscriptionType; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.AfterMethod; @@ -404,7 +404,7 @@ public void testSharedAckedPartitionedTopic() throws Exception { final String messagePredicate = "my-message-" + key + "-"; final int totalMessages = 15; final int numberOfPartitions = 3; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName, numberOfPartitions); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/RawReaderTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/RawReaderTest.java index 63360440ee307..9e806b8f0984e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/RawReaderTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/RawReaderTest.java @@ -42,8 +42,8 @@ import org.apache.pulsar.client.api.RawReader; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.common.api.proto.MessageMetadata; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -61,9 +61,9 @@ public void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ReaderTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ReaderTest.java index 6d27b5b98c08a..55ff8f5174d0c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ReaderTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ReaderTest.java @@ -50,9 +50,9 @@ import org.apache.pulsar.client.api.ReaderBuilder; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.RetentionPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.Murmur3_32Hash; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -71,9 +71,9 @@ protected void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/SchemaDeleteTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/SchemaDeleteTest.java index a12b000a5abcd..939c6d7a0ce35 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/SchemaDeleteTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/SchemaDeleteTest.java @@ -26,9 +26,9 @@ import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.client.api.Schema; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrategy; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -45,9 +45,9 @@ protected void setup() throws Exception { this.conf.setBrokerDeleteInactiveTopicsFrequencySeconds(5); admin.clusters().createCluster("test", - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java index 898e534ed870a..8ad2c0cd77334 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java @@ -38,10 +38,10 @@ import org.apache.pulsar.client.api.SubscriptionInitialPosition; import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.client.api.TopicMetadata; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.awaitility.Awaitility; import org.slf4j.Logger; @@ -102,7 +102,7 @@ public void testDifferentTopicsNameSubscribe() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc3/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2, topicName3); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -131,7 +131,7 @@ public void testGetConsumersAndGetTopics() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -175,7 +175,7 @@ public void testSyncProducerAndConsumer() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2, topicName3); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -241,7 +241,7 @@ public void testAsyncConsumer() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2, topicName3); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -326,7 +326,7 @@ public void testConsumerUnackedRedelivery() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2, topicName3); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -461,7 +461,7 @@ public void testConsumerUnackedRedelivery() throws Exception { @Test public void testTopicNameValid() throws Exception{ final String topicName = "persistent://prop/use/ns-abc/testTopicNameValid"; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName, 3); Consumer consumer = pulsarClient.newConsumer() @@ -492,7 +492,7 @@ public void testSubscribeUnsubscribeSingleTopic() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2, topicName3); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -654,7 +654,7 @@ public void testTopicsNameSubscribeWithBuilderFail() throws Exception { final String topicName2 = "persistent://prop/use/ns-abc/topic-2-" + key; final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -724,7 +724,7 @@ public void testMultiTopicsMessageListener() throws Exception { final String topicName1 = "persistent://prop/use/ns-abc/topic-1-" + key; List topicNames = Lists.newArrayList(topicName1); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName1, 2); @@ -786,7 +786,7 @@ public void testTopicAutoUpdatePartitions() throws Exception { final String topicName2 = "persistent://my-property/my-ns/topic-2-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName1, 2); admin.topics().createPartitionedTopic(topicName2, 2); @@ -844,7 +844,7 @@ public void testTopicAutoUpdatePartitions() throws Exception { public void testConsumerDistributionInFailoverSubscriptionWhenUpdatePartitions() throws Exception { final String topicName = "persistent://my-property/my-ns/testConsumerDistributionInFailoverSubscriptionWhenUpdatePartitions"; final String subName = "failover-test"; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName, 2); assertEquals(admin.topics().getPartitionedTopicMetadata(topicName).partitions, 2); @@ -959,9 +959,9 @@ public void testDefaultBacklogTTL() throws Exception { final String topicName = "persistent://" + namespace + "/expiry"; final String subName = "expiredSub"; - admin.clusters().createCluster("use", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); - admin.tenants().createTenant("prop", new TenantInfo(null, Sets.newHashSet("use"))); + admin.tenants().createTenant("prop", new TenantInfoImpl(null, Sets.newHashSet("use"))); admin.namespaces().createNamespace(namespace); Consumer consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName) @@ -1002,7 +1002,7 @@ public void testGetLastMessageId() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2, topicName3); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -1093,8 +1093,8 @@ public void multiTopicsInDifferentNameSpace() throws PulsarAdminException, Pulsa topics.add("persistent://prop/use/ns-abc/topic-1"); topics.add("persistent://prop/use/ns-abc/topic-2"); topics.add("persistent://prop/use/ns-abc1/topic-3"); - admin.clusters().createCluster("use", new ClusterData(brokerUrl.toString())); - admin.tenants().createTenant("prop", new TenantInfo(null, Sets.newHashSet("use"))); + admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); + admin.tenants().createTenant("prop", new TenantInfoImpl(null, Sets.newHashSet("use"))); admin.namespaces().createNamespace("prop/use/ns-abc"); admin.namespaces().createNamespace("prop/use/ns-abc1"); Consumer consumer = pulsarClient.newConsumer() diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java index 46d8928b922a7..f6bcbeea65282 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java @@ -27,7 +27,6 @@ import com.google.common.collect.Sets; import java.lang.reflect.Field; -import java.util.Map; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.ArrayList; @@ -66,14 +65,13 @@ import org.apache.pulsar.common.api.proto.CommandAck; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; import org.apache.pulsar.transaction.coordinator.TransactionMetadataStore; import org.apache.pulsar.transaction.coordinator.TransactionSubscription; -import org.apache.pulsar.transaction.coordinator.TxnMeta; import org.awaitility.Awaitility; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -101,15 +99,15 @@ protected void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); admin.topics().createPartitionedTopic(TOPIC_OUTPUT, TOPIC_PARTITION); admin.topics().createPartitionedTopic(TOPIC_MESSAGE_ACK_TEST, 1); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactedTopicTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactedTopicTest.java index 7a909714ce2cf..ff03e59b7c1b7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactedTopicTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactedTopicTest.java @@ -52,8 +52,8 @@ import org.apache.pulsar.client.api.RawMessage; import org.apache.pulsar.client.impl.RawMessageImpl; import org.apache.pulsar.common.api.proto.MessageIdData; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -79,9 +79,9 @@ public void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("use", - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java index 25c153d5db212..2cb6d9d6aa109 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java @@ -62,10 +62,10 @@ import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.client.api.SubscriptionInitialPosition; import org.apache.pulsar.client.impl.BatchMessageIdImpl; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.RetentionPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -83,9 +83,9 @@ public class CompactionTest extends MockedPulsarServiceBaseTest { public void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("use", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); compactionScheduler = Executors.newSingleThreadScheduledExecutor( diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java index 69884f1499b29..438a1bf96c090 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java @@ -45,8 +45,8 @@ import org.apache.pulsar.client.api.RawMessage; import org.apache.pulsar.client.impl.RawMessageImpl; import org.apache.pulsar.common.protocol.Commands; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -63,9 +63,9 @@ public void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("use", - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); compactionScheduler = Executors.newSingleThreadScheduledExecutor( diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionE2ESecurityTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionE2ESecurityTest.java index 87a664fec0045..b055d1b70f8be 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionE2ESecurityTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionE2ESecurityTest.java @@ -60,9 +60,9 @@ import org.apache.pulsar.client.impl.auth.AuthenticationToken; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -171,7 +171,7 @@ void setup(Method method) throws Exception { primaryHost = pulsar.getWebServiceAddress(); // update cluster metadata - ClusterData clusterData = new ClusterData(brokerWebServiceUrl.toString()); + ClusterDataImpl clusterData = new ClusterDataImpl(brokerWebServiceUrl.toString()); superUserAdmin.clusters().updateCluster(config.getClusterName(), clusterData); ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(this.workerConfig.getPulsarServiceUrl()) @@ -186,7 +186,7 @@ && isNotBlank(workerConfig.getBrokerClientAuthenticationParameters())) { } pulsarClient = clientBuilder.build(); - TenantInfo propAdmin = new TenantInfo(); + TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.getAdminRoles().add(ADMIN_SUBJECT); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); superUserAdmin.tenants().updateTenant(TENANT, propAdmin); @@ -198,7 +198,7 @@ && isNotBlank(workerConfig.getBrokerClientAuthenticationParameters())) { superUserAdmin.namespaces().setNamespaceReplicationClusters(replNamespace, clusters); // create another test tenant and namespace - propAdmin = new TenantInfo(); + propAdmin = new TenantInfoImpl(); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); superUserAdmin.tenants().createTenant(TENANT2, propAdmin); superUserAdmin.namespaces().createNamespace( TENANT2 + "/" + NAMESPACE); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionLocalRunTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionLocalRunTest.java index 1a000433c92ca..1641022a236d9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionLocalRunTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionLocalRunTest.java @@ -73,11 +73,11 @@ import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.io.SourceConfig; import org.apache.pulsar.common.nar.NarClassLoader; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ConsumerStats; import org.apache.pulsar.common.policies.data.PublisherStats; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -250,7 +250,7 @@ void setup(Method method) throws Exception { primaryHost = pulsar.getWebServiceAddress(); // create cluster metadata - ClusterData clusterData = new ClusterData(urlTls.toString()); + ClusterDataImpl clusterData = new ClusterDataImpl(urlTls.toString()); admin.clusters().createCluster(config.getClusterName(), clusterData); ClientBuilder clientBuilder = PulsarClient.builder() @@ -268,7 +268,7 @@ && isNotBlank(workerConfig.getBrokerClientAuthenticationParameters())) { } pulsarClient = clientBuilder.build(); - TenantInfo propAdmin = new TenantInfo(); + TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.getAdminRoles().add("superUser"); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList(CLUSTER))); admin.tenants().createTenant(tenant, propAdmin); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java index f21aabebcc727..15805f9beb75c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java @@ -63,10 +63,10 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactory; @@ -176,7 +176,7 @@ void setup(Method method) throws Exception { primaryHost = pulsar.getWebServiceAddress(); // update cluster metadata - ClusterData clusterData = new ClusterData(urlTls.toString()); + ClusterDataImpl clusterData = new ClusterDataImpl(urlTls.toString()); admin.clusters().updateCluster(config.getClusterName(), clusterData); ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(this.workerConfig.getPulsarServiceUrl()); @@ -192,7 +192,7 @@ && isNotBlank(workerConfig.getBrokerClientAuthenticationParameters())) { } pulsarClient = clientBuilder.build(); - TenantInfo propAdmin = new TenantInfo(); + TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.getAdminRoles().add("superUser"); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); admin.tenants().updateTenant(tenant, propAdmin); @@ -333,7 +333,8 @@ public void testPulsarFunctionState() throws Exception { retryStrategically((test) -> { try { - FunctionStats functionStat = admin.functions().getFunctionStats(tenant, namespacePortion, functionName); + FunctionStatsImpl functionStat = (FunctionStatsImpl) + admin.functions().getFunctionStats(tenant, namespacePortion, functionName); return functionStat.getProcessedSuccessfullyTotal() == 5; } catch (PulsarAdminException e) { return false; @@ -470,7 +471,8 @@ public void testPulsarFunctionBKCleanup() throws Exception { retryStrategically((test) -> { try { - FunctionStats functionStat = admin.functions().getFunctionStats(tenant, namespacePortion, functionName); + FunctionStatsImpl functionStat = (FunctionStatsImpl) + admin.functions().getFunctionStats(tenant, namespacePortion, functionName); return functionStat.getProcessedSuccessfullyTotal() == 5; } catch (PulsarAdminException e) { return false; diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionTlsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionTlsTest.java index cd0f70e0ec417..23ae6ef2eb6a6 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionTlsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionTlsTest.java @@ -40,7 +40,7 @@ import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ClassLoaderUtils; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.api.utils.IdentityFunction; @@ -165,7 +165,7 @@ void setup() throws Exception { leaderAdmin = pulsarAdmins[0]; Thread.sleep(1000); - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Sets.newHashSet(testCluster)); pulsarAdmins[0].tenants().createTenant(testTenant, tenantInfo); pulsarAdmins[0].namespaces().createNamespace(testNamespace, 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java index b288911c464fd..76e5b64d76f7e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java @@ -44,8 +44,8 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.proto.Function.Assignment; import org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactory; @@ -108,7 +108,7 @@ void setup(Method method) throws Exception { primaryHost = pulsar.getWebServiceAddress(); // update cluster metadata - final ClusterData clusterData = new ClusterData(pulsar.getBrokerServiceUrl()); + final ClusterDataImpl clusterData = new ClusterDataImpl(pulsar.getBrokerServiceUrl()); admin.clusters().updateCluster(config.getClusterName(), clusterData); final ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(this.workerConfig.getPulsarServiceUrl()); @@ -117,7 +117,7 @@ void setup(Method method) throws Exception { } pulsarClient = clientBuilder.build(); - final TenantInfo propAdmin = new TenantInfo(); + final TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.getAdminRoles().add("superUser"); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); admin.tenants().updateTenant(tenant, propAdmin); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/AbstractPulsarE2ETest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/AbstractPulsarE2ETest.java index d5d83bd796cc2..a3041977044a7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/AbstractPulsarE2ETest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/AbstractPulsarE2ETest.java @@ -27,13 +27,9 @@ import static org.mockito.Mockito.spy; import static org.testng.Assert.assertTrue; -import java.io.BufferedReader; import java.io.File; import java.io.IOException; -import java.io.InputStreamReader; import java.lang.reflect.Method; -import java.net.HttpURLConnection; -import java.net.URL; import java.nio.file.Files; import java.util.Arrays; import java.util.HashMap; @@ -41,9 +37,6 @@ import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.TreeMap; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import org.apache.pulsar.broker.PulsarService; import org.apache.pulsar.broker.ServiceConfiguration; @@ -57,8 +50,8 @@ import org.apache.pulsar.client.api.ClientBuilder; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.impl.auth.AuthenticationTls; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactory; @@ -80,8 +73,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import lombok.ToString; - public abstract class AbstractPulsarE2ETest { public static final Logger log = LoggerFactory.getLogger(AbstractPulsarE2ETest.class); @@ -188,7 +179,7 @@ public void setup(Method method) throws Exception { primaryHost = String.format("http://%s:%d", "localhost", pulsar.getListenPortHTTP().get()); // update cluster metadata - ClusterData clusterData = new ClusterData(pulsar.getBrokerServiceUrlTls()); + ClusterDataImpl clusterData = new ClusterDataImpl(pulsar.getBrokerServiceUrlTls()); admin.clusters().updateCluster(config.getClusterName(), clusterData); ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(this.workerConfig.getPulsarServiceUrl()); @@ -204,7 +195,7 @@ && isNotBlank(workerConfig.getBrokerClientAuthenticationParameters())) { } pulsarClient = clientBuilder.build(); - TenantInfo propAdmin = new TenantInfo(); + TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.getAdminRoles().add("superUser"); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); admin.tenants().updateTenant(tenant, propAdmin); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java index 63f57f041e051..a4ddd66807591 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java @@ -43,8 +43,8 @@ import org.apache.pulsar.client.api.ClientBuilder; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.impl.auth.AuthenticationTls; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactory; import org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactoryConfig; @@ -139,7 +139,7 @@ void setup(Method method) throws Exception { primaryHost = pulsar.getWebServiceAddress(); // update cluster metadata - ClusterData clusterData = new ClusterData(urlTls.toString()); + ClusterDataImpl clusterData = new ClusterDataImpl(urlTls.toString()); admin.clusters().updateCluster(config.getClusterName(), clusterData); ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(this.workerConfig.getPulsarServiceUrl()); @@ -155,7 +155,7 @@ && isNotBlank(workerConfig.getBrokerClientAuthenticationParameters())) { } pulsarClient = clientBuilder.build(); - TenantInfo propAdmin = new TenantInfo(); + TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); admin.tenants().updateTenant(tenant, propAdmin); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java index 25b232ea48985..ebd034efbc1d3 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java @@ -52,11 +52,11 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.functions.ConsumerConfig; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.io.SinkConfig; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.compaction.TwoPhaseCompactor; import org.apache.pulsar.functions.instance.InstanceUtils; @@ -291,10 +291,10 @@ public void testPulsarFunctionStats() throws Exception { // validate stats are empty FunctionRuntimeManager functionRuntimeManager = functionsWorkerService.getFunctionRuntimeManager(); - FunctionStats functionStats = functionRuntimeManager.getFunctionStats(tenant, namespacePortion, + FunctionStatsImpl functionStats = functionRuntimeManager.getFunctionStats(tenant, namespacePortion, functionName, null); - FunctionStats functionStatsFromAdmin = admin.functions().getFunctionStats(tenant, namespacePortion, - functionName); + FunctionStatsImpl functionStatsFromAdmin = (FunctionStatsImpl) admin.functions().getFunctionStats(tenant, + namespacePortion, functionName); assertEquals(functionStats, functionStatsFromAdmin); @@ -317,15 +317,17 @@ public void testPulsarFunctionStats() throws Exception { assertEquals(functionStats.instances.get(0).getMetrics().getProcessedSuccessfullyTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getSystemExceptionsTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getUserExceptionsTotal(), 0); - assertNull(functionStats.instances.get(0).getMetrics().avgProcessLatency); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getReceivedTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getProcessedSuccessfullyTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getSystemExceptionsTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getUserExceptionsTotal(), 0); - assertNull(functionStats.instances.get(0).getMetrics().oneMin.getAvgProcessLatency()); - - assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), functionStats.instances.get(0).getMetrics().oneMin.getAvgProcessLatency()); - assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), functionStats.getAvgProcessLatency()); + assertNull(functionStats.instances.get(0).getMetrics().getAvgProcessLatency()); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getReceivedTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getProcessedSuccessfullyTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getSystemExceptionsTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getUserExceptionsTotal(), 0); + assertNull(functionStats.instances.get(0).getMetrics().getOneMin().getAvgProcessLatency()); + + assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), + functionStats.instances.get(0).getMetrics().getOneMin().getAvgProcessLatency()); + assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), + functionStats.getAvgProcessLatency()); // validate prometheus metrics empty String prometheusMetrics = PulsarFunctionTestUtils.getPrometheusMetrics(pulsar.getListenPortHTTP().get()); @@ -412,11 +414,11 @@ public void testPulsarFunctionStats() throws Exception { // validate function instance stats empty - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStats = functionRuntimeManager.getFunctionInstanceStats(tenant, namespacePortion, - functionName, 0, null); + FunctionInstanceStatsDataImpl functionInstanceStats = functionRuntimeManager.getFunctionInstanceStats(tenant, + namespacePortion, functionName, 0, null); - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStatsAdmin = admin.functions().getFunctionStats(tenant, namespacePortion, - functionName, 0); + FunctionInstanceStatsDataImpl functionInstanceStatsAdmin = (FunctionInstanceStatsDataImpl) admin.functions(). + getFunctionStats(tenant, namespacePortion, functionName, 0); assertEquals(functionInstanceStats, functionInstanceStatsAdmin); assertEquals(functionInstanceStats, functionStats.instances.get(0).getMetrics()); @@ -441,7 +443,7 @@ public void testPulsarFunctionStats() throws Exception { functionStats = functionRuntimeManager.getFunctionStats(tenant, namespacePortion, functionName, null); - functionStatsFromAdmin = admin.functions().getFunctionStats(tenant, namespacePortion, + functionStatsFromAdmin = (FunctionStatsImpl) admin.functions().getFunctionStats(tenant, namespacePortion, functionName); assertEquals(functionStats, functionStatsFromAdmin); @@ -465,22 +467,24 @@ public void testPulsarFunctionStats() throws Exception { assertEquals(functionStats.instances.get(0).getMetrics().getProcessedSuccessfullyTotal(), totalMsgs); assertEquals(functionStats.instances.get(0).getMetrics().getSystemExceptionsTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getUserExceptionsTotal(), 0); - assertTrue(functionStats.instances.get(0).getMetrics().avgProcessLatency > 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getReceivedTotal(), totalMsgs); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getProcessedSuccessfullyTotal(), totalMsgs); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getSystemExceptionsTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getUserExceptionsTotal(), 0); - assertTrue(functionStats.instances.get(0).getMetrics().oneMin.getAvgProcessLatency() > 0); - - assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), functionStats.instances.get(0).getMetrics().oneMin.getAvgProcessLatency()); - assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), functionStats.getAvgProcessLatency()); + assertTrue(functionStats.instances.get(0).getMetrics().getAvgProcessLatency() > 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getReceivedTotal(), totalMsgs); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getProcessedSuccessfullyTotal(), totalMsgs); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getSystemExceptionsTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getUserExceptionsTotal(), 0); + assertTrue(functionStats.instances.get(0).getMetrics().getOneMin().getAvgProcessLatency() > 0); + + assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), + functionStats.instances.get(0).getMetrics().getOneMin().getAvgProcessLatency()); + assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), + functionStats.getAvgProcessLatency()); // validate function instance stats functionInstanceStats = functionRuntimeManager.getFunctionInstanceStats(tenant, namespacePortion, functionName, 0, null); - functionInstanceStatsAdmin = admin.functions().getFunctionStats(tenant, namespacePortion, - functionName, 0); + functionInstanceStatsAdmin = (FunctionInstanceStatsDataImpl) admin.functions().getFunctionStats(tenant, + namespacePortion, functionName, 0); assertEquals(functionInstanceStats, functionInstanceStatsAdmin); assertEquals(functionInstanceStats, functionStats.instances.get(0).getMetrics()); @@ -678,7 +682,7 @@ public void testAuthorization(boolean validRoleName) throws Exception { admin.namespaces().setNamespaceReplicationClusters(replNamespace, clusters); String roleName = validRoleName ? "superUser" : "invalid"; - TenantInfo propAdmin = new TenantInfo(); + TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.getAdminRoles().add(roleName); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); admin.tenants().updateTenant(tenant, propAdmin); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionTlsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionTlsTest.java index ac96b1d6e270f..fcb2a44d23eae 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionTlsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionTlsTest.java @@ -52,7 +52,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ClassLoaderUtils; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.api.utils.IdentityFunction; @@ -126,7 +126,7 @@ void setup(Method method) throws Exception { Tenants tenants = mock(Tenants.class); when(admin.tenants()).thenReturn(tenants); Set admins = Sets.newHashSet("superUser", "admin"); - TenantInfo tenantInfo = new TenantInfo(admins, null); + TenantInfoImpl tenantInfo = new TenantInfoImpl(admins, null); when(tenants.getTenantInfo(any())).thenReturn(tenantInfo); Namespaces namespaces = mock(Namespaces.class); when(admin.namespaces()).thenReturn(namespaces); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/PartitionedTopicSchemaTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/PartitionedTopicSchemaTest.java index 04b5d17ad6541..61270263126d1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/PartitionedTopicSchemaTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/PartitionedTopicSchemaTest.java @@ -28,8 +28,8 @@ import org.apache.pulsar.client.api.SubscriptionInitialPosition; import org.apache.pulsar.client.api.schema.GenericRecord; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -51,15 +51,15 @@ protected void setup() throws Exception { isTcpLookup = true; super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns"); admin.namespaces().setNamespaceReplicationClusters("my-property/my-ns", Sets.newHashSet("test")); // so that clients can test short names admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("public/default"); admin.namespaces().setNamespaceReplicationClusters("public/default", Sets.newHashSet("test")); admin.topics().createPartitionedTopic(PARTITIONED_TOPIC, TOPIC_PARTITION); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java index fe720a1f7a6a0..ee39f9b8b0167 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java @@ -64,9 +64,9 @@ import org.apache.pulsar.client.impl.schema.generic.GenericJsonRecord; import org.apache.pulsar.common.naming.TopicDomain; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.schema.KeyValue; import org.apache.pulsar.common.schema.KeyValueEncodingType; import org.apache.pulsar.common.schema.SchemaInfo; @@ -89,8 +89,8 @@ public void setup() throws Exception { super.internalSetup(); // Setup namespaces - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData(pulsar.getBrokerServiceUrl())); - TenantInfo tenantInfo = new TenantInfo(); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Collections.singleton(CLUSTER_NAME)); admin.tenants().createTenant(PUBLIC_TENANT, tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java index fcf223ff5c32d..b4eb3e4622606 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java @@ -38,9 +38,9 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicDomain; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaType; import org.apache.pulsar.schema.Schemas; @@ -61,8 +61,8 @@ public void setup() throws Exception { super.internalSetup(); // Setup namespaces - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData(pulsar.getBrokerServiceUrl())); - TenantInfo tenantInfo = new TenantInfo(); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Collections.singleton(CLUSTER_NAME)); admin.tenants().createTenant(PUBLIC_TENANT, tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaTypeCompatibilityCheckTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaTypeCompatibilityCheckTest.java index 61cc989d49b0d..67be4ebbc717b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaTypeCompatibilityCheckTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaTypeCompatibilityCheckTest.java @@ -29,9 +29,9 @@ import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.naming.TopicDomain; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.schema.Schemas; import org.testng.annotations.AfterClass; @@ -60,9 +60,9 @@ public void setup() throws Exception { super.internalSetup(); // Setup namespaces - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Collections.singleton(CLUSTER_NAME)); admin.tenants().createTenant(PUBLIC_TENANT, tenantInfo); admin.namespaces().createNamespace(namespaceName, Sets.newHashSet(CLUSTER_NAME)); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java index 96ee82510b50d..9e22219a70e41 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java @@ -35,8 +35,8 @@ import org.apache.pulsar.broker.authorization.AuthorizationService; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.apache.pulsar.websocket.WebSocketService; import org.apache.pulsar.websocket.service.WebSocketProxyConfiguration; @@ -87,8 +87,8 @@ public void test() throws Exception { assertFalse(auth.canLookup(TopicName.get("persistent://p1/c1/ns1/ds1"), "my-role", null)); - admin.clusters().createCluster(configClusterName, new ClusterData()); - admin.tenants().createTenant("p1", new TenantInfo(Sets.newHashSet("role1"), Sets.newHashSet("c1"))); + admin.clusters().createCluster(configClusterName, new ClusterDataImpl()); + admin.tenants().createTenant("p1", new TenantInfoImpl(Sets.newHashSet("role1"), Sets.newHashSet("c1"))); waitForChange(); admin.namespaces().createNamespace("p1/c1/ns1"); waitForChange(); diff --git a/pulsar-client-admin-api/pom.xml b/pulsar-client-admin-api/pom.xml index 739ef5ec7d600..113040546b3b5 100644 --- a/pulsar-client-admin-api/pom.xml +++ b/pulsar-client-admin-api/pom.xml @@ -36,13 +36,14 @@ ${project.groupId} - pulsar-common - ${project.parent.version} + pulsar-client-api + ${project.version} - com.google.code.gson - gson + org.slf4j + slf4j-api + provided diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/BrokerStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/BrokerStats.java index eb4e2327d52da..100ba1056d5fa 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/BrokerStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/BrokerStats.java @@ -18,8 +18,6 @@ */ package org.apache.pulsar.client.admin; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; import java.util.concurrent.CompletableFuture; import org.apache.pulsar.common.stats.AllocatorStats; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; @@ -36,7 +34,7 @@ public interface BrokerStats { * @throws PulsarAdminException */ - JsonArray getMetrics() throws PulsarAdminException; + String getMetrics() throws PulsarAdminException; /** * Returns Monitoring metrics asynchronously. @@ -44,7 +42,7 @@ public interface BrokerStats { * @return */ - CompletableFuture getMetricsAsync(); + CompletableFuture getMetricsAsync(); /** * Requests JSON string server mbean dump. @@ -54,7 +52,7 @@ public interface BrokerStats { * @return * @throws PulsarAdminException */ - JsonArray getMBeans() throws PulsarAdminException; + String getMBeans() throws PulsarAdminException; /** * Requests JSON string server mbean dump asynchronously. @@ -63,7 +61,7 @@ public interface BrokerStats { * * @return */ - CompletableFuture getMBeansAsync(); + CompletableFuture getMBeansAsync(); /** * Returns JSON string topics stats. @@ -73,7 +71,7 @@ public interface BrokerStats { * @return * @throws PulsarAdminException */ - JsonObject getTopics() throws PulsarAdminException; + String getTopics() throws PulsarAdminException; /** * Returns JSON string topics stats asynchronously. @@ -82,7 +80,7 @@ public interface BrokerStats { * * @return */ - CompletableFuture getTopicsAsync(); + CompletableFuture getTopicsAsync(); /** * Get pending bookie client op stats by namespace. @@ -92,7 +90,7 @@ public interface BrokerStats { * @return * @throws PulsarAdminException */ - JsonObject getPendingBookieOpsStats() throws PulsarAdminException; + String getPendingBookieOpsStats() throws PulsarAdminException; /** * Get pending bookie client op stats by namespace asynchronously. @@ -101,7 +99,7 @@ public interface BrokerStats { * * @return */ - CompletableFuture getPendingBookieOpsStatsAsync(); + CompletableFuture getPendingBookieOpsStatsAsync(); /** * Get the stats for the Netty allocator. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java index df5d08932f0db..263d8af90454f 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java @@ -289,7 +289,8 @@ public interface Clusters { * @throws PulsarAdminException * Unexpected error */ - Map getNamespaceIsolationPolicies(String cluster) throws PulsarAdminException; + Map getNamespaceIsolationPolicies(String cluster) + throws PulsarAdminException; /** * Get the namespace isolation policies of a cluster asynchronously. @@ -376,7 +377,8 @@ List getBrokersWithNamespaceIsolationPolicy(String * @param cluster * @return */ - CompletableFuture> getBrokersWithNamespaceIsolationPolicyAsync(String cluster); + CompletableFuture> getBrokersWithNamespaceIsolationPolicyAsync( + String cluster); /** * Returns active broker with namespace-isolation policies attached to it. @@ -511,7 +513,8 @@ CompletableFuture updateNamespaceIsolationPolicyAsync( * @throws PulsarAdminException * Unexpected error */ - NamespaceIsolationData getNamespaceIsolationPolicy(String cluster, String policyName) throws PulsarAdminException; + NamespaceIsolationData getNamespaceIsolationPolicy(String cluster, String policyName) + throws PulsarAdminException; /** * Get a single namespace isolation policy for a cluster asynchronously. @@ -524,7 +527,8 @@ CompletableFuture updateNamespaceIsolationPolicyAsync( * Policy name * */ - CompletableFuture getNamespaceIsolationPolicyAsync(String cluster, String policyName); + CompletableFuture getNamespaceIsolationPolicyAsync(String cluster, + String policyName); /** * Create a domain into cluster. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java index 5443b3c184a63..82c47e5d97ac2 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java @@ -28,6 +28,7 @@ import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.UpdateOptions; import org.apache.pulsar.common.io.ConnectorDefinition; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatus; @@ -410,7 +411,7 @@ CompletableFuture getFunctionStatsAsync( + CompletableFuture getFunctionStatsAsync( String tenant, String namespace, String function, int id); /** diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/ProxyStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/ProxyStats.java index d5eeee741b6b7..66eb411ee3720 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/ProxyStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/ProxyStats.java @@ -18,9 +18,6 @@ */ package org.apache.pulsar.client.admin; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; - /** * Admin interface for proxy stats management. */ @@ -33,7 +30,7 @@ public interface ProxyStats { * @throws PulsarAdminException */ - JsonArray getConnections() throws PulsarAdminException; + String getConnections() throws PulsarAdminException; /** * Returns Topics metrics. @@ -41,5 +38,5 @@ public interface ProxyStats { * @return * @throws PulsarAdminException */ - JsonObject getTopics() throws PulsarAdminException; + String getTopics() throws PulsarAdminException; } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java index e9a9160f88d80..041f8a659f46e 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java @@ -18,15 +18,7 @@ */ package org.apache.pulsar.client.admin; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import javax.ws.rs.ClientErrorException; -import javax.ws.rs.ServerErrorException; -import javax.ws.rs.WebApplicationException; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.io.IOUtils; -import org.apache.pulsar.common.policies.data.ErrorData; -import org.apache.pulsar.common.util.ObjectMapperFactory; /** * Pulsar admin exceptions. @@ -39,57 +31,16 @@ public class PulsarAdminException extends Exception { private final String httpError; private final int statusCode; - private static String getReasonFromServer(WebApplicationException e) { - try { - ErrorData errorData = e.getResponse().readEntity(ErrorData.class); - if (errorData == null) { - return e.getMessage(); - } - return errorData.reason.toString(); - } catch (Exception ex) { - try { - Object entity = e.getResponse().getEntity(); - String errorAsString; - if (entity instanceof InputStream) { - errorAsString = IOUtils.toString((InputStream) entity, StandardCharsets.UTF_8.name()); - } else { - errorAsString = entity.toString(); - } - return ObjectMapperFactory.getThreadLocal().readValue( - errorAsString, ErrorData.class).reason; - } catch (Exception ex1) { - try { - return ObjectMapperFactory.getThreadLocal().readValue(e.getMessage(), ErrorData.class).reason; - } catch (Exception ex2) { - // could not parse output to ErrorData class - return e.getMessage(); - } - } - } - } - - public PulsarAdminException(ClientErrorException e) { - super(getReasonFromServer(e), e); - this.httpError = getReasonFromServer(e); - this.statusCode = e.getResponse().getStatus(); - } - - public PulsarAdminException(ClientErrorException e, String message) { - super(message, e); - this.httpError = getReasonFromServer(e); - this.statusCode = e.getResponse().getStatus(); - } - - public PulsarAdminException(ServerErrorException e) { - super(getReasonFromServer(e), e); - this.httpError = getReasonFromServer(e); - this.statusCode = e.getResponse().getStatus(); + public PulsarAdminException(Throwable t, String httpError, int statusCode) { + super(t); + this.httpError = httpError; + this.statusCode = statusCode; } - public PulsarAdminException(ServerErrorException e, String message) { - super(getReasonFromServer(e) + (message != null ? " " + message : ""), e); - this.httpError = getReasonFromServer(e); - this.statusCode = e.getResponse().getStatus(); + public PulsarAdminException(String message, Throwable t, String httpError, int statusCode) { + super(message, t); + this.httpError = httpError; + this.statusCode = statusCode; } public PulsarAdminException(Throwable t) { @@ -98,12 +49,6 @@ public PulsarAdminException(Throwable t) { statusCode = DEFAULT_STATUS_CODE; } - public PulsarAdminException(WebApplicationException e) { - super(getReasonFromServer(e), e); - this.httpError = getReasonFromServer(e); - this.statusCode = e.getResponse().getStatus(); - } - public PulsarAdminException(String message, Throwable t) { super(message, t); httpError = null; @@ -128,8 +73,8 @@ public int getStatusCode() { * Not Authorized Exception. */ public static class NotAuthorizedException extends PulsarAdminException { - public NotAuthorizedException(ClientErrorException e) { - super(e); + public NotAuthorizedException(Throwable t, String httpError, int statusCode) { + super(httpError, t, httpError, statusCode); } } @@ -137,8 +82,8 @@ public NotAuthorizedException(ClientErrorException e) { * Not Found Exception. */ public static class NotFoundException extends PulsarAdminException { - public NotFoundException(ClientErrorException e) { - super(e); + public NotFoundException(Throwable t, String httpError, int statusCode) { + super(httpError, t, httpError, statusCode); } } @@ -146,8 +91,8 @@ public NotFoundException(ClientErrorException e) { * Not Allowed Exception. */ public static class NotAllowedException extends PulsarAdminException { - public NotAllowedException(ClientErrorException e) { - super(e); + public NotAllowedException(Throwable t, String httpError, int statusCode) { + super(httpError, t, httpError, statusCode); } } @@ -155,8 +100,8 @@ public NotAllowedException(ClientErrorException e) { * Conflict Exception. */ public static class ConflictException extends PulsarAdminException { - public ConflictException(ClientErrorException e) { - super(e); + public ConflictException(Throwable t, String httpError, int statusCode) { + super(httpError, t, httpError, statusCode); } } @@ -164,8 +109,8 @@ public ConflictException(ClientErrorException e) { * Precondition Failed Exception. */ public static class PreconditionFailedException extends PulsarAdminException { - public PreconditionFailedException(ClientErrorException e) { - super(e); + public PreconditionFailedException(Throwable t, String httpError, int statusCode) { + super(httpError, t, httpError, statusCode); } } @@ -182,12 +127,12 @@ public TimeoutException(Throwable t) { * Server Side Error Exception. */ public static class ServerSideErrorException extends PulsarAdminException { - public ServerSideErrorException(ServerErrorException e, String msg) { - super(e, msg); + public ServerSideErrorException(Throwable t, String message, String httpError, int statusCode) { + super(message, t, httpError, statusCode); } - public ServerSideErrorException(ServerErrorException e) { - super(e, "Some error occourred on the server"); + public ServerSideErrorException(Throwable t) { + super("Some error occourred on the server", t); } } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sinks.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sinks.java index f51cf6681944a..dae91c7260056 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sinks.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sinks.java @@ -200,7 +200,8 @@ public interface Sinks { * @throws PulsarAdminException * Unexpected error */ - void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptions updateOptions) throws PulsarAdminException; + void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptions updateOptions) + throws PulsarAdminException; /** * Update the configuration for a sink asynchronously. @@ -211,7 +212,8 @@ public interface Sinks { * @param updateOptions * options for the update operations */ - CompletableFuture updateSinkAsync(SinkConfig sinkConfig, String fileName, UpdateOptions updateOptions); + CompletableFuture updateSinkAsync(SinkConfig sinkConfig, String fileName, + UpdateOptions updateOptions); /** * Update the configuration for a sink. @@ -288,7 +290,8 @@ void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOptions updat * @param updateOptions * options for the update operations */ - CompletableFuture updateSinkWithUrlAsync(SinkConfig sinkConfig, String pkgUrl, UpdateOptions updateOptions); + CompletableFuture updateSinkWithUrlAsync(SinkConfig sinkConfig, String pkgUrl, + UpdateOptions updateOptions); /** * Delete an existing sink. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sources.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sources.java index fea9374be6084..822020b7fd403 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sources.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sources.java @@ -212,7 +212,8 @@ void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptions upda * @param updateOptions * options for the update operations */ - CompletableFuture updateSourceAsync(SourceConfig sourceConfig, String fileName, UpdateOptions updateOptions); + CompletableFuture updateSourceAsync(SourceConfig sourceConfig, String fileName, + UpdateOptions updateOptions); /** * Update the configuration for a source. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java index d5f3f10c37402..66ac8c456ec3b 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java @@ -18,7 +18,6 @@ */ package org.apache.pulsar.client.admin; -import com.google.gson.JsonObject; import java.util.List; import java.util.Map; import java.util.Set; @@ -921,7 +920,7 @@ default CompletableFuture getStatsAsync(String topic) { * @throws PulsarAdminException * Unexpected error */ - JsonObject getInternalInfo(String topic) throws PulsarAdminException; + String getInternalInfo(String topic) throws PulsarAdminException; /** * Get a JSON representation of the topic metadata stored in ZooKeeper. @@ -936,7 +935,7 @@ default CompletableFuture getStatsAsync(String topic) { * @throws PulsarAdminException * Unexpected error */ - CompletableFuture getInternalInfoAsync(String topic); + CompletableFuture getInternalInfoAsync(String topic); /** * Get the stats for the partitioned topic diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java index 149257f737c00..ecd8d1f13a6aa 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java @@ -48,4 +48,5 @@ public static OffloadProcessStatus newOffloadProcessStatus(LongRunningProcessSta return ReflectionUtils.catchExceptions(() -> OFFLOAD_PROCESS_STATUS_IMPL_status_string_messageid.newInstance( status, lastError, messageId)); } + } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java similarity index 86% rename from pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java index 5a1ce63573cd1..80da3caa4bab7 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.conf; -import com.google.common.base.MoreObjects; import java.util.Objects; +import lombok.ToString; /** * Internal configuration data. */ +@ToString public class InternalConfigurationData { private String zookeeperServers; @@ -92,15 +93,4 @@ public int hashCode() { stateStorageServiceUrl); } - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("zookeeperServers", zookeeperServers) - .add("configurationStoreServers", configurationStoreServers) - .add("ledgersRootPath", ledgersRootPath) - .add("bookkeeperMetadataServiceUri", bookkeeperMetadataServiceUri) - .add("stateStorageServiceUrl", stateStorageServiceUrl) - .toString(); - } - } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/conf/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/package-info.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/conf/package-info.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/package-info.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/AuthenticationConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/AuthenticationConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/AuthenticationConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/AuthenticationConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/ConsumerConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/ConsumerConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/ConsumerConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/ConsumerConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/CryptoConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/CryptoConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/CryptoConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/CryptoConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/ExternalPulsarConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/ExternalPulsarConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/ExternalPulsarConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/ExternalPulsarConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java similarity index 97% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java index 1df42b935b1ec..8a83b378a8765 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java @@ -18,7 +18,6 @@ */ package org.apache.pulsar.common.functions; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.Collection; import java.util.Map; import lombok.AllArgsConstructor; @@ -34,7 +33,6 @@ @Builder(toBuilder = true) @NoArgsConstructor @AllArgsConstructor -@JsonIgnoreProperties(ignoreUnknown = true) public class FunctionConfig { /** diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/FunctionState.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/FunctionState.java similarity index 92% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/FunctionState.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/FunctionState.java index bec7528f40c34..34f50571d36ec 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/FunctionState.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/FunctionState.java @@ -18,7 +18,6 @@ */ package org.apache.pulsar.common.functions; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -31,7 +30,6 @@ @Builder(toBuilder = true) @NoArgsConstructor @AllArgsConstructor -@JsonIgnoreProperties(ignoreUnknown = true) public class FunctionState { private String key; private String stringValue; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/ProducerConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/ProducerConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/ProducerConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/ProducerConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/Resources.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/Resources.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/Resources.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/Resources.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java new file mode 100644 index 0000000000000..f1d946dc9c40a --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java @@ -0,0 +1,25 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.functions; + +public interface UpdateOptions { + boolean isUpdateAuthData(); + + void setUpdateAuthData(boolean updateAuthData); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/WindowConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/WindowConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/WindowConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/WindowConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/WorkerInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/WorkerInfo.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/WorkerInfo.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/WorkerInfo.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/package-info.java new file mode 100644 index 0000000000000..d2c8bd8218958 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.functions; \ No newline at end of file diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/io/BatchSourceConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/BatchSourceConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/io/BatchSourceConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/BatchSourceConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/io/ConnectorDefinition.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/ConnectorDefinition.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/io/ConnectorDefinition.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/ConnectorDefinition.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/io/SinkConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/SinkConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/io/SinkConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/SinkConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/io/SourceConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/SourceConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/io/SourceConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/SourceConfig.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/package-info.java new file mode 100644 index 0000000000000..809ad0dcf9534 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.io; \ No newline at end of file diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/naming/TopicDomain.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/naming/TopicDomain.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/naming/TopicDomain.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/naming/TopicDomain.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/naming/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/naming/package-info.java new file mode 100644 index 0000000000000..39d55c38269eb --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/naming/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.naming; \ No newline at end of file diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/partition/PartitionedTopicMetadata.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/partition/PartitionedTopicMetadata.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/partition/PartitionedTopicMetadata.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/partition/PartitionedTopicMetadata.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/partition/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/partition/package-info.java new file mode 100644 index 0000000000000..ba27c989725a1 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/partition/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.partition; \ No newline at end of file diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/AutoFailoverPolicy.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/AutoFailoverPolicy.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/AutoFailoverPolicy.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/AutoFailoverPolicy.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AuthAction.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AuthAction.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AuthAction.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AuthAction.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java similarity index 91% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java index 880409666bf64..de882d160dcd6 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.collect.Maps; +import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Set; @@ -35,9 +35,9 @@ public class AuthPolicies { public final Map> subscription_auth_roles; public AuthPolicies() { - namespace_auth = Maps.newHashMap(); - destination_auth = Maps.newHashMap(); - subscription_auth_roles = Maps.newHashMap(); + namespace_auth = new HashMap<>(); + destination_auth = new HashMap<>(); + subscription_auth_roles = new HashMap<>(); } @Override diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java new file mode 100644 index 0000000000000..1c19807dcc6e9 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java @@ -0,0 +1,31 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.Map; + +public interface AutoFailoverPolicyData { + AutoFailoverPolicyType getPolicy_type(); + + Map getParameters(); + + void setPolicy_type(AutoFailoverPolicyType policyType); + + void setParameters(Map parameters); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java similarity index 90% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java index 57229e653f0c1..31d01231778f1 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java @@ -18,15 +18,9 @@ */ package org.apache.pulsar.common.policies.data; -import io.swagger.annotations.ApiModel; - /** * The policy type of auto failover. */ -@ApiModel( - value = "AutoFailoverPolicyType", - description = "The policy type of auto failover." -) public enum AutoFailoverPolicyType { min_available; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java similarity index 85% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java index 221b22f0e5d0e..2a57b751b5541 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; import java.util.Objects; +import lombok.ToString; /** * Override of autoSubscriptionCreation settings on a namespace level. */ +@ToString public class AutoSubscriptionCreationOverride { public boolean allowAutoSubscriptionCreation; @@ -47,10 +48,4 @@ public boolean equals(Object obj) { } return false; } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("allowAutoSubscriptionCreation", allowAutoSubscriptionCreation).toString(); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java similarity index 90% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java index 552b470923539..750b771182b15 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; import java.util.Objects; +import lombok.ToString; /** * Override of autoTopicCreation settings on a namespace level. */ +@ToString public class AutoTopicCreationOverride { public boolean allowAutoTopicCreation; public String topicType; @@ -55,12 +56,6 @@ public boolean equals(Object obj) { return false; } - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("allowAutoTopicCreation", allowAutoTopicCreation) - .add("topicType", topicType).add("defaultNumPartitions", defaultNumPartitions).toString(); - } - public static boolean isValidOverride(AutoTopicCreationOverride override) { if (override == null) { return false; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java similarity index 91% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java index 5fd09072b6691..0bb39d27c0992 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java @@ -18,9 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import com.fasterxml.jackson.annotation.JsonAlias; -import com.google.common.base.MoreObjects; import java.util.Objects; +import lombok.ToString; /** * Unit of a backlog quota configuration for a scoped resource in a Pulsar instance. @@ -28,8 +27,8 @@ *

A scoped resource is identified by a {@link BacklogQuotaType} enumeration type which is containing two attributes: * limit representing a quota limit in bytes and policy for backlog retention policy. */ +@ToString public class BacklogQuota { - @JsonAlias("limit") private long limitSize; // backlog quota by time in second private int limitTime; @@ -89,12 +88,6 @@ public int hashCode() { return Objects.hash(Long.valueOf(limitSize), Long.valueOf(limitTime), policy); } - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("limitSize", limitSize).add("limitTime", limitTime) - .add("policy", policy).toString(); - } - @Override public boolean equals(Object obj) { if (obj instanceof BacklogQuota) { diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java similarity index 84% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java index 15f83343193c3..1acc2bc8899f1 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.Objects; +import java.util.Objects; /** * Description of a BookKeeper's affinity group. @@ -38,15 +38,15 @@ public BookieAffinityGroupData(String bookkeeperAffinityGroupPrimary, String boo @Override public int hashCode() { - return Objects.hashCode(bookkeeperAffinityGroupPrimary, bookkeeperAffinityGroupSecondary); + return Objects.hash(bookkeeperAffinityGroupPrimary, bookkeeperAffinityGroupSecondary); } @Override public boolean equals(Object obj) { if (obj instanceof BookieAffinityGroupData) { BookieAffinityGroupData other = (BookieAffinityGroupData) obj; - return Objects.equal(bookkeeperAffinityGroupPrimary, other.bookkeeperAffinityGroupPrimary) - && Objects.equal(bookkeeperAffinityGroupSecondary, other.bookkeeperAffinityGroupSecondary); + return Objects.equals(bookkeeperAffinityGroupPrimary, other.bookkeeperAffinityGroupPrimary) + && Objects.equals(bookkeeperAffinityGroupSecondary, other.bookkeeperAffinityGroupSecondary); } return false; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookieInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookieInfo.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookieInfo.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookieInfo.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java similarity index 99% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java index 5d11372df49b2..e16012e65cbc8 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java @@ -18,13 +18,12 @@ */ package org.apache.pulsar.common.policies.data; +import java.util.List; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; -import java.util.List; - /** * Raw bookies information. */ diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java similarity index 92% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java index 60bd0397013b2..f7f477c0e06c9 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java @@ -18,8 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.TreeMap; @@ -53,9 +53,9 @@ public synchronized Optional getBookie(String address) { } public synchronized void updateBookie(String group, String address, BookieInfo bookieInfo) { - checkNotNull(group); - checkNotNull(address); - checkNotNull(bookieInfo); + Objects.requireNonNull(group); + Objects.requireNonNull(address); + Objects.requireNonNull(bookieInfo); // Remove from any group first removeBookie(address); diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerAssignment.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerAssignment.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerAssignment.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerAssignment.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java similarity index 97% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java index c194a7867e8e9..7581049d461cd 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java @@ -23,7 +23,7 @@ import lombok.NoArgsConstructor; /** - * Broker Information + * Broker Information. */ @Data @AllArgsConstructor diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java new file mode 100644 index 0000000000000..3ea8e42a53b1b --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java @@ -0,0 +1,39 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.List; + +public interface BrokerNamespaceIsolationData { + String getBrokerName(); + + String getPolicyName(); + + boolean isPrimary(); + + List getNamespaceRegex(); + + void setBrokerName(String brokerName); + + void setPolicyName(String policyName); + + void setPrimary(boolean isPrimary); + + void setNamespaceRegex(List namespaceRegex); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java similarity index 90% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java index bd7a338677ba7..fb3498edb665d 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java @@ -18,7 +18,6 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.collect.ComparisonChain; import lombok.EqualsAndHashCode; /** @@ -58,8 +57,11 @@ public void setLoadFactor(int loadFactor) { @Override public int compareTo(BrokerStatus other) { - return ComparisonChain.start().compare(this.loadFactor, other.loadFactor) - .compare(this.brokerAddress, other.brokerAddress).result(); + int result = Integer.compare(this.loadFactor, other.loadFactor); + if (result == 0) { + result = this.brokerAddress.compareTo(other.brokerAddress); + } + return result; } @Override diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java similarity index 90% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java index 4bc95cba09515..3540a258ec71a 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java @@ -18,13 +18,14 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; import java.util.List; import java.util.Objects; +import lombok.ToString; /** * Holder for bundles. */ +@ToString public class BundlesData { public List boundaries; public int numBundles; @@ -75,9 +76,4 @@ public boolean equals(Object obj) { return false; } - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("numBundles", numBundles).add("boundaries", boundaries).toString(); - } - } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java new file mode 100644 index 0000000000000..5575f365ceff8 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java @@ -0,0 +1,60 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.LinkedHashSet; +import org.apache.pulsar.client.api.ProxyProtocol; + +public interface ClusterData { + String getServiceUrl(); + + String getServiceUrlTls(); + + void setServiceUrl(String serviceUrl); + + void setServiceUrlTls(String serviceUrlTls); + + String getBrokerServiceUrl(); + + void setBrokerServiceUrl(String brokerServiceUrl); + + String getBrokerServiceUrlTls(); + + void setBrokerServiceUrlTls(String brokerServiceUrlTls); + + String getProxyServiceUrl(); + + void setProxyServiceUrl(String proxyServiceUrl); + + ProxyProtocol getProxyProtocol(); + + void setProxyProtocol(ProxyProtocol proxyProtocol); + + LinkedHashSet getPeerClusterNames(); + + String getAuthenticationPlugin(); + + void setAuthenticationPlugin(String authenticationPlugin); + + String getAuthenticationParameters(); + + void setAuthenticationParameters(String authenticationParameters); + + void setPeerClusterNames(LinkedHashSet peerClusterNames); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java similarity index 98% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java index f1d785680b479..4bba99798f6ed 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java @@ -18,9 +18,9 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; import java.util.List; import java.util.Map; +import java.util.Objects; /** * Consumer statistics. @@ -97,7 +97,7 @@ public class ConsumerStats { private StringBuilder stringBuffer = new StringBuilder(); public ConsumerStats add(ConsumerStats stats) { - checkNotNull(stats); + Objects.requireNonNull(stats); this.msgRateOut += stats.msgRateOut; this.msgThroughputOut += stats.msgThroughputOut; this.bytesOutCounter += stats.bytesOutCounter; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/DelayedDeliveryPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DelayedDeliveryPolicies.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/DelayedDeliveryPolicies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DelayedDeliveryPolicies.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java similarity index 87% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java index 002cdac09f338..e9f5f8e413ca7 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; import java.util.Objects; +import lombok.ToString; /** * Dispatch rate. */ +@ToString public class DispatchRate { public int dispatchThrottlingRateInMsg = -1; @@ -68,13 +69,4 @@ public boolean equals(Object obj) { } return false; } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("dispatchThrottlingRateInMsg", dispatchThrottlingRateInMsg) - .add("dispatchThrottlingRateInByte", dispatchThrottlingRateInByte) - .add("ratePeriodInSecond", ratePeriodInSecond).toString(); - } - } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ErrorData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ErrorData.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ErrorData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ErrorData.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ExceptionInformation.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ExceptionInformation.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ExceptionInformation.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ExceptionInformation.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java new file mode 100644 index 0000000000000..b92717cc7d6be --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java @@ -0,0 +1,27 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.Set; + +public interface FailureDomain { + Set getBrokers(); + + void setBrokers(Set brokers); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java new file mode 100644 index 0000000000000..03714476e3d08 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +public interface FunctionInstanceStats { + int getInstanceId(); + + FunctionInstanceStatsData getMetrics(); + + void setInstanceId(int instanceId); + + void setMetrics(FunctionInstanceStatsData metrics); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java new file mode 100644 index 0000000000000..5d8d558051b35 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java @@ -0,0 +1,33 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +public interface FunctionInstanceStatsData extends FunctionInstanceStatsDataBase { + FunctionInstanceStatsDataBase getOneMin(); + + Long getLastInvocation(); + + java.util.Map getUserMetrics(); + + void setOneMin(FunctionInstanceStatsDataBase oneMin); + + void setLastInvocation(Long lastInvocation); + + void setUserMetrics(java.util.Map userMetrics); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java new file mode 100644 index 0000000000000..578e19e3a1288 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java @@ -0,0 +1,41 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +public interface FunctionInstanceStatsDataBase { + long getReceivedTotal(); + + long getProcessedSuccessfullyTotal(); + + long getSystemExceptionsTotal(); + + long getUserExceptionsTotal(); + + Double getAvgProcessLatency(); + + void setReceivedTotal(long receivedTotal); + + void setProcessedSuccessfullyTotal(long processedSuccessfullyTotal); + + void setSystemExceptionsTotal(long systemExceptionsTotal); + + void setUserExceptionsTotal(long userExceptionsTotal); + + void setAvgProcessLatency(Double avgProcessLatency); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java new file mode 100644 index 0000000000000..bf07d53e02600 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java @@ -0,0 +1,59 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.List; + +public interface FunctionStats { + void addInstance(FunctionInstanceStats functionInstanceStats); + + FunctionStats calculateOverall(); + + long getReceivedTotal(); + + long getProcessedSuccessfullyTotal(); + + long getSystemExceptionsTotal(); + + long getUserExceptionsTotal(); + + Double getAvgProcessLatency(); + + FunctionInstanceStatsDataBase getOneMin(); + + Long getLastInvocation(); + + List getInstances(); + + void setReceivedTotal(long receivedTotal); + + void setProcessedSuccessfullyTotal(long processedSuccessfullyTotal); + + void setSystemExceptionsTotal(long systemExceptionsTotal); + + void setUserExceptionsTotal(long userExceptionsTotal); + + void setAvgProcessLatency(Double avgProcessLatency); + + void setOneMin(FunctionInstanceStatsDataBase oneMin); + + void setLastInvocation(Long lastInvocation); + + void setInstances(List instances); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java similarity index 89% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java index 30b50b821802a..8f4f7e2562909 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java @@ -18,11 +18,9 @@ */ package org.apache.pulsar.common.policies.data; -import java.io.IOException; import java.util.LinkedList; import java.util.List; import lombok.Data; -import org.apache.pulsar.common.util.ObjectMapperFactory; /** * Data lass containing status of Pulsar Function. @@ -79,7 +77,4 @@ public void addInstance(FunctionInstanceStatus functionInstanceStatus) { instances.add(functionInstanceStatus); } - public static FunctionStatus decode(String json) throws IOException { - return ObjectMapperFactory.getThreadLocal().readValue(json, FunctionStatus.class); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicDeleteMode.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicDeleteMode.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicDeleteMode.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicDeleteMode.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicPolicies.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicPolicies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicPolicies.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java new file mode 100644 index 0000000000000..6feb0d71de7cc --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java @@ -0,0 +1,41 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.List; + +public interface NamespaceIsolationData { + + List getNamespaces(); + + List getPrimary(); + + List getSecondary(); + + AutoFailoverPolicyData getAuto_failover_policy(); + + void setNamespaces(List namespaces); + + void setPrimary(List primary); + + void setSecondary(List secondary); + + void setAuto_failover_policy(AutoFailoverPolicyData autoFailoverPolicyData); + +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceOwnershipStatus.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceOwnershipStatus.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceOwnershipStatus.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceOwnershipStatus.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java similarity index 93% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java index f1602a455a75c..74e17524c8548 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Objects; /** * Non-persistent publisher statistics. @@ -31,7 +31,7 @@ public class NonPersistentPublisherStats extends PublisherStats { public double msgDropRate; public NonPersistentPublisherStats add(NonPersistentPublisherStats stats) { - checkNotNull(stats); + Objects.requireNonNull(stats); super.add(stats); this.msgDropRate += stats.msgDropRate; return this; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java similarity index 93% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java index 906afdecdfa4d..d27813c3b272f 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Objects; /** * Statistics for a non-persistent replicator. @@ -31,7 +31,7 @@ public class NonPersistentReplicatorStats extends ReplicatorStats { public double msgDropRate; public NonPersistentReplicatorStats add(NonPersistentReplicatorStats stats) { - checkNotNull(stats); + Objects.requireNonNull(stats); super.add(stats); this.msgDropRate += stats.msgDropRate; return this; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java similarity index 94% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java index 896e67794fd86..8d06d41991c21 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Objects; /** * Statistics for subscription to non-persistent topics. @@ -39,7 +39,7 @@ public void reset() { // if the stats are added for the 1st time, we will need to make a copy of these stats and add it to the current // stats public NonPersistentSubscriptionStats add(NonPersistentSubscriptionStats stats) { - checkNotNull(stats); + Objects.requireNonNull(stats); super.add(stats); this.msgDropRate += stats.msgDropRate; return this; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java similarity index 88% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java index debd1a75ea2c5..fd06101d7facc 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java @@ -18,11 +18,12 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.TreeMap; /** * Statistics for a non-persistent topic. @@ -45,9 +46,9 @@ public class NonPersistentTopicStats extends TopicStats { public Map replication; public NonPersistentTopicStats() { - this.publishers = Lists.newArrayList(); - this.subscriptions = Maps.newHashMap(); - this.replication = Maps.newTreeMap(); + this.publishers = new ArrayList<>(); + this.subscriptions = new HashMap<>(); + this.replication = new TreeMap<>(); } public void reset() { @@ -58,7 +59,7 @@ public void reset() { // if the stats are added for the 1st time, we will need to make a copy of these stats and add it to the current // stats. public NonPersistentTopicStats add(NonPersistentTopicStats stats) { - checkNotNull(stats); + Objects.requireNonNull(stats); super.add(stats); this.msgDropRate += stats.msgDropRate; return this; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java new file mode 100644 index 0000000000000..002e6f9007198 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java @@ -0,0 +1,133 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +public interface OffloadPolicies { + String getOffloadersDirectory(); + + String getManagedLedgerOffloadDriver(); + + Integer getManagedLedgerOffloadMaxThreads(); + + Integer getManagedLedgerOffloadPrefetchRounds(); + + Long getManagedLedgerOffloadThresholdInBytes(); + + Long getManagedLedgerOffloadDeletionLagInMillis(); + + OffloadedReadPriority getManagedLedgerOffloadedReadPriority(); + + String getS3ManagedLedgerOffloadRegion(); + + String getS3ManagedLedgerOffloadBucket(); + + String getS3ManagedLedgerOffloadServiceEndpoint(); + + Integer getS3ManagedLedgerOffloadMaxBlockSizeInBytes(); + + Integer getS3ManagedLedgerOffloadReadBufferSizeInBytes(); + + String getS3ManagedLedgerOffloadCredentialId(); + + String getS3ManagedLedgerOffloadCredentialSecret(); + + String getS3ManagedLedgerOffloadRole(); + + String getS3ManagedLedgerOffloadRoleSessionName(); + + String getGcsManagedLedgerOffloadRegion(); + + String getGcsManagedLedgerOffloadBucket(); + + Integer getGcsManagedLedgerOffloadMaxBlockSizeInBytes(); + + Integer getGcsManagedLedgerOffloadReadBufferSizeInBytes(); + + String getGcsManagedLedgerOffloadServiceAccountKeyFile(); + + String getFileSystemProfilePath(); + + String getFileSystemURI(); + + String getManagedLedgerOffloadBucket(); + + String getManagedLedgerOffloadRegion(); + + String getManagedLedgerOffloadServiceEndpoint(); + + Integer getManagedLedgerOffloadMaxBlockSizeInBytes(); + + Integer getManagedLedgerOffloadReadBufferSizeInBytes(); + + void setOffloadersDirectory(String offloadersDirectory); + + void setManagedLedgerOffloadDriver(String managedLedgerOffloadDriver); + + void setManagedLedgerOffloadMaxThreads(Integer managedLedgerOffloadMaxThreads); + + void setManagedLedgerOffloadPrefetchRounds(Integer managedLedgerOffloadPrefetchRounds); + + void setManagedLedgerOffloadThresholdInBytes(Long managedLedgerOffloadThresholdInBytes); + + void setManagedLedgerOffloadDeletionLagInMillis(Long managedLedgerOffloadDeletionLagInMillis); + + void setManagedLedgerOffloadedReadPriority(OffloadedReadPriority managedLedgerOffloadedReadPriority); + + void setS3ManagedLedgerOffloadRegion(String s3ManagedLedgerOffloadRegion); + + void setS3ManagedLedgerOffloadBucket(String s3ManagedLedgerOffloadBucket); + + void setS3ManagedLedgerOffloadServiceEndpoint(String s3ManagedLedgerOffloadServiceEndpoint); + + void setS3ManagedLedgerOffloadMaxBlockSizeInBytes(Integer s3ManagedLedgerOffloadMaxBlockSizeInBytes); + + void setS3ManagedLedgerOffloadReadBufferSizeInBytes(Integer s3ManagedLedgerOffloadReadBufferSizeInBytes); + + void setS3ManagedLedgerOffloadCredentialId(String s3ManagedLedgerOffloadCredentialId); + + void setS3ManagedLedgerOffloadCredentialSecret(String s3ManagedLedgerOffloadCredentialSecret); + + void setS3ManagedLedgerOffloadRole(String s3ManagedLedgerOffloadRole); + + void setS3ManagedLedgerOffloadRoleSessionName(String s3ManagedLedgerOffloadRoleSessionName); + + void setGcsManagedLedgerOffloadRegion(String gcsManagedLedgerOffloadRegion); + + void setGcsManagedLedgerOffloadBucket(String gcsManagedLedgerOffloadBucket); + + void setGcsManagedLedgerOffloadMaxBlockSizeInBytes(Integer gcsManagedLedgerOffloadMaxBlockSizeInBytes); + + void setGcsManagedLedgerOffloadReadBufferSizeInBytes(Integer gcsManagedLedgerOffloadReadBufferSizeInBytes); + + void setGcsManagedLedgerOffloadServiceAccountKeyFile(String gcsManagedLedgerOffloadServiceAccountKeyFile); + + void setFileSystemProfilePath(String fileSystemProfilePath); + + void setFileSystemURI(String fileSystemURI); + + void setManagedLedgerOffloadBucket(String managedLedgerOffloadBucket); + + void setManagedLedgerOffloadRegion(String managedLedgerOffloadRegion); + + void setManagedLedgerOffloadServiceEndpoint(String managedLedgerOffloadServiceEndpoint); + + void setManagedLedgerOffloadMaxBlockSizeInBytes(Integer managedLedgerOffloadMaxBlockSizeInBytes); + + void setManagedLedgerOffloadReadBufferSizeInBytes(Integer managedLedgerOffloadReadBufferSizeInBytes); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadedReadPriority.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadedReadPriority.java new file mode 100644 index 0000000000000..245ec6068920f --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadedReadPriority.java @@ -0,0 +1,72 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.Arrays; +import java.util.stream.Collectors; +import org.apache.pulsar.common.classification.InterfaceAudience; +import org.apache.pulsar.common.classification.InterfaceStability; + +@InterfaceAudience.Public +@InterfaceStability.Stable +public enum OffloadedReadPriority { + /** + * For offloaded messages, readers will try to read from bookkeeper at first, + * if messages not exist at bookkeeper then read from offloaded storage. + */ + BOOKKEEPER_FIRST("bookkeeper-first"), + /** + * For offloaded messages, readers will try to read from offloaded storage first, + * even they are still exist in bookkeeper. + */ + TIERED_STORAGE_FIRST("tiered-storage-first"); + + private final String value; + + OffloadedReadPriority(String value) { + this.value = value; + } + + public boolean equalsName(String otherName) { + return value.equals(otherName); + } + + @Override + public String toString() { + return value; + } + + public static OffloadedReadPriority fromString(String str) { + for (OffloadedReadPriority value : OffloadedReadPriority.values()) { + if (value.value.equals(str)) { + return value; + } + } + + throw new IllegalArgumentException("--offloadedReadPriority parameter must be one of " + + Arrays.stream(OffloadedReadPriority.values()) + .map(OffloadedReadPriority::toString) + .collect(Collectors.joining(",")) + + " but got: " + str); + } + + public String getValue() { + return value; + } +} \ No newline at end of file diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java similarity index 95% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java index d20e03f9515e1..dad2985b5a362 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.collect.Maps; +import java.util.HashMap; import java.util.Map; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; @@ -34,7 +34,7 @@ public class PartitionedTopicInternalStats { public PartitionedTopicInternalStats() { super(); metadata = new PartitionedTopicMetadata(); - partitions = Maps.newHashMap(); + partitions = new HashMap<>(); } public PartitionedTopicInternalStats(PartitionedTopicMetadata metadata) { diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java similarity index 95% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java index cce78281ad240..699fe6e470315 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.collect.Maps; +import java.util.HashMap; import java.util.Map; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; @@ -34,7 +34,7 @@ public class PartitionedTopicStats extends TopicStats { public PartitionedTopicStats() { super(); metadata = new PartitionedTopicMetadata(); - partitions = Maps.newHashMap(); + partitions = new HashMap<>(); } public PartitionedTopicStats(PartitionedTopicMetadata metadata) { diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java similarity index 89% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java index 466b3388ff23a..345695040d0f5 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; import java.util.Objects; +import lombok.ToString; /** * Configuration of bookkeeper persistence policies. */ +@ToString public class PersistencePolicies { private int bookkeeperEnsemble; private int bookkeeperWriteQuorum; @@ -75,10 +76,4 @@ public boolean equals(Object obj) { return false; } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("e", bookkeeperEnsemble).add("w", bookkeeperWriteQuorum) - .add("a", bookkeeperAckQuorum).add("ml-md-rate", managedLedgerMaxMarkDeleteRate).toString(); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PersistentTopicInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistentTopicInternalStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PersistentTopicInternalStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistentTopicInternalStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/Policies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java similarity index 63% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/Policies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java index 9c381eaee762b..86c0b2b8a19b5 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/Policies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java @@ -18,38 +18,32 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -import java.util.List; +import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Objects; import java.util.Set; -import javax.ws.rs.core.Response.Status; - -import org.apache.pulsar.common.api.proto.CommandSubscribe.SubType; -import org.apache.pulsar.common.util.RestException; +import lombok.ToString; /** * Definition of Pulsar policies. */ +@ToString public class Policies { @SuppressWarnings("checkstyle:MemberName") public final AuthPolicies auth_policies = new AuthPolicies(); @SuppressWarnings("checkstyle:MemberName") - public Set replication_clusters = Sets.newHashSet(); + public Set replication_clusters = new HashSet<>(); public BundlesData bundles; @SuppressWarnings("checkstyle:MemberName") - public Map backlog_quota_map = Maps.newHashMap(); + public Map backlog_quota_map = new HashMap<>(); @Deprecated - public Map clusterDispatchRate = Maps.newHashMap(); - public Map topicDispatchRate = Maps.newHashMap(); - public Map subscriptionDispatchRate = Maps.newHashMap(); - public Map replicatorDispatchRate = Maps.newHashMap(); - public Map clusterSubscribeRate = Maps.newHashMap(); + public Map clusterDispatchRate = new HashMap<>(); + public Map topicDispatchRate = new HashMap<>(); + public Map subscriptionDispatchRate = new HashMap<>(); + public Map replicatorDispatchRate = new HashMap<>(); + public Map clusterSubscribeRate = new HashMap<>(); public PersistencePolicies persistence = null; // If set, it will override the broker settings for enabling deduplication @@ -58,10 +52,10 @@ public class Policies { public AutoTopicCreationOverride autoTopicCreationOverride = null; // If set, it will override the broker settings for allowing auto subscription creation public AutoSubscriptionCreationOverride autoSubscriptionCreationOverride = null; - public Map publishMaxMessageRate = Maps.newHashMap(); + public Map publishMaxMessageRate = new HashMap<>(); @SuppressWarnings("checkstyle:MemberName") - public Map latency_stats_sample_rate = Maps.newHashMap(); + public Map latency_stats_sample_rate = new HashMap<>(); @SuppressWarnings("checkstyle:MemberName") public Integer message_ttl_in_seconds = null; @SuppressWarnings("checkstyle:MemberName") @@ -122,10 +116,12 @@ public class Policies { public Integer deduplicationSnapshotIntervalSeconds = null; - public Set subscription_types_enabled = Sets.newHashSet(); + @SuppressWarnings("checkstyle:MemberName") + public Set subscription_types_enabled = new HashSet<>(); + + public Map properties = new HashMap<>(); - public Map properties = Maps.newHashMap(); - @SuppressWarnings("checkstype:MemberName") + @SuppressWarnings("checkstyle:MemberName") public String resource_group_name = null; @Override @@ -183,7 +179,8 @@ public boolean equals(Object obj) { && Objects.equals(max_producers_per_topic, other.max_producers_per_topic) && Objects.equals(max_consumers_per_topic, other.max_consumers_per_topic) && Objects.equals(max_unacked_messages_per_consumer, other.max_unacked_messages_per_consumer) - && Objects.equals(max_unacked_messages_per_subscription, other.max_unacked_messages_per_subscription) + && Objects.equals(max_unacked_messages_per_subscription, + other.max_unacked_messages_per_subscription) && Objects.equals(max_consumers_per_subscription, other.max_consumers_per_subscription) && Objects.equals(compaction_threshold, other.compaction_threshold) && offload_threshold == other.offload_threshold @@ -201,85 +198,5 @@ public boolean equals(Object obj) { return false; } - public static BundlesData defaultBundle() { - BundlesData bundle = new BundlesData(1); - List boundaries = Lists.newArrayList(); - boundaries.add(FIRST_BOUNDARY); - boundaries.add(LAST_BOUNDARY); - bundle.setBoundaries(boundaries); - return bundle; - } - - public static void setStorageQuota(Policies polices, BacklogQuota quota) { - if (polices == null) { - return; - } - polices.backlog_quota_map.put(BacklogQuota.BacklogQuotaType.destination_storage, quota); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("auth_policies", auth_policies) - .add("replication_clusters", replication_clusters) - .add("bundles", bundles) - .add("backlog_quota_map", backlog_quota_map) - .add("persistence", persistence) - .add("deduplicationEnabled", deduplicationEnabled) - .add("autoTopicCreationOverride", autoTopicCreationOverride) - .add("autoSubscriptionCreationOverride", autoSubscriptionCreationOverride) - .add("clusterDispatchRate", clusterDispatchRate) - .add("topicDispatchRate", topicDispatchRate) - .add("subscriptionDispatchRate", subscriptionDispatchRate) - .add("replicatorDispatchRate", replicatorDispatchRate) - .add("clusterSubscribeRate", clusterSubscribeRate) - .add("publishMaxMessageRate", publishMaxMessageRate) - .add("latency_stats_sample_rate", latency_stats_sample_rate) - .add("message_ttl_in_seconds", message_ttl_in_seconds) - .add("subscription_expiration_time_minutes", subscription_expiration_time_minutes) - .add("retention_policies", retention_policies) - .add("deleted", deleted) - .add("encryption_required", encryption_required) - .add("delayed_delivery_policies", delayed_delivery_policies) - .add("inactive_topic_policies", inactive_topic_policies) - .add("subscription_auth_mode", subscription_auth_mode) - .add("max_producers_per_topic", max_producers_per_topic) - .add("max_consumers_per_topic", max_consumers_per_topic) - .add("max_consumers_per_subscription", max_consumers_per_topic) - .add("max_unacked_messages_per_consumer", max_unacked_messages_per_consumer) - .add("max_unacked_messages_per_subscription", max_unacked_messages_per_subscription) - .add("compaction_threshold", compaction_threshold) - .add("offload_threshold", offload_threshold) - .add("offload_deletion_lag_ms", offload_deletion_lag_ms) - .add("schema_auto_update_compatibility_strategy", schema_auto_update_compatibility_strategy) - .add("schema_validation_enforced", schema_validation_enforced) - .add("schema_compatibility_Strategy", schema_compatibility_strategy) - .add("is_allow_auto_update_Schema", is_allow_auto_update_schema) - .add("offload_policies", offload_policies) - .add("subscription_types_enabled", subscription_types_enabled) - .add("properties", properties) - .add("resource_group_name", resource_group_name).toString(); - } - - private static final long MAX_BUNDLES = ((long) 1) << 32; - public static BundlesData getBundles(int numBundles) { - if (numBundles <= 0) { - throw new RestException(Status.BAD_REQUEST, - "Invalid number of bundles. Number of numbles has to be in the range of (0, 2^32]."); - } - Long maxVal = MAX_BUNDLES; - Long segSize = maxVal / numBundles; - List partitions = Lists.newArrayList(); - partitions.add(String.format("0x%08x", 0L)); - Long curPartition = segSize; - for (int i = 0; i < numBundles; i++) { - if (i != numBundles - 1) { - partitions.add(String.format("0x%08x", curPartition)); - } else { - partitions.add(String.format("0x%08x", maxVal - 1)); - } - curPartition += segSize; - } - return new BundlesData(partitions); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java similarity index 86% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java index 095e4e9248d96..79a3cd5fa75dd 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; import java.util.Objects; +import lombok.ToString; /** * Publish-rate to manage publish throttling. */ +@ToString public class PublishRate { public int publishThrottlingRateInMsg = -1; @@ -56,10 +57,4 @@ public boolean equals(Object obj) { return false; } - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("publishThrottlingRateInMsg", publishThrottlingRateInMsg) - .add("publishThrottlingRateInByte", publishThrottlingRateInByte).toString(); - } - } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java similarity index 98% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java index d228f21305902..e3732fa553d07 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java @@ -18,7 +18,6 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; import java.util.Map; import org.apache.pulsar.client.api.ProducerAccessMode; @@ -71,7 +70,9 @@ public class PublisherStats { public Map metadata; public PublisherStats add(PublisherStats stats) { - checkNotNull(stats); + if (stats == null) { + throw new NullPointerException(); + } this.count++; this.msgRateIn += stats.msgRateIn; this.msgThroughputIn += stats.msgThroughputIn; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/RawBookieInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/RawBookieInfo.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/RawBookieInfo.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/RawBookieInfo.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java similarity index 96% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java index a3dbec1ee0024..2969b512c6e52 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Objects; /** * Statistics about a replicator. @@ -62,7 +62,7 @@ public class ReplicatorStats { public String outboundConnectedSince; public ReplicatorStats add(ReplicatorStats stats) { - checkNotNull(stats); + Objects.requireNonNull(stats); this.msgRateIn += stats.msgRateIn; this.msgThroughputIn += stats.msgThroughputIn; this.msgRateOut += stats.msgRateOut; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java similarity index 93% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java index 046c2d2bd136e..123148f891cd9 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java @@ -18,11 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; import lombok.Data; -import java.util.Objects; - @Data public class ResourceGroup { private int publishRateInMsgs = -1; private long publishRateInBytes = -1; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java similarity index 90% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java index 14197f8cd2904..c381c1b676990 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java @@ -18,8 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.google.common.base.Objects; +import java.util.Objects; /** * Resource quota for a namespace or namespace bundle. @@ -165,7 +164,6 @@ public boolean getDynamic() { /** * Check if this is a valid quota definition. */ - @JsonIgnore public boolean isValid() { if (this.msgRateIn > 0.0 && this.msgRateOut > 0.0 && this.bandwidthIn > 0.0 && this.bandwidthOut > 0.0 && this.memory > 0.0) { @@ -205,7 +203,7 @@ public void substract(ResourceQuota quota) { @Override public int hashCode() { - return Objects.hashCode(msgRateIn, msgRateOut, bandwidthIn, + return Objects.hash(msgRateIn, msgRateOut, bandwidthIn, bandwidthOut, memory, dynamic); } @@ -213,10 +211,12 @@ public int hashCode() { public boolean equals(Object obj) { if (obj instanceof ResourceQuota) { ResourceQuota other = (ResourceQuota) obj; - return Objects.equal(this.msgRateIn, other.msgRateIn) && Objects.equal(this.msgRateOut, other.msgRateOut) - && Objects.equal(this.bandwidthIn, other.bandwidthIn) - && Objects.equal(this.bandwidthOut, other.bandwidthOut) && Objects.equal(this.memory, other.memory) - && Objects.equal(this.dynamic, other.dynamic); + return Objects.equals(this.msgRateIn, other.msgRateIn) + && Objects.equals(this.msgRateOut, other.msgRateOut) + && Objects.equals(this.bandwidthIn, other.bandwidthIn) + && Objects.equals(this.bandwidthOut, other.bandwidthOut) + && Objects.equals(this.memory, other.memory) + && Objects.equals(this.dynamic, other.dynamic); } return false; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/RetentionPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/RetentionPolicies.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/RetentionPolicies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/RetentionPolicies.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SchemaAutoUpdateCompatibilityStrategy.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SchemaAutoUpdateCompatibilityStrategy.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SchemaAutoUpdateCompatibilityStrategy.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SchemaAutoUpdateCompatibilityStrategy.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SchemaCompatibilityStrategy.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SchemaCompatibilityStrategy.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SchemaCompatibilityStrategy.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SchemaCompatibilityStrategy.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java similarity index 91% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java index fe704228c56af..8bd539c369825 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java @@ -18,11 +18,9 @@ */ package org.apache.pulsar.common.policies.data; -import java.io.IOException; import java.util.LinkedList; import java.util.List; import lombok.Data; -import org.apache.pulsar.common.util.ObjectMapperFactory; /** * Status of Pulsar Sink. @@ -86,7 +84,4 @@ public void addInstance(SinkInstanceStatus sinkInstanceStatus) { instances.add(sinkInstanceStatus); } - public static SinkStatus decode(String json) throws IOException { - return ObjectMapperFactory.getThreadLocal().readValue(json, SinkStatus.class); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java similarity index 92% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java index 3e531e9edb27f..bb7ed2d2dafdd 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java @@ -18,11 +18,9 @@ */ package org.apache.pulsar.common.policies.data; -import java.io.IOException; import java.util.LinkedList; import java.util.List; import lombok.Data; -import org.apache.pulsar.common.util.ObjectMapperFactory; /** * Source status. @@ -87,7 +85,4 @@ public void addInstance(SourceInstanceStatus sourceInstanceStatus) { instances.add(sourceInstanceStatus); } - public static SourceStatus decode(String json) throws IOException { - return ObjectMapperFactory.getThreadLocal().readValue(json, SourceStatus.class); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java similarity index 85% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java index 49c00b8810591..dc553c6926787 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; import java.util.Objects; +import lombok.ToString; /** * Information about subscription rate. */ +@ToString public class SubscribeRate { public int subscribeThrottlingRatePerConsumer = -1; @@ -52,10 +53,4 @@ public boolean equals(Object obj) { return false; } - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("subscribeThrottlingRatePerConsumer", subscribeThrottlingRatePerConsumer) - .add("ratePeriodInSecond", ratePeriodInSecond).toString(); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionAuthMode.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionAuthMode.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionAuthMode.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionAuthMode.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java similarity index 95% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java index 2b994be585ca7..7685c72c24813 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java @@ -18,12 +18,11 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; -import com.google.common.collect.Lists; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import org.apache.pulsar.common.api.proto.CommandSubscribe.SubType; +import java.util.Objects; /** * Statistics about subscription. @@ -73,7 +72,7 @@ public class SubscriptionStats { public long unackedMessages; /** Whether this subscription is Exclusive or Shared or Failover. */ - public SubType type; + public String type; /** The name of the consumer that is active for single active consumer subscriptions i.e. failover or exclusive. */ public String activeConsumerName; @@ -118,7 +117,7 @@ public class SubscriptionStats { public int nonContiguousDeletedMessagesRangesSerializedSize; public SubscriptionStats() { - this.consumers = Lists.newArrayList(); + this.consumers = new ArrayList<>(); this.consumersAfterMarkDeletePosition = new LinkedHashMap<>(); } @@ -145,7 +144,7 @@ public void reset() { // if the stats are added for the 1st time, we will need to make a copy of these stats and add it to the current // stats public SubscriptionStats add(SubscriptionStats stats) { - checkNotNull(stats); + Objects.requireNonNull(stats); this.msgRateOut += stats.msgRateOut; this.msgThroughputOut += stats.msgThroughputOut; this.bytesOutCounter += stats.bytesOutCounter; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java new file mode 100644 index 0000000000000..dc8625e0cb5cd --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java @@ -0,0 +1,31 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.Set; + +public interface TenantInfo { + Set getAdminRoles(); + + void setAdminRoles(Set adminRoles); + + Set getAllowedClusters(); + + void setAllowedClusters(Set allowedClusters); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java similarity index 95% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java index 33a6f8210f5b4..a86b928187697 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java @@ -18,11 +18,12 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.TreeMap; /** * Statistics for a Pulsar topic. @@ -92,9 +93,9 @@ public class TopicStats { public int nonContiguousDeletedMessagesRangesSerializedSize; public TopicStats() { - this.publishers = Lists.newArrayList(); - this.subscriptions = Maps.newHashMap(); - this.replication = Maps.newTreeMap(); + this.publishers = new ArrayList<>(); + this.subscriptions = new HashMap<>(); + this.replication = new TreeMap<>(); } public void reset() { @@ -124,7 +125,7 @@ public void reset() { // if the stats are added for the 1st time, we will need to make a copy of these stats and add it to the current // stats. public TopicStats add(TopicStats stats) { - checkNotNull(stats); + Objects.requireNonNull(stats); this.count++; this.msgRateIn += stats.msgRateIn; this.msgThroughputIn += stats.msgThroughputIn; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicType.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicType.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicType.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicType.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionBufferStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionBufferStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionBufferStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionBufferStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java similarity index 95% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java index 0d2a33471a558..4f099229e155b 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java @@ -23,6 +23,6 @@ */ public class TransactionCoordinatorInternalStats { - /** The transaction coordinator log stats */ + /** The transaction coordinator log stats. */ public TransactionLogStats transactionLogStats; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStats.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStatus.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStatus.java new file mode 100644 index 0000000000000..033a66af8e8cc --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStatus.java @@ -0,0 +1,37 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import lombok.Data; + +/** + * Transaction coordinator status. + */ +@Data +public class TransactionCoordinatorStatus { + + /** The state of this transaction metadataStore. */ + public String state; + + /** The sequenceId of transaction metadataStore. */ + public long leastSigBits; + + /** The low water mark of transaction metadataStore. */ + public long lowWaterMark; +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionInBufferStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInBufferStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionInBufferStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInBufferStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java similarity index 97% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java index 44beada7cecb3..12383b94d5a9b 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java @@ -20,8 +20,6 @@ import lombok.Data; -import java.util.List; - @Data public class TransactionInPendingAckStats { diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java similarity index 89% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java index fab2e609363c7..35fadd18c85b8 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java @@ -23,9 +23,9 @@ */ public class TransactionLogStats { - /** The managed ledger name*/ - public String managedLedgerName ; + /** The managed ledger name. */ + public String managedLedgerName; - /** The manage ledger internal stats*/ + /** The manage ledger internal stats. */ public ManagedLedgerInternalStats managedLedgerInternalStats; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java index fd2d27fcc440e..4f987014c7413 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java @@ -18,8 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import lombok.Data; import java.util.Map; +import lombok.Data; @Data public class TransactionMetadata { diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java similarity index 95% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java index 8a8163926ed0a..cf513018c65ba 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java @@ -23,6 +23,6 @@ */ public class TransactionPendingAckInternalStats { - /** The transaction pending ack log stats */ + /** The transaction pending ack log stats. */ public TransactionLogStats pendingAckLogStats; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java similarity index 92% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java index 8781898189c7c..ce70d65b48f73 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java @@ -29,5 +29,5 @@ public class WorkerFunctionInstanceStats { * Fully qualified function instance name. */ public String name; - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData metrics; + public FunctionInstanceStatsData metrics; } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/package-info.java new file mode 100644 index 0000000000000..e27dd7e0e591a --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.policies.data; \ No newline at end of file diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java similarity index 95% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java index 7a3f37168c586..6fa45aa20505d 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java @@ -29,9 +29,9 @@ public class AutoFailoverPolicyFactory { public static AutoFailoverPolicy create(AutoFailoverPolicyData policyData) { // TODO: Add more policy types when needed - if (!AutoFailoverPolicyType.min_available.equals(policyData.policy_type)) { + if (!AutoFailoverPolicyType.min_available.equals(policyData.getPolicy_type())) { // right now, only support one type of policy: MinAvailablePolicy - throw new IllegalArgumentException("Unrecognized auto_failover_policy: " + policyData.policy_type); + throw new IllegalArgumentException("Unrecognized auto_failover_policy: " + policyData.getPolicy_type()); } return new MinAvailablePolicy(policyData); diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java similarity index 78% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java index 85af797235c46..99200ffd434b5 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java @@ -18,8 +18,7 @@ */ package org.apache.pulsar.common.policies.impl; -import static com.google.common.base.Preconditions.checkArgument; -import com.google.common.base.Objects; +import java.util.Objects; import java.util.SortedSet; import org.apache.pulsar.common.policies.AutoFailoverPolicy; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; @@ -45,23 +44,29 @@ public class MinAvailablePolicy extends AutoFailoverPolicy { } public MinAvailablePolicy(AutoFailoverPolicyData policyData) { - checkArgument(policyData.policy_type.equals(AutoFailoverPolicyType.min_available)); - checkArgument(policyData.parameters.containsKey(MIN_LIMIT_KEY)); - checkArgument(policyData.parameters.containsKey(USAGE_THRESHOLD_KEY)); - this.min_limit = Integer.parseInt(policyData.parameters.get(MIN_LIMIT_KEY)); - this.usage_threshold = Integer.parseInt(policyData.parameters.get(USAGE_THRESHOLD_KEY)); + if (!policyData.getPolicy_type().equals(AutoFailoverPolicyType.min_available)) { + throw new IllegalArgumentException(); + } + if (!policyData.getParameters().containsKey(MIN_LIMIT_KEY)) { + throw new IllegalArgumentException(); + } + if (!policyData.getParameters().containsKey(USAGE_THRESHOLD_KEY)) { + throw new IllegalArgumentException(); + } + this.min_limit = Integer.parseInt(policyData.getParameters().get(MIN_LIMIT_KEY)); + this.usage_threshold = Integer.parseInt(policyData.getParameters().get(USAGE_THRESHOLD_KEY)); } @Override public int hashCode() { - return Objects.hashCode(min_limit, usage_threshold); + return Objects.hash(min_limit, usage_threshold); } @Override public boolean equals(Object obj) { if (obj instanceof MinAvailablePolicy) { MinAvailablePolicy other = (MinAvailablePolicy) obj; - return Objects.equal(min_limit, other.min_limit) && Objects.equal(usage_threshold, other.usage_threshold); + return Objects.equals(min_limit, other.min_limit) && Objects.equals(usage_threshold, other.usage_threshold); } return false; } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/package-info.java new file mode 100644 index 0000000000000..47e3597d14cdf --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.policies.impl; \ No newline at end of file diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/package-info.java new file mode 100644 index 0000000000000..c4c4f9a16f071 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.policies; \ No newline at end of file diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/schema/IsCompatibilityResponse.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/IsCompatibilityResponse.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/protocol/schema/IsCompatibilityResponse.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/IsCompatibilityResponse.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/schema/PostSchemaPayload.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/PostSchemaPayload.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/protocol/schema/PostSchemaPayload.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/PostSchemaPayload.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/package-info.java new file mode 100644 index 0000000000000..3819274fc324a --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.protocol.schema; \ No newline at end of file diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/stats/AllocatorStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/AllocatorStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/stats/AllocatorStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/AllocatorStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/stats/Metrics.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/Metrics.java similarity index 84% rename from pulsar-common/src/main/java/org/apache/pulsar/common/stats/Metrics.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/Metrics.java index 88111e3267dc7..617bfbfbe5907 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/stats/Metrics.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/Metrics.java @@ -18,12 +18,11 @@ */ package org.apache.pulsar.common.stats; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.google.common.base.Objects; -import com.google.common.collect.Maps; import java.util.Collections; +import java.util.HashMap; import java.util.Map; +import java.util.Objects; +import java.util.TreeMap; /** * WARNING : do not add any getters as the Jackson parser will output that getter. @@ -36,17 +35,16 @@ public class Metrics { final Map metrics; - @JsonInclude(content = Include.NON_EMPTY) final Map dimensions; public Metrics() { - metrics = Maps.newTreeMap(); - dimensions = Maps.newHashMap(); + metrics = new TreeMap<>(); + dimensions = new HashMap<>(); } // hide constructor protected Metrics(Map unmodifiableDimensionMap) { - this.metrics = Maps.newTreeMap(); + this.metrics = new TreeMap<>(); this.dimensions = unmodifiableDimensionMap; } @@ -58,7 +56,7 @@ protected Metrics(Map unmodifiableDimensionMap) { */ public static Metrics create(Map dimensionMap) { // make the dimensions map unmodifiable and immutable; - Map map = Maps.newTreeMap(); + Map map = new TreeMap<>(); map.putAll(dimensionMap); return new Metrics(Collections.unmodifiableMap(map)); } @@ -93,7 +91,7 @@ public int hashCode() { @Override public boolean equals(Object obj) { // the business key will be my metrics dimension [ immutable ] - return (obj instanceof Metrics) && Objects.equal(this.dimensions, ((Metrics) obj).dimensions); + return (obj instanceof Metrics) && Objects.equals(this.dimensions, ((Metrics) obj).dimensions); } @Override diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/package-info.java new file mode 100644 index 0000000000000..95ee28e89fe14 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.stats; \ No newline at end of file diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadata.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadata.java index ac5cf6a788d1a..164e6c7cdc4ce 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadata.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadata.java @@ -27,8 +27,6 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import org.apache.commons.lang3.SerializationUtils; -import org.apache.pulsar.packages.management.core.exceptions.PackagesManagementException.MetadataFormatException; /** * Package metadata. @@ -45,20 +43,4 @@ public class PackageMetadata implements Serializable { long createTime; long modificationTime; Map properties; - - public static PackageMetadata fromBytes(byte[] bytes) throws MetadataFormatException { - try { - Object o = SerializationUtils.deserialize(bytes); - if (!(o instanceof PackageMetadata)) { - throw new MetadataFormatException("Unexpected metadata format"); - } - return (PackageMetadata) o; - } catch (Exception e) { - throw new MetadataFormatException("Unexpected error", e); - } - } - - public byte[] toBytes() { - return SerializationUtils.serialize(this); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java similarity index 93% rename from pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java index 740ce3a9a0d2c..f30e53374f747 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java @@ -18,13 +18,11 @@ */ package org.apache.pulsar.policies.data.loadbalancer; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.util.Map; /** * This class represents the overall load of the broker - it includes overall SystemResourceUsage and Bundle-usage. */ -@JsonDeserialize(using = LoadReportDeserializer.class) public interface LoadManagerReport extends ServiceLookupData { ResourceUsage getCpu(); diff --git a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java similarity index 99% rename from pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java index 9b7763ed0fafc..1a171657df193 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java @@ -18,9 +18,8 @@ */ package org.apache.pulsar.policies.data.loadbalancer; -import lombok.EqualsAndHashCode; - import java.io.Serializable; +import lombok.EqualsAndHashCode; /** */ diff --git a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ResourceUsage.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ResourceUsage.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ResourceUsage.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ResourceUsage.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ServiceLookupData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ServiceLookupData.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ServiceLookupData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ServiceLookupData.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/package-info.java new file mode 100644 index 0000000000000..0639c1aeb5bed --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.policies.data.loadbalancer; \ No newline at end of file diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java index 3895219283cd9..ae9b0c3652876 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java @@ -45,6 +45,7 @@ import org.apache.pulsar.client.api.AuthenticationDataProvider; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.common.policies.data.ErrorData; +import org.apache.pulsar.common.util.ObjectMapperFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -204,34 +205,43 @@ public PulsarAdminException getApiException(Throwable e) { if (e.getCause() instanceof java.net.ConnectException) { return new ConnectException(e.getCause()); } else { - return new PulsarAdminException((ServerErrorException) e); + ServerErrorException see = (ServerErrorException) e; + int statusCode = see.getResponse().getStatus(); + String httpError = getReasonFromServer(see); + return new PulsarAdminException(e, httpError, statusCode); } } else if (e instanceof WebApplicationException) { // Handle 5xx exceptions if (e instanceof ServerErrorException) { ServerErrorException see = (ServerErrorException) e; - return new ServerSideErrorException(see, e.getMessage()); + int statusCode = see.getResponse().getStatus(); + String httpError = getReasonFromServer(see); + return new ServerSideErrorException(see, e.getMessage(), httpError, statusCode); } else if (e instanceof ClientErrorException) { // Handle 4xx exceptions ClientErrorException cee = (ClientErrorException) e; int statusCode = cee.getResponse().getStatus(); + String httpError = getReasonFromServer(cee); switch (statusCode) { case 401: case 403: - return new NotAuthorizedException(cee); + return new NotAuthorizedException(cee, httpError, statusCode); case 404: - return new NotFoundException(cee); + return new NotFoundException(cee, httpError, statusCode); case 405: - return new NotAllowedException(cee); + return new NotAllowedException(cee, httpError, statusCode); case 409: - return new ConflictException(cee); + return new ConflictException(cee, httpError, statusCode); case 412: - return new PreconditionFailedException(cee); + return new PreconditionFailedException(cee, httpError, statusCode); default: - return new PulsarAdminException(cee); + return new PulsarAdminException(httpError, cee, httpError, statusCode); } } else { - return new PulsarAdminException((WebApplicationException) e); + WebApplicationException wae = (WebApplicationException) e; + int statusCode = wae.getResponse().getStatus(); + String httpError = getReasonFromServer(wae); + return new PulsarAdminException(httpError, wae, httpError, statusCode); } } else { return new PulsarAdminException(e); @@ -254,4 +264,22 @@ public PulsarAdminException getApiException(Response response) { return getApiException(e); } } + + public static String getReasonFromServer(WebApplicationException e) { + try { + return e.getResponse().readEntity(ErrorData.class).reason.toString(); + } catch (Exception ex) { + try { + return ObjectMapperFactory.getThreadLocal().readValue( + e.getResponse().getEntity().toString(), ErrorData.class).reason; + } catch (Exception ex1) { + try { + return ObjectMapperFactory.getThreadLocal().readValue(e.getMessage(), ErrorData.class).reason; + } catch (Exception ex2) { + // could not parse output to ErrorData class + return e.getMessage(); + } + } + } + } } diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokerStatsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokerStatsImpl.java index f39b8573dcbca..e31958b96879a 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokerStatsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokerStatsImpl.java @@ -19,7 +19,6 @@ package org.apache.pulsar.client.admin.internal; import com.google.gson.Gson; -import com.google.gson.JsonArray; import com.google.gson.JsonObject; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -50,7 +49,7 @@ public BrokerStatsImpl(WebTarget target, Authentication auth, long readTimeoutMs } @Override - public JsonArray getMetrics() throws PulsarAdminException { + public String getMetrics() throws PulsarAdminException { try { return getMetricsAsync().get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -64,14 +63,14 @@ public JsonArray getMetrics() throws PulsarAdminException { } @Override - public CompletableFuture getMetricsAsync() { + public CompletableFuture getMetricsAsync() { WebTarget path = adminV2BrokerStats.path("/metrics"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override public void completed(String s) { - future.complete(new Gson().fromJson(s, JsonArray.class)); + future.complete(s); } @Override @@ -116,7 +115,7 @@ public void failed(Throwable throwable) { } @Override - public JsonArray getMBeans() throws PulsarAdminException { + public String getMBeans() throws PulsarAdminException { try { return getMBeansAsync().get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -130,14 +129,14 @@ public JsonArray getMBeans() throws PulsarAdminException { } @Override - public CompletableFuture getMBeansAsync() { + public CompletableFuture getMBeansAsync() { WebTarget path = adminV2BrokerStats.path("/mbeans"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override public void completed(String s) { - future.complete(new Gson().fromJson(s, JsonArray.class)); + future.complete(s); } @Override @@ -149,7 +148,7 @@ public void failed(Throwable throwable) { } @Override - public JsonObject getTopics() throws PulsarAdminException { + public String getTopics() throws PulsarAdminException { try { return getTopicsAsync().get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -163,14 +162,14 @@ public JsonObject getTopics() throws PulsarAdminException { } @Override - public CompletableFuture getTopicsAsync() { + public CompletableFuture getTopicsAsync() { WebTarget path = adminV2BrokerStats.path("/topics"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override public void completed(String s) { - future.complete(new Gson().fromJson(s, JsonObject.class)); + future.complete(s); } @Override @@ -215,7 +214,7 @@ public void failed(Throwable throwable) { } @Override - public JsonObject getPendingBookieOpsStats() throws PulsarAdminException { + public String getPendingBookieOpsStats() throws PulsarAdminException { try { return getPendingBookieOpsStatsAsync().get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -229,14 +228,14 @@ public JsonObject getPendingBookieOpsStats() throws PulsarAdminException { } @Override - public CompletableFuture getPendingBookieOpsStatsAsync() { + public CompletableFuture getPendingBookieOpsStatsAsync() { WebTarget path = adminV2BrokerStats.path("/bookieops"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override public void completed(String s) { - future.complete(new Gson().fromJson(s, JsonObject.class)); + future.complete(s); } @Override diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java index d721c08a5a554..71babf2292a55 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java @@ -18,6 +18,8 @@ */ package org.apache.pulsar.client.admin.internal; +import java.util.ArrayList; +import java.util.HashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -34,9 +36,13 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; public class ClustersImpl extends BaseResource implements Clusters { @@ -98,9 +104,9 @@ public CompletableFuture getClusterAsync(String cluster) { WebTarget path = adminClusters.path(cluster); final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback() { @Override - public void completed(ClusterData clusterData) { + public void completed(ClusterDataImpl clusterData) { future.complete(clusterData); } @@ -129,7 +135,7 @@ public void createCluster(String cluster, ClusterData clusterData) throws Pulsar @Override public CompletableFuture createClusterAsync(String cluster, ClusterData clusterData) { WebTarget path = adminClusters.path(cluster); - return asyncPutRequest(path, Entity.entity(clusterData, MediaType.APPLICATION_JSON)); + return asyncPutRequest(path, Entity.entity((ClusterDataImpl) clusterData, MediaType.APPLICATION_JSON)); } @Override @@ -149,7 +155,7 @@ public void updateCluster(String cluster, ClusterData clusterData) throws Pulsar @Override public CompletableFuture updateClusterAsync(String cluster, ClusterData clusterData) { WebTarget path = adminClusters.path(cluster); - return asyncPostRequest(path, Entity.entity(clusterData, MediaType.APPLICATION_JSON_TYPE)); + return asyncPostRequest(path, Entity.entity((ClusterDataImpl) clusterData, MediaType.APPLICATION_JSON_TYPE)); } @Override @@ -243,14 +249,17 @@ public Map getNamespaceIsolationPolicies(String } @Override - public CompletableFuture> getNamespaceIsolationPoliciesAsync(String cluster) { + public CompletableFuture> getNamespaceIsolationPoliciesAsync( + String cluster) { WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies"); final CompletableFuture> future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback>() { + new InvocationCallback>() { @Override - public void completed(Map stringNamespaceIsolationDataMap) { - future.complete(stringNamespaceIsolationDataMap); + public void completed(Map stringNamespaceIsolationDataMap) { + Map result = new HashMap<>(); + stringNamespaceIsolationDataMap.forEach(result::put); + future.complete(result); } @Override @@ -282,10 +291,12 @@ public CompletableFuture> getBrokersWithNames WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path("brokers"); final CompletableFuture> future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback>() { + new InvocationCallback>() { @Override - public void completed(List brokerNamespaceIsolationData) { - future.complete(brokerNamespaceIsolationData); + public void completed(List brokerNamespaceIsolationData) { + List data = + new ArrayList<>(brokerNamespaceIsolationData); + future.complete(data); } @Override @@ -318,9 +329,9 @@ public CompletableFuture getBrokerWithNamespaceIso WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path("brokers").path(broker); final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback() { @Override - public void completed(BrokerNamespaceIsolationData brokerNamespaceIsolationData) { + public void completed(BrokerNamespaceIsolationDataImpl brokerNamespaceIsolationData) { future.complete(brokerNamespaceIsolationData); } @@ -346,7 +357,7 @@ public CompletableFuture createNamespaceIsolationPolicyAsync( @Override public void updateNamespaceIsolationPolicy(String cluster, String policyName, - NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException { + NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException { setNamespaceIsolationPolicy(cluster, policyName, namespaceIsolationData); } @@ -377,7 +388,7 @@ public CompletableFuture deleteNamespaceIsolationPolicyAsync(String cluste } private void setNamespaceIsolationPolicy(String cluster, String policyName, - NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException { + NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException { try { setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData) .get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -392,7 +403,7 @@ private void setNamespaceIsolationPolicy(String cluster, String policyName, } private CompletableFuture setNamespaceIsolationPolicyAsync(String cluster, String policyName, - NamespaceIsolationData namespaceIsolationData) { + NamespaceIsolationData namespaceIsolationData) { WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path(policyName); return asyncPostRequest(path, Entity.entity(namespaceIsolationData, MediaType.APPLICATION_JSON)); } @@ -419,9 +430,9 @@ public CompletableFuture getNamespaceIsolationPolicyAsyn WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path(policyName); final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback() { @Override - public void completed(NamespaceIsolationData namespaceIsolationData) { + public void completed(NamespaceIsolationDataImpl namespaceIsolationData) { future.complete(namespaceIsolationData); } @@ -440,7 +451,8 @@ public void createFailureDomain(String cluster, String domainName, FailureDomain } @Override - public CompletableFuture createFailureDomainAsync(String cluster, String domainName, FailureDomain domain) { + public CompletableFuture createFailureDomainAsync(String cluster, String domainName, + FailureDomain domain) { return setDomainAsync(cluster, domainName, domain); } @@ -451,7 +463,8 @@ public void updateFailureDomain(String cluster, String domainName, FailureDomain } @Override - public CompletableFuture updateFailureDomainAsync(String cluster, String domainName, FailureDomain domain) { + public CompletableFuture updateFailureDomainAsync(String cluster, String domainName, + FailureDomain domain) { return setDomainAsync(cluster, domainName, domain); } @@ -494,10 +507,11 @@ public CompletableFuture> getFailureDomainsAsync(Stri WebTarget path = adminClusters.path(cluster).path("failureDomains"); final CompletableFuture> future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback>() { + new InvocationCallback>() { @Override - public void completed(Map failureDomains) { - future.complete(failureDomains); + public void completed(Map failureDomains) { + Map result = new HashMap<>(failureDomains); + future.complete(result); } @Override @@ -527,9 +541,9 @@ public CompletableFuture getFailureDomainAsync(String cluster, St WebTarget path = adminClusters.path(cluster).path("failureDomains").path(domainName); final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback() { @Override - public void completed(FailureDomain failureDomain) { + public void completed(FailureDomainImpl failureDomain) { future.complete(failureDomain); } @@ -542,7 +556,7 @@ public void failed(Throwable throwable) { } private void setDomain(String cluster, String domainName, - FailureDomain domain) throws PulsarAdminException { + FailureDomain domain) throws PulsarAdminException { try { setDomainAsync(cluster, domainName, domain).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -556,8 +570,8 @@ private void setDomain(String cluster, String domainName, } private CompletableFuture setDomainAsync(String cluster, String domainName, - FailureDomain domain) { + FailureDomain domain) { WebTarget path = adminClusters.path(cluster).path("failureDomains").path(domainName); - return asyncPostRequest(path, Entity.entity(domain, MediaType.APPLICATION_JSON)); + return asyncPostRequest(path, Entity.entity((FailureDomainImpl) domain, MediaType.APPLICATION_JSON)); } } diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java index 7a2d848e3efc5..806ef79e033a1 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java @@ -47,9 +47,13 @@ import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.io.ConnectorDefinition; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.asynchttpclient.AsyncHandler; @@ -237,7 +241,7 @@ public void failed(Throwable throwable) { } @Override - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunctionStats( + public FunctionInstanceStatsData getFunctionStats( String tenant, String namespace, String function, int id) throws PulsarAdminException { try { return getFunctionStatsAsync(tenant, namespace, function, id) @@ -254,10 +258,10 @@ public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunction } @Override - public CompletableFuture getFunctionStatsAsync( + public CompletableFuture getFunctionStatsAsync( String tenant, String namespace, String function, int id) { WebTarget path = functions.path(tenant).path(namespace).path(function).path(Integer.toString(id)).path("stats"); - final CompletableFuture future = + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @@ -266,8 +270,7 @@ public void completed(Response response) { if (!response.getStatusInfo().equals(Response.Status.OK)) { future.completeExceptionally(getApiException(response)); } else { - future.complete(response.readEntity( - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class)); + future.complete(response.readEntity(FunctionInstanceStatsDataImpl.class)); } } @@ -296,7 +299,8 @@ public FunctionStats getFunctionStats(String tenant, String namespace, String fu } @Override - public CompletableFuture getFunctionStatsAsync(String tenant, String namespace, String function) { + public CompletableFuture getFunctionStatsAsync(String tenant, + String namespace, String function) { WebTarget path = functions.path(tenant).path(namespace).path(function).path("stats"); final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, @@ -306,7 +310,7 @@ public void completed(Response response) { if (!response.getStatusInfo().equals(Response.Status.OK)) { future.completeExceptionally(getApiException(response)); } else { - future.complete(response.readEntity(FunctionStats.class)); + future.complete(response.readEntity(FunctionStatsImpl.class)); } } @@ -459,9 +463,10 @@ public CompletableFuture updateFunctionAsync( .addBodyPart(new StringPart("functionConfig", ObjectMapperFactory.getThreadLocal() .writeValueAsString(functionConfig), MediaType.APPLICATION_JSON)); - if (updateOptions != null) { + UpdateOptionsImpl options = (UpdateOptionsImpl) updateOptions; + if (options != null) { builder.addBodyPart(new StringPart("updateOptions", ObjectMapperFactory.getThreadLocal() - .writeValueAsString(updateOptions), MediaType.APPLICATION_JSON)); + .writeValueAsString(options), MediaType.APPLICATION_JSON)); } if (fileName != null && !fileName.startsWith("builtin://")) { @@ -493,7 +498,8 @@ public CompletableFuture updateFunctionAsync( } @Override - public void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, UpdateOptions updateOptions) + public void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, + UpdateOptions updateOptions) throws PulsarAdminException { try { updateFunctionWithUrlAsync(functionConfig, pkgUrl, updateOptions) @@ -520,10 +526,11 @@ public CompletableFuture updateFunctionWithUrlAsync( "functionConfig", ObjectMapperFactory.getThreadLocal().writeValueAsString(functionConfig), MediaType.APPLICATION_JSON_TYPE)); - if (updateOptions != null) { + UpdateOptionsImpl options = (UpdateOptionsImpl) updateOptions; + if (options != null) { mp.bodyPart(new FormDataBodyPart( "updateOptions", - ObjectMapperFactory.getThreadLocal().writeValueAsString(updateOptions), + ObjectMapperFactory.getThreadLocal().writeValueAsString(options), MediaType.APPLICATION_JSON_TYPE)); } WebTarget path = functions.path(functionConfig.getTenant()).path(functionConfig.getNamespace()) diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java index b5bfbaf471cb5..f5f9e4994fcac 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java @@ -48,6 +48,7 @@ import org.apache.pulsar.common.policies.data.ErrorData; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PublishRate; @@ -3209,7 +3210,8 @@ public CompletableFuture setIsAllowAutoUpdateSchemaAsync(String namespace, } @Override - public void setOffloadPolicies(String namespace, OffloadPolicies offloadPolicies) throws PulsarAdminException { + public void setOffloadPolicies(String namespace, OffloadPolicies offloadPolicies) + throws PulsarAdminException { try { setOffloadPoliciesAsync(namespace, offloadPolicies) .get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -3273,9 +3275,9 @@ public CompletableFuture getOffloadPoliciesAsync(String namespa WebTarget path = namespacePath(ns, "offloadPolicies"); final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback() { @Override - public void completed(OffloadPolicies offloadPolicies) { + public void completed(OffloadPoliciesImpl offloadPolicies) { future.complete(offloadPolicies); } diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ProxyStatsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ProxyStatsImpl.java index ac84d74f8e93c..084e3b65dbc6a 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ProxyStatsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ProxyStatsImpl.java @@ -18,9 +18,6 @@ */ package org.apache.pulsar.client.admin.internal; -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; import javax.ws.rs.client.WebTarget; import org.apache.pulsar.client.admin.ProxyStats; import org.apache.pulsar.client.admin.PulsarAdminException; @@ -41,20 +38,20 @@ public ProxyStatsImpl(WebTarget target, Authentication auth, long readTimeoutMs) } @Override - public JsonArray getConnections() throws PulsarAdminException { + public String getConnections() throws PulsarAdminException { try { String json = request(adminProxyStats.path("/connections")).get(String.class); - return new Gson().fromJson(json, JsonArray.class); + return json; } catch (Exception e) { throw getApiException(e); } } @Override - public JsonObject getTopics() throws PulsarAdminException { + public String getTopics() throws PulsarAdminException { try { String json = request(adminProxyStats.path("/topics")).get(String.class); - return new Gson().fromJson(json, JsonObject.class); + return json; } catch (Exception e) { throw getApiException(e); } diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java index 790589db3c476..6a318237dc4f3 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java @@ -40,6 +40,7 @@ import org.apache.pulsar.client.admin.Sinks; import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.policies.data.SinkStatus; @@ -364,10 +365,11 @@ public CompletableFuture updateSinkAsync( .addBodyPart(new StringPart("sinkConfig", ObjectMapperFactory.getThreadLocal() .writeValueAsString(sinkConfig), MediaType.APPLICATION_JSON)); - if (updateOptions != null) { + UpdateOptionsImpl options = (UpdateOptionsImpl) updateOptions; + if (options != null) { builder.addBodyPart(new StringPart("updateOptions", ObjectMapperFactory.getThreadLocal() - .writeValueAsString(updateOptions), MediaType.APPLICATION_JSON)); + .writeValueAsString(options), MediaType.APPLICATION_JSON)); } if (fileName != null && !fileName.startsWith("builtin://")) { @@ -435,10 +437,11 @@ public CompletableFuture updateSinkWithUrlAsync( "sinkConfig", new Gson().toJson(sinkConfig), MediaType.APPLICATION_JSON_TYPE)); - if (updateOptions != null) { + UpdateOptionsImpl options = (UpdateOptionsImpl) updateOptions; + if (options != null) { mp.bodyPart(new FormDataBodyPart( "updateOptions", - ObjectMapperFactory.getThreadLocal().writeValueAsString(updateOptions), + ObjectMapperFactory.getThreadLocal().writeValueAsString(options), MediaType.APPLICATION_JSON_TYPE)); } WebTarget path = sink.path(sinkConfig.getTenant()).path(sinkConfig.getNamespace()) diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java index 09943a25c2095..51392024cc7b1 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java @@ -39,6 +39,7 @@ import org.apache.pulsar.client.admin.Sources; import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SourceConfig; import org.apache.pulsar.common.policies.data.SourceStatus; @@ -338,9 +339,10 @@ public CompletableFuture updateSourceAsync( .addBodyPart(new StringPart("sourceConfig", ObjectMapperFactory.getThreadLocal() .writeValueAsString(sourceConfig), MediaType.APPLICATION_JSON)); - if (updateOptions != null) { + UpdateOptionsImpl options = (UpdateOptionsImpl) updateOptions; + if (options != null) { builder.addBodyPart(new StringPart("updateOptions", - ObjectMapperFactory.getThreadLocal().writeValueAsString(updateOptions), + ObjectMapperFactory.getThreadLocal().writeValueAsString(options), MediaType.APPLICATION_JSON)); } @@ -407,10 +409,11 @@ public CompletableFuture updateSourceWithUrlAsync( "sourceConfig", new Gson().toJson(sourceConfig), MediaType.APPLICATION_JSON_TYPE)); - if (updateOptions != null) { + UpdateOptionsImpl options = (UpdateOptionsImpl) updateOptions; + if (options != null) { mp.bodyPart(new FormDataBodyPart( "updateOptions", - ObjectMapperFactory.getThreadLocal().writeValueAsString(updateOptions), + ObjectMapperFactory.getThreadLocal().writeValueAsString(options), MediaType.APPLICATION_JSON_TYPE)); } WebTarget path = source.path(sourceConfig.getTenant()).path(sourceConfig.getNamespace()) diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java index 390ef00ca676b..6ad108890e3c7 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java @@ -32,6 +32,7 @@ import org.apache.pulsar.client.admin.Tenants; import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; @SuppressWarnings("deprecation") public class TenantsImpl extends BaseResource implements Tenants, Properties { @@ -93,9 +94,9 @@ public CompletableFuture getTenantInfoAsync(String tenant) { WebTarget path = adminTenants.path(tenant); final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback() { @Override - public void completed(TenantInfo tenantInfo) { + public void completed(TenantInfoImpl tenantInfo) { future.complete(tenantInfo); } @@ -125,7 +126,7 @@ public void createTenant(String tenant, TenantInfo config) throws PulsarAdminExc @Override public CompletableFuture createTenantAsync(String tenant, TenantInfo config) { WebTarget path = adminTenants.path(tenant); - return asyncPutRequest(path, Entity.entity(config, MediaType.APPLICATION_JSON)); + return asyncPutRequest(path, Entity.entity((TenantInfoImpl) config, MediaType.APPLICATION_JSON)); } @Override @@ -145,7 +146,7 @@ public void updateTenant(String tenant, TenantInfo config) throws PulsarAdminExc @Override public CompletableFuture updateTenantAsync(String tenant, TenantInfo config) { WebTarget path = adminTenants.path(tenant); - return asyncPostRequest(path, Entity.entity(config, MediaType.APPLICATION_JSON)); + return asyncPostRequest(path, Entity.entity((TenantInfoImpl) config, MediaType.APPLICATION_JSON)); } @Override diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java index 36d3694c1fe99..c38bbc0eefcd4 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java @@ -21,8 +21,6 @@ import static com.google.common.base.Preconditions.checkArgument; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.gson.Gson; -import com.google.gson.JsonObject; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import java.io.InputStream; @@ -75,6 +73,7 @@ import org.apache.pulsar.common.policies.data.ErrorData; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -733,7 +732,7 @@ public void failed(Throwable throwable) { } @Override - public JsonObject getInternalInfo(String topic) throws PulsarAdminException { + public String getInternalInfo(String topic) throws PulsarAdminException { try { return getInternalInfoAsync(topic).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -747,16 +746,15 @@ public JsonObject getInternalInfo(String topic) throws PulsarAdminException { } @Override - public CompletableFuture getInternalInfoAsync(String topic) { + public CompletableFuture getInternalInfoAsync(String topic) { TopicName tn = validateTopic(topic); WebTarget path = topicPath(tn, "internal-info"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override public void completed(String response) { - JsonObject json = new Gson().fromJson(response, JsonObject.class); - future.complete(json); + future.complete(response); } @Override @@ -2070,9 +2068,9 @@ public CompletableFuture getOffloadPoliciesAsync(String topic, WebTarget path = topicPath(topicName, "offloadPolicies"); path = path.queryParam("applied", applied); final CompletableFuture future = new CompletableFuture<>(); - asyncGetRequest(path, new InvocationCallback() { + asyncGetRequest(path, new InvocationCallback() { @Override - public void completed(OffloadPolicies offloadPolicies) { + public void completed(OffloadPoliciesImpl offloadPolicies) { future.complete(offloadPolicies); } @@ -2103,7 +2101,7 @@ public void setOffloadPolicies(String topic, OffloadPolicies offloadPolicies) th public CompletableFuture setOffloadPoliciesAsync(String topic, OffloadPolicies offloadPolicies) { TopicName topicName = validateTopic(topic); WebTarget path = topicPath(topicName, "offloadPolicies"); - return asyncPostRequest(path, Entity.entity(offloadPolicies, MediaType.APPLICATION_JSON)); + return asyncPostRequest(path, Entity.entity((OffloadPoliciesImpl) offloadPolicies, MediaType.APPLICATION_JSON)); } @Override diff --git a/pulsar-client-admin/src/test/java/org/apache/pulsar/client/admin/internal/SinksImplTest.java b/pulsar-client-admin/src/test/java/org/apache/pulsar/client/admin/internal/SinksImplTest.java index 68b185447b182..61afa5e403f87 100644 --- a/pulsar-client-admin/src/test/java/org/apache/pulsar/client/admin/internal/SinksImplTest.java +++ b/pulsar-client-admin/src/test/java/org/apache/pulsar/client/admin/internal/SinksImplTest.java @@ -23,13 +23,13 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.mock; import static org.testng.Assert.fail; -import java.util.concurrent.CompletableFuture; + import java.util.concurrent.ExecutionException; import java.util.function.Consumer; import javax.ws.rs.client.WebTarget; import org.apache.commons.lang3.StringUtils; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.SinkConfig; import org.testng.annotations.Test; @@ -145,14 +145,14 @@ private void testBadConfig(String tenant, String namespace, String sinkname, } try { - instance.updateSinkAsync(sinkConfig, "file.nar", new UpdateOptions()).get(); + instance.updateSinkAsync(sinkConfig, "file.nar", new UpdateOptionsImpl()).get(); fail(); } catch (ExecutionException err) { handler.accept(err); } try { - instance.updateSinkWithUrlAsync(sinkConfig, "http://localhost", new UpdateOptions()).get(); + instance.updateSinkWithUrlAsync(sinkConfig, "http://localhost", new UpdateOptionsImpl()).get(); fail(); } catch (ExecutionException err) { handler.accept(err); diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/CmdFunctionsTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/CmdFunctionsTest.java index e2cab00966b45..d7f68a4b790f0 100644 --- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/CmdFunctionsTest.java +++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/CmdFunctionsTest.java @@ -51,9 +51,8 @@ import org.apache.pulsar.admin.cli.CmdFunctions.UpdateFunction; import org.apache.pulsar.client.admin.Functions; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.client.impl.conf.ClientConfigurationData; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.functions.api.Context; import org.apache.pulsar.functions.api.Function; import org.apache.pulsar.functions.api.utils.IdentityFunction; @@ -520,7 +519,7 @@ public void testUpdateFunction() throws Exception { assertEquals(INPUT_TOPIC_NAME, updater.getInputs()); assertEquals(OUTPUT_TOPIC_NAME, updater.getOutput()); - verify(functions, times(1)).updateFunction(any(FunctionConfig.class), anyString(), eq(new UpdateOptions())); + verify(functions, times(1)).updateFunction(any(FunctionConfig.class), anyString(), eq(new UpdateOptionsImpl())); } @Test @@ -681,7 +680,7 @@ public void testUpdateFunctionWithCpu() throws Exception { // Disk/Ram should be default assertEquals(updater.getFunctionConfig().getResources().getRam(), Long.valueOf(1073741824L)); assertEquals(updater.getFunctionConfig().getResources().getDisk(), Long.valueOf(10737418240L)); - verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(new UpdateOptions())); + verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(new UpdateOptionsImpl())); } @Test @@ -707,7 +706,7 @@ public void testUpdateFunctionWithRam() throws Exception { // cpu/disk should be default assertEquals(updater.getFunctionConfig().getResources().getCpu(), 1.0, 0); assertEquals(updater.getFunctionConfig().getResources().getDisk(), Long.valueOf(10737418240L)); - verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(new UpdateOptions())); + verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(new UpdateOptionsImpl())); } @Test @@ -733,7 +732,7 @@ public void testUpdateFunctionWithDisk() throws Exception { // cpu/Ram should be default assertEquals(updater.getFunctionConfig().getResources().getRam(), Long.valueOf(1073741824L)); assertEquals(updater.getFunctionConfig().getResources().getCpu(), 1.0, 0); - verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(new UpdateOptions())); + verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(new UpdateOptionsImpl())); } @Test @@ -760,7 +759,7 @@ public void testUpdateAuthData() throws Exception { // cpu/Ram should be default assertEquals(updater.getFunctionConfig().getResources().getRam(), Long.valueOf(1073741824L)); assertEquals(updater.getFunctionConfig().getResources().getCpu(), 1.0, 0); - UpdateOptions updateOptions = new UpdateOptions(); + UpdateOptionsImpl updateOptions = new UpdateOptionsImpl(); updateOptions.setUpdateAuthData(true); verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(updateOptions)); } diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java index 24a7f76db6811..222473ce9d7c2 100644 --- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java +++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java @@ -73,14 +73,15 @@ import org.apache.pulsar.common.policies.data.BookiesClusterInfo; import org.apache.pulsar.common.policies.data.BookiesRackConfiguration; import org.apache.pulsar.common.policies.data.BundlesData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; import org.apache.pulsar.common.policies.data.DispatchRate; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.ManagedLedgerInternalStats.LedgerInfo; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.Policies; @@ -88,7 +89,7 @@ import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscribeRate; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicType; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.mockito.ArgumentMatcher; @@ -188,10 +189,10 @@ public void clusters() throws Exception { verify(mockClusters).getCluster("use"); clusters.run(split("create use --url http://my-service.url:8080")); - verify(mockClusters).createCluster("use", new ClusterData("http://my-service.url:8080", null)); + verify(mockClusters).createCluster("use", new ClusterDataImpl("http://my-service.url:8080", null)); clusters.run(split("update use --url http://my-service.url:8080")); - verify(mockClusters).updateCluster("use", new ClusterData("http://my-service.url:8080", null)); + verify(mockClusters).updateCluster("use", new ClusterDataImpl("http://my-service.url:8080", null)); clusters.run(split("delete use")); verify(mockClusters).deleteCluster("use"); @@ -203,7 +204,7 @@ public void clusters() throws Exception { verify(mockClusters).getFailureDomain("use", "domain"); clusters.run(split("create-failure-domain use --domain-name domain --broker-list b1")); - FailureDomain domain = new FailureDomain(); + FailureDomainImpl domain = new FailureDomainImpl(); domain.setBrokers(Sets.newHashSet("b1")); verify(mockClusters).createFailureDomain("use", "domain", domain); @@ -221,12 +222,12 @@ public void clusters() throws Exception { clusters.run( split("create my-cluster --url http://my-service.url:8080 --url-secure https://my-service.url:4443")); verify(mockClusters).createCluster("my-cluster", - new ClusterData("http://my-service.url:8080", "https://my-service.url:4443")); + new ClusterDataImpl("http://my-service.url:8080", "https://my-service.url:4443")); clusters.run( split("update my-cluster --url http://my-service.url:8080 --url-secure https://my-service.url:4443")); verify(mockClusters).updateCluster("my-cluster", - new ClusterData("http://my-service.url:8080", "https://my-service.url:4443")); + new ClusterDataImpl("http://my-service.url:8080", "https://my-service.url:4443")); clusters.run(split("delete my-cluster")); verify(mockClusters).deleteCluster("my-cluster"); @@ -242,10 +243,10 @@ public void clusters() throws Exception { clusters = new CmdClusters(() -> admin); clusters.run(split("create my-secure-cluster --url-secure https://my-service.url:4443")); - verify(mockClusters).createCluster("my-secure-cluster", new ClusterData(null, "https://my-service.url:4443")); + verify(mockClusters).createCluster("my-secure-cluster", new ClusterDataImpl(null, "https://my-service.url:4443")); clusters.run(split("update my-secure-cluster --url-secure https://my-service.url:4443")); - verify(mockClusters).updateCluster("my-secure-cluster", new ClusterData(null, "https://my-service.url:4443")); + verify(mockClusters).updateCluster("my-secure-cluster", new ClusterDataImpl(null, "https://my-service.url:4443")); clusters.run(split("delete my-secure-cluster")); verify(mockClusters).deleteCluster("my-secure-cluster"); @@ -262,12 +263,12 @@ public void tenants() throws Exception { tenants.run(split("list")); verify(mockTenants).getTenants(); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); tenants.run(split("create my-tenant --admin-roles role1,role2 --allowed-clusters use")); verify(mockTenants).createTenant("my-tenant", tenantInfo); - tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("usw")); + tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("usw")); tenants.run(split("update my-tenant --admin-roles role1,role2 --allowed-clusters usw")); verify(mockTenants).updateTenant("my-tenant", tenantInfo); @@ -645,9 +646,9 @@ public void namespaces() throws Exception { namespaces.run(split( "set-offload-policies myprop/clust/ns1 -r test-region -d aws-s3 -b test-bucket -e http://test.endpoint -mbs 32M -rbs 5M -oat 10M -oae 10s -orp tiered-storage-first")); verify(mockNamespaces).setOffloadPolicies("myprop/clust/ns1", - OffloadPolicies.create("aws-s3", "test-region", "test-bucket", + OffloadPoliciesImpl.create("aws-s3", "test-region", "test-bucket", "http://test.endpoint",null, null, null, null, 32 * 1024 * 1024, 5 * 1024 * 1024, - 10 * 1024 * 1024L, 10000L, OffloadPolicies.OffloadedReadPriority.TIERED_STORAGE_FIRST)); + 10 * 1024 * 1024L, 10000L, OffloadedReadPriority.TIERED_STORAGE_FIRST)); namespaces.run(split("remove-offload-policies myprop/clust/ns1")); verify(mockNamespaces).removeOffloadPolicies("myprop/clust/ns1"); @@ -962,9 +963,9 @@ public void topics() throws Exception { verify(mockTopics).removeDelayedDeliveryPolicy("persistent://myprop/clust/ns1/ds1") ; cmdTopics.run(split("set-offload-policies persistent://myprop/clust/ns1/ds1 -d s3 -r region -b bucket -e endpoint -m 8 -rb 9 -t 10 -orp tiered-storage-first")); - OffloadPolicies offloadPolicies = OffloadPolicies.create("s3", "region", "bucket" + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create("s3", "region", "bucket" , "endpoint", null, null, null, null, - 8, 9, 10L, null, OffloadPolicies.OffloadedReadPriority.TIERED_STORAGE_FIRST); + 8, 9, 10L, null, OffloadedReadPriority.TIERED_STORAGE_FIRST); verify(mockTopics).setOffloadPolicies("persistent://myprop/clust/ns1/ds1", offloadPolicies); cmdTopics.run(split("get-max-unacked-messages-on-consumer persistent://myprop/clust/ns1/ds1")); diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java index a8746479e7641..fcc6810754ebb 100644 --- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java +++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java @@ -32,7 +32,7 @@ import lombok.Cleanup; import org.apache.pulsar.broker.service.BrokerTestBase; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -62,7 +62,7 @@ public void testInitialization() throws InterruptedException, ExecutionException String tenantName = UUID.randomUUID().toString(); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant(tenantName, tenantInfo); String topicName = String.format("persistent://%s/ns/topic-scale-ns-0/topic", tenantName); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBrokerStats.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBrokerStats.java index 0b2943aac5552..03d8bd577cdd6 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBrokerStats.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBrokerStats.java @@ -49,7 +49,8 @@ private class CmdMonitoringMetrics extends CliCommand { @Override void run() throws Exception { - JsonArray metrics = getAdmin().brokerStats().getMetrics(); + String s = getAdmin().brokerStats().getMetrics(); + JsonArray metrics = new Gson().fromJson(s, JsonArray.class); try (Writer out = new OutputStreamWriter(System.out, StandardCharsets.UTF_8); JsonWriter jsonWriter = new JsonWriter(out)) { @@ -76,7 +77,8 @@ private class CmdDumpMBeans extends CliCommand { @Override void run() throws Exception { - JsonArray result = getAdmin().brokerStats().getMBeans(); + String s = getAdmin().brokerStats().getMBeans(); + JsonArray result = new Gson().fromJson(s, JsonArray.class); try (Writer out = new OutputStreamWriter(System.out, StandardCharsets.UTF_8); JsonWriter jsonWriter = new JsonWriter(out)) { if (indent) { @@ -105,7 +107,8 @@ private class CmdTopics extends CliCommand { @Override void run() throws Exception { - JsonObject result = getAdmin().brokerStats().getTopics(); + String s = getAdmin().brokerStats().getTopics(); + JsonObject result = new Gson().fromJson(s, JsonObject.class); try (Writer out = new OutputStreamWriter(System.out, StandardCharsets.UTF_8); JsonWriter jsonWriter = new JsonWriter(out)) { if (indent) { diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java index da7d9cf76660d..7cfad806039ad 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java @@ -26,8 +26,8 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.ProxyProtocol; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; @@ -86,7 +86,7 @@ private class Create extends CliCommand { void run() throws PulsarAdminException { String cluster = getOneArgument(params); getAdmin().clusters().createCluster(cluster, - new ClusterData(serviceUrl, serviceUrlTls, brokerServiceUrl, brokerServiceUrlTls, proxyServiceUrl, + new ClusterDataImpl(serviceUrl, serviceUrlTls, brokerServiceUrl, brokerServiceUrlTls, proxyServiceUrl, authenticationPlugin, authenticationParameters, proxyProtocol)); } } @@ -122,7 +122,7 @@ private class Update extends CliCommand { void run() throws PulsarAdminException { String cluster = getOneArgument(params); - getAdmin().clusters().updateCluster(cluster, new ClusterData(serviceUrl, serviceUrlTls, brokerServiceUrl, + getAdmin().clusters().updateCluster(cluster, new ClusterDataImpl(serviceUrl, serviceUrlTls, brokerServiceUrl, brokerServiceUrlTls, proxyServiceUrl, authenticationPlugin, authenticationParameters, proxyProtocol)); } } @@ -200,7 +200,7 @@ private class CreateFailureDomain extends CliCommand { void run() throws PulsarAdminException { String cluster = getOneArgument(params); - FailureDomain domain = new FailureDomain(); + FailureDomainImpl domain = new FailureDomainImpl(); domain.setBrokers((isNotBlank(brokerList) ? Sets.newHashSet(brokerList.split(",")): null)); getAdmin().clusters().createFailureDomain(cluster, domainName, domain); } @@ -219,7 +219,7 @@ private class UpdateFailureDomain extends CliCommand { void run() throws PulsarAdminException { String cluster = getOneArgument(params); - FailureDomain domain = new FailureDomain(); + FailureDomainImpl domain = new FailureDomainImpl(); domain.setBrokers((isNotBlank(brokerList) ? Sets.newHashSet(brokerList.split(",")) : null)); getAdmin().clusters().updateFailureDomain(cluster, domainName, domain); } diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java index 7548ad1eaeb6a..95e30022b267b 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java @@ -56,7 +56,7 @@ import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.ProducerConfig; import org.apache.pulsar.common.functions.Resources; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.Utils; import org.apache.pulsar.common.functions.WindowConfig; import org.apache.pulsar.common.functions.FunctionState; @@ -858,7 +858,7 @@ protected void validateFunctionConfigs(FunctionConfig functionConfig) { @Override void runCmd() throws Exception { - UpdateOptions updateOptions = new UpdateOptions(); + UpdateOptionsImpl updateOptions = new UpdateOptionsImpl(); updateOptions.setUpdateAuthData(updateAuthData); if (Utils.isFunctionPackageUrlSupported(functionConfig.getJar())) { getAdmin().functions().updateFunctionWithUrl(functionConfig, functionConfig.getJar(), updateOptions); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java index 4b844d57975cb..73b066c429ce6 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java @@ -26,15 +26,17 @@ import org.apache.pulsar.admin.cli.utils.NameValueParameterSplitter; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import com.beust.jcommander.Parameter; import com.beust.jcommander.ParameterException; import com.beust.jcommander.Parameters; import com.beust.jcommander.converters.CommaParameterSplitter; +import org.apache.pulsar.common.policies.data.NamespaceIsolationData; @Parameters(commandDescription = "Operations about namespace isolation policy") public class CmdNamespaceIsolationPolicy extends CmdBase { @@ -63,7 +65,7 @@ void run() throws PulsarAdminException { String policyName = getOneArgument(params, 1, 2); // validate and create the POJO - NamespaceIsolationData namespaceIsolationData = createNamespaceIsolationData(namespaces, primary, secondary, + NamespaceIsolationDataImpl namespaceIsolationData = createNamespaceIsolationData(namespaces, primary, secondary, autoFailoverPolicyTypeName, autoFailoverPolicyParams); getAdmin().clusters().createNamespaceIsolationPolicy(clusterName, policyName, namespaceIsolationData); @@ -78,7 +80,8 @@ private class GetAllPolicies extends CliCommand { void run() throws PulsarAdminException { String clusterName = getOneArgument(params); - Map policyMap = getAdmin().clusters().getNamespaceIsolationPolicies(clusterName); + Map policyMap = + getAdmin().clusters().getNamespaceIsolationPolicies(clusterName); print(policyMap); } @@ -94,8 +97,9 @@ void run() throws PulsarAdminException { List brokers = getAdmin().clusters() .getBrokersWithNamespaceIsolationPolicy(clusterName); - - print(brokers); + List data = new ArrayList<>(); + brokers.forEach(v -> data.add((BrokerNamespaceIsolationDataImpl) v)); + print(data); } } @@ -110,7 +114,7 @@ private class GetBrokerWithPolicies extends CliCommand { void run() throws PulsarAdminException { String clusterName = getOneArgument(params); - BrokerNamespaceIsolationData brokerData = getAdmin().clusters() + BrokerNamespaceIsolationDataImpl brokerData = (BrokerNamespaceIsolationDataImpl) getAdmin().clusters() .getBrokerWithNamespaceIsolationPolicy(clusterName, broker); print(brokerData); @@ -126,7 +130,7 @@ void run() throws PulsarAdminException { String clusterName = getOneArgument(params, 0, 2); String policyName = getOneArgument(params, 1, 2); - NamespaceIsolationData nsIsolationData = getAdmin().clusters().getNamespaceIsolationPolicy(clusterName, + NamespaceIsolationDataImpl nsIsolationData = (NamespaceIsolationDataImpl) getAdmin().clusters().getNamespaceIsolationPolicy(clusterName, policyName); print(nsIsolationData); @@ -155,8 +159,8 @@ private List validateList(List list) { return list; } - private NamespaceIsolationData createNamespaceIsolationData(List namespaces, List primary, - List secondary, String autoFailoverPolicyTypeName, Map autoFailoverPolicyParams) { + private NamespaceIsolationDataImpl createNamespaceIsolationData(List namespaces, List primary, + List secondary, String autoFailoverPolicyTypeName, Map autoFailoverPolicyParams) { // validate namespaces = validateList(namespaces); @@ -177,7 +181,7 @@ private NamespaceIsolationData createNamespaceIsolationData(List namespa // System.out.println("autoFailoverPolicyTypeName = " + autoFailoverPolicyTypeName); // System.out.println("autoFailoverPolicyParams = " + autoFailoverPolicyParams); - NamespaceIsolationData nsIsolationData = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsIsolationData = new NamespaceIsolationDataImpl(); if (namespaces != null) { nsIsolationData.namespaces = namespaces; @@ -191,7 +195,7 @@ private NamespaceIsolationData createNamespaceIsolationData(List namespa nsIsolationData.secondary = secondary; } - nsIsolationData.auto_failover_policy = new AutoFailoverPolicyData(); + nsIsolationData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsIsolationData.auto_failover_policy.policy_type = AutoFailoverPolicyType .fromString(autoFailoverPolicyTypeName); nsIsolationData.auto_failover_policy.parameters = autoFailoverPolicyParams; diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java index 017768387b446..6049f77de76d2 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java @@ -23,7 +23,6 @@ import com.beust.jcommander.Parameters; import com.beust.jcommander.converters.CommaParameterSplitter; import com.google.common.base.Strings; -import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import java.io.IOException; @@ -53,8 +52,8 @@ import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PublishRate; @@ -1939,7 +1938,7 @@ private class SetOffloadPolicies extends CliCommand { ) private String offloadReadPriorityStr; - public final ImmutableList DRIVER_NAMES = OffloadPolicies.DRIVER_NAMES; + public final List DRIVER_NAMES = OffloadPoliciesImpl.DRIVER_NAMES; public boolean driverSupported(String driver) { return DRIVER_NAMES.stream().anyMatch(d -> d.equalsIgnoreCase(driver)); @@ -1982,7 +1981,7 @@ void run() throws PulsarAdminException { + " if s3 offload enabled"); } - int maxBlockSizeInBytes = OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; + int maxBlockSizeInBytes = OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; if (StringUtils.isNotEmpty(maxBlockSizeStr)) { long maxBlockSize = validateSizeString(maxBlockSizeStr); if (positiveCheck("MaxBlockSize", maxBlockSize) @@ -1991,7 +1990,7 @@ && maxValueCheck("MaxBlockSize", maxBlockSize, Integer.MAX_VALUE)) { } } - int readBufferSizeInBytes = OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES; + int readBufferSizeInBytes = OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES; if (StringUtils.isNotEmpty(readBufferSizeStr) ) { long readBufferSize = validateSizeString(readBufferSizeStr); if (positiveCheck("ReadBufferSize", readBufferSize) @@ -2000,7 +1999,7 @@ && maxValueCheck("ReadBufferSize", readBufferSize, Integer.MAX_VALUE)) { } } - Long offloadAfterElapsedInMillis = OffloadPolicies.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS; + Long offloadAfterElapsedInMillis = OffloadPoliciesImpl.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS; if (StringUtils.isNotEmpty(offloadAfterElapsedStr)) { Long offloadAfterElapsed = TimeUnit.SECONDS.toMillis(RelativeTimeUtil.parseRelativeTimeInSeconds(offloadAfterElapsedStr)); if (positiveCheck("OffloadAfterElapsed", offloadAfterElapsed) @@ -2009,7 +2008,7 @@ && maxValueCheck("OffloadAfterElapsed", offloadAfterElapsed, Long.MAX_VALUE)) { } } - Long offloadAfterThresholdInBytes = OffloadPolicies.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES; + Long offloadAfterThresholdInBytes = OffloadPoliciesImpl.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES; if (StringUtils.isNotEmpty(offloadAfterThresholdStr)) { long offloadAfterThreshold = validateSizeString(offloadAfterThresholdStr); if (positiveCheck("OffloadAfterThreshold", offloadAfterThreshold) @@ -2017,7 +2016,7 @@ && maxValueCheck("OffloadAfterThreshold", offloadAfterThreshold, Long.MAX_VALUE) offloadAfterThresholdInBytes = offloadAfterThreshold; } } - OffloadedReadPriority offloadedReadPriority = OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY; + OffloadedReadPriority offloadedReadPriority = OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY; if (this.offloadReadPriorityStr != null) { try { @@ -2031,7 +2030,7 @@ && maxValueCheck("OffloadAfterThreshold", offloadAfterThreshold, Long.MAX_VALUE) } } - OffloadPolicies offloadPolicies = OffloadPolicies.create(driver, region, bucket, endpoint, + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create(driver, region, bucket, endpoint, s3Role, s3RoleSessionName, awsId, awsSecret, maxBlockSizeInBytes, readBufferSizeInBytes, offloadAfterThresholdInBytes, diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java index c682e712d2118..b7aa948e5733a 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java @@ -369,7 +369,7 @@ private class GetInternalInfo extends CliCommand { @Override void run() throws PulsarAdminException { String persistentTopic = validatePersistentTopic(params); - JsonObject result = getPersistentTopics().getInternalInfo(persistentTopic); + String result = getPersistentTopics().getInternalInfo(persistentTopic); Gson gson = new GsonBuilder().setPrettyPrinting().create(); System.out.println(gson.toJson(result)); } diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdProxyStats.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdProxyStats.java index f661ee12321eb..3bb1e5e537f60 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdProxyStats.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdProxyStats.java @@ -41,7 +41,8 @@ private class CmdConnectionMetrics extends CliCommand { @Override void run() throws Exception { - JsonArray stats = getAdmin().proxyStats().getConnections(); + String json = getAdmin().proxyStats().getConnections(); + JsonArray stats = new Gson().fromJson(json, JsonArray.class); printStats(stats, indent); } } @@ -53,7 +54,8 @@ private class CmdTopicsMetrics extends CliCommand { @Override void run() throws Exception { - JsonObject stats = getAdmin().proxyStats().getTopics(); + String json = getAdmin().proxyStats().getTopics(); + JsonObject stats = new Gson().fromJson(json, JsonObject.class); printStats(stats, indent); } } diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java index 4853b8508e98b..16e1664497f36 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java @@ -51,7 +51,7 @@ import org.apache.pulsar.common.functions.ConsumerConfig; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.Resources; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.functions.Utils; @@ -231,7 +231,7 @@ protected class UpdateSink extends SinkDetailsCommand { @Override void runCmd() throws Exception { - UpdateOptions updateOptions = new UpdateOptions(); + UpdateOptionsImpl updateOptions = new UpdateOptionsImpl(); updateOptions.setUpdateAuthData(updateAuthData); if (Utils.isFunctionPackageUrlSupported(archive)) { getAdmin().sinks().updateSinkWithUrl(sinkConfig, sinkConfig.getArchive(), updateOptions); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java index 9f318c220de56..3ab6cccb60b0c 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java @@ -52,7 +52,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.functions.ProducerConfig; import org.apache.pulsar.common.functions.Resources; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.BatchSourceConfig; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.functions.FunctionConfig; @@ -235,7 +235,7 @@ protected class UpdateSource extends SourceDetailsCommand { @Override void runCmd() throws Exception { - UpdateOptions updateOptions = new UpdateOptions(); + UpdateOptionsImpl updateOptions = new UpdateOptionsImpl(); updateOptions.setUpdateAuthData(updateAuthData); if (Utils.isFunctionPackageUrlSupported(sourceConfig.getArchive())) { getAdmin().sources().updateSourceWithUrl(sourceConfig, sourceConfig.getArchive(), updateOptions); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTenants.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTenants.java index 93616fa09e103..b126d741a3b83 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTenants.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTenants.java @@ -29,7 +29,7 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; @Parameters(commandDescription = "Operations about tenants") public class CmdTenants extends CmdBase { @@ -79,7 +79,7 @@ void run() throws PulsarAdminException { allowedClusters = getAdmin().clusters().getClusters(); } - TenantInfo tenantInfo = new TenantInfo(new HashSet<>(adminRoles), new HashSet<>(allowedClusters)); + TenantInfoImpl tenantInfo = new TenantInfoImpl(new HashSet<>(adminRoles), new HashSet<>(allowedClusters)); getAdmin().tenants().createTenant(tenant, tenantInfo); } } @@ -109,7 +109,7 @@ void run() throws PulsarAdminException { allowedClusters = new ArrayList<>(getAdmin().tenants().getTenantInfo(tenant).getAllowedClusters()); } - TenantInfo tenantInfo = new TenantInfo(new HashSet<>(adminRoles), new HashSet<>(allowedClusters)); + TenantInfoImpl tenantInfo = new TenantInfoImpl(new HashSet<>(adminRoles), new HashSet<>(allowedClusters)); getAdmin().tenants().updateTenant(tenant, tenantInfo); } } diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java index 9e92323003a1f..0e0e413722d7f 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java @@ -28,7 +28,6 @@ import com.google.common.collect.Lists; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; @@ -60,8 +59,8 @@ import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.PublishRate; @@ -591,7 +590,7 @@ private class GetInternalInfo extends CliCommand { @Override void run() throws PulsarAdminException { String topic = validateTopicName(params); - JsonObject result = getTopics().getInternalInfo(topic); + String result = getTopics().getInternalInfo(topic); Gson gson = new GsonBuilder().setPrettyPrinting().create(); System.out.println(gson.toJson(result)); } @@ -1524,7 +1523,7 @@ private class SetOffloadPolicies extends CliCommand { void run() throws PulsarAdminException { String persistentTopic = validatePersistentTopic(params); - OffloadedReadPriority offloadedReadPriority = OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY; + OffloadedReadPriority offloadedReadPriority = OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY; if (this.offloadReadPriorityStr != null) { try { @@ -1538,7 +1537,7 @@ void run() throws PulsarAdminException { } } - OffloadPolicies offloadPolicies = OffloadPolicies.create(driver, region, bucket, endpoint, + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create(driver, region, bucket, endpoint, s3Role, s3RoleSessionName, awsId, awsSecret, maxBlockSizeInBytes, diff --git a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java index 16e6550ab555a..1f4819d5ac832 100644 --- a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java +++ b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java @@ -44,7 +44,7 @@ import org.apache.pulsar.client.admin.Sinks; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.Resources; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.util.ClassLoaderUtils; import org.powermock.api.mockito.PowerMockito; @@ -712,7 +712,7 @@ public void testUpdateSink() throws Exception { .namespace(DEFAULT_NAMESPACE) .name(updateSink.name) .archive(updateSink.archive) - .build()), eq(updateSink.archive), eq(new UpdateOptions())); + .build()), eq(updateSink.archive), eq(new UpdateOptionsImpl())); updateSink.archive = null; @@ -725,7 +725,7 @@ public void testUpdateSink() throws Exception { updateSink.runCmd(); - UpdateOptions updateOptions = new UpdateOptions(); + UpdateOptionsImpl updateOptions = new UpdateOptionsImpl(); updateOptions.setUpdateAuthData(true); verify(sink).updateSink(eq(SinkConfig.builder() diff --git a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSources.java b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSources.java index b2137bd895d81..23791ae2918a1 100644 --- a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSources.java +++ b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSources.java @@ -33,15 +33,13 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; -import java.util.HashMap; -import java.util.Map; import org.apache.pulsar.admin.cli.utils.CmdUtils; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.Sources; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.Resources; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.BatchSourceConfig; import org.apache.pulsar.common.io.SourceConfig; import org.apache.pulsar.common.util.ClassLoaderUtils; @@ -666,7 +664,7 @@ public void testUpdateSource() throws Exception { .namespace(DEFAULT_NAMESPACE) .name(updateSource.name) .archive(updateSource.archive) - .build()), eq(updateSource.archive), eq(new UpdateOptions())); + .build()), eq(updateSource.archive), eq(new UpdateOptionsImpl())); updateSource.archive = null; @@ -677,7 +675,7 @@ public void testUpdateSource() throws Exception { updateSource.updateAuthData = true; - UpdateOptions updateOptions = new UpdateOptions(); + UpdateOptionsImpl updateOptions = new UpdateOptionsImpl(); updateOptions.setUpdateAuthData(true); updateSource.runCmd(); diff --git a/pulsar-common/pom.xml b/pulsar-common/pom.xml index 720ffd1dea1cb..414397d198248 100644 --- a/pulsar-common/pom.xml +++ b/pulsar-common/pom.xml @@ -41,6 +41,12 @@ ${project.version} + + ${project.groupId} + pulsar-client-admin-api + ${project.version} + + io.swagger swagger-annotations diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/JsonIgnorePropertiesMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/functions/JsonIgnorePropertiesMixIn.java new file mode 100644 index 0000000000000..ae6fd10ef7ff4 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/functions/JsonIgnorePropertiesMixIn.java @@ -0,0 +1,26 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.functions; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public abstract class JsonIgnorePropertiesMixIn { + +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java b/pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsImpl.java similarity index 88% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsImpl.java index 108ccac33b447..bc58321ee3165 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsImpl.java @@ -29,9 +29,9 @@ @Data @NoArgsConstructor @ApiModel(value = "UpdateOptions", description = "Options while updating the sink") -public class UpdateOptions { +public class UpdateOptionsImpl implements UpdateOptions { @ApiModelProperty( - value = "Whether or not to update the auth data", - name = "update-auth-data") + value = "Whether or not to update the auth data", + name = "update-auth-data") private boolean updateAuthData = false; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataImpl.java similarity index 61% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataImpl.java index 969b621c7e80e..ce17dac25e7c4 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataImpl.java @@ -23,37 +23,39 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Map; +import lombok.Data; import org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactory; /** * The auto failover policy configuration data. */ @ApiModel( - value = "AutoFailoverPolicyData", - description = "The auto failover policy configuration data" + value = "AutoFailoverPolicyData", + description = "The auto failover policy configuration data" ) -public class AutoFailoverPolicyData { +@Data +public class AutoFailoverPolicyDataImpl implements AutoFailoverPolicyData { @ApiModelProperty( - name = "policy_type", - value = "The auto failover policy type", - allowableValues = "min_available" + name = "policy_type", + value = "The auto failover policy type", + allowableValues = "min_available" ) @SuppressWarnings("checkstyle:MemberName") public AutoFailoverPolicyType policy_type; @ApiModelProperty( - name = "parameters", - value = - "The parameters applied to the auto failover policy specified by `policy_type`.\n" - + "The parameters for 'min_available' are :\n" - + " - 'min_limit': the limit of minimal number of available brokers in primary" - + " group before auto failover\n" - + " - 'usage_threshold': the resource usage threshold. If the usage of a broker" - + " is beyond this value, it would be marked as unavailable\n", - example = - "{\n" - + " \"min_limit\": 3,\n" - + " \"usage_threshold\": 80\n" - + "}\n" + name = "parameters", + value = + "The parameters applied to the auto failover policy specified by `policy_type`.\n" + + "The parameters for 'min_available' are :\n" + + " - 'min_limit': the limit of minimal number of available brokers in primary" + + " group before auto failover\n" + + " - 'usage_threshold': the resource usage threshold. If the usage of a broker" + + " is beyond this value, it would be marked as unavailable\n", + example = + "{\n" + + " \"min_limit\": 3,\n" + + " \"usage_threshold\": 80\n" + + "}\n" ) public Map parameters; @@ -64,8 +66,8 @@ public int hashCode() { @Override public boolean equals(Object obj) { - if (obj instanceof AutoFailoverPolicyData) { - AutoFailoverPolicyData other = (AutoFailoverPolicyData) obj; + if (obj instanceof AutoFailoverPolicyDataImpl) { + AutoFailoverPolicyDataImpl other = (AutoFailoverPolicyDataImpl) obj; return Objects.equal(policy_type, other.policy_type) && Objects.equal(parameters, other.parameters); } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaMixIn.java new file mode 100644 index 0000000000000..a1562400f0818 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaMixIn.java @@ -0,0 +1,26 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import com.fasterxml.jackson.annotation.JsonAlias; + +public abstract class BacklogQuotaMixIn { + @JsonAlias("limit") + private long limitSize; +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataImpl.java similarity index 74% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataImpl.java index 8adc23afbd662..4cf23b4c4da9c 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataImpl.java @@ -21,38 +21,40 @@ import com.google.common.base.Objects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import java.util.List; /** * The namespace isolation data for a given broker. */ @ApiModel( - value = "BrokerNamespaceIsolationData", - description = "The namespace isolation data for a given broker" + value = "BrokerNamespaceIsolationData", + description = "The namespace isolation data for a given broker" ) -public class BrokerNamespaceIsolationData { +@Data +public class BrokerNamespaceIsolationDataImpl implements BrokerNamespaceIsolationData { @ApiModelProperty( - name = "brokerName", - value = "The broker name", - example = "broker1:8080" + name = "brokerName", + value = "The broker name", + example = "broker1:8080" ) public String brokerName; @ApiModelProperty( name = "policyName", value = "Policy name", example = "my-policy" - ) + ) public String policyName; @ApiModelProperty( name = "isPrimary", value = "Is Primary broker", example = "true/false" - ) + ) public boolean isPrimary; @ApiModelProperty( - name = "namespaceRegex", - value = "The namespace-isolation policies attached to this broker" + name = "namespaceRegex", + value = "The namespace-isolation policies attached to this broker" ) public List namespaceRegex; //isolated namespace regex @@ -63,8 +65,8 @@ public int hashCode() { @Override public boolean equals(Object obj) { - if (obj instanceof BrokerNamespaceIsolationData) { - BrokerNamespaceIsolationData other = (BrokerNamespaceIsolationData) obj; + if (obj instanceof BrokerNamespaceIsolationDataImpl) { + BrokerNamespaceIsolationDataImpl other = (BrokerNamespaceIsolationDataImpl) obj; return Objects.equal(brokerName, other.brokerName) && Objects.equal(namespaceRegex, other.namespaceRegex); } return false; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataImpl.java similarity index 76% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataImpl.java index 7d5f497d83ab6..ee9186ffa3e21 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataImpl.java @@ -30,38 +30,38 @@ * The configuration data for a cluster. */ @ApiModel( - value = "ClusterData", - description = "The configuration data for a cluster" + value = "ClusterData", + description = "The configuration data for a cluster" ) -public class ClusterData { +public class ClusterDataImpl implements ClusterData { @ApiModelProperty( - name = "serviceUrl", - value = "The HTTP rest service URL (for admin operations)", - example = "http://pulsar.example.com:8080" + name = "serviceUrl", + value = "The HTTP rest service URL (for admin operations)", + example = "http://pulsar.example.com:8080" ) private String serviceUrl; @ApiModelProperty( - name = "serviceUrlTls", - value = "The HTTPS rest service URL (for admin operations)", - example = "https://pulsar.example.com:8443" + name = "serviceUrlTls", + value = "The HTTPS rest service URL (for admin operations)", + example = "https://pulsar.example.com:8443" ) private String serviceUrlTls; @ApiModelProperty( - name = "brokerServiceUrl", - value = "The broker service url (for produce and consume operations)", - example = "pulsar://pulsar.example.com:6650" + name = "brokerServiceUrl", + value = "The broker service url (for produce and consume operations)", + example = "pulsar://pulsar.example.com:6650" ) private String brokerServiceUrl; @ApiModelProperty( - name = "brokerServiceUrlTls", - value = "The secured broker service url (for produce and consume operations)", - example = "pulsar+ssl://pulsar.example.com:6651" + name = "brokerServiceUrlTls", + value = "The secured broker service url (for produce and consume operations)", + example = "pulsar+ssl://pulsar.example.com:6651" ) private String brokerServiceUrlTls; @ApiModelProperty( - name = "proxyServiceUrl", - value = "Proxy-service url when client would like to connect to broker via proxy.", - example = "pulsar+ssl://ats-proxy.example.com:4443 or " + name = "proxyServiceUrl", + value = "Proxy-service url when client would like to connect to broker via proxy.", + example = "pulsar+ssl://ats-proxy.example.com:4443 or " + "pulsar://ats-proxy.example.com:4080" ) private String proxyServiceUrl; @@ -77,41 +77,41 @@ public class ClusterData { ) private String authenticationParameters; @ApiModelProperty( - name = "proxyProtocol", - value = "protocol to decide type of proxy routing eg: SNI-routing", - example = "SNI" + name = "proxyProtocol", + value = "protocol to decide type of proxy routing eg: SNI-routing", + example = "SNI" ) private ProxyProtocol proxyProtocol; // For given Cluster1(us-west1, us-east1) and Cluster2(us-west2, us-east2) // Peer: [us-west1 -> us-west2] and [us-east1 -> us-east2] @ApiModelProperty( - name = "peerClusterNames", - value = "A set of peer cluster names" + name = "peerClusterNames", + value = "A set of peer cluster names" ) private LinkedHashSet peerClusterNames; - public ClusterData() { + public ClusterDataImpl() { } - public ClusterData(String serviceUrl) { + public ClusterDataImpl(String serviceUrl) { this(serviceUrl, ""); } - public ClusterData(String serviceUrl, String serviceUrlTls) { + public ClusterDataImpl(String serviceUrl, String serviceUrlTls) { this.serviceUrl = serviceUrl; this.serviceUrlTls = serviceUrlTls; } - public ClusterData(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls) { + public ClusterDataImpl(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls) { this.serviceUrl = serviceUrl; this.serviceUrlTls = serviceUrlTls; this.brokerServiceUrl = brokerServiceUrl; this.brokerServiceUrlTls = brokerServiceUrlTls; } - public ClusterData(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls, - String authenticationPlugin, String authenticationParameters) { + public ClusterDataImpl(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls, + String authenticationPlugin, String authenticationParameters) { this.serviceUrl = serviceUrl; this.serviceUrlTls = serviceUrlTls; this.brokerServiceUrl = brokerServiceUrl; @@ -120,9 +120,9 @@ public ClusterData(String serviceUrl, String serviceUrlTls, String brokerService this.authenticationParameters = authenticationParameters; } - public ClusterData(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls, - String proxyServiceUrl, String authenticationPlugin, String authenticationParameters, - ProxyProtocol proxyProtocol) { + public ClusterDataImpl(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls, + String proxyServiceUrl, String authenticationPlugin, String authenticationParameters, + ProxyProtocol proxyProtocol) { this.serviceUrl = serviceUrl; this.serviceUrlTls = serviceUrlTls; this.brokerServiceUrl = brokerServiceUrl; @@ -134,7 +134,7 @@ public ClusterData(String serviceUrl, String serviceUrlTls, String brokerService } - public void update(ClusterData other) { + public void update(ClusterDataImpl other) { checkNotNull(other); this.serviceUrl = other.serviceUrl; this.serviceUrlTls = other.serviceUrlTls; @@ -220,8 +220,8 @@ public void setPeerClusterNames(LinkedHashSet peerClusterNames) { @Override public boolean equals(Object obj) { - if (obj instanceof ClusterData) { - ClusterData other = (ClusterData) obj; + if (obj instanceof ClusterDataImpl) { + ClusterDataImpl other = (ClusterDataImpl) obj; return Objects.equals(serviceUrl, other.serviceUrl) && Objects.equals(serviceUrlTls, other.serviceUrlTls) && Objects.equals(brokerServiceUrl, other.brokerServiceUrl) && Objects.equals(brokerServiceUrlTls, other.brokerServiceUrlTls) @@ -237,7 +237,7 @@ public boolean equals(Object obj) { @Override public int hashCode() { - return Objects.hash(this.toString()); + return Objects.hash(this.toString()); } @Override diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainImpl.java similarity index 81% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainImpl.java index dbe77d8590d2c..d486d228535e1 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainImpl.java @@ -18,13 +18,15 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.HashSet; +import java.util.Objects; import java.util.Set; +import lombok.Data; +import lombok.ToString; + /** * The data of a failure domain configuration in a cluster. */ @@ -32,7 +34,9 @@ value = "FailureDomain", description = "The data of a failure domain configuration in a cluster" ) -public class FailureDomain { +@ToString +@Data +public class FailureDomainImpl implements FailureDomain { @ApiModelProperty( name = "brokers", @@ -41,10 +45,12 @@ public class FailureDomain { ) public Set brokers = new HashSet(); + @Override public Set getBrokers() { return brokers; } + @Override public void setBrokers(Set brokers) { this.brokers = brokers; } @@ -56,16 +62,11 @@ public int hashCode() { @Override public boolean equals(Object obj) { - if (obj instanceof FailureDomain) { - FailureDomain other = (FailureDomain) obj; - return Objects.equal(brokers, other.brokers); + if (obj instanceof FailureDomainImpl) { + FailureDomainImpl other = (FailureDomainImpl) obj; + return Objects.equals(brokers, other.brokers); } return false; } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("brokers", brokers).toString(); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseImpl.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseImpl.java new file mode 100644 index 0000000000000..e8d297a5eaee4 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseImpl.java @@ -0,0 +1,57 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Data; + +/** + * Function instance statistics data base. + */ +@Data +@JsonInclude(JsonInclude.Include.ALWAYS) +@JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", + "userExceptionsTotal", "avgProcessLatency" }) +public class FunctionInstanceStatsDataBaseImpl implements FunctionInstanceStatsDataBase { + /** + * Total number of records function received from source for instance. + **/ + public long receivedTotal; + + /** + * Total number of records successfully processed by user function for instance. + **/ + public long processedSuccessfullyTotal; + + /** + * Total number of system exceptions thrown for instance. + **/ + public long systemExceptionsTotal; + + /** + * Total number of user exceptions thrown for instance. + **/ + public long userExceptionsTotal; + + /** + * Average process latency for function for instance. + **/ + public Double avgProcessLatency; +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataImpl.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataImpl.java new file mode 100644 index 0000000000000..f1ed757b96337 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataImpl.java @@ -0,0 +1,50 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Function instance statistics data. + */ +@EqualsAndHashCode(callSuper = true) +@Data +@JsonInclude(JsonInclude.Include.ALWAYS) +@JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", + "userExceptionsTotal", "avgProcessLatency", "1min", "lastInvocation", "userMetrics" }) +public class FunctionInstanceStatsDataImpl extends FunctionInstanceStatsDataBaseImpl implements FunctionInstanceStatsData { + @JsonProperty("1min") + public FunctionInstanceStatsDataBase oneMin = new FunctionInstanceStatsDataBaseImpl(); + + /** + * Timestamp of when the function was last invoked for instance. + **/ + public Long lastInvocation; + + /** + * Map of user defined metrics. + **/ + public Map userMetrics = new HashMap<>(); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsImpl.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsImpl.java new file mode 100644 index 0000000000000..f23700149baaf --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsImpl.java @@ -0,0 +1,36 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Data; + +/** + * Function instance statistics. + */ +@Data +@JsonInclude(JsonInclude.Include.ALWAYS) +@JsonPropertyOrder({ "instanceId", "metrics" }) +public class FunctionInstanceStatsImpl implements FunctionInstanceStats { + /** Instance Id of function instance. **/ + public int instanceId; + + public FunctionInstanceStatsData metrics = new FunctionInstanceStatsDataImpl(); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsImpl.java similarity index 50% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsImpl.java index 94eb9905e970a..099622d76c632 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsImpl.java @@ -22,12 +22,10 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import java.io.IOException; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; + import lombok.Data; -import lombok.EqualsAndHashCode; import org.apache.pulsar.common.util.ObjectMapperFactory; /** @@ -36,8 +34,8 @@ @Data @JsonInclude(JsonInclude.Include.ALWAYS) @JsonPropertyOrder({"receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", "userExceptionsTotal", - "avgProcessLatency", "1min", "lastInvocation", "instances"}) -public class FunctionStats { + "avgProcessLatency", "1min", "lastInvocation", "instances"}) +public class FunctionStatsImpl implements FunctionStats { /** * Overall total number of records function received from source. @@ -65,99 +63,29 @@ public class FunctionStats { public Double avgProcessLatency; @JsonProperty("1min") - public FunctionInstanceStats.FunctionInstanceStatsDataBase oneMin = - new FunctionInstanceStats.FunctionInstanceStatsDataBase(); + public FunctionInstanceStatsDataBase oneMin = + new FunctionInstanceStatsDataBaseImpl(); /** * Timestamp of when the function was last invoked by any instance. **/ public Long lastInvocation; - /** - * Function instance statistics. - */ - @Data - @JsonInclude(JsonInclude.Include.ALWAYS) - @JsonPropertyOrder({ "instanceId", "metrics" }) - public static class FunctionInstanceStats { - - /** Instance Id of function instance. **/ - public int instanceId; - - /** - * Function instance statistics data base. - */ - @Data - @JsonInclude(JsonInclude.Include.ALWAYS) - @JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", - "userExceptionsTotal", "avgProcessLatency" }) - public static class FunctionInstanceStatsDataBase { - /** - * Total number of records function received from source for instance. - **/ - public long receivedTotal; - - /** - * Total number of records successfully processed by user function for instance. - **/ - public long processedSuccessfullyTotal; - - /** - * Total number of system exceptions thrown for instance. - **/ - public long systemExceptionsTotal; - - /** - * Total number of user exceptions thrown for instance. - **/ - public long userExceptionsTotal; - - /** - * Average process latency for function for instance. - **/ - public Double avgProcessLatency; - } - - /** - * Function instance statistics data. - */ - @EqualsAndHashCode(callSuper = true) - @Data - @JsonInclude(JsonInclude.Include.ALWAYS) - @JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", - "userExceptionsTotal", "avgProcessLatency", "1min", "lastInvocation", "userMetrics" }) - public static class FunctionInstanceStatsData extends FunctionInstanceStatsDataBase { - - @JsonProperty("1min") - public FunctionInstanceStatsDataBase oneMin = new FunctionInstanceStatsDataBase(); - - /** - * Timestamp of when the function was last invoked for instance. - **/ - public Long lastInvocation; - - /** - * Map of user defined metrics. - **/ - public Map userMetrics = new HashMap<>(); - } - - public FunctionInstanceStatsData metrics = new FunctionInstanceStatsData(); - } - public List instances = new LinkedList<>(); + @Override public void addInstance(FunctionInstanceStats functionInstanceStats) { instances.add(functionInstanceStats); } - public FunctionStats calculateOverall() { + @Override + public FunctionStatsImpl calculateOverall() { int nonNullInstances = 0; int nonNullInstancesOneMin = 0; for (FunctionInstanceStats functionInstanceStats : instances) { - FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStatsData = - functionInstanceStats.getMetrics(); + FunctionInstanceStatsDataImpl functionInstanceStatsData = + (FunctionInstanceStatsDataImpl) functionInstanceStats.getMetrics(); receivedTotal += functionInstanceStatsData.receivedTotal; processedSuccessfullyTotal += functionInstanceStatsData.processedSuccessfullyTotal; systemExceptionsTotal += functionInstanceStatsData.systemExceptionsTotal; @@ -170,15 +98,19 @@ public FunctionStats calculateOverall() { nonNullInstances++; } - oneMin.receivedTotal += functionInstanceStatsData.oneMin.receivedTotal; - oneMin.processedSuccessfullyTotal += functionInstanceStatsData.oneMin.processedSuccessfullyTotal; - oneMin.systemExceptionsTotal += functionInstanceStatsData.oneMin.systemExceptionsTotal; - oneMin.userExceptionsTotal += functionInstanceStatsData.oneMin.userExceptionsTotal; - if (functionInstanceStatsData.oneMin.avgProcessLatency != null) { - if (oneMin.avgProcessLatency == null) { - oneMin.avgProcessLatency = 0.0; + oneMin.setReceivedTotal(oneMin.getReceivedTotal() + functionInstanceStatsData.oneMin.getReceivedTotal()); + oneMin.setProcessedSuccessfullyTotal(oneMin.getProcessedSuccessfullyTotal() + + functionInstanceStatsData.oneMin.getProcessedSuccessfullyTotal()); + oneMin.setSystemExceptionsTotal(oneMin.getSystemExceptionsTotal() + + functionInstanceStatsData.oneMin.getSystemExceptionsTotal()); + oneMin.setUserExceptionsTotal(oneMin.getUserExceptionsTotal() + + functionInstanceStatsData.oneMin.getUserExceptionsTotal()); + if (functionInstanceStatsData.oneMin.getAvgProcessLatency() != null) { + if (oneMin.getAvgProcessLatency() == null) { + oneMin.setAvgProcessLatency(0.0); } - oneMin.avgProcessLatency += functionInstanceStatsData.oneMin.avgProcessLatency; + oneMin.setAvgProcessLatency(oneMin.getAvgProcessLatency() + + functionInstanceStatsData.oneMin.getAvgProcessLatency()); nonNullInstancesOneMin++; } @@ -198,15 +130,15 @@ public FunctionStats calculateOverall() { // calculate 1min average from sum if (nonNullInstancesOneMin > 0) { - oneMin.avgProcessLatency = oneMin.avgProcessLatency / nonNullInstancesOneMin; + oneMin.setAvgProcessLatency(oneMin.getAvgProcessLatency() / nonNullInstancesOneMin); } else { - oneMin.avgProcessLatency = null; + oneMin.setAvgProcessLatency(null); } return this; } - public static FunctionStats decode (String json) throws IOException { - return ObjectMapperFactory.getThreadLocal().readValue(json, FunctionStats.class); + public static FunctionStatsImpl decode (String json) throws IOException { + return ObjectMapperFactory.getThreadLocal().readValue(json, FunctionStatsImpl.class); } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatusUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatusUtil.java new file mode 100644 index 0000000000000..f2209b0d2919a --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatusUtil.java @@ -0,0 +1,28 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import org.apache.pulsar.common.util.ObjectMapperFactory; +import java.io.IOException; + +public class FunctionStatusUtil { + public static FunctionStatus decode(String json) throws IOException { + return ObjectMapperFactory.getThreadLocal().readValue(json, FunctionStatus.class); + } +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/LocalPolicies.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/LocalPolicies.java index 8df2c52b84bd6..5ed236e15703a 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/LocalPolicies.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/LocalPolicies.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import static org.apache.pulsar.common.policies.data.Policies.defaultBundle; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.defaultBundle; import lombok.EqualsAndHashCode; import lombok.ToString; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataImpl.java similarity index 69% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataImpl.java index 2388dafbeb2c0..1c3ce58e78eb0 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataImpl.java @@ -27,45 +27,47 @@ import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; +import lombok.Data; import org.apache.commons.lang3.StringUtils; /** * The data of namespace isolation configuration. */ @ApiModel( - value = "NamespaceIsolationData", - description = "The data of namespace isolation configuration" + value = "NamespaceIsolationData", + description = "The data of namespace isolation configuration" ) -public class NamespaceIsolationData { +@Data +public class NamespaceIsolationDataImpl implements NamespaceIsolationData { @ApiModelProperty( - name = "namespaces", - value = "The list of namespaces to apply this namespace isolation data" + name = "namespaces", + value = "The list of namespaces to apply this namespace isolation data" ) public List namespaces = new ArrayList(); @ApiModelProperty( - name = "primary", - value = "The list of primary brokers for serving the list of namespaces in this isolation policy" + name = "primary", + value = "The list of primary brokers for serving the list of namespaces in this isolation policy" ) public List primary = new ArrayList(); @ApiModelProperty( - name = "primary", - value = "The list of secondary brokers for serving the list of namespaces in this isolation policy" + name = "primary", + value = "The list of secondary brokers for serving the list of namespaces in this isolation policy" ) public List secondary = new ArrayList(); @ApiModelProperty( - name = "auto_failover_policy", - value = "The data of auto-failover policy configuration", - example = - "{" - + " \"policy_type\": \"min_available\"" - + " \"parameters\": {" - + " \"\": \"\"" - + " }" - + "}" + name = "auto_failover_policy", + value = "The data of auto-failover policy configuration", + example = + "{" + + " \"policy_type\": \"min_available\"" + + " \"parameters\": {" + + " \"\": \"\"" + + " }" + + "}" ) @SuppressWarnings("checkstyle:MemberName") - public AutoFailoverPolicyData auto_failover_policy; + public AutoFailoverPolicyDataImpl auto_failover_policy; @Override public int hashCode() { @@ -75,8 +77,8 @@ public int hashCode() { @Override public boolean equals(Object obj) { - if (obj instanceof NamespaceIsolationData) { - NamespaceIsolationData other = (NamespaceIsolationData) obj; + if (obj instanceof NamespaceIsolationDataImpl) { + NamespaceIsolationDataImpl other = (NamespaceIsolationDataImpl) obj; return Objects.equal(namespaces, other.namespaces) && Objects.equal(primary, other.primary) && Objects.equal(secondary, other.secondary) && Objects.equal(auto_failover_policy, other.auto_failover_policy); @@ -111,4 +113,9 @@ public String toString() { return String.format("namespaces=%s primary=%s secondary=%s auto_failover_policy=%s", namespaces, primary, secondary, auto_failover_policy); } + + @Override + public void setAuto_failover_policy(AutoFailoverPolicyData autoFailoverPolicyData) { + this.auto_failover_policy = (AutoFailoverPolicyDataImpl) autoFailoverPolicyData; + } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesImpl.java similarity index 86% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesImpl.java index 12172f1c593a6..d2478e2963d6f 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesImpl.java @@ -31,84 +31,36 @@ import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Properties; -import java.util.stream.Collectors; + import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.apache.pulsar.common.classification.InterfaceAudience; -import org.apache.pulsar.common.classification.InterfaceStability; /** * Definition of the offload policies. */ @Slf4j @Data -public class OffloadPolicies implements Serializable { - - @InterfaceAudience.Public - @InterfaceStability.Stable - public enum OffloadedReadPriority { - /** - * For offloaded messages, readers will try to read from bookkeeper at first, - * if messages not exist at bookkeeper then read from offloaded storage. - */ - BOOKKEEPER_FIRST("bookkeeper-first"), - /** - * For offloaded messages, readers will try to read from offloaded storage first, - * even they are still exist in bookkeeper. - */ - TIERED_STORAGE_FIRST("tiered-storage-first"); - - private final String value; - - OffloadedReadPriority(String value) { - this.value = value; - } - - public boolean equalsName(String otherName) { - return value.equals(otherName); - } - - @Override - public String toString() { - return value; - } - - public static OffloadedReadPriority fromString(String str) { - for (OffloadedReadPriority value : OffloadedReadPriority.values()) { - if (value.value.equals(str)) { - return value; - } - } - - throw new IllegalArgumentException("--offloadedReadPriority parameter must be one of " - + Arrays.stream(OffloadedReadPriority.values()) - .map(OffloadedReadPriority::toString) - .collect(Collectors.joining(",")) - + " but got: " + str); - } - - public String getValue() { - return value; - } - } +public class OffloadPoliciesImpl implements Serializable, OffloadPolicies { private final static long serialVersionUID = 0L; - private final static List CONFIGURATION_FIELDS; + public final static List CONFIGURATION_FIELDS; static { - CONFIGURATION_FIELDS = new ArrayList<>(); - Class clazz = OffloadPolicies.class; + List temp = new ArrayList<>(); + Class clazz = OffloadPoliciesImpl.class; Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { if (field.isAnnotationPresent(Configuration.class)) { - CONFIGURATION_FIELDS.add(field); + temp.add(field); } } + CONFIGURATION_FIELDS = Collections.unmodifiableList(temp); } public final static int DEFAULT_MAX_BLOCK_SIZE_IN_BYTES = 64 * 1024 * 1024; // 64MB @@ -223,13 +175,13 @@ public String getValue() { @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Integer managedLedgerOffloadReadBufferSizeInBytes; - public static OffloadPolicies create(String driver, String region, String bucket, String endpoint, - String role, String roleSessionName, - String credentialId, String credentialSecret, - Integer maxBlockSizeInBytes, Integer readBufferSizeInBytes, - Long offloadThresholdInBytes, Long offloadDeletionLagInMillis, - OffloadedReadPriority readPriority) { - OffloadPolicies offloadPolicies = new OffloadPolicies(); + public static OffloadPoliciesImpl create(String driver, String region, String bucket, String endpoint, + String role, String roleSessionName, + String credentialId, String credentialSecret, + Integer maxBlockSizeInBytes, Integer readBufferSizeInBytes, + Long offloadThresholdInBytes, Long offloadDeletionLagInMillis, + OffloadedReadPriority readPriority) { + OffloadPoliciesImpl offloadPolicies = new OffloadPoliciesImpl(); offloadPolicies.setManagedLedgerOffloadDriver(driver); offloadPolicies.setManagedLedgerOffloadThresholdInBytes(offloadThresholdInBytes); offloadPolicies.setManagedLedgerOffloadDeletionLagInMillis(offloadDeletionLagInMillis); @@ -241,7 +193,7 @@ public static OffloadPolicies create(String driver, String region, String bucket offloadPolicies.setManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); offloadPolicies.setManagedLedgerOffloadedReadPriority(readPriority); - if (driver.equalsIgnoreCase(DRIVER_NAMES.get(0)) || driver.equalsIgnoreCase(DRIVER_NAMES.get(1))) { + if (driver.equalsIgnoreCase(DRIVER_NAMES.get(0)) || driver.equalsIgnoreCase(DRIVER_NAMES.get(1))) { if (role != null) { offloadPolicies.setS3ManagedLedgerOffloadRole(role); } @@ -268,9 +220,9 @@ public static OffloadPolicies create(String driver, String region, String bucket return offloadPolicies; } - public static OffloadPolicies create(Properties properties) { - OffloadPolicies data = new OffloadPolicies(); - Field[] fields = OffloadPolicies.class.getDeclaredFields(); + public static OffloadPoliciesImpl create(Properties properties) { + OffloadPoliciesImpl data = new OffloadPoliciesImpl(); + Field[] fields = OffloadPoliciesImpl.class.getDeclaredFields(); Arrays.stream(fields).forEach(f -> { if (properties.containsKey(f.getName())) { try { @@ -279,7 +231,7 @@ public static OffloadPolicies create(Properties properties) { } catch (Exception e) { throw new IllegalArgumentException( String.format("failed to initialize %s field while setting value %s", - f.getName(), properties.get(f.getName())), e); + f.getName(), properties.get(f.getName())), e); } } }); @@ -287,7 +239,7 @@ public static OffloadPolicies create(Properties properties) { return data; } - private void compatibleWithBrokerConfigFile(Properties properties) { + public void compatibleWithBrokerConfigFile(Properties properties) { if (!properties.containsKey("managedLedgerOffloadThresholdInBytes") && properties.containsKey(OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE)) { setManagedLedgerOffloadThresholdInBytes( @@ -386,7 +338,7 @@ public boolean equals(Object obj) { if (obj == null || getClass() != obj.getClass()) { return false; } - OffloadPolicies other = (OffloadPolicies) obj; + OffloadPoliciesImpl other = (OffloadPoliciesImpl) obj; return Objects.equals(managedLedgerOffloadedReadPriority, other.getManagedLedgerOffloadedReadPriority()) && Objects.equals(managedLedgerOffloadDriver, other.getManagedLedgerOffloadDriver()) && Objects.equals(managedLedgerOffloadMaxThreads, other.getManagedLedgerOffloadMaxThreads()) @@ -400,29 +352,29 @@ public boolean equals(Object obj) { && Objects.equals(s3ManagedLedgerOffloadServiceEndpoint, other.getS3ManagedLedgerOffloadServiceEndpoint()) && Objects.equals(s3ManagedLedgerOffloadMaxBlockSizeInBytes, - other.getS3ManagedLedgerOffloadMaxBlockSizeInBytes()) + other.getS3ManagedLedgerOffloadMaxBlockSizeInBytes()) && Objects.equals(s3ManagedLedgerOffloadReadBufferSizeInBytes, - other.getS3ManagedLedgerOffloadReadBufferSizeInBytes()) + other.getS3ManagedLedgerOffloadReadBufferSizeInBytes()) && Objects.equals(s3ManagedLedgerOffloadRole, other.getS3ManagedLedgerOffloadRole()) && Objects.equals(s3ManagedLedgerOffloadRoleSessionName, - other.getS3ManagedLedgerOffloadRoleSessionName()) + other.getS3ManagedLedgerOffloadRoleSessionName()) && Objects.equals(gcsManagedLedgerOffloadRegion, other.getGcsManagedLedgerOffloadRegion()) && Objects.equals(gcsManagedLedgerOffloadBucket, other.getGcsManagedLedgerOffloadBucket()) && Objects.equals(gcsManagedLedgerOffloadMaxBlockSizeInBytes, - other.getGcsManagedLedgerOffloadMaxBlockSizeInBytes()) + other.getGcsManagedLedgerOffloadMaxBlockSizeInBytes()) && Objects.equals(gcsManagedLedgerOffloadReadBufferSizeInBytes, - other.getGcsManagedLedgerOffloadReadBufferSizeInBytes()) + other.getGcsManagedLedgerOffloadReadBufferSizeInBytes()) && Objects.equals(gcsManagedLedgerOffloadServiceAccountKeyFile, - other.getGcsManagedLedgerOffloadServiceAccountKeyFile()) + other.getGcsManagedLedgerOffloadServiceAccountKeyFile()) && Objects.equals(fileSystemProfilePath, other.getFileSystemProfilePath()) && Objects.equals(fileSystemURI, other.getFileSystemURI()) && Objects.equals(managedLedgerOffloadBucket, other.getManagedLedgerOffloadBucket()) && Objects.equals(managedLedgerOffloadRegion, other.getManagedLedgerOffloadRegion()) && Objects.equals(managedLedgerOffloadServiceEndpoint, other.getManagedLedgerOffloadServiceEndpoint()) && Objects.equals(managedLedgerOffloadMaxBlockSizeInBytes, - other.getManagedLedgerOffloadMaxBlockSizeInBytes()) + other.getManagedLedgerOffloadMaxBlockSizeInBytes()) && Objects.equals(managedLedgerOffloadReadBufferSizeInBytes, - other.getManagedLedgerOffloadReadBufferSizeInBytes()); + other.getManagedLedgerOffloadReadBufferSizeInBytes()); } @Override @@ -540,12 +492,12 @@ private static void setProperty(Properties properties, String key, Object value) * @param policies namespace policies * @return offload policies */ - public static OffloadPolicies oldPoliciesCompatible(OffloadPolicies nsLevelPolicies, Policies policies) { + public static OffloadPoliciesImpl oldPoliciesCompatible(OffloadPoliciesImpl nsLevelPolicies, Policies policies) { if (policies == null || (policies.offload_threshold == -1 && policies.offload_deletion_lag_ms == null)) { return nsLevelPolicies; } if (nsLevelPolicies == null) { - nsLevelPolicies = new OffloadPolicies(); + nsLevelPolicies = new OffloadPoliciesImpl(); } if (nsLevelPolicies.getManagedLedgerOffloadThresholdInBytes() == null && policies.offload_threshold != -1) { @@ -568,12 +520,12 @@ public static OffloadPolicies oldPoliciesCompatible(OffloadPolicies nsLevelPolic * @param brokerProperties broker level offload configuration * @return offload policies */ - public static OffloadPolicies mergeConfiguration(OffloadPolicies topicLevelPolicies, - OffloadPolicies nsLevelPolicies, - Properties brokerProperties) { + public static OffloadPoliciesImpl mergeConfiguration(OffloadPoliciesImpl topicLevelPolicies, + OffloadPoliciesImpl nsLevelPolicies, + Properties brokerProperties) { try { boolean allConfigValuesAreNull = true; - OffloadPolicies offloadPolicies = new OffloadPolicies(); + OffloadPoliciesImpl offloadPolicies = new OffloadPoliciesImpl(); for (Field field : CONFIGURATION_FIELDS) { Object object; if (topicLevelPolicies != null && field.get(topicLevelPolicies) != null) { @@ -604,8 +556,8 @@ public static OffloadPolicies mergeConfiguration(OffloadPolicies topicLevelPolic /** * Make configurations of the OffloadPolicies compatible with the config file. * - *

The names of the fields {@link OffloadPolicies#managedLedgerOffloadDeletionLagInMillis} - * and {@link OffloadPolicies#managedLedgerOffloadThresholdInBytes} are not matched with + *

The names of the fields {@link OffloadPoliciesImpl#managedLedgerOffloadDeletionLagInMillis} + * and {@link OffloadPoliciesImpl#managedLedgerOffloadThresholdInBytes} are not matched with * config file (broker.conf or standalone.conf). * * @param properties broker configuration properties diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PoliciesUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PoliciesUtil.java new file mode 100644 index 0000000000000..def6a17388d54 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PoliciesUtil.java @@ -0,0 +1,71 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import static org.apache.pulsar.common.policies.data.Policies.FIRST_BOUNDARY; +import static org.apache.pulsar.common.policies.data.Policies.LAST_BOUNDARY; +import org.apache.pulsar.common.util.RestException; +import javax.ws.rs.core.Response; +import java.util.ArrayList; +import java.util.List; + +/** + * Utils of Pulsar policies. + */ +public class PoliciesUtil { + + public static BundlesData defaultBundle() { + BundlesData bundle = new BundlesData(1); + List boundaries = new ArrayList<>(); + boundaries.add(FIRST_BOUNDARY); + boundaries.add(LAST_BOUNDARY); + bundle.setBoundaries(boundaries); + return bundle; + } + + public static void setStorageQuota(Policies polices, BacklogQuota quota) { + if (polices == null) { + return; + } + polices.backlog_quota_map.put(BacklogQuota.BacklogQuotaType.destination_storage, quota); + } + + private static final long MAX_BUNDLES = ((long) 1) << 32; + + public static BundlesData getBundles(int numBundles) { + if (numBundles <= 0) { + throw new RestException(Response.Status.BAD_REQUEST, + "Invalid number of bundles. Number of bundles has to be in the range of (0, 2^32]."); + } + Long maxVal = MAX_BUNDLES; + Long segSize = maxVal / numBundles; + List partitions = new ArrayList<>(); + partitions.add(String.format("0x%08x", 0L)); + Long curPartition = segSize; + for (int i = 0; i < numBundles; i++) { + if (i != numBundles - 1) { + partitions.add(String.format("0x%08x", curPartition)); + } else { + partitions.add(String.format("0x%08x", maxVal - 1)); + } + curPartition += segSize; + } + return new BundlesData(partitions); + } +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuotaMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuotaMixIn.java new file mode 100644 index 0000000000000..2a32f18b10d84 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuotaMixIn.java @@ -0,0 +1,26 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public abstract class ResourceQuotaMixIn { + @JsonIgnore + abstract public boolean isValid(); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatusUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatusUtil.java new file mode 100644 index 0000000000000..d2701afaa1fa1 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatusUtil.java @@ -0,0 +1,30 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.io.IOException; +import org.apache.pulsar.common.util.ObjectMapperFactory; + +public class SinkStatusUtil { + + public static SinkStatus decode(String json) throws IOException { + return ObjectMapperFactory.getThreadLocal().readValue(json, SinkStatus.class); + } + +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatusUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatusUtil.java new file mode 100644 index 0000000000000..20739877e1a50 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatusUtil.java @@ -0,0 +1,30 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.io.IOException; +import org.apache.pulsar.common.util.ObjectMapperFactory; + +public class SourceStatusUtil { + + public static SourceStatus decode(String json) throws IOException { + return ObjectMapperFactory.getThreadLocal().readValue(json, SourceStatus.class); + } + +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoImpl.java similarity index 82% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoImpl.java index 732394ec7439e..fc00b86200bd0 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoImpl.java @@ -29,13 +29,13 @@ */ @Data @ApiModel(value = "TenantInfo", description = "Information of adminRoles and allowedClusters for tenant") -public class TenantInfo { +public class TenantInfoImpl implements TenantInfo { /** * List of role enabled as admin for this tenant. */ @ApiModelProperty( - value = "Comma separated list of auth principal allowed to administrate the tenant.", - name = "adminRoles" + value = "Comma separated list of auth principal allowed to administrate the tenant.", + name = "adminRoles" ) private Set adminRoles; @@ -43,33 +43,37 @@ public class TenantInfo { * List of clusters this tenant is restricted on. */ @ApiModelProperty( - value = "Comma separated allowed clusters.", - name = "allowedClusters" + value = "Comma separated allowed clusters.", + name = "allowedClusters" ) private Set allowedClusters; - public TenantInfo() { + public TenantInfoImpl() { adminRoles = Sets.newHashSet(); allowedClusters = Sets.newHashSet(); } - public TenantInfo(Set adminRoles, Set allowedClusters) { + public TenantInfoImpl(Set adminRoles, Set allowedClusters) { this.adminRoles = adminRoles; this.allowedClusters = allowedClusters; } + @Override public Set getAdminRoles() { return adminRoles; } + @Override public void setAdminRoles(Set adminRoles) { this.adminRoles = adminRoles; } + @Override public Set getAllowedClusters() { return allowedClusters; } + @Override public void setAllowedClusters(Set allowedClusters) { this.allowedClusters = allowedClusters; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicPolicies.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicPolicies.java index 27e0b87c48b5f..0b03425a9e07a 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicPolicies.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicPolicies.java @@ -55,7 +55,7 @@ public class TopicPolicies { private Integer maxUnackedMessagesOnSubscription = null; private Long delayedDeliveryTickTimeMillis = null; private Boolean delayedDeliveryEnabled = null; - private OffloadPolicies offloadPolicies; + private OffloadPoliciesImpl offloadPolicies; private InactiveTopicPolicies inactiveTopicPolicies = null; private DispatchRate dispatchRate = null; private DispatchRate subscriptionDispatchRate = null; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicies.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicies.java index 787505003128a..323ad0c1a9fbe 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicies.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicies.java @@ -25,20 +25,20 @@ import org.apache.pulsar.common.policies.NamespaceIsolationPolicy; import org.apache.pulsar.common.policies.data.BrokerAssignment; import org.apache.pulsar.common.policies.data.BrokerStatus; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; /** * Namespace isolation policies. */ public class NamespaceIsolationPolicies { - private Map policies = null; + private Map policies = null; public NamespaceIsolationPolicies() { - policies = new HashMap(); + policies = new HashMap(); } - public NamespaceIsolationPolicies(Map policiesMap) { + public NamespaceIsolationPolicies(Map policiesMap) { policies = policiesMap; } @@ -65,7 +65,7 @@ public NamespaceIsolationPolicy getPolicyByName(String policyName) { * @return */ public NamespaceIsolationPolicy getPolicyByNamespace(NamespaceName namespace) { - for (NamespaceIsolationData nsPolicyData : policies.values()) { + for (NamespaceIsolationDataImpl nsPolicyData : policies.values()) { if (this.namespaceMatches(namespace, nsPolicyData)) { return new NamespaceIsolationPolicyImpl(nsPolicyData); } @@ -73,7 +73,7 @@ public NamespaceIsolationPolicy getPolicyByNamespace(NamespaceName namespace) { return null; } - private boolean namespaceMatches(NamespaceName namespace, NamespaceIsolationData nsPolicyData) { + private boolean namespaceMatches(NamespaceName namespace, NamespaceIsolationDataImpl nsPolicyData) { for (String nsnameRegex : nsPolicyData.namespaces) { if (namespace.toString().matches(nsnameRegex)) { return true; @@ -88,7 +88,7 @@ private boolean namespaceMatches(NamespaceName namespace, NamespaceIsolationData * @param policyName * @param policyData */ - public void setPolicy(String policyName, NamespaceIsolationData policyData) { + public void setPolicy(String policyName, NamespaceIsolationDataImpl policyData) { policyData.validate(); policies.put(policyName, policyData); } @@ -107,7 +107,7 @@ public void deletePolicy(String policyName) { * * @return All policy data in a map */ - public Map getPolicies() { + public Map getPolicies() { return this.policies; } @@ -118,7 +118,7 @@ public Map getPolicies() { * @return */ public boolean isSharedBroker(String host) { - for (NamespaceIsolationData policyData : this.policies.values()) { + for (NamespaceIsolationDataImpl policyData : this.policies.values()) { NamespaceIsolationPolicyImpl policy = new NamespaceIsolationPolicyImpl(policyData); if (policy.isPrimaryBroker(host)) { // not free for sharing, this is some properties' primary broker diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImpl.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImpl.java index b33d9248c87e4..8c2af70f88d4d 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImpl.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImpl.java @@ -28,7 +28,7 @@ import org.apache.pulsar.common.policies.AutoFailoverPolicy; import org.apache.pulsar.common.policies.NamespaceIsolationPolicy; import org.apache.pulsar.common.policies.data.BrokerStatus; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; /** * Implementation of the namespace isolation policy. @@ -59,7 +59,7 @@ private List getMatchedBrokers(List brkRegexList, List availab return matchedBrokers; } - public NamespaceIsolationPolicyImpl(NamespaceIsolationData policyData) { + public NamespaceIsolationPolicyImpl(NamespaceIsolationDataImpl policyData) { this.namespaces = policyData.namespaces; this.primary = policyData.primary; this.secondary = policyData.secondary; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/stats/MetricsMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/stats/MetricsMixIn.java new file mode 100644 index 0000000000000..cdf916994ee4c --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/stats/MetricsMixIn.java @@ -0,0 +1,27 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.stats; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonInclude; + +public abstract class MetricsMixIn { + @JsonInclude(content = JsonInclude.Include.NON_EMPTY) + Map dimensions; +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index 6e7a94ecd0438..c37a0b18c2ea0 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -21,10 +21,48 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleAbstractTypeResolver; +import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import io.netty.util.concurrent.FastThreadLocal; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ClassUtils; +import org.apache.pulsar.common.functions.FunctionConfig; +import org.apache.pulsar.common.functions.FunctionState; +import org.apache.pulsar.common.functions.JsonIgnorePropertiesMixIn; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.BacklogQuota; +import org.apache.pulsar.common.policies.data.BacklogQuotaMixIn; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; +import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataBaseImpl; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataBase; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; +import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; +import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; +import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.ResourceQuota; +import org.apache.pulsar.common.policies.data.ResourceQuotaMixIn; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; +import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.stats.Metrics; +import org.apache.pulsar.common.stats.MetricsMixIn; +import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; +import org.apache.pulsar.policies.data.loadbalancer.LoadReportDeserializer; @SuppressWarnings("checkstyle:JavadocType") +@Slf4j public class ObjectMapperFactory { public static ObjectMapper create() { ObjectMapper mapper = new ObjectMapper(); @@ -32,6 +70,7 @@ public static ObjectMapper create() { mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true); mapper.setSerializationInclusion(Include.NON_NULL); + setAnnotationsModule(mapper); return mapper; } @@ -41,6 +80,7 @@ public static ObjectMapper createYaml() { mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true); mapper.setSerializationInclusion(Include.NON_NULL); + setAnnotationsModule(mapper); return mapper; } @@ -66,4 +106,44 @@ public static ObjectMapper getThreadLocalYaml() { return YAML_MAPPER.get(); } + private static void setAnnotationsModule(ObjectMapper mapper) { + SimpleModule module = new SimpleModule("AnnotationsModule"); + + // we use customized deserializer to replace jackson annotations in some POJOs + SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); + resolver.addMapping(AutoFailoverPolicyData.class, AutoFailoverPolicyDataImpl.class); + resolver.addMapping(BrokerNamespaceIsolationData.class, BrokerNamespaceIsolationDataImpl.class); + resolver.addMapping(ClusterData.class, ClusterDataImpl.class); + resolver.addMapping(FailureDomain.class, FailureDomainImpl.class); + resolver.addMapping(NamespaceIsolationData.class, NamespaceIsolationDataImpl.class); + resolver.addMapping(TenantInfo.class, TenantInfoImpl.class); + resolver.addMapping(OffloadPolicies.class, OffloadPoliciesImpl.class); + resolver.addMapping(FunctionStats.class, FunctionStatsImpl.class); + resolver.addMapping(FunctionInstanceStats.class, FunctionInstanceStatsImpl.class); + resolver.addMapping(FunctionInstanceStatsData.class, FunctionInstanceStatsDataImpl.class); + resolver.addMapping(FunctionInstanceStatsDataBase.class, FunctionInstanceStatsDataBaseImpl.class); + + // we use MixIn class to add jackson annotations + mapper.addMixIn(BacklogQuota.class, BacklogQuotaMixIn.class); + mapper.addMixIn(ResourceQuota.class, ResourceQuotaMixIn.class); + mapper.addMixIn(FunctionConfig.class, JsonIgnorePropertiesMixIn.class); + mapper.addMixIn(FunctionState.class, JsonIgnorePropertiesMixIn.class); + mapper.addMixIn(Metrics.class, MetricsMixIn.class); + + try { + // We look for LoadManagerReport first, then add deserializer to the module + // With shaded client, org.apache.pulsar.policies is relocated to + // org.apache.pulsar.shade.org.apache.pulsar.policies + ClassUtils.getClass("org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport"); + module.addDeserializer(LoadManagerReport.class, new LoadReportDeserializer()); + } catch (ClassNotFoundException e) { + log.debug("Add LoadManagerReport deserializer failed because LoadManagerReport.class has been shaded", e); + } + + module.setAbstractTypes(resolver); + + mapper.registerModule(module); + } + + } diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataTest.java index 91d54e315e5da..7842a38ec17dc 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataTest.java @@ -30,8 +30,8 @@ public class AutoFailoverPolicyDataTest { @Test public void testAutoFailoverPolicyData() { - AutoFailoverPolicyData policy0 = new AutoFailoverPolicyData(); - AutoFailoverPolicyData policy1 = new AutoFailoverPolicyData(); + AutoFailoverPolicyDataImpl policy0 = new AutoFailoverPolicyDataImpl(); + AutoFailoverPolicyDataImpl policy1 = new AutoFailoverPolicyDataImpl(); policy0.policy_type = AutoFailoverPolicyType.min_available; policy0.parameters = new HashMap<>(); policy0.parameters.put("min_limit", "3"); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/ClusterDataTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/ClusterDataTest.java index d84afd589b0f1..77e867e05e1e1 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/ClusterDataTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/ClusterDataTest.java @@ -31,33 +31,33 @@ public void simple() { String s2 = "http://broker.messaging.c2.example.com:8080"; String s3 = "https://broker.messaging.c1.example.com:4443"; String s4 = "https://broker.messaging.c2.example.com:4443"; - ClusterData c = new ClusterData(s1); + ClusterDataImpl c = new ClusterDataImpl(s1); c.setServiceUrl(null); c.setServiceUrlTls(null); - assertEquals(new ClusterData(s1), new ClusterData(s1)); - assertEquals(new ClusterData(s1).getServiceUrl(), s1); + assertEquals(new ClusterDataImpl(s1), new ClusterDataImpl(s1)); + assertEquals(new ClusterDataImpl(s1).getServiceUrl(), s1); - assertNotEquals(new ClusterData(), new ClusterData(s1)); - assertNotEquals(new ClusterData(s2), new ClusterData(s1)); - assertNotEquals(s1, new ClusterData(s1)); + assertNotEquals(new ClusterDataImpl(), new ClusterDataImpl(s1)); + assertNotEquals(new ClusterDataImpl(s2), new ClusterDataImpl(s1)); + assertNotEquals(s1, new ClusterDataImpl(s1)); - assertEquals(new ClusterData(s1).hashCode(), new ClusterData(s1).hashCode()); + assertEquals(new ClusterDataImpl(s1).hashCode(), new ClusterDataImpl(s1).hashCode()); - assertNotEquals(new ClusterData(s2).hashCode(), new ClusterData(s1).hashCode()); + assertNotEquals(new ClusterDataImpl(s2).hashCode(), new ClusterDataImpl(s1).hashCode()); - assertNotEquals(c.hashCode(), new ClusterData(s1).hashCode()); + assertNotEquals(c.hashCode(), new ClusterDataImpl(s1).hashCode()); - assertEquals(new ClusterData(s1, s3), new ClusterData(s1, s3)); - assertEquals(new ClusterData(s1, s3).getServiceUrl(), s1); - assertEquals(new ClusterData(s1, s3).getServiceUrlTls(), s3); + assertEquals(new ClusterDataImpl(s1, s3), new ClusterDataImpl(s1, s3)); + assertEquals(new ClusterDataImpl(s1, s3).getServiceUrl(), s1); + assertEquals(new ClusterDataImpl(s1, s3).getServiceUrlTls(), s3); - assertNotEquals(new ClusterData(), new ClusterData(s1, s3)); - assertNotEquals(new ClusterData(s2, s4), new ClusterData(s1, s3)); + assertNotEquals(new ClusterDataImpl(), new ClusterDataImpl(s1, s3)); + assertNotEquals(new ClusterDataImpl(s2, s4), new ClusterDataImpl(s1, s3)); - assertEquals(new ClusterData(s1, s3).hashCode(), new ClusterData(s1, s3).hashCode()); - assertNotEquals(new ClusterData(s2, s4).hashCode(), new ClusterData(s1, s3).hashCode()); - assertNotEquals(new ClusterData(s1, s4).hashCode(), new ClusterData(s1, s3).hashCode()); + assertEquals(new ClusterDataImpl(s1, s3).hashCode(), new ClusterDataImpl(s1, s3).hashCode()); + assertNotEquals(new ClusterDataImpl(s2, s4).hashCode(), new ClusterDataImpl(s1, s3).hashCode()); + assertNotEquals(new ClusterDataImpl(s1, s4).hashCode(), new ClusterDataImpl(s1, s3).hashCode()); } } diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/LocalPolicesTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/LocalPolicesTest.java index 41746cbc95958..02b9b9ad0ddd4 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/LocalPolicesTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/LocalPolicesTest.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import static org.apache.pulsar.common.policies.data.Policies.defaultBundle; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.defaultBundle; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotEquals; diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataTest.java index 8820d6dec878e..7df8d2268f287 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataTest.java @@ -31,8 +31,8 @@ public class NamespaceIsolationDataTest { @Test public void testNamespaceIsolationData() { - NamespaceIsolationData n0 = new NamespaceIsolationData(); - NamespaceIsolationData n1 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl n0 = new NamespaceIsolationDataImpl(); + NamespaceIsolationDataImpl n1 = new NamespaceIsolationDataImpl(); assertNotEquals(new OldPolicies(), n0); n0.namespaces = new ArrayList<>(); n0.primary = new ArrayList<>(); @@ -44,7 +44,7 @@ public void testNamespaceIsolationData() { n0.secondary.add(String.format("s%d", i)); } - assertNotEquals(new NamespaceIsolationData(), n0); + assertNotEquals(new NamespaceIsolationDataImpl(), n0); n1.namespaces = n0.namespaces; n1.primary = n0.primary; @@ -59,8 +59,8 @@ public void testNamespaceIsolationData() { // pass } - AutoFailoverPolicyData policy0 = new AutoFailoverPolicyData(); - AutoFailoverPolicyData policy1 = new AutoFailoverPolicyData(); + AutoFailoverPolicyDataImpl policy0 = new AutoFailoverPolicyDataImpl(); + AutoFailoverPolicyDataImpl policy1 = new AutoFailoverPolicyDataImpl(); policy0.policy_type = AutoFailoverPolicyType.min_available; policy0.parameters = new HashMap<>(); policy0.parameters.put("min_limit", "3"); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java index c4aacc1e7704c..86a3e39a68a00 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java @@ -19,7 +19,6 @@ package org.apache.pulsar.common.policies.data; import java.util.Properties; -import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; import org.testng.Assert; import org.testng.annotations.Test; @@ -52,7 +51,7 @@ public void testS3Configuration() { final Long offloadThresholdInBytes = 10L * M; final Long offloadDeletionLagInMillis = 5L * MIN; - OffloadPolicies offloadPolicies = OffloadPolicies.create( + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create( driver, region, bucket, @@ -96,7 +95,7 @@ public void testGcsConfiguration() { final Long offloadDeletionLagInMillis = 5 * MIN; final OffloadedReadPriority readPriority = OffloadedReadPriority.TIERED_STORAGE_FIRST; - OffloadPolicies offloadPolicies = OffloadPolicies.create( + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create( driver, region, bucket, @@ -178,7 +177,7 @@ public void testCreateByProperties() { properties.setProperty("fileSystemProfilePath", fileSystemProfilePath); properties.setProperty("fileSystemURI", fileSystemURI); - OffloadPolicies offloadPolicies = OffloadPolicies.create(properties); + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create(properties); Assert.assertEquals(offloadPolicies.getOffloadersDirectory(), offloadersDirectory); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDriver(), driver); @@ -222,7 +221,7 @@ public void compatibleWithConfigFileTest() { properties.setProperty("managedLedgerOffloadAutoTriggerSizeThresholdBytes", "" + offloadThresholdInBytes); properties.setProperty("managedLedgerOffloadDeletionLagMs", "" + offloadDeletionLagInMillis); - OffloadPolicies offloadPolicies = OffloadPolicies.create(properties); + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create(properties); Assert.assertEquals(offloadThresholdInBytes, offloadPolicies.getManagedLedgerOffloadThresholdInBytes()); Assert.assertEquals(offloadDeletionLagInMillis, offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis()); @@ -230,7 +229,7 @@ public void compatibleWithConfigFileTest() { properties.setProperty("managedLedgerOffloadThresholdInBytes", "" + (offloadThresholdInBytes + 10)); properties.setProperty("managedLedgerOffloadDeletionLagInMillis", "" + (offloadDeletionLagInMillis + 10)); - offloadPolicies = OffloadPolicies.create(properties); + offloadPolicies = OffloadPoliciesImpl.create(properties); Assert.assertEquals(Long.valueOf(offloadThresholdInBytes + 10), offloadPolicies.getManagedLedgerOffloadThresholdInBytes()); Assert.assertEquals(offloadDeletionLagInMillis + 10, @@ -242,7 +241,7 @@ public void compatibleWithConfigFileTest() { properties.setProperty("managedLedgerOffloadAutoTriggerSizeThresholdBytes", "" + offloadThresholdInBytes + 30); properties.setProperty("managedLedgerOffloadDeletionLagMs", "" + offloadDeletionLagInMillis + 30); - offloadPolicies = OffloadPolicies.create(properties); + offloadPolicies = OffloadPoliciesImpl.create(properties); Assert.assertEquals(Long.valueOf(offloadThresholdInBytes + 20), offloadPolicies.getManagedLedgerOffloadThresholdInBytes()); Assert.assertEquals(offloadDeletionLagInMillis + 20, @@ -254,19 +253,19 @@ public void oldPoliciesCompatibleTest() { Policies policies = new Policies(); Assert.assertEquals(policies.offload_threshold, -1); - OffloadPolicies offloadPolicies = OffloadPolicies.oldPoliciesCompatible(null, policies); + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.oldPoliciesCompatible(null, policies); Assert.assertNull(offloadPolicies); policies.offload_deletion_lag_ms = 1000L; policies.offload_threshold = 0; - offloadPolicies = OffloadPolicies.oldPoliciesCompatible(offloadPolicies, policies); + offloadPolicies = OffloadPoliciesImpl.oldPoliciesCompatible(offloadPolicies, policies); Assert.assertNotNull(offloadPolicies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis(), new Long(1000)); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadThresholdInBytes(), new Long(0)); policies.offload_deletion_lag_ms = 2000L; policies.offload_threshold = 100; - offloadPolicies = OffloadPolicies.oldPoliciesCompatible(offloadPolicies, policies); + offloadPolicies = OffloadPoliciesImpl.oldPoliciesCompatible(offloadPolicies, policies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis(), new Long(1000)); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadThresholdInBytes(), new Long(0)); } @@ -274,12 +273,12 @@ public void oldPoliciesCompatibleTest() { @Test public void mergeTest() { final String topicBucket = "topic-bucket"; - OffloadPolicies topicLevelPolicies = new OffloadPolicies(); + OffloadPoliciesImpl topicLevelPolicies = new OffloadPoliciesImpl(); topicLevelPolicies.setS3ManagedLedgerOffloadBucket(topicBucket); final String nsBucket = "ns-bucket"; final Long nsDeletionLag = 2000L; - OffloadPolicies nsLevelPolicies = new OffloadPolicies(); + OffloadPoliciesImpl nsLevelPolicies = new OffloadPoliciesImpl(); nsLevelPolicies.setManagedLedgerOffloadDeletionLagInMillis(nsDeletionLag); nsLevelPolicies.setS3ManagedLedgerOffloadBucket(nsBucket); @@ -293,8 +292,8 @@ public void mergeTest() { brokerProperties.setProperty("managedLedgerOffloadDeletionLagMs", "" + brokerDeletionLag); brokerProperties.setProperty("managedLedgerOffloadMaxThreads", "" + brokerOffloadMaxThreads); - OffloadPolicies offloadPolicies = - OffloadPolicies.mergeConfiguration(topicLevelPolicies, nsLevelPolicies, brokerProperties); + OffloadPoliciesImpl offloadPolicies = + OffloadPoliciesImpl.mergeConfiguration(topicLevelPolicies, nsLevelPolicies, brokerProperties); Assert.assertNotNull(offloadPolicies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDriver(), brokerDriver); Assert.assertEquals(offloadPolicies.getS3ManagedLedgerOffloadBucket(), topicBucket); @@ -302,7 +301,7 @@ public void mergeTest() { Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadThresholdInBytes(), brokerOffloadThreshold); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadMaxThreads(), brokerOffloadMaxThreads); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadPrefetchRounds(), - new Integer(OffloadPolicies.DEFAULT_OFFLOAD_MAX_PREFETCH_ROUNDS)); + new Integer(OffloadPoliciesImpl.DEFAULT_OFFLOAD_MAX_PREFETCH_ROUNDS)); Assert.assertNull(offloadPolicies.getS3ManagedLedgerOffloadRegion()); } diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/PoliciesDataTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/PoliciesDataTest.java index ee6b5e7143148..d42a71e9edec0 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/PoliciesDataTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/PoliciesDataTest.java @@ -60,14 +60,14 @@ public void policies() { @Test public void propertyAdmin() { - TenantInfo pa1 = new TenantInfo(); + TenantInfoImpl pa1 = new TenantInfoImpl(); pa1.setAdminRoles(Sets.newHashSet("role1", "role2")); pa1.setAllowedClusters(Sets.newHashSet("use", "usw")); - assertEquals(pa1, new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usw"))); + assertEquals(pa1, new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usw"))); assertNotEquals(new Object(), pa1); - assertNotEquals(new TenantInfo(), pa1); - assertNotEquals(new TenantInfo(Sets.newHashSet("role1", "role3"), Sets.newHashSet("usc")), pa1); + assertNotEquals(new TenantInfoImpl(), pa1); + assertNotEquals(new TenantInfoImpl(Sets.newHashSet("role1", "role3"), Sets.newHashSet("usc")), pa1); assertEquals(pa1.getAdminRoles(), Lists.newArrayList("role1", "role2")); } diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactoryTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactoryTest.java index 5f5297b7af9f6..b08dbc3d01177 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactoryTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactoryTest.java @@ -20,9 +20,8 @@ import java.util.HashMap; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; -import org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactory; import org.testng.Assert; import org.testng.annotations.Test; @@ -31,13 +30,13 @@ public class AutoFailoverPolicyFactoryTest { @Test public void testAutoFailoverPolicyFactory() { try { - AutoFailoverPolicyFactory.create(new AutoFailoverPolicyData()); + AutoFailoverPolicyFactory.create(new AutoFailoverPolicyDataImpl()); Assert.fail(""); } catch (IllegalArgumentException e) { // Pass } try { - AutoFailoverPolicyData afopd = new AutoFailoverPolicyData(); + AutoFailoverPolicyDataImpl afopd = new AutoFailoverPolicyDataImpl(); afopd.policy_type = AutoFailoverPolicyType.min_available; afopd.parameters = new HashMap<>(); afopd.parameters.put("min_limit", "3"); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPoliciesTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPoliciesTest.java index 6d2864d1a7151..d9f08796f5edb 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPoliciesTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPoliciesTest.java @@ -37,10 +37,10 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.policies.NamespaceIsolationPolicy; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerStatus; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.testng.annotations.Test; @@ -67,14 +67,14 @@ public void testJsonSerialization() throws Exception { byte[] outJson = jsonMapperForWriter.writeValueAsBytes(policies.getPolicies()); assertEquals(new String(outJson), this.defaultJson); - NamespaceIsolationData nsPolicyData = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData = new NamespaceIsolationDataImpl(); nsPolicyData.namespaces = new ArrayList<>(); nsPolicyData.namespaces.add("other/use/other.*"); nsPolicyData.primary = new ArrayList<>(); nsPolicyData.primary.add("prod1-broker[4-6].messaging.use.example.com"); nsPolicyData.secondary = new ArrayList<>(); nsPolicyData.secondary.add("prod1-broker.*.messaging.use.example.com"); - nsPolicyData.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData.auto_failover_policy.parameters = new HashMap<>(); nsPolicyData.auto_failover_policy.parameters.put("min_limit", "1"); @@ -82,8 +82,8 @@ public void testJsonSerialization() throws Exception { policies.setPolicy("otherPolicy", nsPolicyData); byte[] morePolicyJson = jsonMapperForWriter.writeValueAsBytes(policies.getPolicies()); ObjectMapper jsonParser = ObjectMapperFactory.create(); - Map policiesMap = jsonParser.readValue(morePolicyJson, - new TypeReference>() { + Map policiesMap = jsonParser.readValue(morePolicyJson, + new TypeReference>() { }); assertEquals(policiesMap.size(), 2); } @@ -134,8 +134,8 @@ public void testSetPolicy() throws Exception { String newPolicyJson = "{\"namespaces\":[\"pulsar/use/TESTNS.*\"],\"primary\":[\"prod1-broker[45].messaging.use.example.com\"],\"secondary\":[\"prod1-broker.*.use.example.com\"],\"auto_failover_policy\":{\"policy_type\":\"min_available\",\"parameters\":{\"min_limit\":2,\"usage_threshold\":80}}}"; String newPolicyName = "policy2"; ObjectMapper jsonMapper = ObjectMapperFactory.create(); - NamespaceIsolationData nsPolicyData = jsonMapper.readValue(newPolicyJson.getBytes(), - NamespaceIsolationData.class); + NamespaceIsolationDataImpl nsPolicyData = jsonMapper.readValue(newPolicyJson.getBytes(), + NamespaceIsolationDataImpl.class); policies.setPolicy(newPolicyName, nsPolicyData); assertEquals(policies.getPolicies().size(), 2); @@ -149,7 +149,7 @@ public void testSetPolicy() throws Exception { private NamespaceIsolationPolicies getDefaultTestPolicies() throws Exception { ObjectMapper jsonMapper = ObjectMapperFactory.create(); return new NamespaceIsolationPolicies(jsonMapper - .readValue(this.defaultJson.getBytes(), new TypeReference>() { + .readValue(this.defaultJson.getBytes(), new TypeReference>() { })); } diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImplTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImplTest.java index b27eaa5ff75d4..5177b26d97678 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImplTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImplTest.java @@ -34,10 +34,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.pulsar.common.naming.NamespaceName; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerStatus; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.OldPolicies; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.testng.annotations.Test; @@ -48,20 +48,20 @@ public class NamespaceIsolationPolicyImplTest { private NamespaceIsolationPolicyImpl getDefaultPolicy() throws Exception { ObjectMapper jsonMapper = ObjectMapperFactory.create(); return new NamespaceIsolationPolicyImpl( - jsonMapper.readValue(this.defaultPolicyJson.getBytes(), NamespaceIsolationData.class)); + jsonMapper.readValue(this.defaultPolicyJson.getBytes(), NamespaceIsolationDataImpl.class)); } @Test public void testConstructor() throws Exception { NamespaceIsolationPolicyImpl defaultPolicy = this.getDefaultPolicy(); - NamespaceIsolationData policyData = new NamespaceIsolationData(); + NamespaceIsolationDataImpl policyData = new NamespaceIsolationDataImpl(); policyData.namespaces = new ArrayList<>(); policyData.namespaces.add("pulsar/use/test.*"); policyData.primary = new ArrayList<>(); policyData.primary.add("prod1-broker[1-3].messaging.use.example.com"); policyData.secondary = new ArrayList<>(); policyData.secondary.add("prod1-broker.*.use.example.com"); - policyData.auto_failover_policy = new AutoFailoverPolicyData(); + policyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); policyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; policyData.auto_failover_policy.parameters = new HashMap<>(); policyData.auto_failover_policy.parameters.put("min_limit", "3"); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/util/ObjectMapperFactoryTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/util/ObjectMapperFactoryTest.java new file mode 100644 index 0000000000000..e42e6987c942c --- /dev/null +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/util/ObjectMapperFactoryTest.java @@ -0,0 +1,77 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.util; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.pulsar.common.policies.data.BacklogQuota; +import org.apache.pulsar.common.policies.data.ResourceQuota; +import org.apache.pulsar.common.stats.Metrics; +import org.testng.Assert; +import org.testng.annotations.Test; + +public class ObjectMapperFactoryTest { + @Test + public void testBacklogQuotaMixIn() { + ObjectMapper objectMapper = ObjectMapperFactory.getThreadLocal(); + String json = "{\"limit\":10,\"limitTime\":0,\"policy\":\"producer_request_hold\"}"; + try { + BacklogQuota backlogQuota = objectMapper.readValue(json, BacklogQuota.class); + Assert.assertEquals(backlogQuota.getLimitSize(), 10); + Assert.assertEquals(backlogQuota.getLimitTime(), 0); + Assert.assertEquals(backlogQuota.getPolicy(), BacklogQuota.RetentionPolicy.producer_request_hold); + } catch (Exception ex) { + Assert.fail("shouldn't have thrown exception", ex); + } + + try { + String expectJson = "{\"limitSize\":10,\"limitTime\":0,\"policy\":\"producer_request_hold\"}"; + BacklogQuota backlogQuota = new BacklogQuota(10, 0, + BacklogQuota.RetentionPolicy.producer_request_hold); + String writeJson = objectMapper.writeValueAsString(backlogQuota); + Assert.assertEquals(expectJson, writeJson); + } catch (Exception ex) { + Assert.fail("shouldn't have thrown exception", ex); + } + } + + @Test + public void testResourceQuotaMixIn() { + ObjectMapper objectMapper = ObjectMapperFactory.getThreadLocal(); + try { + ResourceQuota resourceQuota = new ResourceQuota(); + String json = objectMapper.writeValueAsString(resourceQuota); + Assert.assertFalse(json.contains("valid")); + } catch (Exception ex) { + Assert.fail("shouldn't have thrown exception", ex); + } + } + + @Test + public void testMetricsMixIn() { + ObjectMapper objectMapper = ObjectMapperFactory.getThreadLocal(); + try { + Metrics metrics = new Metrics(); + String json = objectMapper.writeValueAsString(metrics); + Assert.assertTrue(json.contains("dimensions")); + } catch (Exception ex) { + Assert.fail("shouldn't have thrown exception", ex); + } + } + +} diff --git a/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/BrokerDiscoveryProvider.java b/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/BrokerDiscoveryProvider.java index 4317763aef705..be8abf2e54364 100644 --- a/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/BrokerDiscoveryProvider.java +++ b/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/BrokerDiscoveryProvider.java @@ -36,7 +36,7 @@ import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.discovery.service.server.ServiceConfig; import org.apache.pulsar.metadata.api.MetadataStoreException.NotFoundException; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; @@ -138,7 +138,7 @@ protected static void checkAuthorization(DiscoveryService service, TopicName top if (!service.getAuthorizationService().canLookup(topicName, role, authenticationData)) { LOG.warn("[{}] Role {} is not allowed to lookup topic", topicName, role); // check namespace authorization - TenantInfo tenantInfo; + TenantInfoImpl tenantInfo; try { tenantInfo = service.getPulsarResources().getTenantResources() .get(path(POLICIES, topicName.getTenant())) diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java index 222ebb7996273..5b896f936f846 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java @@ -51,7 +51,9 @@ import org.apache.pulsar.common.functions.AuthenticationConfig; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.policies.data.ErrorData; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.Reflections; import org.apache.pulsar.functions.auth.FunctionAuthProvider; @@ -532,8 +534,8 @@ private void stopFunction(String fullyQualifiedInstanceId, boolean restart) thro * @param instanceId the function instance id * @return jsonObject containing stats for instance */ - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunctionInstanceStats(String tenant, String namespace, - String functionName, int instanceId, URI uri) { + public FunctionInstanceStatsDataImpl getFunctionInstanceStats(String tenant, String namespace, + String functionName, int instanceId, URI uri) { Assignment assignment; if (runtimeFactory.externallyManaged()) { assignment = this.findAssignment(tenant, namespace, functionName, -1); @@ -542,7 +544,7 @@ public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunction } if (assignment == null) { - return new FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData(); + return new FunctionInstanceStatsDataImpl(); } final String assignedWorkerId = assignment.getWorkerId(); @@ -554,9 +556,12 @@ public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunction FunctionCommon.getFullyQualifiedInstanceId(assignment.getInstance())); RuntimeSpawner runtimeSpawner = functionRuntimeInfo.getRuntimeSpawner(); if (runtimeSpawner != null) { - return WorkerUtils.getFunctionInstanceStats(FunctionCommon.getFullyQualifiedInstanceId(assignment.getInstance()), functionRuntimeInfo, instanceId).getMetrics(); + return (FunctionInstanceStatsDataImpl) + WorkerUtils.getFunctionInstanceStats( + FunctionCommon.getFullyQualifiedInstanceId( + assignment.getInstance()), functionRuntimeInfo, instanceId).getMetrics(); } - return new FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData(); + return new FunctionInstanceStatsDataImpl(); } else { // query other worker @@ -568,7 +573,7 @@ public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunction } } if (workerInfo == null) { - return new FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData(); + return new FunctionInstanceStatsDataImpl(); } if (uri == null) { @@ -588,10 +593,10 @@ public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunction * @return a list of function statuses * @throws PulsarAdminException */ - public FunctionStats getFunctionStats(String tenant, String namespace, String functionName, URI uri) throws PulsarAdminException { + public FunctionStatsImpl getFunctionStats(String tenant, String namespace, String functionName, URI uri) throws PulsarAdminException { Collection assignments = this.findFunctionAssignments(tenant, namespace, functionName); - FunctionStats functionStats = new FunctionStats(); + FunctionStatsImpl functionStats = new FunctionStatsImpl(); if (assignments.isEmpty()) { return functionStats; } @@ -603,10 +608,10 @@ public FunctionStats getFunctionStats(String tenant, String namespace, String fu int parallelism = assignment.getInstance().getFunctionMetaData().getFunctionDetails().getParallelism(); for (int i = 0; i < parallelism; ++i) { - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStatsData = getFunctionInstanceStats(tenant, namespace, + FunctionInstanceStatsDataImpl functionInstanceStatsData = getFunctionInstanceStats(tenant, namespace, functionName, i, null); - FunctionStats.FunctionInstanceStats functionInstanceStats = new FunctionStats.FunctionInstanceStats(); + FunctionInstanceStatsImpl functionInstanceStats = new FunctionInstanceStatsImpl(); functionInstanceStats.setInstanceId(i); functionInstanceStats.setMetrics(functionInstanceStatsData); functionStats.addInstance(functionInstanceStats); @@ -636,19 +641,20 @@ public FunctionStats getFunctionStats(String tenant, String namespace, String fu for (Assignment assignment : assignments) { boolean isOwner = this.workerConfig.getWorkerId().equals(assignment.getWorkerId()); - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStatsData; + FunctionInstanceStatsDataImpl functionInstanceStatsData; if (isOwner) { functionInstanceStatsData = getFunctionInstanceStats(tenant, namespace, functionName, assignment.getInstance().getInstanceId(), null); } else { - functionInstanceStatsData = this.functionAdmin.functions().getFunctionStats( + functionInstanceStatsData = + (FunctionInstanceStatsDataImpl) this.functionAdmin.functions().getFunctionStats( assignment.getInstance().getFunctionMetaData().getFunctionDetails().getTenant(), assignment.getInstance().getFunctionMetaData().getFunctionDetails().getNamespace(), assignment.getInstance().getFunctionMetaData().getFunctionDetails().getName(), assignment.getInstance().getInstanceId()); } - FunctionStats.FunctionInstanceStats functionInstanceStats = new FunctionStats.FunctionInstanceStats(); + FunctionInstanceStatsImpl functionInstanceStats = new FunctionInstanceStatsImpl(); functionInstanceStats.setInstanceId(assignment.getInstance().getInstanceId()); functionInstanceStats.setMetrics(functionInstanceStatsData); functionStats.addInstance(functionInstanceStats); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java index 07fb0def67b6e..a4313b6522219 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java @@ -19,7 +19,7 @@ package org.apache.pulsar.functions.worker; import static org.apache.pulsar.broker.cache.ConfigurationCacheService.POLICIES; -import static org.apache.pulsar.common.policies.data.Policies.getBundles; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.getBundles; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -55,10 +55,10 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.common.conf.InternalConfigurationData; import org.apache.pulsar.common.naming.NamedEntity; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.RetentionPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.path.PolicyPath; import org.apache.pulsar.common.util.SimpleTextOutputStream; import org.apache.pulsar.functions.worker.rest.api.FunctionsImpl; @@ -303,7 +303,7 @@ public void initInBroker(ServiceConfiguration brokerConfig, try { NamedEntity.checkName(property); pulsarResources.getTenantResources().create(PolicyPath.path(POLICIES, property), - new TenantInfo(Sets.newHashSet(workerConfig.getSuperUserRoles()), Sets.newHashSet(cluster))); + new TenantInfoImpl(Sets.newHashSet(workerConfig.getSuperUserRoles()), Sets.newHashSet(cluster))); LOG.info("Created property {} for function worker", property); } catch (AlreadyExistsException e) { LOG.debug("Failed to create already existing property {} for function worker service", cluster, e); @@ -318,7 +318,7 @@ public void initInBroker(ServiceConfiguration brokerConfig, // create cluster for function worker service try { NamedEntity.checkName(cluster); - ClusterData clusterData = new ClusterData( + ClusterDataImpl clusterData = new ClusterDataImpl( workerConfig.getPulsarWebServiceUrl(), null /* serviceUrlTls */, workerConfig.getPulsarServiceUrl(), diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerUtils.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerUtils.java index 3a2a34418e106..d7c6a71f8c36f 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerUtils.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerUtils.java @@ -41,7 +41,8 @@ import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.client.api.ReaderBuilder; import org.apache.pulsar.common.conf.InternalConfigurationData; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.functions.proto.InstanceCommunication; import org.apache.pulsar.functions.runtime.Runtime; import org.apache.pulsar.functions.runtime.RuntimeSpawner; @@ -261,12 +262,12 @@ && isNotBlank(authParams)) { } } - public static FunctionStats.FunctionInstanceStats getFunctionInstanceStats(String fullyQualifiedInstanceName, - FunctionRuntimeInfo functionRuntimeInfo, - int instanceId) { + public static FunctionInstanceStatsImpl getFunctionInstanceStats(String fullyQualifiedInstanceName, + FunctionRuntimeInfo functionRuntimeInfo, + int instanceId) { RuntimeSpawner functionRuntimeSpawner = functionRuntimeInfo.getRuntimeSpawner(); - FunctionStats.FunctionInstanceStats functionInstanceStats = new FunctionStats.FunctionInstanceStats(); + FunctionInstanceStatsImpl functionInstanceStats = new FunctionInstanceStatsImpl(); if (functionRuntimeSpawner != null) { Runtime functionRuntime = functionRuntimeSpawner.getRuntime(); if (functionRuntime != null) { @@ -275,8 +276,7 @@ public static FunctionStats.FunctionInstanceStats getFunctionInstanceStats(Strin InstanceCommunication.MetricsData metricsData = functionRuntime.getMetrics(instanceId).get(); functionInstanceStats.setInstanceId(instanceId); - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStatsData - = new FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData(); + FunctionInstanceStatsDataImpl functionInstanceStatsData = new FunctionInstanceStatsDataImpl(); functionInstanceStatsData.setReceivedTotal(metricsData.getReceivedTotal()); functionInstanceStatsData.setProcessedSuccessfullyTotal(metricsData.getProcessedSuccessfullyTotal()); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java index 1c442a49a40f4..907c975a4e5b4 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java @@ -60,8 +60,9 @@ import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.FunctionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.Codec; import org.apache.pulsar.common.util.RestException; import org.apache.pulsar.functions.instance.InstanceUtils; @@ -87,11 +88,9 @@ import org.glassfish.jersey.media.multipart.FormDataContentDisposition; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URI; -import java.net.URISyntaxException; import java.net.URL; import java.util.Base64; import java.util.Collection; @@ -724,12 +723,12 @@ public void restartFunctionInstances(final String tenant, } } - public FunctionStats getFunctionStats(final String tenant, - final String namespace, - final String componentName, - final URI uri, - final String clientRole, - final AuthenticationDataSource clientAuthenticationDataHttps) { + public FunctionStatsImpl getFunctionStats(final String tenant, + final String namespace, + final String componentName, + final URI uri, + final String clientRole, + final AuthenticationDataSource clientAuthenticationDataHttps) { if (!isWorkerServiceAvailable()) { throwUnavailableException(); } @@ -766,7 +765,7 @@ public FunctionStats getFunctionStats(final String tenant, } FunctionRuntimeManager functionRuntimeManager = worker().getFunctionRuntimeManager(); - FunctionStats functionStats; + FunctionStatsImpl functionStats; try { functionStats = functionRuntimeManager.getFunctionStats(tenant, namespace, componentName, uri); } catch (WebApplicationException we) { @@ -780,13 +779,13 @@ public FunctionStats getFunctionStats(final String tenant, } @Override - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunctionsInstanceStats(final String tenant, - final String namespace, - final String componentName, - final String instanceId, - final URI uri, - final String clientRole, - final AuthenticationDataSource clientAuthenticationDataHttps) { + public FunctionInstanceStatsDataImpl getFunctionsInstanceStats(final String tenant, + final String namespace, + final String componentName, + final String instanceId, + final URI uri, + final String clientRole, + final AuthenticationDataSource clientAuthenticationDataHttps) { if (!isWorkerServiceAvailable()) { throwUnavailableException(); } @@ -829,7 +828,7 @@ public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunction } FunctionRuntimeManager functionRuntimeManager = worker().getFunctionRuntimeManager(); - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStatsData; + FunctionInstanceStatsDataImpl functionInstanceStatsData; try { functionInstanceStatsData = functionRuntimeManager.getFunctionInstanceStats(tenant, namespace, componentName, Integer.parseInt(instanceId), uri); @@ -1448,7 +1447,7 @@ public boolean isAuthorizedRole(String tenant, String namespace, String clientRo if (clientRole != null) { try { - TenantInfo tenantInfo = worker().getBrokerAdmin().tenants().getTenantInfo(tenant); + TenantInfoImpl tenantInfo = (TenantInfoImpl) worker().getBrokerAdmin().tenants().getTenantInfo(tenant); if (tenantInfo != null && worker().getAuthorizationService().isTenantAdmin(tenant, clientRole, tenantInfo, authenticationData).get()) { return true; } diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java index 823605213ac46..c65695422079d 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java @@ -47,7 +47,7 @@ import org.apache.pulsar.broker.authentication.AuthenticationDataSource; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.Utils; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.policies.data.ExceptionInformation; @@ -255,7 +255,7 @@ public void updateFunction(final String tenant, final FunctionConfig functionConfig, final String clientRole, AuthenticationDataHttps clientAuthenticationDataHttps, - UpdateOptions updateOptions) { + UpdateOptionsImpl updateOptions) { if (!isWorkerServiceAvailable()) { throwUnavailableException(); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SinksImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SinksImpl.java index 92d52f0f8cfc2..d0d2ed3ad6c15 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SinksImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SinksImpl.java @@ -43,7 +43,7 @@ import org.apache.pulsar.broker.authentication.AuthenticationDataHttps; import org.apache.pulsar.broker.authentication.AuthenticationDataSource; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.Utils; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; @@ -252,7 +252,7 @@ public void updateSink(final String tenant, final SinkConfig sinkConfig, final String clientRole, AuthenticationDataHttps clientAuthenticationDataHttps, - UpdateOptions updateOptions) { + UpdateOptionsImpl updateOptions) { if (!isWorkerServiceAvailable()) { throwUnavailableException(); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SourcesImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SourcesImpl.java index 147f2f793f590..47c379e8c9088 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SourcesImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SourcesImpl.java @@ -43,7 +43,7 @@ import org.apache.pulsar.broker.authentication.AuthenticationDataHttps; import org.apache.pulsar.broker.authentication.AuthenticationDataSource; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.Utils; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; @@ -252,7 +252,7 @@ public void updateSource(final String tenant, final SourceConfig sourceConfig, final String clientRole, AuthenticationDataHttps clientAuthenticationDataHttps, - UpdateOptions updateOptions) { + UpdateOptionsImpl updateOptions) { if (!isWorkerServiceAvailable()) { throwUnavailableException(); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/WorkerImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/WorkerImpl.java index 7d24d8cc79028..0d0a9f83621a5 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/WorkerImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/WorkerImpl.java @@ -21,7 +21,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.io.ConnectorDefinition; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; import org.apache.pulsar.common.policies.data.WorkerFunctionInstanceStats; import org.apache.pulsar.common.util.RestException; import org.apache.pulsar.functions.proto.Function; @@ -176,7 +176,7 @@ public List getFunctionsMetrics(String clientRole) Function.FunctionDetails functionDetails = functionRuntimeInfo.getFunctionInstance().getFunctionMetaData().getFunctionDetails(); int parallelism = functionDetails.getParallelism(); for (int i = 0; i < parallelism; ++i) { - FunctionStats.FunctionInstanceStats functionInstanceStats = + FunctionInstanceStatsImpl functionInstanceStats = WorkerUtils.getFunctionInstanceStats(fullyQualifiedInstanceName, functionRuntimeInfo, i); WorkerFunctionInstanceStats workerFunctionInstanceStats = new WorkerFunctionInstanceStats(); workerFunctionInstanceStats.setName(FunctionCommon.getFullyQualifiedInstanceId( @@ -186,7 +186,7 @@ public List getFunctionsMetrics(String clientRole) metricsList.add(workerFunctionInstanceStats); } } else { - FunctionStats.FunctionInstanceStats functionInstanceStats = + FunctionInstanceStatsImpl functionInstanceStats = WorkerUtils.getFunctionInstanceStats(fullyQualifiedInstanceName, functionRuntimeInfo, functionRuntimeInfo.getFunctionInstance().getInstanceId()); WorkerFunctionInstanceStats workerFunctionInstanceStats = new WorkerFunctionInstanceStats(); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java index 6d037c9855d00..5044eb6a893a4 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java @@ -25,9 +25,10 @@ import lombok.extern.slf4j.Slf4j; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.functions.worker.WorkerService; import org.apache.pulsar.functions.worker.rest.FunctionApiResource; @@ -86,7 +87,7 @@ public void updateFunction(final @PathParam("tenant") String tenant, final @FormDataParam("data") FormDataContentDisposition fileDetail, final @FormDataParam("url") String functionPkgUrl, final @FormDataParam("functionConfig") FunctionConfig functionConfig, - final @FormDataParam("updateOptions") UpdateOptions updateOptions) { + final @FormDataParam("updateOptions") UpdateOptionsImpl updateOptions) { functions().updateFunction(tenant, namespace, functionName, uploadedInputStream, fileDetail, functionPkgUrl, functionConfig, clientAppId(), clientAuthData(), updateOptions); @@ -163,7 +164,7 @@ public FunctionStatus getFunctionStatus( @GET @ApiOperation( value = "Displays the stats of a Pulsar Function", - response = FunctionStats.class + response = FunctionStatsImpl.class ) @ApiResponses(value = { @ApiResponse(code = 307, message = "Current broker doesn't serve the namespace of this function"), @@ -173,16 +174,16 @@ public FunctionStatus getFunctionStatus( }) @Produces(MediaType.APPLICATION_JSON) @Path("/{tenant}/{namespace}/{functionName}/stats") - public FunctionStats getFunctionStats(final @PathParam("tenant") String tenant, - final @PathParam("namespace") String namespace, - final @PathParam("functionName") String functionName) throws IOException { + public FunctionStatsImpl getFunctionStats(final @PathParam("tenant") String tenant, + final @PathParam("namespace") String namespace, + final @PathParam("functionName") String functionName) throws IOException { return functions().getFunctionStats(tenant, namespace, functionName, uri.getRequestUri(), clientAppId(), clientAuthData()); } @GET @ApiOperation( value = "Displays the stats of a Pulsar Function instance", - response = FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class + response = FunctionInstanceStatsDataImpl.class ) @ApiResponses(value = { @ApiResponse(code = 307, message = "Current broker doesn't serve the namespace of this function"), @@ -192,7 +193,7 @@ public FunctionStats getFunctionStats(final @PathParam("tenant") String tenant, }) @Produces(MediaType.APPLICATION_JSON) @Path("/{tenant}/{namespace}/{functionName}/{instanceId}/stats") - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunctionInstanceStats( + public FunctionInstanceStatsDataImpl getFunctionInstanceStats( final @PathParam("tenant") String tenant, final @PathParam("namespace") String namespace, final @PathParam("functionName") String functionName, diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SinksApiV3Resource.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SinksApiV3Resource.java index 1b3811e1379b1..4bff94476c51d 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SinksApiV3Resource.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SinksApiV3Resource.java @@ -24,7 +24,7 @@ import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import lombok.extern.slf4j.Slf4j; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; @@ -84,7 +84,7 @@ public void updateSink(final @PathParam("tenant") String tenant, final @FormDataParam("data") FormDataContentDisposition fileDetail, final @FormDataParam("url") String functionPkgUrl, final @FormDataParam("sinkConfig") SinkConfig sinkConfig, - final @FormDataParam("updateOptions") UpdateOptions updateOptions) { + final @FormDataParam("updateOptions") UpdateOptionsImpl updateOptions) { sinks().updateSink(tenant, namespace, sinkName, uploadedInputStream, fileDetail, functionPkgUrl, sinkConfig, clientAppId(), clientAuthData(), updateOptions); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SourcesApiV3Resource.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SourcesApiV3Resource.java index 29fed9a4af3c9..16901ee770513 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SourcesApiV3Resource.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SourcesApiV3Resource.java @@ -24,7 +24,7 @@ import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import lombok.extern.slf4j.Slf4j; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SourceConfig; @@ -85,7 +85,7 @@ public void updateSource(final @PathParam("tenant") String tenant, final @FormDataParam("data") FormDataContentDisposition fileDetail, final @FormDataParam("url") String functionPkgUrl, final @FormDataParam("sourceConfig") SourceConfig sourceConfig, - final @FormDataParam("updateOptions") UpdateOptions updateOptions) { + final @FormDataParam("updateOptions") UpdateOptionsImpl updateOptions) { sources().updateSource(tenant, namespace, sourceName, uploadedInputStream, fileDetail, functionPkgUrl, sourceConfig, clientAppId(), clientAuthData(), updateOptions); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java index 94d2a49734339..5f0c1a9670396 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java @@ -27,8 +27,8 @@ import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.io.ConnectorDefinition; -import org.apache.pulsar.common.policies.data.FunctionStats; -import org.apache.pulsar.common.policies.data.FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.functions.worker.WorkerService; /** @@ -93,20 +93,20 @@ void restartFunctionInstances(final String tenant, final String clientRole, final AuthenticationDataSource clientAuthenticationDataHttps); - FunctionStats getFunctionStats(final String tenant, - final String namespace, - final String componentName, - final URI uri, - final String clientRole, - final AuthenticationDataSource clientAuthenticationDataHttps); - - FunctionInstanceStatsData getFunctionsInstanceStats(final String tenant, - final String namespace, - final String componentName, - final String instanceId, - final URI uri, - final String clientRole, - final AuthenticationDataSource clientAuthenticationDataHttps); + FunctionStatsImpl getFunctionStats(final String tenant, + final String namespace, + final String componentName, + final URI uri, + final String clientRole, + final AuthenticationDataSource clientAuthenticationDataHttps); + + FunctionInstanceStatsDataImpl getFunctionsInstanceStats(final String tenant, + final String namespace, + final String componentName, + final String instanceId, + final URI uri, + final String clientRole, + final AuthenticationDataSource clientAuthenticationDataHttps); String triggerFunction(final String tenant, final String namespace, diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Functions.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Functions.java index aa874ab205f1d..7a155d51fe2f3 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Functions.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Functions.java @@ -23,7 +23,7 @@ import org.apache.pulsar.broker.authentication.AuthenticationDataHttps; import org.apache.pulsar.broker.authentication.AuthenticationDataSource; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.policies.data.FunctionStatus.FunctionInstanceStatus.FunctionInstanceStatusData; import org.apache.pulsar.functions.worker.WorkerService; @@ -53,7 +53,7 @@ void updateFunction(final String tenant, final FunctionConfig functionConfig, final String clientRole, AuthenticationDataHttps clientAuthenticationDataHttps, - UpdateOptions updateOptions); + UpdateOptionsImpl updateOptions); void updateFunctionOnWorkerLeader(final String tenant, final String namespace, diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sinks.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sinks.java index ae501299406ce..fc6bdf7bf6d32 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sinks.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sinks.java @@ -23,7 +23,7 @@ import java.util.List; import org.apache.pulsar.broker.authentication.AuthenticationDataHttps; import org.apache.pulsar.broker.authentication.AuthenticationDataSource; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; @@ -56,7 +56,7 @@ void updateSink(final String tenant, final SinkConfig sinkConfig, final String clientRole, AuthenticationDataHttps clientAuthenticationDataHttps, - UpdateOptions updateOptions); + UpdateOptionsImpl updateOptions); SinkInstanceStatusData getSinkInstanceStatus(final String tenant, final String namespace, diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sources.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sources.java index d66f2540e99e9..cc372490f4bb2 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sources.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sources.java @@ -23,7 +23,7 @@ import java.util.List; import org.apache.pulsar.broker.authentication.AuthenticationDataHttps; import org.apache.pulsar.broker.authentication.AuthenticationDataSource; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SourceConfig; @@ -56,7 +56,7 @@ void updateSource(final String tenant, final SourceConfig sourceConfig, final String clientRole, AuthenticationDataHttps clientAuthenticationDataHttps, - UpdateOptions updateOptions); + UpdateOptionsImpl updateOptions); SourceStatus getSourceStatus(final String tenant, diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java index 76586b7a7ab5d..3ea7fd3f8ffd6 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java @@ -19,7 +19,6 @@ package org.apache.pulsar.functions.worker.rest.api; import org.apache.distributedlog.api.namespace.Namespace; -import org.apache.pulsar.broker.authentication.AuthenticationDataHttp; import org.apache.pulsar.broker.authentication.AuthenticationDataSource; import org.apache.pulsar.broker.authorization.AuthorizationService; import org.apache.pulsar.client.admin.Namespaces; @@ -27,8 +26,9 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.admin.Tenants; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.FunctionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.functions.api.Context; import org.apache.pulsar.functions.instance.InstanceConfig; import org.apache.pulsar.functions.instance.InstanceUtils; @@ -56,7 +56,6 @@ import org.testng.annotations.ObjectFactory; import org.testng.annotations.Test; -import javax.servlet.http.HttpServletRequest; import java.io.InputStream; import java.util.Collections; import java.util.HashMap; @@ -115,7 +114,7 @@ public String process(String input, Context context) { private PulsarAdmin mockedPulsarAdmin; private Tenants mockedTenants; private Namespaces mockedNamespaces; - private TenantInfo mockedTenantInfo; + private TenantInfoImpl mockedTenantInfo; private List namespaceList = new LinkedList<>(); private FunctionMetaDataManager mockedManager; private FunctionRuntimeManager mockedFunctionRunTimeManager; @@ -131,7 +130,7 @@ public String process(String input, Context context) { public void setup() throws Exception { this.mockedManager = mock(FunctionMetaDataManager.class); this.mockedFunctionRunTimeManager = mock(FunctionRuntimeManager.class); - this.mockedTenantInfo = mock(TenantInfo.class); + this.mockedTenantInfo = mock(TenantInfoImpl.class); this.mockedRuntimeFactory = mock(RuntimeFactory.class); this.mockedInputStream = mock(InputStream.class); this.mockedNamespace = mock(Namespace.class); @@ -233,12 +232,12 @@ public void testMetricsEmpty() { FunctionRuntimeInfo functionRuntimeInfo = mock(FunctionRuntimeInfo.class); doReturn(runtimeSpawner).when(functionRuntimeInfo).getRuntimeSpawner(); - FunctionStats.FunctionInstanceStats instanceStats1 = WorkerUtils + FunctionInstanceStatsImpl instanceStats1 = WorkerUtils .getFunctionInstanceStats("public/default/test", functionRuntimeInfo, 0); - FunctionStats.FunctionInstanceStats instanceStats2 = WorkerUtils + FunctionInstanceStatsImpl instanceStats2 = WorkerUtils .getFunctionInstanceStats("public/default/test", functionRuntimeInfo, 1); - FunctionStats functionStats = new FunctionStats(); + FunctionStatsImpl functionStats = new FunctionStatsImpl(); functionStats.addInstance(instanceStats1); functionStats.addInstance(instanceStats2); @@ -248,7 +247,7 @@ public void testMetricsEmpty() { @Test public void testIsAuthorizedRole() throws PulsarAdminException, InterruptedException, ExecutionException { - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); AuthenticationDataSource authenticationDataSource = mock(AuthenticationDataSource.class); FunctionsImpl functionImpl = spy(new FunctionsImpl(() -> mockedWorkerService)); AuthorizationService authorizationService = mock(AuthorizationService.class); @@ -311,7 +310,7 @@ public void testIsAuthorizedRole() throws PulsarAdminException, InterruptedExcep functionImpl = spy(new FunctionsImpl(() -> mockedWorkerService)); doReturn(true).when(functionImpl).allowFunctionOps(any(), any(), any()); tenants = mock(Tenants.class); - when(tenants.getTenantInfo(any())).thenReturn(new TenantInfo()); + when(tenants.getTenantInfo(any())).thenReturn(new TenantInfoImpl()); admin = mock(PulsarAdmin.class); when(admin.tenants()).thenReturn(tenants); diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v2/FunctionApiV2ResourceTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v2/FunctionApiV2ResourceTest.java index 29fb11c618fba..f37d5df1fe9a0 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v2/FunctionApiV2ResourceTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v2/FunctionApiV2ResourceTest.java @@ -62,7 +62,7 @@ import org.apache.pulsar.client.admin.Namespaces; import org.apache.pulsar.client.admin.Tenants; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.RestException; import org.apache.pulsar.functions.api.Context; import org.apache.pulsar.functions.api.Function; @@ -135,7 +135,7 @@ public String process(String input, Context context) { private Tenants mockedTenants; private Namespaces mockedNamespaces; private Functions mockedFunctions; - private TenantInfo mockedTenantInfo; + private TenantInfoImpl mockedTenantInfo; private List namespaceList = new LinkedList<>(); private FunctionMetaDataManager mockedManager; private FunctionRuntimeManager mockedFunctionRunTimeManager; @@ -152,7 +152,7 @@ public String process(String input, Context context) { public void setup() throws Exception { this.mockedManager = mock(FunctionMetaDataManager.class); this.mockedFunctionRunTimeManager = mock(FunctionRuntimeManager.class); - this.mockedTenantInfo = mock(TenantInfo.class); + this.mockedTenantInfo = mock(TenantInfoImpl.class); this.mockedRuntimeFactory = mock(RuntimeFactory.class); this.mockedInputStream = mock(InputStream.class); this.mockedNamespace = mock(Namespace.class); diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionApiV3ResourceTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionApiV3ResourceTest.java index 27694db734af0..d2e7aca1cfa87 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionApiV3ResourceTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionApiV3ResourceTest.java @@ -60,7 +60,7 @@ import org.apache.pulsar.client.admin.Namespaces; import org.apache.pulsar.client.admin.Tenants; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.RestException; import org.apache.pulsar.functions.api.Context; @@ -142,7 +142,7 @@ public void accept(String s) { private Tenants mockedTenants; private Namespaces mockedNamespaces; private Functions mockedFunctions; - private TenantInfo mockedTenantInfo; + private TenantInfoImpl mockedTenantInfo; private List namespaceList = new LinkedList<>(); private FunctionMetaDataManager mockedManager; private FunctionRuntimeManager mockedFunctionRunTimeManager; @@ -160,7 +160,7 @@ public void accept(String s) { public void setup() throws Exception { this.mockedManager = mock(FunctionMetaDataManager.class); this.mockedFunctionRunTimeManager = mock(FunctionRuntimeManager.class); - this.mockedTenantInfo = mock(TenantInfo.class); + this.mockedTenantInfo = mock(TenantInfoImpl.class); this.mockedRuntimeFactory = mock(RuntimeFactory.class); this.mockedInputStream = mock(InputStream.class); this.mockedNamespace = mock(Namespace.class); diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SinkApiV3ResourceTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SinkApiV3ResourceTest.java index 97b2d9647858a..b5935781ae3c6 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SinkApiV3ResourceTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SinkApiV3ResourceTest.java @@ -60,7 +60,7 @@ import org.apache.pulsar.common.functions.Utils; import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.nar.NarClassLoader; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ClassLoaderUtils; import org.apache.pulsar.common.util.RestException; import org.apache.pulsar.functions.api.utils.IdentityFunction; @@ -124,7 +124,7 @@ public IObjectFactory getObjectFactory() { private Tenants mockedTenants; private Namespaces mockedNamespaces; private Functions mockedFunctions; - private TenantInfo mockedTenantInfo; + private TenantInfoImpl mockedTenantInfo; private List namespaceList = new LinkedList<>(); private FunctionMetaDataManager mockedManager; private FunctionRuntimeManager mockedFunctionRunTimeManager; @@ -171,7 +171,7 @@ public void setup() throws Exception { this.mockedNamespace = mock(Namespace.class); this.mockedFormData = mock(FormDataContentDisposition.class); when(mockedFormData.getFileName()).thenReturn("test"); - this.mockedTenantInfo = mock(TenantInfo.class); + this.mockedTenantInfo = mock(TenantInfoImpl.class); this.mockedPulsarAdmin = mock(PulsarAdmin.class); this.mockedTenants = mock(Tenants.class); this.mockedNamespaces = mock(Namespaces.class); diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SourceApiV3ResourceTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SourceApiV3ResourceTest.java index 5bd07da58baa0..b030ed8036b1d 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SourceApiV3ResourceTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SourceApiV3ResourceTest.java @@ -59,7 +59,7 @@ import org.apache.pulsar.common.functions.Utils; import org.apache.pulsar.common.io.SourceConfig; import org.apache.pulsar.common.nar.NarClassLoader; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ClassLoaderUtils; import org.apache.pulsar.common.util.RestException; import org.apache.pulsar.functions.api.utils.IdentityFunction; @@ -122,7 +122,7 @@ public IObjectFactory getObjectFactory() { private Tenants mockedTenants; private Namespaces mockedNamespaces; private Functions mockedFunctions; - private TenantInfo mockedTenantInfo; + private TenantInfoImpl mockedTenantInfo; private List namespaceList = new LinkedList<>(); private FunctionMetaDataManager mockedManager; private FunctionRuntimeManager mockedFunctionRunTimeManager; @@ -160,7 +160,7 @@ public void setup() throws Exception { this.mockedNamespace = mock(Namespace.class); this.mockedFormData = mock(FormDataContentDisposition.class); when(mockedFormData.getFileName()).thenReturn("test"); - this.mockedTenantInfo = mock(TenantInfo.class); + this.mockedTenantInfo = mock(TenantInfoImpl.class); this.mockedPulsarAdmin = mock(PulsarAdmin.class); this.mockedTenants = mock(Tenants.class); this.mockedNamespaces = mock(Namespaces.class); diff --git a/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadataUtil.java b/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadataUtil.java new file mode 100644 index 0000000000000..523bdfe27b93f --- /dev/null +++ b/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadataUtil.java @@ -0,0 +1,40 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.packages.management.core.common; + +import org.apache.commons.lang3.SerializationUtils; +import org.apache.pulsar.packages.management.core.exceptions.PackagesManagementException; + +public class PackageMetadataUtil { + public static PackageMetadata fromBytes(byte[] bytes) throws PackagesManagementException.MetadataFormatException { + try { + Object o = SerializationUtils.deserialize(bytes); + if (!(o instanceof PackageMetadata)) { + throw new PackagesManagementException.MetadataFormatException("Unexpected metadata format"); + } + return (PackageMetadata) o; + } catch (Exception e) { + throw new PackagesManagementException.MetadataFormatException("Unexpected error", e); + } + } + + public static byte[] toBytes(PackageMetadata packageMetadata) { + return SerializationUtils.serialize(packageMetadata); + } +} diff --git a/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java b/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java index cbc6f27b49a2c..be6d356434b19 100644 --- a/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java +++ b/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java @@ -28,6 +28,7 @@ import org.apache.pulsar.packages.management.core.PackagesManagement; import org.apache.pulsar.packages.management.core.PackagesStorage; import org.apache.pulsar.packages.management.core.common.PackageMetadata; +import org.apache.pulsar.packages.management.core.common.PackageMetadataUtil; import org.apache.pulsar.packages.management.core.common.PackageName; import org.apache.pulsar.packages.management.core.common.PackageType; import org.apache.pulsar.packages.management.core.exceptions.PackagesManagementException; @@ -83,7 +84,7 @@ public CompletableFuture updateMeta(PackageName packageName, PackageMetada future.completeExceptionally(throwable); return; } - try (ByteArrayInputStream inputStream = new ByteArrayInputStream(metadata.toBytes())) { + try (ByteArrayInputStream inputStream = new ByteArrayInputStream(PackageMetadataUtil.toBytes(metadata))) { storage.deleteAsync(metadataPath) .thenCompose(aVoid -> storage.writeAsync(metadataPath, inputStream)) .whenComplete((aVoid, t) -> { @@ -105,7 +106,7 @@ public CompletableFuture updateMeta(PackageName packageName, PackageMetada private CompletableFuture writeMeta(PackageName packageName, PackageMetadata metadata) { CompletableFuture future = new CompletableFuture<>(); String metadataPath = metadataPath(packageName); - try (ByteArrayInputStream inputStream = new ByteArrayInputStream(metadata.toBytes())) { + try (ByteArrayInputStream inputStream = new ByteArrayInputStream(PackageMetadataUtil.toBytes(metadata))) { storage.writeAsync(metadataPath, inputStream) .whenComplete((aVoid, t) -> { if (t != null) { @@ -234,7 +235,7 @@ private CompletableFuture checkPackageExistsAndThrowException(PackageName private CompletableFuture metadataReadFromStream(ByteArrayOutputStream outputStream) { CompletableFuture future = new CompletableFuture<>(); try { - PackageMetadata metadata = PackageMetadata.fromBytes(outputStream.toByteArray()); + PackageMetadata metadata = PackageMetadataUtil.fromBytes(outputStream.toByteArray()); future.complete(metadata); } catch (PackagesManagementException.MetadataFormatException e) { future.completeExceptionally(e); diff --git a/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/common/PackageMetadataSerdeTest.java b/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/common/PackageMetadataSerdeTest.java index 98b216883b244..fd74a81e663f0 100644 --- a/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/common/PackageMetadataSerdeTest.java +++ b/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/common/PackageMetadataSerdeTest.java @@ -35,10 +35,10 @@ public void testPackageMetadataSerDe() { .modificationTime(System.currentTimeMillis() + 1000) .properties(properties).build(); - byte[] metadataSerialized = metadata.toBytes(); + byte[] metadataSerialized = PackageMetadataUtil.toBytes(metadata); try { - PackageMetadata deSerializedMetadata = PackageMetadata.fromBytes(metadataSerialized); + PackageMetadata deSerializedMetadata = PackageMetadataUtil.fromBytes(metadataSerialized); Assert.assertEquals(metadata, deSerializedMetadata); } catch (PackagesManagementException.MetadataFormatException e) { Assert.fail("should not throw any exception"); @@ -46,7 +46,7 @@ public void testPackageMetadataSerDe() { try { byte[] failedMetadataSerialized = "wrong package metadata".getBytes(); - PackageMetadata deSerializedMetadata = PackageMetadata.fromBytes(failedMetadataSerialized); + PackageMetadata deSerializedMetadata = PackageMetadataUtil.fromBytes(failedMetadataSerialized); Assert.fail("should throw the metadata format exception"); } catch (PackagesManagementException.MetadataFormatException e) { // expected error diff --git a/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImplTest.java b/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImplTest.java index 777c86ba5e3f8..6dc28352c00c2 100644 --- a/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImplTest.java +++ b/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImplTest.java @@ -28,6 +28,7 @@ import org.apache.pulsar.packages.management.core.PackagesStorage; import org.apache.pulsar.packages.management.core.PackagesStorageProvider; import org.apache.pulsar.packages.management.core.common.PackageMetadata; +import org.apache.pulsar.packages.management.core.common.PackageMetadataUtil; import org.apache.pulsar.packages.management.core.common.PackageName; import org.apache.pulsar.packages.management.core.exceptions.PackagesManagementException; import org.testng.Assert; @@ -119,7 +120,7 @@ public void testPackagesManagementFlow() { .contact("test@apache.org") .description("A mocked test package") .createTime(System.currentTimeMillis()).build(); - try (ByteArrayInputStream inputStream= new ByteArrayInputStream(metadata.toBytes())) { + try (ByteArrayInputStream inputStream= new ByteArrayInputStream(PackageMetadataUtil.toBytes(metadata))) { packagesManagement.upload(packageName, metadata, inputStream).get(); } catch (Exception e) { Assert.fail("should not throw any exception"); @@ -136,7 +137,7 @@ public void testPackagesManagementFlow() { // download an existent package should succeed try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { packagesManagement.download(packageName, outputStream).get(); - PackageMetadata getPackage = PackageMetadata.fromBytes(outputStream.toByteArray()); + PackageMetadata getPackage = PackageMetadataUtil.fromBytes(outputStream.toByteArray()); Assert.assertEquals(metadata, getPackage); } catch (Exception e) { Assert.fail("should not throw any exception"); diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/BrokerDiscoveryProvider.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/BrokerDiscoveryProvider.java index 8fcc3e06d4e59..ae8e13405bf01 100644 --- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/BrokerDiscoveryProvider.java +++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/BrokerDiscoveryProvider.java @@ -36,7 +36,7 @@ import org.apache.pulsar.broker.resources.PulsarResources; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; import org.apache.zookeeper.KeeperException; import org.slf4j.Logger; @@ -132,7 +132,7 @@ protected static void checkAuthorization(ProxyService service, TopicName topicNa if (!service.getAuthorizationService().canLookup(topicName, role, authenticationData)) { LOG.warn("[{}] Role {} is not allowed to lookup topic", topicName, role); // check namespace authorization - TenantInfo tenantInfo; + TenantInfoImpl tenantInfo; try { tenantInfo = service.getConfigurationCacheService().propertiesCache() .get(path(POLICIES, topicName.getTenant())) diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AuthedAdminProxyHandlerTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AuthedAdminProxyHandlerTest.java index fb2057a997d0b..b21c76a606163 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AuthedAdminProxyHandlerTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AuthedAdminProxyHandlerTest.java @@ -34,8 +34,8 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; import org.apache.pulsar.policies.data.loadbalancer.LoadReport; @@ -157,10 +157,10 @@ public void testAuthenticatedProxyAsNonAdmin() throws Exception { // expected } - brokerAdmin.clusters().createCluster(configClusterName, new ClusterData(brokerUrl.toString())); + brokerAdmin.clusters().createCluster(configClusterName, new ClusterDataImpl(brokerUrl.toString())); brokerAdmin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of(configClusterName))); brokerAdmin.namespaces().createNamespace("tenant1/ns1"); Assert.assertEquals(ImmutableSet.of("tenant1/ns1"), brokerAdmin.namespaces().getNamespaces("tenant1")); @@ -171,7 +171,7 @@ public void testAuthenticatedProxyAsNonAdmin() throws Exception { // expected } brokerAdmin.tenants().updateTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy"), + new TenantInfoImpl(ImmutableSet.of("proxy"), ImmutableSet.of(configClusterName))); try { user1Admin.namespaces().getNamespaces("tenant1"); @@ -180,7 +180,7 @@ public void testAuthenticatedProxyAsNonAdmin() throws Exception { // expected } brokerAdmin.tenants().updateTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1", "proxy"), + new TenantInfoImpl(ImmutableSet.of("user1", "proxy"), ImmutableSet.of(configClusterName))); Assert.assertEquals(ImmutableSet.of("tenant1/ns1"), user1Admin.namespaces().getNamespaces("tenant1")); } diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java index 447ab62840a92..40f74641fbbde 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java @@ -42,8 +42,8 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.mockito.Mockito; import org.slf4j.Logger; @@ -167,10 +167,10 @@ public void testTlsSyncProducerAndConsumer() throws Exception { @Cleanup PulsarClient proxyClient = createPulsarClient(authTls, proxyServiceUrl); - admin.clusters().createCluster(configClusterName, new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster(configClusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); Consumer consumer = proxyClient.newConsumer().topic("persistent://my-property/my-ns/my-topic1") diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithAuth.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithAuth.java index ec5d45bd1cb77..af76bfaeb2bb4 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithAuth.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithAuth.java @@ -42,7 +42,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.mockito.Mockito; import org.testng.Assert; @@ -176,7 +176,7 @@ public void testPartitions() throws Exception { @Cleanup PulsarClient client = internalSetUpForClient(true, proxyService.getServiceUrlTls()); String topicName = "persistent://sample/test/local/partitioned-topic" + System.currentTimeMillis(); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("sample", tenantInfo); admin.topics().createPartitionedTopic(topicName, 2); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithoutAuth.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithoutAuth.java index 3e6f7ac5296a0..9b0e9b427e56c 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithoutAuth.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithoutAuth.java @@ -38,7 +38,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.mockito.Mockito; import org.testng.Assert; @@ -161,7 +161,7 @@ public void testPartitions() throws Exception { @Cleanup PulsarClient client = internalSetUpForClient(true, proxyService.getServiceUrlTls()); String topicName = "persistent://sample/test/local/partitioned-topic" + System.currentTimeMillis(); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("sample", tenantInfo); admin.topics().createPartitionedTopic(topicName, 2); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyParserTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyParserTest.java index 91e8c45eed61b..905ca2066c738 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyParserTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyParserTest.java @@ -48,7 +48,7 @@ import org.apache.pulsar.common.api.proto.CommandActiveConsumerChange; import org.apache.pulsar.common.api.proto.ProtocolVersion; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.netty.EventLoopUtil; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.mockito.Mockito; @@ -140,7 +140,7 @@ public void testProducerConsumer() throws Exception { @Test public void testPartitions() throws Exception { - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("sample", tenantInfo); @Cleanup PulsarClient client = PulsarClient.builder().serviceUrl(proxyService.getServiceUrl()) diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTest.java index 36be34027351b..92f6a63d0f185 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTest.java @@ -54,7 +54,7 @@ import org.apache.pulsar.common.api.proto.ProtocolVersion; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.util.netty.EventLoopUtil; import org.apache.pulsar.metadata.impl.ZKMetadataStore; @@ -159,7 +159,7 @@ public void testProducerConsumer() throws Exception { @Test public void testPartitions() throws Exception { - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("sample", tenantInfo); @Cleanup PulsarClient client = PulsarClient.builder().serviceUrl(proxyService.getServiceUrl()) diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTlsTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTlsTest.java index 686bb95c9e1f3..59beb94712c7d 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTlsTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTlsTest.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.mockito.Mockito; import org.testng.annotations.AfterClass; @@ -100,7 +100,7 @@ public void testPartitions() throws Exception { PulsarClient client = PulsarClient.builder() .serviceUrl(proxyService.getServiceUrlTls()) .allowTlsInsecureConnection(false).tlsTrustCertsFilePath(TLS_TRUST_CERT_FILE_PATH).build(); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("sample", tenantInfo); admin.topics().createPartitionedTopic("persistent://sample/test/local/partitioned-topic", 2); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationNegTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationNegTest.java index 2b7a1de9aeaa1..eaba9c088d0e8 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationNegTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationNegTest.java @@ -43,8 +43,8 @@ import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -168,10 +168,10 @@ public void testProxyAuthorization() throws Exception { String namespaceName = "my-property/proxy-authorization-neg/my-ns"; - admin.clusters().createCluster("proxy-authorization-neg", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization-neg", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization-neg"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization-neg"))); admin.namespaces().createNamespace(namespaceName); admin.namespaces().grantPermissionOnNamespace(namespaceName, "Proxy", Sets.newHashSet(AuthAction.produce)); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationTest.java index 2ce8930d2d757..4a62b99c51fe1 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationTest.java @@ -45,8 +45,8 @@ import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -240,10 +240,10 @@ public void testProxyAuthorization() throws Exception { String namespaceName = "my-property/proxy-authorization/my-ns"; - admin.clusters().createCluster("proxy-authorization", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); admin.namespaces().createNamespace(namespaceName); admin.namespaces().grantPermissionOnNamespace(namespaceName, "Proxy", @@ -294,10 +294,10 @@ public void testTlsHostVerificationProxyToClient(boolean hostnameVerificationEna String namespaceName = "my-property/proxy-authorization/my-ns"; - admin.clusters().createCluster("proxy-authorization", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); admin.namespaces().createNamespace(namespaceName); admin.namespaces().grantPermissionOnNamespace(namespaceName, "Proxy", @@ -346,10 +346,10 @@ public void testTlsHostVerificationProxyToBroker(boolean hostnameVerificationEna String namespaceName = "my-property/proxy-authorization/my-ns"; - admin.clusters().createCluster("proxy-authorization", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); admin.namespaces().createNamespace(namespaceName); admin.namespaces().grantPermissionOnNamespace(namespaceName, "Proxy", @@ -383,10 +383,10 @@ public void tlsCiphersAndProtocols(Set tlsCiphers, Set tlsProtoc String namespaceName = "my-property/proxy-authorization/my-ns"; createAdminClient(); - admin.clusters().createCluster("proxy-authorization", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); admin.namespaces().createNamespace(namespaceName); admin.namespaces().grantPermissionOnNamespace(namespaceName, "Proxy", diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithJwtAuthorizationTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithJwtAuthorizationTest.java index 4a7d0b848d7f2..788e914476679 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithJwtAuthorizationTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithJwtAuthorizationTest.java @@ -35,9 +35,9 @@ import org.apache.pulsar.client.impl.auth.AuthenticationToken; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SubscriptionAuthMode; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -142,10 +142,10 @@ public void testProxyAuthorization() throws Exception { String namespaceName = "my-property/proxy-authorization/my-ns"; - admin.clusters().createCluster("proxy-authorization", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); admin.namespaces().createNamespace(namespaceName); Consumer consumer; @@ -223,10 +223,10 @@ public void testUpdatePartitionNumAndReconnect() throws Exception { String topicName = "persistent://my-property/my-ns/my-topic1"; String subscriptionName = "my-subscriber-name"; - admin.clusters().createCluster(clusterName, new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet(clusterName))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet(clusterName))); admin.namespaces().createNamespace(namespaceName); admin.topics().createPartitionedTopic(topicName, 2); admin.topics().grantPermission(topicName, CLIENT_ROLE, @@ -315,10 +315,10 @@ public void testProxyAuthorizationWithPrefixSubscriptionAuthMode() throws Except String namespaceName = "my-property/proxy-authorization/my-ns"; - admin.clusters().createCluster("proxy-authorization", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); admin.namespaces().createNamespace(namespaceName); admin.namespaces().grantPermissionOnNamespace(namespaceName, CLIENT_ROLE, Sets.newHashSet(AuthAction.produce, AuthAction.consume)); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithoutServiceDiscoveryTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithoutServiceDiscoveryTest.java index 3f2ab2c1a1017..774a5dbfa7e48 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithoutServiceDiscoveryTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithoutServiceDiscoveryTest.java @@ -41,8 +41,8 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -161,9 +161,9 @@ public void testDiscoveryService() throws Exception { @Cleanup PulsarClient proxyClient = createPulsarClient(authTls, proxyService.getServiceUrlTls()); - admin.clusters().createCluster("without-service-discovery", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("without-service-discovery", new ClusterDataImpl(brokerUrl.toString())); - admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), + admin.tenants().createTenant("my-property", new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("without-service-discovery"))); admin.namespaces().createNamespace("my-property/without-service-discovery/my-ns"); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/SuperUserAuthedAdminProxyHandlerTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/SuperUserAuthedAdminProxyHandlerTest.java index f957a18e05244..def1bf63dc5c9 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/SuperUserAuthedAdminProxyHandlerTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/SuperUserAuthedAdminProxyHandlerTest.java @@ -34,8 +34,8 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; import org.apache.pulsar.policies.data.loadbalancer.LoadReport; @@ -134,9 +134,9 @@ PulsarAdmin getAdminClient(String user) throws Exception { @Test public void testAuthenticatedProxyAsAdmin() throws Exception { try (PulsarAdmin adminAdmin = getAdminClient("admin")) { - adminAdmin.clusters().createCluster(configClusterName, new ClusterData(brokerUrl.toString())); + adminAdmin.clusters().createCluster(configClusterName, new ClusterDataImpl(brokerUrl.toString())); adminAdmin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("randoUser"), + new TenantInfoImpl(ImmutableSet.of("randoUser"), ImmutableSet.of(configClusterName))); Assert.assertEquals(ImmutableSet.of("tenant1"), adminAdmin.tenants().getTenants()); } @@ -152,9 +152,9 @@ public void testAuthenticatedProxyAsNonAdmin() throws Exception { } catch (PulsarAdminException.NotAuthorizedException e) { // expected } - adminAdmin.clusters().createCluster(configClusterName, new ClusterData(brokerUrl.toString())); + adminAdmin.clusters().createCluster(configClusterName, new ClusterDataImpl(brokerUrl.toString())); adminAdmin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("unknownUser"), + new TenantInfoImpl(ImmutableSet.of("unknownUser"), ImmutableSet.of(configClusterName))); adminAdmin.namespaces().createNamespace("tenant1/ns1"); Assert.assertEquals(ImmutableSet.of("tenant1/ns1"), adminAdmin.namespaces().getNamespaces("tenant1")); @@ -165,7 +165,7 @@ public void testAuthenticatedProxyAsNonAdmin() throws Exception { // expected } adminAdmin.tenants().updateTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of(configClusterName))); Assert.assertEquals(ImmutableSet.of("tenant1/ns1"), user1Admin.namespaces().getNamespaces("tenant1")); } diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorCache.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorCache.java index 8fcab09bbd979..457709940ad63 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorCache.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorCache.java @@ -41,7 +41,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.pulsar.PulsarVersion; import org.apache.pulsar.common.naming.NamespaceName; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.metadata.api.MetadataStore; import org.apache.pulsar.metadata.api.MetadataStoreConfig; import org.apache.pulsar.metadata.api.MetadataStoreFactory; @@ -119,7 +119,7 @@ private ManagedLedgerFactory initManagedLedgerFactory(PulsarConnectorConfig puls return new ManagedLedgerFactoryImpl(metadataStore, bkClientConfiguration, managedLedgerFactoryConfig); } - public ManagedLedgerConfig getManagedLedgerConfig(NamespaceName namespaceName, OffloadPolicies offloadPolicies, + public ManagedLedgerConfig getManagedLedgerConfig(NamespaceName namespaceName, OffloadPoliciesImpl offloadPolicies, PulsarConnectorConfig pulsarConnectorConfig) { ManagedLedgerConfig managedLedgerConfig = new ManagedLedgerConfig(); if (offloadPolicies == null) { @@ -141,7 +141,7 @@ public ManagedLedgerConfig getManagedLedgerConfig(NamespaceName namespaceName, O return managedLedgerConfig; } - private synchronized OrderedScheduler getOffloaderScheduler(OffloadPolicies offloadPolicies) { + private synchronized OrderedScheduler getOffloaderScheduler(OffloadPoliciesImpl offloadPolicies) { if (this.offloaderScheduler == null) { this.offloaderScheduler = OrderedScheduler.newSchedulerBuilder() .numThreads(offloadPolicies.getManagedLedgerOffloadMaxThreads()) @@ -150,7 +150,7 @@ private synchronized OrderedScheduler getOffloaderScheduler(OffloadPolicies offl return this.offloaderScheduler; } - private LedgerOffloader initManagedLedgerOffloader(OffloadPolicies offloadPolicies, + private LedgerOffloader initManagedLedgerOffloader(OffloadPoliciesImpl offloadPolicies, PulsarConnectorConfig pulsarConnectorConfig) { try { diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java index a03909f4b0fe4..8c984cbbffcdc 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.common.naming.NamedEntity; import org.apache.pulsar.common.nar.NarClassLoader; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.protocol.Commands; /** @@ -451,10 +451,10 @@ public PulsarAdmin getPulsarAdmin() throws PulsarClientException { return this.pulsarAdmin; } - public OffloadPolicies getOffloadPolices() { + public OffloadPoliciesImpl getOffloadPolices() { Properties offloadProperties = new Properties(); offloadProperties.putAll(getOffloaderProperties()); - OffloadPolicies offloadPolicies = OffloadPolicies.create(offloadProperties); + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create(offloadProperties); offloadPolicies.setManagedLedgerOffloadDriver(getManagedLedgerOffloadDriver()); offloadPolicies.setManagedLedgerOffloadMaxThreads(getManagedLedgerOffloadMaxThreads()); offloadPolicies.setOffloadersDirectory(getOffloadersDirectory()); diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java index 0fde38a20503f..f1e2bdb4bb4bf 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java @@ -60,7 +60,7 @@ import org.apache.pulsar.common.api.raw.RawMessage; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.schema.KeyValue; import org.apache.pulsar.common.schema.KeyValueEncodingType; import org.apache.pulsar.common.schema.SchemaInfo; @@ -128,7 +128,7 @@ public PulsarRecordCursor(List columnHandles, PulsarSplit pu throw new RuntimeException(e); } - OffloadPolicies offloadPolicies = pulsarSplit.getOffloadPolicies(); + OffloadPoliciesImpl offloadPolicies = pulsarSplit.getOffloadPolicies(); if (offloadPolicies != null) { offloadPolicies.setOffloadersDirectory(pulsarConnectorConfig.getOffloadersDirectory()); offloadPolicies.setManagedLedgerOffloadMaxThreads( diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplit.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplit.java index a58da78477044..03a6b771bbaa1 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplit.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplit.java @@ -32,7 +32,7 @@ import java.util.List; import java.util.Map; import org.apache.bookkeeper.mledger.impl.PositionImpl; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaType; @@ -62,7 +62,7 @@ public class PulsarSplit implements ConnectorSplit { private final PositionImpl endPosition; private final String schemaInfoProperties; - private final OffloadPolicies offloadPolicies; + private final OffloadPoliciesImpl offloadPolicies; @JsonCreator public PulsarSplit( @@ -80,7 +80,7 @@ public PulsarSplit( @JsonProperty("endPositionLedgerId") long endPositionLedgerId, @JsonProperty("tupleDomain") TupleDomain tupleDomain, @JsonProperty("schemaInfoProperties") String schemaInfoProperties, - @JsonProperty("offloadPolicies") OffloadPolicies offloadPolicies) throws IOException { + @JsonProperty("offloadPolicies") OffloadPoliciesImpl offloadPolicies) throws IOException { this.splitId = splitId; requireNonNull(schemaName, "schema name is null"); this.originSchemaName = originSchemaName; @@ -188,7 +188,7 @@ public String getSchemaInfoProperties() { } @JsonProperty - public OffloadPolicies getOffloadPolicies() { + public OffloadPoliciesImpl getOffloadPolicies() { return offloadPolicies; } diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplitManager.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplitManager.java index 31c54ecfa53a2..eca1ba871053c 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplitManager.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplitManager.java @@ -60,7 +60,7 @@ import org.apache.pulsar.client.impl.MessageImpl; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.schema.SchemaInfo; /** @@ -125,7 +125,7 @@ public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHand Collection splits; try { - OffloadPolicies offloadPolicies = this.pulsarAdmin.namespaces() + OffloadPoliciesImpl offloadPolicies = (OffloadPoliciesImpl) this.pulsarAdmin.namespaces() .getOffloadPolicies(topicName.getNamespace()); if (offloadPolicies != null) { offloadPolicies.setOffloadersDirectory(pulsarConnectorConfig.getOffloadersDirectory()); @@ -151,7 +151,7 @@ public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHand @VisibleForTesting Collection getSplitsPartitionedTopic(int numSplits, TopicName topicName, PulsarTableHandle tableHandle, SchemaInfo schemaInfo, TupleDomain tupleDomain, - OffloadPolicies offloadPolicies) throws Exception { + OffloadPoliciesImpl offloadPolicies) throws Exception { List predicatedPartitions = getPredicatedPartitions(topicName, tupleDomain); if (log.isDebugEnabled()) { @@ -237,7 +237,7 @@ private List getPredicatedPartitions(TopicName topicName, TupleDomain getSplitsNonPartitionedTopic(int numSplits, TopicName topicName, PulsarTableHandle tableHandle, SchemaInfo schemaInfo, TupleDomain tupleDomain, - OffloadPolicies offloadPolicies) throws Exception { + OffloadPoliciesImpl offloadPolicies) throws Exception { PulsarConnectorCache pulsarConnectorCache = PulsarConnectorCache.getConnectorCache(pulsarConnectorConfig); ManagedLedgerFactory managedLedgerFactory = pulsarConnectorCache.getManagedLedgerFactory(); ManagedLedgerConfig managedLedgerConfig = pulsarConnectorCache.getManagedLedgerConfig( @@ -263,7 +263,7 @@ Collection getSplitsForTopic(String topicNamePersistenceEncoding, PulsarTableHandle tableHandle, SchemaInfo schemaInfo, String tableName, TupleDomain tupleDomain, - OffloadPolicies offloadPolicies) + OffloadPoliciesImpl offloadPolicies) throws ManagedLedgerException, InterruptedException, IOException { ReadOnlyCursor readOnlyCursor = null; diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestCacheSizeAllocator.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestCacheSizeAllocator.java index 0190d2e072bce..c6798b1dc3918 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestCacheSizeAllocator.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestCacheSizeAllocator.java @@ -39,8 +39,8 @@ import org.apache.pulsar.client.impl.MessageIdImpl; import org.apache.pulsar.common.api.raw.RawMessageImpl; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.jctools.queues.SpscArrayQueue; import org.testng.Assert; import org.testng.annotations.AfterClass; @@ -61,11 +61,11 @@ public class TestCacheSizeAllocator extends MockedPulsarServiceBaseTest { protected void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); // so that clients can test short names admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("public/default"); admin.namespaces().setNamespaceReplicationClusters("public/default", Sets.newHashSet("test")); } diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java index d1701d929d571..ac05a91d54ebb 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java @@ -455,7 +455,8 @@ public List answer(InvocationOnMock invocation) throws Throwable { String tenant = (String) args[0]; List ns = getNamespace(tenant); if (ns.isEmpty()) { - throw new PulsarAdminException(new ClientErrorException(Response.status(404).build())); + ClientErrorException cee = new ClientErrorException(Response.status(404).build()); + throw new PulsarAdminException(cee, cee.getMessage(), cee.getResponse().getStatus()); } return ns; } @@ -469,7 +470,8 @@ public List answer(InvocationOnMock invocationOnMock) throws Throwable { String ns = (String) args[0]; List topics = getTopics(ns); if (topics.isEmpty()) { - throw new PulsarAdminException(new ClientErrorException(Response.status(404).build())); + ClientErrorException cee = new ClientErrorException(Response.status(404).build()); + throw new PulsarAdminException(cee, cee.getMessage(), cee.getResponse().getStatus()); } return topics; } @@ -482,7 +484,8 @@ public List answer(InvocationOnMock invocationOnMock) throws Throwable { String ns = (String) args[0]; List topics = getPartitionedTopics(ns); if (topics.isEmpty()) { - throw new PulsarAdminException(new ClientErrorException(Response.status(404).build())); + ClientErrorException cee = new ClientErrorException(Response.status(404).build()); + throw new PulsarAdminException(cee, cee.getMessage(), cee.getResponse().getStatus()); } return topics; } @@ -508,7 +511,8 @@ public SchemaInfo answer(InvocationOnMock invocationOnMock) throws Throwable { if (topicsToSchemas.get(topic) != null) { return topicsToSchemas.get(topic); } else { - throw new PulsarAdminException(new ClientErrorException(Response.status(404).build())); + ClientErrorException cee = new ClientErrorException(Response.status(404).build()); + throw new PulsarAdminException(cee, cee.getMessage(), cee.getResponse().getStatus()); } } }); diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnectorConfig.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnectorConfig.java index c9bf2ae20136f..42bb987c3b897 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnectorConfig.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnectorConfig.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.sql.presto; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.testng.Assert; import org.testng.annotations.Test; @@ -91,7 +91,7 @@ public void testGetOffloadPolices() throws Exception { connectorConfig.setManagedLedgerOffloadMaxThreads(managedLedgerOffloadMaxThreads); connectorConfig.setOffloaderProperties(offloadProperties); - OffloadPolicies offloadPolicies = connectorConfig.getOffloadPolices(); + OffloadPoliciesImpl offloadPolicies = connectorConfig.getOffloadPolices(); Assert.assertNotNull(offloadPolicies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDriver(), managedLedgerOffloadDriver); Assert.assertEquals(offloadPolicies.getOffloadersDirectory(), offloaderDirectory); diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarMetadata.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarMetadata.java index 6e4b0defb581b..cd31b4be4441e 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarMetadata.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarMetadata.java @@ -168,8 +168,9 @@ public void testGetTableMetadataWrongTable(String delimiter) { @Test(dataProvider = "rewriteNamespaceDelimiter", singleThreaded = true) public void testGetTableMetadataTableNoSchema(String delimiter) throws PulsarAdminException { updateRewriteNamespaceDelimiterIfNeeded(delimiter); + ClientErrorException cee = new ClientErrorException(Response.Status.NOT_FOUND); when(this.schemas.getSchemaInfo(eq(TOPIC_1.getSchemaName()))).thenThrow( - new PulsarAdminException(new ClientErrorException(Response.Status.NOT_FOUND))); + new PulsarAdminException(cee, cee.getMessage(), cee.getResponse().getStatus())); PulsarTableHandle pulsarTableHandle = new PulsarTableHandle( pulsarConnectorId.toString(), diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java index 6a81eb6b7d72c..c7f6ce10759ec 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java @@ -33,7 +33,8 @@ import org.apache.bookkeeper.mledger.impl.PositionImpl; import org.apache.pulsar.client.impl.schema.JSONSchema; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaType; import org.mockito.invocation.InvocationOnMock; @@ -413,7 +414,7 @@ public void testGetSplitNonSchema(String delimiter) throws Exception { @Test public void pulsarSplitJsonCodecTest() throws JsonProcessingException, UnsupportedEncodingException { - OffloadPolicies offloadPolicies = OffloadPolicies.create( + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create( "aws-s3", "test-region", "test-bucket", @@ -426,7 +427,7 @@ public void pulsarSplitJsonCodecTest() throws JsonProcessingException, Unsupport 2000, 1000L, 5000L, - OffloadPolicies.OffloadedReadPriority.BOOKKEEPER_FIRST + OffloadedReadPriority.BOOKKEEPER_FIRST ); SchemaInfo schemaInfo = JSONSchema.of(Foo.class).getSchemaInfo(); diff --git a/pulsar-testclient/src/test/java/org/apache/pulsar/testclient/PerformanceProducerTest.java b/pulsar-testclient/src/test/java/org/apache/pulsar/testclient/PerformanceProducerTest.java index 01588c62743c1..698ba19627aa2 100644 --- a/pulsar-testclient/src/test/java/org/apache/pulsar/testclient/PerformanceProducerTest.java +++ b/pulsar-testclient/src/test/java/org/apache/pulsar/testclient/PerformanceProducerTest.java @@ -24,8 +24,8 @@ import org.apache.pulsar.client.api.Consumer; import org.apache.pulsar.client.api.Message; import org.apache.pulsar.client.api.SubscriptionType; -import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -56,8 +56,8 @@ protected void setup() throws Exception { } }); // Setup namespaces - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(testTenant, tenantInfo); admin.namespaces().createNamespace(myNamespace, Sets.newHashSet("test")); } diff --git a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/WebSocketService.java b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/WebSocketService.java index a505dbb45433a..199a4ca0206c4 100644 --- a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/WebSocketService.java +++ b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/WebSocketService.java @@ -42,7 +42,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet; import org.apache.pulsar.metadata.api.MetadataStoreException; @@ -75,7 +75,7 @@ public class WebSocketService implements Closeable { private ServiceConfiguration config; private ConfigurationMetadataCacheService configurationCacheService; - private ClusterData localCluster; + private ClusterDataImpl localCluster; private final ConcurrentOpenHashMap> topicProducerMap; private final ConcurrentOpenHashMap> topicConsumerMap; private final ConcurrentOpenHashMap> topicReaderMap; @@ -85,7 +85,7 @@ public WebSocketService(WebSocketProxyConfiguration config) { this(createClusterData(config), PulsarConfigurationLoader.convertFrom(config)); } - public WebSocketService(ClusterData localCluster, ServiceConfiguration config) { + public WebSocketService(ClusterDataImpl localCluster, ServiceConfiguration config) { this.config = config; this.localCluster = localCluster; this.topicProducerMap = new ConcurrentOpenHashMap<>(); @@ -168,11 +168,11 @@ public synchronized PulsarClient getPulsarClient() throws IOException { return pulsarClient; } - public synchronized void setLocalCluster(ClusterData clusterData) { + public synchronized void setLocalCluster(ClusterDataImpl clusterData) { this.localCluster = clusterData; } - private PulsarClient createClientInstance(ClusterData clusterData) throws IOException { + private PulsarClient createClientInstance(ClusterDataImpl clusterData) throws IOException { ClientBuilder clientBuilder = PulsarClient.builder() // .statsInterval(0, TimeUnit.SECONDS) // .enableTls(config.isTlsEnabled()) // @@ -202,18 +202,18 @@ && isNotBlank(config.getBrokerClientAuthenticationParameters())) { return clientBuilder.build(); } - private static ClusterData createClusterData(WebSocketProxyConfiguration config) { + private static ClusterDataImpl createClusterData(WebSocketProxyConfiguration config) { if (isNotBlank(config.getBrokerServiceUrl()) || isNotBlank(config.getBrokerServiceUrlTls())) { - return new ClusterData(config.getServiceUrl(), config.getServiceUrlTls(), config.getBrokerServiceUrl(), + return new ClusterDataImpl(config.getServiceUrl(), config.getServiceUrlTls(), config.getBrokerServiceUrl(), config.getBrokerServiceUrlTls()); } else if (isNotBlank(config.getServiceUrl()) || isNotBlank(config.getServiceUrlTls())) { - return new ClusterData(config.getServiceUrl(), config.getServiceUrlTls()); + return new ClusterDataImpl(config.getServiceUrl(), config.getServiceUrlTls()); } else { return null; } } - private ClusterData retrieveClusterData() throws PulsarServerException { + private ClusterDataImpl retrieveClusterData() throws PulsarServerException { if (configurationCacheService == null) { throw new PulsarServerException( "Failed to retrieve Cluster data due to empty ConfigurationStoreServers"); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/auth/token/PulsarTokenAuthenticationBaseSuite.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/auth/token/PulsarTokenAuthenticationBaseSuite.java index 8b843a268088a..462437f6f2031 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/auth/token/PulsarTokenAuthenticationBaseSuite.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/auth/token/PulsarTokenAuthenticationBaseSuite.java @@ -37,7 +37,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.auth.AuthenticationToken; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.tests.integration.containers.BrokerContainer; import org.apache.pulsar.tests.integration.containers.ProxyContainer; import org.apache.pulsar.tests.integration.containers.PulsarContainer; @@ -150,7 +150,7 @@ public void testPublishWithTokenAuth() throws Exception { try { admin.tenants().createTenant(tenant, - new TenantInfo(Collections.singleton(REGULAR_USER_ROLE), + new TenantInfoImpl(Collections.singleton(REGULAR_USER_ROLE), Collections.singleton(pulsarCluster.getClusterName()))); } catch (Exception e) { @@ -220,7 +220,7 @@ public void testProxyRedirectWithTokenAuth() throws Exception { try { admin.tenants().createTenant(tenant, - new TenantInfo(Collections.singleton(REGULAR_USER_ROLE), + new TenantInfoImpl(Collections.singleton(REGULAR_USER_ROLE), Collections.singleton(pulsarCluster.getClusterName()))); } catch (Exception e) { @@ -273,7 +273,7 @@ public void testExpiringToken(boolean shouldRefreshToken) throws Exception { .build(); admin.tenants().createTenant(tenant, - new TenantInfo(Collections.singleton(REGULAR_USER_ROLE), + new TenantInfoImpl(Collections.singleton(REGULAR_USER_ROLE), Collections.singleton(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace(namespace, Collections.singleton(pulsarCluster.getClusterName())); @@ -338,7 +338,7 @@ public void testExpiringTokenWithRefreshAndProducerRestart() throws Exception { .build(); admin.tenants().createTenant(tenant, - new TenantInfo(Collections.singleton(REGULAR_USER_ROLE), + new TenantInfoImpl(Collections.singleton(REGULAR_USER_ROLE), Collections.singleton(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace(namespace, Collections.singleton(pulsarCluster.getClusterName())); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/ClusterMetadataTearDownTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/ClusterMetadataTearDownTest.java index f965961cd5e30..a60ecc20ef304 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/ClusterMetadataTearDownTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/ClusterMetadataTearDownTest.java @@ -39,7 +39,6 @@ import org.apache.bookkeeper.meta.MetadataBookieDriver; import org.apache.bookkeeper.meta.MetadataDrivers; import org.apache.bookkeeper.stats.NullStatsLogger; -import org.apache.bookkeeper.util.ZkUtils; import org.apache.pulsar.PulsarClusterMetadataTeardown; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.api.Consumer; @@ -49,7 +48,7 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.api.SubscriptionInitialPosition; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.api.MetadataStore; import org.apache.pulsar.metadata.api.MetadataStoreConfig; import org.apache.pulsar.metadata.api.MetadataStoreFactory; @@ -57,7 +56,6 @@ import org.apache.pulsar.tests.integration.containers.ChaosContainer; import org.apache.pulsar.tests.integration.topologies.PulsarCluster; import org.apache.pulsar.tests.integration.topologies.PulsarClusterSpec; -import org.apache.zookeeper.ZooKeeper; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -140,7 +138,7 @@ public void testDeleteCluster() throws Exception { final String namespace = tenant + "/my-ns"; admin.tenants().createTenant(tenant, - new TenantInfo(new HashSet<>(), Collections.singleton(pulsarCluster.getClusterName()))); + new TenantInfoImpl(new HashSet<>(), Collections.singleton(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace(namespace); String[] topics = { "topic-1", "topic-2", namespace + "/topic-1" }; diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java index 5b8116e2750b0..453d4bcd567ec 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java @@ -58,9 +58,9 @@ import org.apache.pulsar.client.api.schema.GenericRecord; import org.apache.pulsar.client.impl.PulsarClientImpl; import org.apache.pulsar.client.impl.schema.generic.GenericJsonRecord; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStatus; -import org.apache.pulsar.common.policies.data.RetentionPolicies; +import org.apache.pulsar.common.policies.data.FunctionStatusUtil; import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.common.schema.KeyValue; @@ -99,13 +99,13 @@ protected Map produceMessagesToInputTopic(String inputTopicName, int numMessages) throws Exception { @Cleanup PulsarClient client = PulsarClient.builder() - .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) - .build(); + .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) + .build(); @Cleanup Producer producer = client.newProducer(Schema.STRING) - .topic(inputTopicName) - .create(); + .topic(inputTopicName) + .create(); LinkedHashMap kvs = new LinkedHashMap<>(); for (int i = 0; i < numMessages; i++) { @@ -113,9 +113,9 @@ protected Map produceMessagesToInputTopic(String inputTopicName, String value = "value-" + i; kvs.put(key, value); producer.newMessage() - .key(key) - .value(value) - .send(); + .key(key) + .value(value) + .send(); } return kvs; } @@ -286,7 +286,7 @@ public void testWindowFunction(String type, String[] expectedResults) throws Exc "--name", functionName ); - FunctionStatus functionStatus = FunctionStatus.decode(containerExecResult.getStdout()); + FunctionStatus functionStatus = FunctionStatusUtil.decode(containerExecResult.getStdout()); assertEquals(functionStatus.getNumInstances(), 1); assertEquals(functionStatus.getNumRunning(), 1); assertEquals(functionStatus.getInstances().size(), 1); @@ -461,7 +461,7 @@ protected void testFunctionNegAck(Runtime runtime) throws Exception { "--name", functionName ); - FunctionStatus functionStatus = FunctionStatus.decode(result.getStdout()); + FunctionStatus functionStatus = FunctionStatusUtil.decode(result.getStdout()); assertEquals(functionStatus.getNumInstances(), 1); assertEquals(functionStatus.getNumRunning(), 1); @@ -490,7 +490,7 @@ protected void testFunctionNegAck(Runtime runtime) throws Exception { log.info("FUNCTION STATS: {}", result.getStdout()); - FunctionStats functionStats = FunctionStats.decode(result.getStdout()); + FunctionStatsImpl functionStats = FunctionStatsImpl.decode(result.getStdout()); assertEquals(functionStats.getReceivedTotal(), numMessages + 2); assertEquals(functionStats.getProcessedSuccessfullyTotal(), numMessages); assertEquals(functionStats.getSystemExceptionsTotal(), 0); @@ -504,7 +504,7 @@ protected void testFunctionNegAck(Runtime runtime) throws Exception { assertEquals(functionStats.instances.get(0).getMetrics().getProcessedSuccessfullyTotal(), numMessages); assertEquals(functionStats.instances.get(0).getMetrics().getSystemExceptionsTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getUserExceptionsTotal(), 2); - assertTrue(functionStats.instances.get(0).getMetrics().avgProcessLatency > 0); + assertTrue(functionStats.instances.get(0).getMetrics().getAvgProcessLatency() > 0); // delete function deleteFunction(functionName); @@ -649,9 +649,9 @@ protected void testPublishFunction(Runtime runtime) throws Exception { } protected void testExclamationFunction(Runtime runtime, - boolean isTopicPattern, - boolean pyZip, - boolean withExtraDeps) throws Exception { + boolean isTopicPattern, + boolean pyZip, + boolean withExtraDeps) throws Exception { if (functionRuntimeType == FunctionRuntimeType.THREAD && runtime == Runtime.PYTHON) { // python can only run on process mode return; @@ -694,7 +694,7 @@ protected void testExclamationFunction(Runtime runtime, // submit the exclamation function submitExclamationFunction( - runtime, inputTopicName, outputTopicName, functionName, pyZip, withExtraDeps, schema); + runtime, inputTopicName, outputTopicName, functionName, pyZip, withExtraDeps, schema); // get function info getFunctionInfoSuccess(functionName); @@ -735,33 +735,33 @@ protected void testExclamationFunction(Runtime runtime, } private void submitExclamationFunction(Runtime runtime, - String inputTopicName, - String outputTopicName, - String functionName, - boolean pyZip, - boolean withExtraDeps, - Schema schema) throws Exception { - submitFunction( - runtime, - inputTopicName, - outputTopicName, - functionName, - pyZip, - withExtraDeps, - false, - getExclamationClass(runtime, pyZip, withExtraDeps), - schema); - } - - private void submitFunction(Runtime runtime, String inputTopicName, String outputTopicName, String functionName, boolean pyZip, boolean withExtraDeps, - boolean isPublishFunction, - String functionClass, - Schema inputTopicSchema) throws Exception { + Schema schema) throws Exception { + submitFunction( + runtime, + inputTopicName, + outputTopicName, + functionName, + pyZip, + withExtraDeps, + false, + getExclamationClass(runtime, pyZip, withExtraDeps), + schema); + } + + private void submitFunction(Runtime runtime, + String inputTopicName, + String outputTopicName, + String functionName, + boolean pyZip, + boolean withExtraDeps, + boolean isPublishFunction, + String functionClass, + Schema inputTopicSchema) throws Exception { String file = null; if (Runtime.JAVA == runtime) { @@ -782,12 +782,12 @@ private void submitFunction(Runtime runtime, } private void submitFunction(Runtime runtime, - String inputTopicName, - String outputTopicName, - String functionName, - String functionFile, - String functionClass, - Schema inputTopicSchema) throws Exception { + String inputTopicName, + String outputTopicName, + String functionName, + String functionFile, + String functionClass, + Schema inputTopicSchema) throws Exception { submitFunction(runtime, inputTopicName, outputTopicName, functionName, functionFile, functionClass, inputTopicSchema, null, null, null, null); } @@ -873,13 +873,13 @@ private void updateFunctionParallelism(String functionName, int parallelism) thr } protected void submitFunction(Runtime runtime, - String inputTopicName, - String outputTopicName, - String functionName, - String functionFile, - String functionClass, - String outputSerdeClassName, - Map userConfigs) throws Exception { + String inputTopicName, + String outputTopicName, + String functionName, + String functionFile, + String functionClass, + String outputSerdeClassName, + Map userConfigs) throws Exception { CommandGenerator generator; log.info("------- INPUT TOPIC: '{}'", inputTopicName); @@ -916,30 +916,30 @@ protected void submitFunction(Runtime runtime, } private void ensureSubscriptionCreated(String inputTopicName, - String subscriptionName, - Schema inputTopicSchema) + String subscriptionName, + Schema inputTopicSchema) throws Exception { // ensure the function subscription exists before we start producing messages try (PulsarClient client = PulsarClient.builder() - .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) - .build()) { + .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) + .build()) { try (Consumer ignored = client.newConsumer(inputTopicSchema) - .topic(inputTopicName) - .subscriptionType(SubscriptionType.Shared) - .subscriptionName(subscriptionName) - .subscribe()) { + .topic(inputTopicName) + .subscriptionType(SubscriptionType.Shared) + .subscriptionName(subscriptionName) + .subscribe()) { } } } protected void getFunctionInfoSuccess(String functionName) throws Exception { ContainerExecResult result = pulsarCluster.getAnyWorker().execCmd( - PulsarCluster.ADMIN_SCRIPT, - "functions", - "get", - "--tenant", "public", - "--namespace", "default", - "--name", functionName + PulsarCluster.ADMIN_SCRIPT, + "functions", + "get", + "--tenant", "public", + "--namespace", "default", + "--name", functionName ); log.info("FUNCTION STATE: {}", result.getStdout()); @@ -957,7 +957,7 @@ protected void getFunctionStatsEmpty(String functionName) throws Exception { ); log.info("FUNCTION STATS: {}", result.getStdout()); - FunctionStats functionStats = FunctionStats.decode(result.getStdout()); + FunctionStatsImpl functionStats = FunctionStatsImpl.decode(result.getStdout()); assertEquals(functionStats.getReceivedTotal(), 0); assertEquals(functionStats.getProcessedSuccessfullyTotal(), 0); @@ -978,12 +978,12 @@ protected void getFunctionStatsEmpty(String functionName) throws Exception { assertEquals(functionStats.instances.get(0).getMetrics().getProcessedSuccessfullyTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getSystemExceptionsTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getUserExceptionsTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().avgProcessLatency, null); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getReceivedTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getProcessedSuccessfullyTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getSystemExceptionsTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getUserExceptionsTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getAvgProcessLatency(), null); + assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), null); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getReceivedTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getProcessedSuccessfullyTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getSystemExceptionsTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getUserExceptionsTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getAvgProcessLatency(), null); } private void getFunctionStats(String functionName, int numMessages) throws Exception { @@ -998,7 +998,7 @@ private void getFunctionStats(String functionName, int numMessages) throws Excep log.info("FUNCTION STATS: {}", result.getStdout()); - FunctionStats functionStats = FunctionStats.decode(result.getStdout()); + FunctionStatsImpl functionStats = FunctionStatsImpl.decode(result.getStdout()); assertEquals(functionStats.getReceivedTotal(), numMessages); assertEquals(functionStats.getProcessedSuccessfullyTotal(), numMessages); assertEquals(functionStats.getSystemExceptionsTotal(), 0); @@ -1018,12 +1018,12 @@ private void getFunctionStats(String functionName, int numMessages) throws Excep assertEquals(functionStats.instances.get(0).getMetrics().getProcessedSuccessfullyTotal(), numMessages); assertEquals(functionStats.instances.get(0).getMetrics().getSystemExceptionsTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getUserExceptionsTotal(), 0); - assertTrue(functionStats.instances.get(0).getMetrics().avgProcessLatency > 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getReceivedTotal(), numMessages); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getProcessedSuccessfullyTotal(), numMessages); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getSystemExceptionsTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getUserExceptionsTotal(), 0); - assertTrue(functionStats.instances.get(0).getMetrics().oneMin.getAvgProcessLatency() > 0); + assertTrue(functionStats.instances.get(0).getMetrics().getAvgProcessLatency() > 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getReceivedTotal(), numMessages); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getProcessedSuccessfullyTotal(), numMessages); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getSystemExceptionsTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getUserExceptionsTotal(), 0); + assertTrue(functionStats.instances.get(0).getMetrics().getOneMin().getAvgProcessLatency() > 0); } private void getFunctionInfoNotFound(String functionName) throws Exception { @@ -1083,7 +1083,7 @@ private void getFunctionStatus(String functionName, int numMessages, boolean che } private void getFunctionStatus(String functionName, int numMessages, boolean checkRestarts, int parallelism) - throws Exception { + throws Exception { Awaitility.await() .pollInterval(Duration.ofSeconds(1)) .atMost(Duration.ofSeconds(15)) @@ -1095,15 +1095,15 @@ private void getFunctionStatus(String functionName, int numMessages, boolean che private void doGetFunctionStatus(String functionName, int numMessages, boolean checkRestarts, int parallelism) throws Exception { ContainerExecResult result = pulsarCluster.getAnyWorker().execCmd( - PulsarCluster.ADMIN_SCRIPT, - "functions", - "status", - "--tenant", "public", - "--namespace", "default", - "--name", functionName + PulsarCluster.ADMIN_SCRIPT, + "functions", + "status", + "--tenant", "public", + "--namespace", "default", + "--name", functionName ); - FunctionStatus functionStatus = FunctionStatus.decode(result.getStdout()); + FunctionStatus functionStatus = FunctionStatusUtil.decode(result.getStdout()); assertEquals(functionStatus.getNumInstances(), parallelism); assertEquals(functionStatus.getNumRunning(), parallelism); @@ -1137,17 +1137,17 @@ private void doGetFunctionStatus(String functionName, int numMessages, boolean c } private void publishAndConsumeMessages(String inputTopic, - String outputTopic, - int numMessages) throws Exception { + String outputTopic, + int numMessages) throws Exception { @Cleanup PulsarClient client = PulsarClient.builder() - .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) - .build(); + .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) + .build(); @Cleanup Consumer consumer = client.newConsumer(Schema.STRING) - .topic(outputTopic) - .subscriptionType(SubscriptionType.Exclusive) - .subscriptionName("test-sub") - .subscribe(); + .topic(outputTopic) + .subscriptionType(SubscriptionType.Exclusive) + .subscriptionName("test-sub") + .subscribe(); if (inputTopic.endsWith(".*")) { @Cleanup Producer producer1 = client.newProducer(Schema.STRING) @@ -1189,17 +1189,17 @@ private void publishAndConsumeMessages(String inputTopic, } private void publishAndConsumeMessagesBytes(String inputTopic, - String outputTopic, - int numMessages) throws Exception { + String outputTopic, + int numMessages) throws Exception { @Cleanup PulsarClient client = PulsarClient.builder() - .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) - .build(); + .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) + .build(); @Cleanup Consumer consumer = client.newConsumer(Schema.BYTES) - .topic(outputTopic) - .subscriptionType(SubscriptionType.Exclusive) - .subscriptionName("test-sub") - .subscribe(); + .topic(outputTopic) + .subscriptionType(SubscriptionType.Exclusive) + .subscriptionName("test-sub") + .subscribe(); if (inputTopic.endsWith(".*")) { @Cleanup Producer producer1 = client.newProducer(Schema.BYTES) @@ -1243,12 +1243,12 @@ private void publishAndConsumeMessagesBytes(String inputTopic, private void deleteFunction(String functionName) throws Exception { ContainerExecResult result = pulsarCluster.getAnyWorker().execCmd( - PulsarCluster.ADMIN_SCRIPT, - "functions", - "delete", - "--tenant", "public", - "--namespace", "default", - "--name", functionName + PulsarCluster.ADMIN_SCRIPT, + "functions", + "delete", + "--tenant", "public", + "--namespace", "default", + "--name", functionName ); assertTrue(result.getStdout().contains("Deleted successfully")); result.assertNoStderr(); @@ -1264,15 +1264,15 @@ public void testAutoSchemaFunction() throws Exception { // submit the exclamation function submitFunction( - Runtime.JAVA, - inputTopicName, - outputTopicName, - functionName, - false, - false, - false, - AutoSchemaFunction.class.getName(), - Schema.AVRO(CustomObject.class)); + Runtime.JAVA, + inputTopicName, + outputTopicName, + functionName, + false, + false, + false, + AutoSchemaFunction.class.getName(), + Schema.AVRO(CustomObject.class)); // get function info getFunctionInfoSuccess(functionName); @@ -1292,22 +1292,22 @@ public void testAutoSchemaFunction() throws Exception { } private void publishAndConsumeAvroMessages(String inputTopic, - String outputTopic, - int numMessages) throws Exception { + String outputTopic, + int numMessages) throws Exception { @Cleanup PulsarClient client = PulsarClient.builder() - .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) - .build(); + .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) + .build(); @Cleanup Consumer consumer = client.newConsumer(Schema.STRING) - .topic(outputTopic) - .subscriptionType(SubscriptionType.Exclusive) - .subscriptionName("test-sub") - .subscribe(); + .topic(outputTopic) + .subscriptionType(SubscriptionType.Exclusive) + .subscriptionName("test-sub") + .subscribe(); @Cleanup Producer producer = client.newProducer(Schema.AVRO(CustomObject.class)) - .topic(inputTopic) - .create(); + .topic(inputTopic) + .create(); for (int i = 0; i < numMessages; i++) { CustomObject co = new CustomObject(i); @@ -1492,9 +1492,9 @@ protected void testLoggingFunction(Runtime runtime) throws Exception { } private void submitJavaLoggingFunction(String inputTopicName, - String logTopicName, - String functionName, - Schema schema) throws Exception { + String logTopicName, + String functionName, + Schema schema) throws Exception { CommandGenerator generator; log.info("------- INPUT TOPIC: '{}'", inputTopicName); if (inputTopicName.endsWith(".*")) { @@ -1520,9 +1520,9 @@ private void submitJavaLoggingFunction(String inputTopicName, } private void publishAndConsumeMessages(String inputTopic, - String outputTopic, - int numMessages, - String messagePostfix) throws Exception { + String outputTopic, + int numMessages, + String messagePostfix) throws Exception { @Cleanup PulsarClient client = PulsarClient.builder() .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) .build(); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/java/PulsarFunctionsJavaTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/java/PulsarFunctionsJavaTest.java index 466942da43a9d..2b7239fa234bb 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/java/PulsarFunctionsJavaTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/java/PulsarFunctionsJavaTest.java @@ -24,6 +24,7 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.common.policies.data.FunctionStatus; +import org.apache.pulsar.common.policies.data.FunctionStatusUtil; import org.apache.pulsar.tests.integration.docker.ContainerExecResult; import org.apache.pulsar.tests.integration.functions.PulsarFunctionsTest; import org.apache.pulsar.tests.integration.functions.utils.CommandGenerator.Runtime; @@ -89,7 +90,7 @@ private void testCustomSerdeFunction() throws Exception { "--name", functionName ); - FunctionStatus functionStatus = FunctionStatus.decode(result.getStdout()); + FunctionStatus functionStatus = FunctionStatusUtil.decode(result.getStdout()); assertEquals(functionStatus.getNumInstances(), 1); assertEquals(functionStatus.getInstances().get(0).getStatus().isRunning(), true); } diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sinks/PulsarIOSinkRunner.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sinks/PulsarIOSinkRunner.java index bde324c46e494..92890cdd7d4dd 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sinks/PulsarIOSinkRunner.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sinks/PulsarIOSinkRunner.java @@ -32,6 +32,7 @@ import org.apache.pulsar.client.impl.schema.AvroSchema; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.SinkStatus; +import org.apache.pulsar.common.policies.data.SinkStatusUtil; import org.apache.pulsar.tests.integration.docker.ContainerExecException; import org.apache.pulsar.tests.integration.docker.ContainerExecResult; import org.apache.pulsar.tests.integration.io.PulsarIOTestRunner; @@ -253,7 +254,7 @@ protected void getSinkStatus(String tenant, String namespace, String sinkName) t assertEquals(result.getExitCode(), 0); - SinkStatus sinkStatus = SinkStatus.decode(result.getStdout()); + SinkStatus sinkStatus = SinkStatusUtil.decode(result.getStdout()); assertEquals(sinkStatus.getNumInstances(), 1); assertEquals(sinkStatus.getNumRunning(), 1); @@ -318,7 +319,7 @@ protected void waitForProcessingSinkMessages(String tenant, assertEquals(result.getExitCode(), 0); - final SinkStatus sinkStatus = SinkStatus.decode(result.getStdout()); + final SinkStatus sinkStatus = SinkStatusUtil.decode(result.getStdout()); assertEquals(sinkStatus.getNumInstances(), 1); assertEquals(sinkStatus.getNumRunning(), 1); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/AvroKafkaSourceTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/AvroKafkaSourceTest.java index 52cade8500f23..256c49e467af4 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/AvroKafkaSourceTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/AvroKafkaSourceTest.java @@ -35,6 +35,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.api.schema.Field; import org.apache.pulsar.client.api.schema.GenericRecord; +import org.apache.pulsar.common.policies.data.SourceStatusUtil; import org.apache.pulsar.tests.integration.docker.ContainerExecException; import org.apache.pulsar.tests.integration.docker.ContainerExecResult; import org.apache.pulsar.tests.integration.functions.PulsarFunctionsTestBase; @@ -296,7 +297,7 @@ protected void getSourceStatus(String tenant, String namespace, String sourceNam assertEquals(result.getExitCode(), 0); - final SourceStatus sourceStatus = SourceStatus.decode(result.getStdout()); + final SourceStatus sourceStatus = SourceStatusUtil.decode(result.getStdout()); assertEquals(sourceStatus.getNumInstances(), 1); assertEquals(sourceStatus.getNumRunning(), 1); @@ -413,7 +414,7 @@ protected void waitForProcessingSourceMessages(String tenant, assertEquals(result.getExitCode(), 0); - SourceStatus sourceStatus = SourceStatus.decode(result.getStdout()); + SourceStatus sourceStatus = SourceStatusUtil.decode(result.getStdout()); assertEquals(sourceStatus.getNumInstances(), 1); assertEquals(sourceStatus.getNumRunning(), 1); assertEquals(sourceStatus.getInstances().size(), 1); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/PulsarIOSourceRunner.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/PulsarIOSourceRunner.java index e99be1157b765..68e80fd644727 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/PulsarIOSourceRunner.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/PulsarIOSourceRunner.java @@ -33,6 +33,7 @@ import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.SourceStatus; +import org.apache.pulsar.common.policies.data.SourceStatusUtil; import org.apache.pulsar.tests.integration.docker.ContainerExecException; import org.apache.pulsar.tests.integration.docker.ContainerExecResult; import org.apache.pulsar.tests.integration.io.PulsarIOTestRunner; @@ -203,7 +204,7 @@ protected void getSourceStatus(String tenant, String namespace, String sourceNam assertEquals(result.getExitCode(), 0); - final SourceStatus sourceStatus = SourceStatus.decode(result.getStdout()); + final SourceStatus sourceStatus = SourceStatusUtil.decode(result.getStdout()); assertEquals(sourceStatus.getNumInstances(), 1); assertEquals(sourceStatus.getNumRunning(), 1); @@ -243,7 +244,7 @@ protected void waitForProcessingSourceMessages(String tenant, assertEquals(result.getExitCode(), 0); - SourceStatus sourceStatus = SourceStatus.decode(result.getStdout()); + SourceStatus sourceStatus = SourceStatusUtil.decode(result.getStdout()); assertEquals(sourceStatus.getNumInstances(), 1); assertEquals(sourceStatus.getNumRunning(), 1); assertEquals(sourceStatus.getInstances().size(), 1); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/debezium/PulsarDebeziumSourcesTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/debezium/PulsarDebeziumSourcesTest.java index 2dd59242e8450..56dbe38a27fc8 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/debezium/PulsarDebeziumSourcesTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/debezium/PulsarDebeziumSourcesTest.java @@ -23,7 +23,7 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.tests.integration.containers.DebeziumMongoDbContainer; import org.apache.pulsar.tests.integration.containers.DebeziumMySQLContainer; @@ -191,7 +191,7 @@ private void testDebeziumMongoDbConnect(String converterClassName, boolean jsonW protected void initNamespace(PulsarAdmin admin) { log.info("[initNamespace] start."); try { - admin.tenants().createTenant("debezium", new TenantInfo(Sets.newHashSet(), + admin.tenants().createTenant("debezium", new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace("debezium/mysql-json"); admin.namespaces().createNamespace("debezium/mysql-avro"); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxy.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxy.java index 4970aed5f6402..38a5bb67348ee 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxy.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxy.java @@ -26,7 +26,7 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.Schema; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.tests.integration.suites.PulsarTestSuite; import org.apache.pulsar.tests.integration.topologies.PulsarClusterSpec; @@ -58,7 +58,7 @@ private void testProxy(String serviceUrl, String httpServiceUrl) throws Exceptio .build(); admin.tenants().createTenant(tenant, - new TenantInfo(Collections.emptySet(), Collections.singleton(pulsarCluster.getClusterName()))); + new TenantInfoImpl(Collections.emptySet(), Collections.singleton(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace(namespace, Collections.singleton(pulsarCluster.getClusterName())); @@ -110,7 +110,7 @@ public void testProxyRequestBodyRedirect() throws Exception { .build(); admin.tenants().createTenant(tenant, - new TenantInfo(Collections.emptySet(), Collections.singleton(pulsarCluster.getClusterName()))); + new TenantInfoImpl(Collections.emptySet(), Collections.singleton(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace(namespace, Collections.singleton(pulsarCluster.getClusterName())); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxyWithWebSocket.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxyWithWebSocket.java index ca4cf51fc7878..0ea9c3c6e3cbb 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxyWithWebSocket.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxyWithWebSocket.java @@ -20,7 +20,7 @@ import lombok.Cleanup; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.tests.integration.containers.CSContainer; import org.apache.pulsar.tests.integration.containers.ProxyContainer; import org.apache.pulsar.tests.integration.suites.PulsarTestSuite; @@ -43,7 +43,6 @@ import java.util.Queue; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; import static org.apache.pulsar.tests.integration.containers.PulsarContainer.CS_PORT; @@ -75,7 +74,7 @@ public void testWebSocket() throws Exception { .build(); admin.tenants().createTenant(tenant, - new TenantInfo(Collections.emptySet(), Collections.singleton(pulsarCluster.getClusterName()))); + new TenantInfoImpl(Collections.emptySet(), Collections.singleton(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace(namespace, Collections.singleton(pulsarCluster.getClusterName())); diff --git a/tests/pulsar-client-admin-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java b/tests/pulsar-client-admin-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java index a960951e7f112..b8bb95c438e2e 100644 --- a/tests/pulsar-client-admin-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java +++ b/tests/pulsar-client-admin-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java @@ -20,7 +20,6 @@ import lombok.Cleanup; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.*; import org.apache.pulsar.client.impl.MessageImpl; import org.apache.pulsar.client.impl.TopicMessageImpl; @@ -30,7 +29,7 @@ import org.apache.pulsar.common.api.proto.SingleMessageMetadata; import org.apache.pulsar.common.compression.CompressionCodec; import org.apache.pulsar.common.compression.CompressionCodecProvider; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.shade.io.netty.buffer.ByteBuf; import org.apache.pulsar.shade.io.netty.buffer.Unpooled; @@ -44,7 +43,6 @@ import java.io.IOException; import java.net.URI; -import java.net.URISyntaxException; import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Paths; @@ -83,7 +81,7 @@ public void setup() throws Exception { @Cleanup PulsarAdmin admin = PulsarAdmin.builder().serviceHttpUrl(pulsarContainer.getPulsarAdminUrl()).build(); admin.tenants().createTenant("my-property", - new TenantInfo(new HashSet<>(Arrays.asList("appid1", "appid2")), Collections.singleton("standalone"))); + new TenantInfoImpl(new HashSet<>(Arrays.asList("appid1", "appid2")), Collections.singleton("standalone"))); admin.namespaces().createNamespace("my-property/my-ns"); admin.namespaces().setNamespaceReplicationClusters("my-property/my-ns", Collections.singleton("standalone")); } diff --git a/tests/pulsar-client-all-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java b/tests/pulsar-client-all-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java index 92c6bfd1f9f1d..5153c56946529 100644 --- a/tests/pulsar-client-all-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java +++ b/tests/pulsar-client-all-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java @@ -20,18 +20,16 @@ import lombok.Cleanup; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.*; import org.apache.pulsar.client.impl.MessageImpl; import org.apache.pulsar.client.impl.TopicMessageImpl; import org.apache.pulsar.client.impl.crypto.MessageCryptoBc; import org.apache.pulsar.common.api.EncryptionContext; -import org.apache.pulsar.common.api.proto.EncryptionKeys; import org.apache.pulsar.common.api.proto.MessageMetadata; import org.apache.pulsar.common.api.proto.SingleMessageMetadata; import org.apache.pulsar.common.compression.CompressionCodec; import org.apache.pulsar.common.compression.CompressionCodecProvider; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.shade.io.netty.buffer.ByteBuf; import org.apache.pulsar.shade.io.netty.buffer.Unpooled; @@ -45,7 +43,6 @@ import java.io.IOException; import java.net.URI; -import java.net.URISyntaxException; import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Paths; @@ -78,7 +75,7 @@ public void setup() throws Exception { @Cleanup PulsarAdmin admin = PulsarAdmin.builder().serviceHttpUrl(pulsarContainer.getPulsarAdminUrl()).build(); admin.tenants().createTenant("my-property", - new TenantInfo(new HashSet<>(Arrays.asList("appid1", "appid2")), Collections.singleton("standalone"))); + new TenantInfoImpl(new HashSet<>(Arrays.asList("appid1", "appid2")), Collections.singleton("standalone"))); admin.namespaces().createNamespace("my-property/my-ns"); admin.namespaces().setNamespaceReplicationClusters("my-property/my-ns", Collections.singleton("standalone")); } diff --git a/tests/pulsar-client-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java b/tests/pulsar-client-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java index f1a77cd1df55c..51ce5f3e40edf 100644 --- a/tests/pulsar-client-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java +++ b/tests/pulsar-client-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java @@ -20,7 +20,6 @@ import lombok.Cleanup; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.*; import org.apache.pulsar.client.impl.MessageImpl; import org.apache.pulsar.client.impl.TopicMessageImpl; @@ -30,7 +29,7 @@ import org.apache.pulsar.common.api.proto.SingleMessageMetadata; import org.apache.pulsar.common.compression.CompressionCodec; import org.apache.pulsar.common.compression.CompressionCodecProvider; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.shade.io.netty.buffer.ByteBuf; import org.apache.pulsar.shade.io.netty.buffer.Unpooled; @@ -44,7 +43,6 @@ import java.io.IOException; import java.net.URI; -import java.net.URISyntaxException; import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Paths; @@ -81,7 +79,7 @@ public void setup() throws Exception { PulsarAdmin admin = PulsarAdmin.builder().serviceHttpUrl(pulsarContainer.getPulsarAdminUrl()).build(); admin.tenants().createTenant("my-property", - new TenantInfo(new HashSet<>(Arrays.asList("appid1", "appid2")), Collections.singleton("standalone"))); + new TenantInfoImpl(new HashSet<>(Arrays.asList("appid1", "appid2")), Collections.singleton("standalone"))); admin.namespaces().createNamespace("my-property/my-ns"); admin.namespaces().setNamespaceReplicationClusters("my-property/my-ns", Collections.singleton("standalone")); admin.close(); diff --git a/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java b/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java index cf86f38e1bedb..555e1428ac02a 100644 --- a/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java +++ b/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java @@ -21,11 +21,10 @@ import org.apache.bookkeeper.common.util.OrderedScheduler; import org.apache.bookkeeper.mledger.LedgerOffloaderFactory; import org.apache.bookkeeper.mledger.offload.filesystem.impl.FileSystemManagedLedgerOffloader; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import java.io.IOException; import java.util.Map; -import java.util.Properties; public class FileSystemLedgerOffloaderFactory implements LedgerOffloaderFactory { @Override @@ -34,8 +33,8 @@ public boolean isDriverSupported(String driverName) { } @Override - public FileSystemManagedLedgerOffloader create(OffloadPolicies offloadPolicies, - Map userMetadata, OrderedScheduler scheduler) throws IOException { + public FileSystemManagedLedgerOffloader create(OffloadPoliciesImpl offloadPolicies, + Map userMetadata, OrderedScheduler scheduler) throws IOException { return FileSystemManagedLedgerOffloader.create(offloadPolicies, scheduler); } } diff --git a/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/impl/FileSystemManagedLedgerOffloader.java b/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/impl/FileSystemManagedLedgerOffloader.java index 5438459c43a56..922332b845911 100644 --- a/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/impl/FileSystemManagedLedgerOffloader.java +++ b/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/impl/FileSystemManagedLedgerOffloader.java @@ -34,7 +34,7 @@ import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.MapFile; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,7 +65,7 @@ public class FileSystemManagedLedgerOffloader implements LedgerOffloader { private OrderedScheduler scheduler; private static final long ENTRIES_PER_READ = 100; private OrderedScheduler assignmentScheduler; - private OffloadPolicies offloadPolicies; + private OffloadPoliciesImpl offloadPolicies; public static boolean driverSupported(String driver) { return DRIVER_NAMES.equals(driver); @@ -76,11 +76,11 @@ public String getOffloadDriverName() { return driverName; } - public static FileSystemManagedLedgerOffloader create(OffloadPolicies conf, OrderedScheduler scheduler) throws IOException { + public static FileSystemManagedLedgerOffloader create(OffloadPoliciesImpl conf, OrderedScheduler scheduler) throws IOException { return new FileSystemManagedLedgerOffloader(conf, scheduler); } - private FileSystemManagedLedgerOffloader(OffloadPolicies conf, OrderedScheduler scheduler) throws IOException { + private FileSystemManagedLedgerOffloader(OffloadPoliciesImpl conf, OrderedScheduler scheduler) throws IOException { this.offloadPolicies = conf; this.configuration = new Configuration(); if (conf.getFileSystemProfilePath() != null) { @@ -111,7 +111,7 @@ private FileSystemManagedLedgerOffloader(OffloadPolicies conf, OrderedScheduler } @VisibleForTesting - public FileSystemManagedLedgerOffloader(OffloadPolicies conf, OrderedScheduler scheduler, String testHDFSPath, String baseDir) throws IOException { + public FileSystemManagedLedgerOffloader(OffloadPoliciesImpl conf, OrderedScheduler scheduler, String testHDFSPath, String baseDir) throws IOException { this.offloadPolicies = conf; this.configuration = new Configuration(); this.configuration.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem"); @@ -341,7 +341,7 @@ public CompletableFuture deleteOffloaded(long ledgerId, UUID uid, Map userMetadata, - OrderedScheduler scheduler) throws IOException { + public BlobStoreManagedLedgerOffloader create(OffloadPoliciesImpl offloadPolicies, Map userMetadata, + OrderedScheduler scheduler) throws IOException { TieredStorageConfiguration config = TieredStorageConfiguration.create(offloadPolicies.toProperties()); diff --git a/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java b/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java index c76864d9ae8ea..f9c86fd2967cd 100644 --- a/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java +++ b/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java @@ -55,7 +55,7 @@ import org.apache.bookkeeper.mledger.offload.jcloud.provider.BlobStoreLocation; import org.apache.bookkeeper.mledger.offload.jcloud.provider.TieredStorageConfiguration; import org.apache.bookkeeper.mledger.proto.MLDataFormats; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.jclouds.blobstore.BlobStore; import org.jclouds.blobstore.domain.Blob; import org.jclouds.blobstore.domain.BlobBuilder; @@ -595,10 +595,10 @@ public CompletableFuture deleteOffloaded(UUID uid, Map off } @Override - public OffloadPolicies getOffloadPolicies() { + public OffloadPoliciesImpl getOffloadPolicies() { Properties properties = new Properties(); properties.putAll(config.getConfigProperties()); - return OffloadPolicies.create(properties); + return OffloadPoliciesImpl.create(properties); } @Override