diff --git a/extension/persistence/eclipselink/src/main/java/io/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkMetaStoreSessionImpl.java b/extension/persistence/eclipselink/src/main/java/io/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkMetaStoreSessionImpl.java index 43a78436f2..e1f7bec833 100644 --- a/extension/persistence/eclipselink/src/main/java/io/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkMetaStoreSessionImpl.java +++ b/extension/persistence/eclipselink/src/main/java/io/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkMetaStoreSessionImpl.java @@ -76,8 +76,8 @@ public class PolarisEclipseLinkMetaStoreSessionImpl implements PolarisMetaStoreS private static final Logger LOG = LoggerFactory.getLogger(PolarisEclipseLinkMetaStoreSessionImpl.class); - private EntityManagerFactory emf; - private ThreadLocal localSession = new ThreadLocal<>(); + private final EntityManagerFactory emf; + private final ThreadLocal localSession = new ThreadLocal<>(); private final PolarisEclipseLinkStore store; private final PolarisStorageIntegrationProvider storageIntegrationProvider; private static volatile Map properties; @@ -119,8 +119,8 @@ public PolarisEclipseLinkMetaStoreSessionImpl( /** Load the persistence unit properties from a given configuration file */ private Map loadProperties(String confFile, String persistenceUnitName) { - if (this.properties != null) { - return this.properties; + if (properties != null) { + return properties; } try { @@ -141,7 +141,7 @@ private Map loadProperties(String confFile, String persistenceUn nodeMap.getNamedItem("value").getNodeValue()); } - this.properties = properties; + PolarisEclipseLinkMetaStoreSessionImpl.properties = properties; return properties; } catch (Exception e) { LOG.warn( @@ -262,10 +262,10 @@ public void writeToEntities( /** {@inheritDoc} */ @Override - public void persistStorageIntegrationIfNeeded( + public void persistStorageIntegrationIfNeeded( @NotNull PolarisCallContext callContext, @NotNull PolarisBaseEntity entity, - @Nullable PolarisStorageIntegration storageIntegration) { + @Nullable PolarisStorageIntegration storageIntegration) { // not implemented for eclipselink store } @@ -373,7 +373,7 @@ public void deleteAll(@NotNull PolarisCallContext callCtx) { public @NotNull List lookupEntities( @NotNull PolarisCallContext callCtx, List entityIds) { return this.store.lookupEntities(localSession.get(), entityIds).stream() - .map(model -> ModelEntity.toEntity(model)) + .map(ModelEntity::toEntity) .toList(); } @@ -477,7 +477,7 @@ public List lookupEntityActiveBatch( return this.store .lookupFullEntitiesActive(localSession.get(), catalogId, parentId, entityType) .stream() - .map(model -> ModelEntity.toEntity(model)) + .map(ModelEntity::toEntity) .filter(entityFilter) .limit(limit) .map(transformer) @@ -534,7 +534,7 @@ public int lookupEntityGrantRecordsVersion( return this.store .lookupAllGrantRecordsOnSecurable(localSession.get(), securableCatalogId, securableId) .stream() - .map(model -> ModelGrantRecord.toGrantRecord(model)) + .map(ModelGrantRecord::toGrantRecord) .toList(); } @@ -546,7 +546,7 @@ public int lookupEntityGrantRecordsVersion( return this.store .lookupGrantRecordsOnGrantee(localSession.get(), granteeCatalogId, granteeId) .stream() - .map(model -> ModelGrantRecord.toGrantRecord(model)) + .map(ModelGrantRecord::toGrantRecord) .toList(); } diff --git a/extension/persistence/eclipselink/src/main/java/io/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkStore.java b/extension/persistence/eclipselink/src/main/java/io/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkStore.java index a4a880894d..fd50bdcdfb 100644 --- a/extension/persistence/eclipselink/src/main/java/io/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkStore.java +++ b/extension/persistence/eclipselink/src/main/java/io/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkStore.java @@ -48,7 +48,7 @@ public class PolarisEclipseLinkStore { private static final Logger LOG = LoggerFactory.getLogger(PolarisEclipseLinkStore.class); // diagnostic services - private PolarisDiagnostics diagnosticServices; + private final PolarisDiagnostics diagnosticServices; /** * Constructor, allocate everything at once diff --git a/polaris-core/src/main/java/io/polaris/core/auth/AuthenticatedPolarisPrincipal.java b/polaris-core/src/main/java/io/polaris/core/auth/AuthenticatedPolarisPrincipal.java index d40149660d..b934c96a3a 100644 --- a/polaris-core/src/main/java/io/polaris/core/auth/AuthenticatedPolarisPrincipal.java +++ b/polaris-core/src/main/java/io/polaris/core/auth/AuthenticatedPolarisPrincipal.java @@ -59,10 +59,11 @@ public void setActivatedPrincipalRoles(List activatedPrinci @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("principalEntity=" + getPrincipalEntity()); - sb.append(";activatedPrincipalRoleNames=" + getActivatedPrincipalRoleNames()); - sb.append(";activatedPrincipalRoles=" + getActivatedPrincipalRoles()); - return sb.toString(); + return "principalEntity=" + + getPrincipalEntity() + + ";activatedPrincipalRoleNames=" + + getActivatedPrincipalRoleNames() + + ";activatedPrincipalRoles=" + + getActivatedPrincipalRoles(); } } diff --git a/polaris-core/src/main/java/io/polaris/core/catalog/PolarisCatalogHelpers.java b/polaris-core/src/main/java/io/polaris/core/catalog/PolarisCatalogHelpers.java index cf3e94052d..79a56a9830 100644 --- a/polaris-core/src/main/java/io/polaris/core/catalog/PolarisCatalogHelpers.java +++ b/polaris-core/src/main/java/io/polaris/core/catalog/PolarisCatalogHelpers.java @@ -15,6 +15,7 @@ */ package io.polaris.core.catalog; +import com.google.common.collect.ImmutableList; import io.polaris.core.entity.PolarisEntity; import java.util.ArrayList; import java.util.Arrays; @@ -36,10 +37,11 @@ public class PolarisCatalogHelpers { private PolarisCatalogHelpers() {} public static List tableIdentifierToList(TableIdentifier identifier) { - List fullList = new ArrayList<>(); + ImmutableList.Builder fullList = + ImmutableList.builderWithExpectedSize(identifier.namespace().length() + 1); fullList.addAll(Arrays.asList(identifier.namespace().levels())); fullList.add(identifier.name()); - return fullList; + return fullList.build(); } public static TableIdentifier listToTableIdentifier(List ids) { diff --git a/polaris-core/src/main/java/io/polaris/core/context/CallContext.java b/polaris-core/src/main/java/io/polaris/core/context/CallContext.java index 5db40521c2..951bd3346a 100644 --- a/polaris-core/src/main/java/io/polaris/core/context/CallContext.java +++ b/polaris-core/src/main/java/io/polaris/core/context/CallContext.java @@ -40,7 +40,7 @@ public interface CallContext extends AutoCloseable { // For requests that make use of a Catalog instance, this holds the instance that was // created, scoped to the current call context. - public static final String REQUEST_PATH_CATALOG_INSTANCE_KEY = "REQUEST_PATH_CATALOG_INSTANCE"; + String REQUEST_PATH_CATALOG_INSTANCE_KEY = "REQUEST_PATH_CATALOG_INSTANCE"; // Authenticator filters should populate this field alongside resolving a SecurityContext. // Value type: AuthenticatedPolarisPrincipal diff --git a/polaris-core/src/main/java/io/polaris/core/entity/PolarisEntity.java b/polaris-core/src/main/java/io/polaris/core/entity/PolarisEntity.java index 9dbf8b97d9..031deb0b6b 100644 --- a/polaris-core/src/main/java/io/polaris/core/entity/PolarisEntity.java +++ b/polaris-core/src/main/java/io/polaris/core/entity/PolarisEntity.java @@ -203,15 +203,20 @@ public NameAndId nameAndId() { @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("name=" + getName()); - sb.append(";id=" + getId()); - sb.append(";parentId=" + getParentId()); - sb.append(";entityVersion=" + getEntityVersion()); - sb.append(";type=" + getType()); - sb.append(";subType=" + getSubType()); - sb.append(";internalProperties=" + getInternalPropertiesAsMap()); - return sb.toString(); + return "name=" + + getName() + + ";id=" + + getId() + + ";parentId=" + + getParentId() + + ";entityVersion=" + + getEntityVersion() + + ";type=" + + getType() + + ";subType=" + + getSubType() + + ";internalProperties=" + + getInternalPropertiesAsMap(); } @Override diff --git a/polaris-core/src/main/java/io/polaris/core/persistence/LocalPolarisMetaStoreManagerFactory.java b/polaris-core/src/main/java/io/polaris/core/persistence/LocalPolarisMetaStoreManagerFactory.java index 08c9590a4a..871cd47f98 100644 --- a/polaris-core/src/main/java/io/polaris/core/persistence/LocalPolarisMetaStoreManagerFactory.java +++ b/polaris-core/src/main/java/io/polaris/core/persistence/LocalPolarisMetaStoreManagerFactory.java @@ -43,15 +43,15 @@ public abstract class LocalPolarisMetaStoreManagerFactory implements MetaStoreManagerFactory { - Map metaStoreManagerMap = new HashMap<>(); - Map storageCredentialCacheMap = new HashMap<>(); - Map backingStoreMap = new HashMap<>(); - Map> sessionSupplierMap = new HashMap<>(); - protected PolarisDiagnostics diagServices = new PolarisDefaultDiagServiceImpl(); + final Map metaStoreManagerMap = new HashMap<>(); + final Map storageCredentialCacheMap = new HashMap<>(); + final Map backingStoreMap = new HashMap<>(); + final Map> sessionSupplierMap = new HashMap<>(); + protected final PolarisDiagnostics diagServices = new PolarisDefaultDiagServiceImpl(); protected PolarisStorageIntegrationProvider storageIntegration; - private Logger logger = + private final Logger logger = org.slf4j.LoggerFactory.getLogger(LocalPolarisMetaStoreManagerFactory.class); protected abstract StoreType createBackingStore(@NotNull PolarisDiagnostics diagnostics); diff --git a/polaris-core/src/main/java/io/polaris/core/persistence/PolarisObjectMapperUtil.java b/polaris-core/src/main/java/io/polaris/core/persistence/PolarisObjectMapperUtil.java index 35a3f05d56..cd618bf685 100644 --- a/polaris-core/src/main/java/io/polaris/core/persistence/PolarisObjectMapperUtil.java +++ b/polaris-core/src/main/java/io/polaris/core/persistence/PolarisObjectMapperUtil.java @@ -150,20 +150,25 @@ public int getAttemptCount() { while (jParser.nextToken() != JsonToken.END_OBJECT) { if (jParser.getCurrentToken() == JsonToken.FIELD_NAME) { String fieldName = jParser.currentName(); - if (fieldName.equals(PolarisTaskConstants.LAST_ATTEMPT_EXECUTOR_ID)) { - jParser.nextToken(); - executorId = jParser.getText(); - } else if (fieldName.equals(PolarisTaskConstants.LAST_ATTEMPT_START_TIME)) { - jParser.nextToken(); - lastAttemptStartTime = Long.parseLong(jParser.getText()); - } else if (fieldName.equals(PolarisTaskConstants.ATTEMPT_COUNT)) { - jParser.nextToken(); - attemptCount = Integer.parseInt(jParser.getText()); - } else { - JsonToken next = jParser.nextToken(); - if (next == JsonToken.START_OBJECT || next == JsonToken.START_ARRAY) { - jParser.skipChildren(); - } + switch (fieldName) { + case PolarisTaskConstants.LAST_ATTEMPT_EXECUTOR_ID: + jParser.nextToken(); + executorId = jParser.getText(); + break; + case PolarisTaskConstants.LAST_ATTEMPT_START_TIME: + jParser.nextToken(); + lastAttemptStartTime = Long.parseLong(jParser.getText()); + break; + case PolarisTaskConstants.ATTEMPT_COUNT: + jParser.nextToken(); + attemptCount = Integer.parseInt(jParser.getText()); + break; + default: + JsonToken next = jParser.nextToken(); + if (next == JsonToken.START_OBJECT || next == JsonToken.START_ARRAY) { + jParser.skipChildren(); + } + break; } } } diff --git a/polaris-core/src/main/java/io/polaris/core/persistence/PolarisResolvedPathWrapper.java b/polaris-core/src/main/java/io/polaris/core/persistence/PolarisResolvedPathWrapper.java index cf3e99c49e..8ad61de889 100644 --- a/polaris-core/src/main/java/io/polaris/core/persistence/PolarisResolvedPathWrapper.java +++ b/polaris-core/src/main/java/io/polaris/core/persistence/PolarisResolvedPathWrapper.java @@ -54,7 +54,7 @@ public List getRawFullPath() { if (resolvedPath == null) { return null; } - return resolvedPath.stream().map(resolved -> resolved.getEntity()).toList(); + return resolvedPath.stream().map(ResolvedPolarisEntity::getEntity).toList(); } public List getResolvedParentPath() { @@ -68,14 +68,11 @@ public List getRawParentPath() { if (resolvedPath == null) { return null; } - return getResolvedParentPath().stream().map(resolved -> resolved.getEntity()).toList(); + return getResolvedParentPath().stream().map(ResolvedPolarisEntity::getEntity).toList(); } @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("resolvedPath:"); - sb.append(resolvedPath); - return sb.toString(); + return "resolvedPath:" + resolvedPath; } } diff --git a/polaris-core/src/main/java/io/polaris/core/persistence/PolarisTreeMapMetaStoreSessionImpl.java b/polaris-core/src/main/java/io/polaris/core/persistence/PolarisTreeMapMetaStoreSessionImpl.java index 8374fab262..d4594693a0 100644 --- a/polaris-core/src/main/java/io/polaris/core/persistence/PolarisTreeMapMetaStoreSessionImpl.java +++ b/polaris-core/src/main/java/io/polaris/core/persistence/PolarisTreeMapMetaStoreSessionImpl.java @@ -104,10 +104,10 @@ public void writeToEntities( /** {@inheritDoc} */ @Override - public void persistStorageIntegrationIfNeeded( + public void persistStorageIntegrationIfNeeded( @NotNull PolarisCallContext callContext, @NotNull PolarisBaseEntity entity, - @Nullable PolarisStorageIntegration storageIntegration) { + @Nullable PolarisStorageIntegration storageIntegration) { // not implemented for in-memory store } diff --git a/polaris-core/src/main/java/io/polaris/core/persistence/ResolvedPolarisEntity.java b/polaris-core/src/main/java/io/polaris/core/persistence/ResolvedPolarisEntity.java index f5b5c674c5..55f80ba0bf 100644 --- a/polaris-core/src/main/java/io/polaris/core/persistence/ResolvedPolarisEntity.java +++ b/polaris-core/src/main/java/io/polaris/core/persistence/ResolvedPolarisEntity.java @@ -66,13 +66,11 @@ public List getGrantRecordsAsSecurable() { @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("entity:"); - sb.append(entity); - sb.append(";grantRecordsAsGrantee:"); - sb.append(grantRecordsAsGrantee); - sb.append(";grantRecordsAsSecurable:"); - sb.append(grantRecordsAsSecurable); - return sb.toString(); + return "entity:" + + entity + + ";grantRecordsAsGrantee:" + + grantRecordsAsGrantee + + ";grantRecordsAsSecurable:" + + grantRecordsAsSecurable; } } diff --git a/polaris-core/src/main/java/io/polaris/core/persistence/cache/EntityCacheEntry.java b/polaris-core/src/main/java/io/polaris/core/persistence/cache/EntityCacheEntry.java index 294d835b74..e27ed12593 100644 --- a/polaris-core/src/main/java/io/polaris/core/persistence/cache/EntityCacheEntry.java +++ b/polaris-core/src/main/java/io/polaris/core/persistence/cache/EntityCacheEntry.java @@ -26,20 +26,20 @@ public class EntityCacheEntry { // epoch time (ns) when the cache entry was added to the cache - private long createdOnNanoTimestamp; + private final long createdOnNanoTimestamp; // epoch time (ns) when the cache entry was added to the cache private long lastAccessedNanoTimestamp; // the entity which have been cached. - private PolarisBaseEntity entity; + private final PolarisBaseEntity entity; // grants associated to this entity, for a principal, a principal role, or a catalog role these // are role usage // grants on that entity. For a catalog securable (i.e. a catalog, namespace, or table_like // securable), these are // the grants on this securable. - private List grantRecords; + private final List grantRecords; /** * Constructor used when an entry is initially created after loading the entity and its grants diff --git a/polaris-core/src/main/java/io/polaris/core/persistence/resolver/PolarisResolutionManifest.java b/polaris-core/src/main/java/io/polaris/core/persistence/resolver/PolarisResolutionManifest.java index 7c50039411..5b996dc668 100644 --- a/polaris-core/src/main/java/io/polaris/core/persistence/resolver/PolarisResolutionManifest.java +++ b/polaris-core/src/main/java/io/polaris/core/persistence/resolver/PolarisResolutionManifest.java @@ -215,8 +215,7 @@ public PolarisResolvedPathWrapper getPassthroughResolvedPath(Object key) { List resolvedEntities = new ArrayList<>(); resolvedEntities.add( new ResolvedPolarisEntity(passthroughResolver.getResolvedReferenceCatalog())); - resolvedPath.stream() - .forEach(cacheEntry -> resolvedEntities.add(new ResolvedPolarisEntity(cacheEntry))); + resolvedPath.forEach(cacheEntry -> resolvedEntities.add(new ResolvedPolarisEntity(cacheEntry))); LOG.debug("Returning resolvedEntities from getPassthroughResolvedPath: {}", resolvedEntities); return new PolarisResolvedPathWrapper(resolvedEntities); } @@ -320,7 +319,7 @@ public PolarisEntitySubType getLeafSubType(Object key) { pathLookup); int index = pathLookup.get(key); List resolved = primaryResolver.getResolvedPaths().get(index); - if (resolved.size() == 0) { + if (resolved.isEmpty()) { return PolarisEntitySubType.NULL_SUBTYPE; } return resolved.get(resolved.size() - 1).getEntity().getSubType(); @@ -360,8 +359,7 @@ public PolarisResolvedPathWrapper getResolvedPath(Object key, boolean prependRoo resolvedEntities.add(getResolvedRootContainerEntity()); } resolvedEntities.add(new ResolvedPolarisEntity(primaryResolver.getResolvedReferenceCatalog())); - resolvedPath.stream() - .forEach(cacheEntry -> resolvedEntities.add(new ResolvedPolarisEntity(cacheEntry))); + resolvedPath.forEach(cacheEntry -> resolvedEntities.add(new ResolvedPolarisEntity(cacheEntry))); return new PolarisResolvedPathWrapper(resolvedEntities); } diff --git a/polaris-core/src/main/java/io/polaris/core/persistence/resolver/ResolverPath.java b/polaris-core/src/main/java/io/polaris/core/persistence/resolver/ResolverPath.java index 2f926a5398..d754d704f4 100644 --- a/polaris-core/src/main/java/io/polaris/core/persistence/resolver/ResolverPath.java +++ b/polaris-core/src/main/java/io/polaris/core/persistence/resolver/ResolverPath.java @@ -73,13 +73,11 @@ public boolean isOptional() { @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("entityNames:"); - sb.append(entityNames.toString()); - sb.append(";lastEntityType:"); - sb.append(lastEntityType.toString()); - sb.append(";isOptional:"); - sb.append(isOptional); - return sb.toString(); + return "entityNames:" + + entityNames.toString() + + ";lastEntityType:" + + lastEntityType.toString() + + ";isOptional:" + + isOptional; } } diff --git a/polaris-core/src/main/java/io/polaris/core/persistence/resolver/ResolverStatus.java b/polaris-core/src/main/java/io/polaris/core/persistence/resolver/ResolverStatus.java index 180043bbf3..628afeb603 100644 --- a/polaris-core/src/main/java/io/polaris/core/persistence/resolver/ResolverStatus.java +++ b/polaris-core/src/main/java/io/polaris/core/persistence/resolver/ResolverStatus.java @@ -37,7 +37,7 @@ public enum StatusEnum { // error, an entity could not be resolved ENTITY_COULD_NOT_BE_RESOLVED, - }; + } private final StatusEnum status; diff --git a/polaris-core/src/main/java/io/polaris/core/storage/aws/AwsStorageConfigurationInfo.java b/polaris-core/src/main/java/io/polaris/core/storage/aws/AwsStorageConfigurationInfo.java index 48ed960524..69ba645907 100644 --- a/polaris-core/src/main/java/io/polaris/core/storage/aws/AwsStorageConfigurationInfo.java +++ b/polaris-core/src/main/java/io/polaris/core/storage/aws/AwsStorageConfigurationInfo.java @@ -33,7 +33,7 @@ public class AwsStorageConfigurationInfo extends PolarisStorageConfigurationInfo @JsonIgnore private static final int MAX_ALLOWED_LOCATIONS = 5; // Technically, it should be ^arn:(aws|aws-cn|aws-us-gov):iam::\d{12}:role/.+$, - @JsonIgnore public static String ROLE_ARN_PATTERN = "^arn:aws:iam::\\d{12}:role/.+$"; + @JsonIgnore public static final String ROLE_ARN_PATTERN = "^arn:aws:iam::\\d{12}:role/.+$"; // AWS role to be assumed private final @NotNull String roleARN; diff --git a/polaris-core/src/main/java/io/polaris/core/storage/aws/PolarisS3FileIOClientFactory.java b/polaris-core/src/main/java/io/polaris/core/storage/aws/PolarisS3FileIOClientFactory.java index 18fea54338..aa197eb7ad 100644 --- a/polaris-core/src/main/java/io/polaris/core/storage/aws/PolarisS3FileIOClientFactory.java +++ b/polaris-core/src/main/java/io/polaris/core/storage/aws/PolarisS3FileIOClientFactory.java @@ -54,10 +54,9 @@ public S3Client s3() { .applyMutation(s3FileIOProperties::applyEndpointConfigurations) .applyMutation(s3FileIOProperties::applyServiceConfigurations) .applyMutation( - s3ClientBuilder -> { - s3FileIOProperties.applyCredentialConfigurations( - awsClientProperties, s3ClientBuilder); - }) + s3ClientBuilder -> + s3FileIOProperties.applyCredentialConfigurations( + awsClientProperties, s3ClientBuilder)) .applyMutation(s3FileIOProperties::applySignerConfiguration) .applyMutation(s3FileIOProperties::applyS3AccessGrantsConfigurations) .applyMutation(s3ClientBuilder -> s3ClientBuilder.crossRegionAccessEnabled(true)) diff --git a/polaris-core/src/main/java/io/polaris/core/storage/cache/StorageCredentialCache.java b/polaris-core/src/main/java/io/polaris/core/storage/cache/StorageCredentialCache.java index a3130e4ba9..de3103b0d8 100644 --- a/polaris-core/src/main/java/io/polaris/core/storage/cache/StorageCredentialCache.java +++ b/polaris-core/src/main/java/io/polaris/core/storage/cache/StorageCredentialCache.java @@ -15,7 +15,6 @@ */ package io.polaris.core.storage.cache; -import com.github.benmanes.caffeine.cache.CacheLoader; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.Expiry; import com.github.benmanes.caffeine.cache.LoadingCache; @@ -83,12 +82,9 @@ public long expireAfterRead( } }) .build( - new CacheLoader() { - @Override - public StorageCredentialCacheEntry load(StorageCredentialCacheKey key) { - // the load happen at getOrGenerateSubScopeCreds() - return null; - } + key -> { + // the load happen at getOrGenerateSubScopeCreds() + return null; }); } @@ -150,7 +146,7 @@ public Map getOrGenerateSubScopeCreds( public Map getIfPresent(StorageCredentialCacheKey key) { return Optional.ofNullable(cache.getIfPresent(key)) - .map(value -> value.convertToMapOfString()) + .map(StorageCredentialCacheEntry::convertToMapOfString) .orElse(null); } diff --git a/polaris-service/src/main/java/io/polaris/service/PolarisApplication.java b/polaris-service/src/main/java/io/polaris/service/PolarisApplication.java index e218e60c37..b62e4a9e44 100644 --- a/polaris-service/src/main/java/io/polaris/service/PolarisApplication.java +++ b/polaris-service/src/main/java/io/polaris/service/PolarisApplication.java @@ -359,9 +359,9 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha Collectors.toMap(Map.Entry::getKey, (e) -> ((String[]) e.getValue())[0])), headers); CallContext.setCurrentContext(currentCallContext); - try (MDC.MDCCloseable context = + try (MDC.MDCCloseable ignored1 = MDC.putCloseable("realm", currentRealmContext.getRealmIdentifier()); - MDC.MDCCloseable requestId = + MDC.MDCCloseable ignored2 = MDC.putCloseable("request_id", httpRequest.getHeader("request_id"))) { chain.doFilter(request, response); } finally { @@ -369,8 +369,8 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha currentCallContext .contextVariables() .get(CallContext.REQUEST_PATH_CATALOG_INSTANCE_KEY); - if (contextCatalog != null && contextCatalog instanceof Closeable) { - ((Closeable) contextCatalog).close(); + if (contextCatalog instanceof Closeable closeableCatalog) { + closeableCatalog.close(); } currentCallContext.close(); } diff --git a/polaris-service/src/main/java/io/polaris/service/admin/PolarisAdminService.java b/polaris-service/src/main/java/io/polaris/service/admin/PolarisAdminService.java index 119caad618..fc82502fc4 100644 --- a/polaris-service/src/main/java/io/polaris/service/admin/PolarisAdminService.java +++ b/polaris-service/src/main/java/io/polaris/service/admin/PolarisAdminService.java @@ -97,7 +97,7 @@ public class PolarisAdminService { public static final String CLEANUP_ON_CATALOG_DROP = "CLEANUP_ON_CATALOG_DROP"; private final CallContext callContext; - private PolarisEntityManager entityManager; + private final PolarisEntityManager entityManager; private final AuthenticatedPolarisPrincipal authenticatedPrincipal; private final PolarisAuthorizer authorizer; @@ -629,16 +629,11 @@ private void validateUpdateCatalogDiffOrThrow( currentStorageConfig, newStorageConfig); } - if (currentStorageConfig instanceof AwsStorageConfigurationInfo - && newStorageConfig instanceof AwsStorageConfigurationInfo) { - AwsStorageConfigurationInfo currentAwsConfig = - (AwsStorageConfigurationInfo) currentStorageConfig; - AwsStorageConfigurationInfo newAwsConfig = (AwsStorageConfigurationInfo) newStorageConfig; + if (currentStorageConfig instanceof AwsStorageConfigurationInfo currentAwsConfig + && newStorageConfig instanceof AwsStorageConfigurationInfo newAwsConfig) { - if ((currentAwsConfig.getRoleARN() != null - && !currentAwsConfig.getRoleARN().equals(newAwsConfig.getRoleARN())) - || (newAwsConfig.getRoleARN() != null - && !newAwsConfig.getRoleARN().equals(currentAwsConfig.getRoleARN()))) { + if (!currentAwsConfig.getRoleARN().equals(newAwsConfig.getRoleARN()) + || !newAwsConfig.getRoleARN().equals(currentAwsConfig.getRoleARN())) { throw new BadRequestException( "Cannot modify Role ARN in storage config from %s to %s", currentStorageConfig, newStorageConfig); @@ -652,17 +647,11 @@ private void validateUpdateCatalogDiffOrThrow( "Cannot modify ExternalId in storage config from %s to %s", currentStorageConfig, newStorageConfig); } - } else if (currentStorageConfig instanceof AzureStorageConfigurationInfo - && newStorageConfig instanceof AzureStorageConfigurationInfo) { - AzureStorageConfigurationInfo currentAzureConfig = - (AzureStorageConfigurationInfo) currentStorageConfig; - AzureStorageConfigurationInfo newAzureConfig = - (AzureStorageConfigurationInfo) newStorageConfig; - - if ((currentAzureConfig.getTenantId() != null - && !currentAzureConfig.getTenantId().equals(newAzureConfig.getTenantId())) - || (newAzureConfig.getTenantId() != null - && !newAzureConfig.getTenantId().equals(currentAzureConfig.getTenantId()))) { + } else if (currentStorageConfig instanceof AzureStorageConfigurationInfo currentAzureConfig + && newStorageConfig instanceof AzureStorageConfigurationInfo newAzureConfig) { + + if (!currentAzureConfig.getTenantId().equals(newAzureConfig.getTenantId()) + || !newAzureConfig.getTenantId().equals(currentAzureConfig.getTenantId())) { throw new BadRequestException( "Cannot modify TenantId in storage config from %s to %s", currentStorageConfig, newStorageConfig); diff --git a/polaris-service/src/main/java/io/polaris/service/admin/PolarisServiceImpl.java b/polaris-service/src/main/java/io/polaris/service/admin/PolarisServiceImpl.java index f033e036a0..d74af7b894 100644 --- a/polaris-service/src/main/java/io/polaris/service/admin/PolarisServiceImpl.java +++ b/polaris-service/src/main/java/io/polaris/service/admin/PolarisServiceImpl.java @@ -531,7 +531,7 @@ public Response revokeGrantFromCatalogRole( grantRequest, catalogRoleName, catalogName); - if (cascade != null && cascade.booleanValue()) { + if (cascade != null && cascade) { LOG.warn("Tried to use unimplemented 'cascade' feature when revoking grants."); return Response.status(501).build(); // not implemented } diff --git a/polaris-service/src/main/java/io/polaris/service/auth/OAuthTokenErrorResponse.java b/polaris-service/src/main/java/io/polaris/service/auth/OAuthTokenErrorResponse.java index 31fbaf0027..917d0348a3 100644 --- a/polaris-service/src/main/java/io/polaris/service/auth/OAuthTokenErrorResponse.java +++ b/polaris-service/src/main/java/io/polaris/service/auth/OAuthTokenErrorResponse.java @@ -29,7 +29,7 @@ public enum Error { invalid_scope("The scope is invalid"), ; - String errorDescription; + final String errorDescription; Error(String errorDescription) { this.errorDescription = errorDescription; @@ -42,7 +42,7 @@ public String getErrorDescription() { private final String error; private final String errorDescription; - private String errorUri; + private final String errorUri; /** Initlaizes a response from one of the supported errors */ public OAuthTokenErrorResponse(Error error) { diff --git a/polaris-service/src/main/java/io/polaris/service/auth/TestInlineBearerTokenPolarisAuthenticator.java b/polaris-service/src/main/java/io/polaris/service/auth/TestInlineBearerTokenPolarisAuthenticator.java index e4b1a7d984..ed25b41fa7 100644 --- a/polaris-service/src/main/java/io/polaris/service/auth/TestInlineBearerTokenPolarisAuthenticator.java +++ b/polaris-service/src/main/java/io/polaris/service/auth/TestInlineBearerTokenPolarisAuthenticator.java @@ -84,10 +84,8 @@ public Optional authenticate(String credentials) private static Map extractPrincipal(String credentials) { if (credentials.contains(";") || credentials.contains(":")) { - Map parsedProperties = new HashMap<>(); - parsedProperties.putAll( + return new HashMap<>( Splitter.on(';').trimResults().withKeyValueSeparator(':').split(credentials)); - return parsedProperties; } return Map.of(); } diff --git a/polaris-service/src/main/java/io/polaris/service/catalog/BasePolarisCatalog.java b/polaris-service/src/main/java/io/polaris/service/catalog/BasePolarisCatalog.java index 72f5ba0087..38952587f6 100644 --- a/polaris-service/src/main/java/io/polaris/service/catalog/BasePolarisCatalog.java +++ b/polaris-service/src/main/java/io/polaris/service/catalog/BasePolarisCatalog.java @@ -96,6 +96,7 @@ import org.apache.iceberg.view.ViewBuilder; import org.apache.iceberg.view.ViewMetadata; import org.apache.iceberg.view.ViewMetadataParser; +import org.apache.iceberg.view.ViewOperations; import org.apache.iceberg.view.ViewUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.TestOnly; @@ -117,19 +118,16 @@ public class BasePolarisCatalog extends BaseMetastoreViewCatalog private static final int MAX_RETRIES = 12; static final Predicate SHOULD_RETRY_REFRESH_PREDICATE = - new Predicate() { - @Override - public boolean test(Exception ex) { - // Default arguments from BaseMetastoreTableOperation only stop retries on - // NotFoundException. We should more carefully identify the set of retriable - // and non-retriable exceptions here. - return !(ex instanceof NotFoundException) - && !(ex instanceof IllegalArgumentException) - && !(ex instanceof AlreadyExistsException) - && !(ex instanceof ForbiddenException) - && !(ex instanceof UnprocessableEntityException) - && isStorageProviderRetryableException(ex); - } + ex -> { + // Default arguments from BaseMetastoreTableOperation only stop retries on + // NotFoundException. We should more carefully identify the set of retriable + // and non-retriable exceptions here. + return !(ex instanceof NotFoundException) + && !(ex instanceof IllegalArgumentException) + && !(ex instanceof AlreadyExistsException) + && !(ex instanceof ForbiddenException) + && !(ex instanceof UnprocessableEntityException) + && isStorageProviderRetryableException(ex); }; public static final String CLEANUP_ON_NAMESPACE_DROP = "CLEANUP_ON_NAMESPACE_DROP"; @@ -141,7 +139,7 @@ public boolean test(Exception ex) { private final AuthenticatedPolarisPrincipal authenticatedPrincipal; private String ioImplClassName; private FileIO catalogFileIO; - private String catalogName; + private final String catalogName; private long catalogId = -1; private String defaultBaseLocation; private CloseableGroup closeableGroup; @@ -526,11 +524,7 @@ private PolarisResolvedPathWrapper getResolvedParentNamespace(Namespace namespac @Override public boolean namespaceExists(Namespace namespace) { - PolarisResolvedPathWrapper resolvedEntities = resolvedEntityView.getResolvedPath(namespace); - if (resolvedEntities == null) { - return false; - } - return true; + return resolvedEntityView.getResolvedPath(namespace) != null; } @Override @@ -704,7 +698,7 @@ public List listViews(Namespace namespace) { } @Override - protected BasePolarisViewOperations newViewOps(TableIdentifier identifier) { + protected ViewOperations newViewOps(TableIdentifier identifier) { return new BasePolarisViewOperations(catalogFileIO, identifier); } @@ -962,7 +956,7 @@ private void validateNoLocationOverlap( // namespaces Optional parentNamespace = parentPath.size() > 1 - ? Optional.of(NamespaceEntity.of(parentPath.get(parentPath.size() - 1))) + ? Optional.of(NamespaceEntity.of(parentPath.getLast())) : Optional.empty(); List siblingTables = @@ -988,7 +982,6 @@ private void validateNoLocationOverlap( .collect(Collectors.toList()); }) .orElse(List.of()); - ; List siblingNamespaces = siblingNamespacesResult.getEntities().stream() @@ -1002,13 +995,13 @@ private void validateNoLocationOverlap( newLevels[nsLevels.length] = ns.getName(); return Namespace.of(newLevels); }) - .collect(Collectors.toList()); + .toList(); LOG.debug( "Resolving {} sibling entities to validate location", siblingTables.size() + siblingNamespaces.size()); PolarisResolutionManifest resolutionManifest = new PolarisResolutionManifest( - callContext, entityManager, authenticatedPrincipal, parentPath.get(0).getName()); + callContext, entityManager, authenticatedPrincipal, parentPath.getFirst().getName()); siblingTables.forEach( tbl -> resolutionManifest.addPath( @@ -1184,7 +1177,7 @@ public void doCommit(TableMetadata base, TableMetadata metadata) { resolvedTableEntities == null ? resolvedEntityView.getResolvedPath(tableIdentifier.namespace()).getRawFullPath() : resolvedTableEntities.getRawParentPath(); - CatalogEntity catalog = CatalogEntity.of(resolvedNamespace.get(0)); + CatalogEntity catalog = CatalogEntity.of(resolvedNamespace.getFirst()); if (base == null || !metadata.location().equals(base.location())) { // If location is changing then we must validate that the requested location is valid @@ -1809,7 +1802,7 @@ private boolean sendNotificationForTableLike( TableOperations tableOperations = newTableOps(tableIdentifier); String locationDir = newLocation.substring(0, newLocation.lastIndexOf("/")); - ; + FileIO fileIO = refreshIOWithCredentials( tableIdentifier, @@ -1824,7 +1817,9 @@ private boolean sendNotificationForTableLike( // finally, validate that the metadata file is within the table directory validateMetadataFileInTableDir( - tableIdentifier, tableMetadata, CatalogEntity.of(resolvedParent.getRawFullPath().get(0))); + tableIdentifier, + tableMetadata, + CatalogEntity.of(resolvedParent.getRawFullPath().getFirst())); // TODO: These might fail due to concurrent update; we need to do a retry in those cases. if (null == existingLocation) { @@ -1849,11 +1844,7 @@ private void createNonExistingNamespaces(Namespace namespace) { // Pre-create namespaces if they don't exist for (int i = 1; i <= namespace.length(); i++) { Namespace nsLevel = - Namespace.of( - Arrays.stream(namespace.levels()) - .limit(i) - .collect(Collectors.toList()) - .toArray(String[]::new)); + Namespace.of(Arrays.stream(namespace.levels()).limit(i).toArray(String[]::new)); if (resolvedEntityView.getPassthroughResolvedPath(nsLevel) == null) { Namespace parentNamespace = PolarisCatalogHelpers.getParentNamespace(nsLevel); PolarisResolvedPathWrapper resolvedParent = diff --git a/polaris-service/src/main/java/io/polaris/service/catalog/IcebergCatalogAdapter.java b/polaris-service/src/main/java/io/polaris/service/catalog/IcebergCatalogAdapter.java index 87e8bf195e..6f5a880db5 100644 --- a/polaris-service/src/main/java/io/polaris/service/catalog/IcebergCatalogAdapter.java +++ b/polaris-service/src/main/java/io/polaris/service/catalog/IcebergCatalogAdapter.java @@ -74,7 +74,7 @@ public class IcebergCatalogAdapter private final CallContextCatalogFactory catalogFactory; private final RealmEntityManagerFactory entityManagerFactory; - private PolarisAuthorizer polarisAuthorizer; + private final PolarisAuthorizer polarisAuthorizer; public IcebergCatalogAdapter( CallContextCatalogFactory catalogFactory, @@ -257,7 +257,7 @@ public Response dropTable( Namespace ns = decodeNamespace(namespace); TableIdentifier tableIdentifier = TableIdentifier.of(ns, RESTUtil.decodeString(table)); - if (purgeRequested != null && purgeRequested.booleanValue()) { + if (purgeRequested != null && purgeRequested) { newHandlerWrapper(securityContext, prefix).dropTableWithPurge(tableIdentifier); } else { newHandlerWrapper(securityContext, prefix).dropTableWithoutPurge(tableIdentifier); diff --git a/polaris-service/src/main/java/io/polaris/service/catalog/PolarisCatalogHandlerWrapper.java b/polaris-service/src/main/java/io/polaris/service/catalog/PolarisCatalogHandlerWrapper.java index 3e8139bf63..e18ed625f6 100644 --- a/polaris-service/src/main/java/io/polaris/service/catalog/PolarisCatalogHandlerWrapper.java +++ b/polaris-service/src/main/java/io/polaris/service/catalog/PolarisCatalogHandlerWrapper.java @@ -44,7 +44,6 @@ import java.util.Optional; import java.util.Set; import java.util.function.Supplier; -import java.util.stream.Collectors; import org.apache.iceberg.BaseMetadataTable; import org.apache.iceberg.BaseTable; import org.apache.iceberg.BaseTransaction; @@ -301,14 +300,13 @@ private void authorizeCollectionOfTableLikeOperationOrThrow( List ids) { resolutionManifest = entityManager.prepareResolutionManifest(callContext, authenticatedPrincipal, catalogName); - ids.stream() - .forEach( - identifier -> - resolutionManifest.addPassthroughPath( - new ResolverPath( - PolarisCatalogHelpers.tableIdentifierToList(identifier), - PolarisEntityType.TABLE_LIKE), - identifier)); + ids.forEach( + identifier -> + resolutionManifest.addPassthroughPath( + new ResolverPath( + PolarisCatalogHelpers.tableIdentifierToList(identifier), + PolarisEntityType.TABLE_LIKE), + identifier)); ResolverStatus status = resolutionManifest.resolveAll(); @@ -420,7 +418,7 @@ public CreateNamespaceResponse createNamespace(CreateNamespaceRequest request) { PolarisAuthorizableOperation op = PolarisAuthorizableOperation.CREATE_NAMESPACE; Namespace namespace = request.namespace(); - if (namespace.length() == 0) { + if (namespace.isEmpty()) { throw new AlreadyExistsException( "Cannot create root namespace, as it already exists implicitly."); } @@ -733,10 +731,7 @@ public boolean sendNotification(TableIdentifier identifier, NotificationRequest for (int i = 1; i <= identifier.namespace().length(); i++) { Namespace nsLevel = Namespace.of( - Arrays.stream(identifier.namespace().levels()) - .limit(i) - .collect(Collectors.toList()) - .toArray(String[]::new)); + Arrays.stream(identifier.namespace().levels()).limit(i).toArray(String[]::new)); extraPassthroughNamespaces.add(nsLevel); } authorizeBasicNamespaceOperationOrThrow( @@ -755,11 +750,8 @@ public boolean sendNotification(TableIdentifier identifier, NotificationRequest .log("Attempted notification on internal catalog"); throw new BadRequestException("Cannot update internal catalog via notifications"); } - if (!(baseCatalog instanceof SupportsNotifications)) { - return false; - } - SupportsNotifications notificationCatalog = (SupportsNotifications) baseCatalog; - return notificationCatalog.sendNotification(identifier, request); + return baseCatalog instanceof SupportsNotifications notificationCatalog + && notificationCatalog.sendNotification(identifier, request); } public LoadTableResponse loadTable(TableIdentifier tableIdentifier, String snapshots) { @@ -940,7 +932,9 @@ public void commitTransaction(CommitTransactionRequest commitTransactionRequest) authorizeCollectionOfTableLikeOperationOrThrow( op, PolarisEntitySubType.TABLE, - commitTransactionRequest.tableChanges().stream().map(t -> t.identifier()).toList()); + commitTransactionRequest.tableChanges().stream() + .map(UpdateTableRequest::identifier) + .toList()); CatalogEntity catalog = CatalogEntity.of( resolutionManifest diff --git a/polaris-service/src/main/java/io/polaris/service/catalog/SupportsNotifications.java b/polaris-service/src/main/java/io/polaris/service/catalog/SupportsNotifications.java index fd22ee9a74..fcfc25e3ef 100644 --- a/polaris-service/src/main/java/io/polaris/service/catalog/SupportsNotifications.java +++ b/polaris-service/src/main/java/io/polaris/service/catalog/SupportsNotifications.java @@ -20,5 +20,5 @@ public interface SupportsNotifications { - public boolean sendNotification(TableIdentifier table, NotificationRequest notificationRequest); + boolean sendNotification(TableIdentifier table, NotificationRequest notificationRequest); } diff --git a/polaris-service/src/main/java/io/polaris/service/config/RealmEntityManagerFactory.java b/polaris-service/src/main/java/io/polaris/service/config/RealmEntityManagerFactory.java index 6828f685c0..fd1c4b8723 100644 --- a/polaris-service/src/main/java/io/polaris/service/config/RealmEntityManagerFactory.java +++ b/polaris-service/src/main/java/io/polaris/service/config/RealmEntityManagerFactory.java @@ -29,7 +29,7 @@ public class RealmEntityManagerFactory { private final MetaStoreManagerFactory metaStoreManagerFactory; // Key: realmIdentifier - private Map cachedEntityManagers = new HashMap<>(); + private final Map cachedEntityManagers = new HashMap<>(); // Subclasses for test injection. protected RealmEntityManagerFactory() { diff --git a/polaris-service/src/main/java/io/polaris/service/context/DefaultContextResolver.java b/polaris-service/src/main/java/io/polaris/service/context/DefaultContextResolver.java index 1a76e2027d..38de3bcdc5 100644 --- a/polaris-service/src/main/java/io/polaris/service/context/DefaultContextResolver.java +++ b/polaris-service/src/main/java/io/polaris/service/context/DefaultContextResolver.java @@ -94,12 +94,7 @@ public RealmContext resolveRealmContext( REALM_PROPERTY_DEFAULT_VALUE); parsedProperties.put(REALM_PROPERTY_KEY, REALM_PROPERTY_DEFAULT_VALUE); } - return new RealmContext() { - @Override - public String getRealmIdentifier() { - return parsedProperties.get(REALM_PROPERTY_KEY); - } - }; + return () -> parsedProperties.get(REALM_PROPERTY_KEY); } @Override diff --git a/polaris-service/src/main/java/io/polaris/service/context/PolarisCallContextCatalogFactory.java b/polaris-service/src/main/java/io/polaris/service/context/PolarisCallContextCatalogFactory.java index f6c1684388..629ada8556 100644 --- a/polaris-service/src/main/java/io/polaris/service/context/PolarisCallContextCatalogFactory.java +++ b/polaris-service/src/main/java/io/polaris/service/context/PolarisCallContextCatalogFactory.java @@ -27,6 +27,7 @@ import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import org.apache.iceberg.CatalogProperties; import org.apache.iceberg.catalog.Catalog; import org.slf4j.Logger; @@ -73,13 +74,11 @@ public Catalog createCallContextCatalog( Map catalogProperties = new HashMap<>(catalog.getPropertiesAsMap()); String defaultBaseLocation = catalog.getDefaultBaseLocation(); LOG.info("Looked up defaultBaseLocation {} for catalog {}", defaultBaseLocation, catalogKey); - if (defaultBaseLocation != null) { - catalogProperties.put(CatalogProperties.WAREHOUSE_LOCATION, defaultBaseLocation); - } else { - catalogProperties.put( - CatalogProperties.WAREHOUSE_LOCATION, - Paths.get(WAREHOUSE_LOCATION_BASEDIR, catalogKey).toString()); - } + catalogProperties.put( + CatalogProperties.WAREHOUSE_LOCATION, + Objects.requireNonNullElseGet( + defaultBaseLocation, + () -> Paths.get(WAREHOUSE_LOCATION_BASEDIR, catalogKey).toString())); // TODO: The initialize properties might need to take more from CallContext and the // CatalogEntity. diff --git a/polaris-service/src/main/java/io/polaris/service/context/SqlliteCallContextCatalogFactory.java b/polaris-service/src/main/java/io/polaris/service/context/SqlliteCallContextCatalogFactory.java index a4685d1d1c..94025d1c2b 100644 --- a/polaris-service/src/main/java/io/polaris/service/context/SqlliteCallContextCatalogFactory.java +++ b/polaris-service/src/main/java/io/polaris/service/context/SqlliteCallContextCatalogFactory.java @@ -47,7 +47,7 @@ public class SqlliteCallContextCatalogFactory implements CallContextCatalogFacto private static final Logger LOG = LoggerFactory.getLogger(SqlliteCallContextCatalogFactory.class); - private Map cachedCatalogs = new HashMap<>(); + private final Map cachedCatalogs = new HashMap<>(); private final Map catalogBaseDirs; public SqlliteCallContextCatalogFactory(Map catalogBaseDirs) { diff --git a/polaris-service/src/main/java/io/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java b/polaris-service/src/main/java/io/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java index e7fc7cd56a..6c585d2227 100644 --- a/polaris-service/src/main/java/io/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java +++ b/polaris-service/src/main/java/io/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java @@ -23,7 +23,7 @@ import io.polaris.core.persistence.PolarisMetaStoreSession; import io.polaris.core.persistence.PolarisTreeMapMetaStoreSessionImpl; import io.polaris.core.persistence.PolarisTreeMapStore; -import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -33,7 +33,7 @@ @JsonTypeName("in-memory") public class InMemoryPolarisMetaStoreManagerFactory extends LocalPolarisMetaStoreManagerFactory { - Set bootstrappedRealms = new HashSet<>(); + final Set bootstrappedRealms = new HashSet<>(); @Override protected PolarisTreeMapStore createBackingStore(@NotNull PolarisDiagnostics diagnostics) { @@ -68,7 +68,7 @@ public synchronized Supplier getOrCreateSessionSupplier private void bootstrapRealmAndPrintCredentials(String realmId) { Map results = - this.bootstrapRealms(Arrays.asList(realmId)); + this.bootstrapRealms(Collections.singletonList(realmId)); bootstrappedRealms.add(realmId); PolarisMetaStoreManager.PrincipalSecretsResult principalSecrets = results.get(realmId); diff --git a/polaris-service/src/main/java/io/polaris/service/storage/PolarisStorageIntegrationProviderImpl.java b/polaris-service/src/main/java/io/polaris/service/storage/PolarisStorageIntegrationProviderImpl.java index b21575a968..cb53adaca6 100644 --- a/polaris-service/src/main/java/io/polaris/service/storage/PolarisStorageIntegrationProviderImpl.java +++ b/polaris-service/src/main/java/io/polaris/service/storage/PolarisStorageIntegrationProviderImpl.java @@ -79,7 +79,7 @@ PolarisStorageIntegration getStorageIntegrationForConfig( break; case FILE: storageIntegration = - new PolarisStorageIntegration("file") { + new PolarisStorageIntegration<>("file") { @Override public EnumMap getSubscopedCreds( @NotNull PolarisDiagnostics diagnostics, diff --git a/polaris-service/src/main/java/io/polaris/service/tracing/TracingFilter.java b/polaris-service/src/main/java/io/polaris/service/tracing/TracingFilter.java index 4c9f06c464..4579729f93 100644 --- a/polaris-service/src/main/java/io/polaris/service/tracing/TracingFilter.java +++ b/polaris-service/src/main/java/io/polaris/service/tracing/TracingFilter.java @@ -76,7 +76,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha try (Scope ignored = span.makeCurrent(); MDC.MDCCloseable spanId = MDC.putCloseable("spanId", span.getSpanContext().getSpanId()); MDC.MDCCloseable traceId = - MDC.putCloseable("traceId", span.getSpanContext().getTraceId()); ) { + MDC.putCloseable("traceId", span.getSpanContext().getTraceId())) { LOGGER .atInfo() .addKeyValue("spanId", span.getSpanContext().getSpanId()) diff --git a/polaris-service/src/main/java/io/polaris/service/types/NotificationRequest.java b/polaris-service/src/main/java/io/polaris/service/types/NotificationRequest.java index c13c8993c3..612589b4eb 100644 --- a/polaris-service/src/main/java/io/polaris/service/types/NotificationRequest.java +++ b/polaris-service/src/main/java/io/polaris/service/types/NotificationRequest.java @@ -70,19 +70,18 @@ public int hashCode() { @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class NotificationRequest {\n"); - - sb.append(" notificationType: ").append(toIndentedString(notificationType)).append("\n"); - sb.append(" payload: ").append(toIndentedString(payload)).append("\n"); - sb.append("}"); - return sb.toString(); + return """ + class NotificationRequest { + notificationType: %s + payload: %s + }""" + .formatted(toIndentedString(notificationType), toIndentedString(payload)); } /** * Convert the given object to string with each line indented by 4 spaces (except the first line). */ - private String toIndentedString(Object o) { + private static String toIndentedString(Object o) { if (o == null) { return "null"; } diff --git a/polaris-service/src/main/java/io/polaris/service/types/TableUpdateNotification.java b/polaris-service/src/main/java/io/polaris/service/types/TableUpdateNotification.java index 0966c8b60a..f8db58d3c4 100644 --- a/polaris-service/src/main/java/io/polaris/service/types/TableUpdateNotification.java +++ b/polaris-service/src/main/java/io/polaris/service/types/TableUpdateNotification.java @@ -122,22 +122,26 @@ public int hashCode() { @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class TableUpdateNotification {\n"); - - sb.append(" tableName: ").append(toIndentedString(tableName)).append("\n"); - sb.append(" timestamp: ").append(toIndentedString(timestamp)).append("\n"); - sb.append(" tableUuid: ").append(toIndentedString(tableUuid)).append("\n"); - sb.append(" metadataLocation: ").append(toIndentedString(metadataLocation)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append("}"); - return sb.toString(); + return """ + class TableUpdateNotification { + tableName: %s + timestamp: %s + tableUuid: %s + metadataLocation: %s + metadata: %s + }""" + .formatted( + toIndentedString(tableName), + toIndentedString(timestamp), + toIndentedString(tableUuid), + toIndentedString(metadataLocation), + toIndentedString(metadata)); } /** * Convert the given object to string with each line indented by 4 spaces (except the first line). */ - private String toIndentedString(Object o) { + private static String toIndentedString(Object o) { if (o == null) { return "null"; } diff --git a/polaris-service/src/main/java/io/polaris/service/types/TokenType.java b/polaris-service/src/main/java/io/polaris/service/types/TokenType.java index cc4f5b43d6..6894459eb1 100644 --- a/polaris-service/src/main/java/io/polaris/service/types/TokenType.java +++ b/polaris-service/src/main/java/io/polaris/service/types/TokenType.java @@ -35,7 +35,7 @@ public enum TokenType { JWT("urn:ietf:params:oauth:token-type:jwt"); - private String value; + private final String value; TokenType(String value) { this.value = value;