diff --git a/openmetadata-clients/openmetadata-java-client/src/main/java/org/openmetadata/client/gateway/OpenMetadata.java b/openmetadata-clients/openmetadata-java-client/src/main/java/org/openmetadata/client/gateway/OpenMetadata.java index 82c59f4a37c..b120a476131 100644 --- a/openmetadata-clients/openmetadata-java-client/src/main/java/org/openmetadata/client/gateway/OpenMetadata.java +++ b/openmetadata-clients/openmetadata-java-client/src/main/java/org/openmetadata/client/gateway/OpenMetadata.java @@ -77,9 +77,7 @@ public class OpenMetadata { } public void updateRequestType(Class requestClass) { - if (apiClient.getApiAuthorizations().containsKey(REQUEST_INTERCEPTOR_KEY)) { - apiClient.getApiAuthorizations().remove(REQUEST_INTERCEPTOR_KEY); - } + apiClient.getApiAuthorizations().remove(REQUEST_INTERCEPTOR_KEY); CustomRequestInterceptor newInterceptor = new CustomRequestInterceptor<>(apiClient.getObjectMapper(), requestClass); apiClient.addAuthorization(REQUEST_INTERCEPTOR_KEY, newInterceptor); diff --git a/openmetadata-clients/openmetadata-java-client/src/main/java/org/openmetadata/client/model/AccessTokenResponse.java b/openmetadata-clients/openmetadata-java-client/src/main/java/org/openmetadata/client/model/AccessTokenResponse.java index 6182c9f8e1f..5c3d6726bd5 100644 --- a/openmetadata-clients/openmetadata-java-client/src/main/java/org/openmetadata/client/model/AccessTokenResponse.java +++ b/openmetadata-clients/openmetadata-java-client/src/main/java/org/openmetadata/client/model/AccessTokenResponse.java @@ -55,7 +55,7 @@ public class AccessTokenResponse { * * @return ExpiresIn */ - @Schema(description = "") + @Schema() public Long getExpiresIn() { return expiresIn; } @@ -74,7 +74,7 @@ public class AccessTokenResponse { * * @return AccessToken */ - @Schema(description = "") + @Schema() public String getAccessToken() { return accessToken; } @@ -93,7 +93,7 @@ public class AccessTokenResponse { * * @return Scope */ - @Schema(description = "") + @Schema() public String getScope() { return scope; } diff --git a/openmetadata-clients/openmetadata-java-client/src/main/java/org/openmetadata/client/model/OktaSSOConfig.java b/openmetadata-clients/openmetadata-java-client/src/main/java/org/openmetadata/client/model/OktaSSOConfig.java index d6ea97345ee..c5d4fa4874a 100644 --- a/openmetadata-clients/openmetadata-java-client/src/main/java/org/openmetadata/client/model/OktaSSOConfig.java +++ b/openmetadata-clients/openmetadata-java-client/src/main/java/org/openmetadata/client/model/OktaSSOConfig.java @@ -25,7 +25,7 @@ public class OktaSSOConfig { private String authorizationServerURL; /** Okta client scopes. */ - private List scopes = new ArrayList(); + private List scopes = new ArrayList<>(); /** Okta Client ID. (Required) */ public String getClientId() { diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/Entity.java b/openmetadata-service/src/main/java/org/openmetadata/service/Entity.java index 1957ccded56..51861708385 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/Entity.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/Entity.java @@ -220,7 +220,7 @@ public final class Entity { return !ACTIVITY_FEED_EXCLUDED_ENTITIES.contains(entityType); } - public static Fields getFields(String entityType, String fields) throws IOException { + public static Fields getFields(String entityType, String fields) { EntityRepository entityRepository = Entity.getEntityRepository(entityType); return entityRepository.getFields(fields); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/OpenMetadataApplication.java b/openmetadata-service/src/main/java/org/openmetadata/service/OpenMetadataApplication.java index 46483f32416..2a7014db17f 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/OpenMetadataApplication.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/OpenMetadataApplication.java @@ -130,7 +130,7 @@ public class OpenMetadataApplication extends Application pipelineStatusList = JsonUtils.readObjects(response.body(), PipelineStatus.class); - return pipelineStatusList; + return JsonUtils.readObjects(response.body(), PipelineStatus.class); } } catch (Exception e) { throw PipelineServiceClientException.byMessage(ingestionPipeline.getName(), e.getMessage()); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/DailyActiveUsersAggregator.java b/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/DailyActiveUsersAggregator.java index cd57f8524d4..519efd21ae7 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/DailyActiveUsersAggregator.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/DailyActiveUsersAggregator.java @@ -25,13 +25,13 @@ public class DailyActiveUsersAggregator extends DataInsightAggregatorInterface aggregate() throws ParseException { Histogram timestampBuckets = this.aggregations.get(TIMESTAMP); - List data = new ArrayList(); + List data = new ArrayList<>(); for (Histogram.Bucket timestampBucket : timestampBuckets.getBuckets()) { String dateTimeString = timestampBucket.getKeyAsString(); Long timestamp = this.convertDatTimeStringToTimestamp(dateTimeString); - Long activeUsers = timestampBucket.getDocCount(); + long activeUsers = timestampBucket.getDocCount(); - data.add(new DailyActiveUsers().withTimestamp(timestamp).withActiveUsers(activeUsers.intValue())); + data.add(new DailyActiveUsers().withTimestamp(timestamp).withActiveUsers((int) activeUsers)); } return data; diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/DataInsightAggregatorInterface.java b/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/DataInsightAggregatorInterface.java index 16b1ca434fc..022a93b7ffe 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/DataInsightAggregatorInterface.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/DataInsightAggregatorInterface.java @@ -2,7 +2,6 @@ package org.openmetadata.service.dataInsight; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Date; import java.util.List; import org.elasticsearch.search.aggregations.Aggregations; import org.openmetadata.schema.dataInsight.DataInsightChartResult; @@ -14,8 +13,8 @@ public abstract class DataInsightAggregatorInterface { protected static final String ENTITY_COUNT = "entityCount"; protected static final String TIMESTAMP = "timestamp"; protected static final String ENTITY_TIER = "entityTier"; - protected Aggregations aggregations; - protected DataInsightChartResult.DataInsightChartType dataInsightChartType; + protected final Aggregations aggregations; + protected final DataInsightChartResult.DataInsightChartType dataInsightChartType; protected DataInsightAggregatorInterface( Aggregations aggregations, DataInsightChartResult.DataInsightChartType dataInsightChartType) { @@ -29,8 +28,6 @@ public abstract class DataInsightAggregatorInterface { public Long convertDatTimeStringToTimestamp(String dateTimeString) throws ParseException { SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); - Date dateTimeObject = dateTimeFormat.parse(dateTimeString); - Long timestamp = dateTimeObject.getTime(); - return timestamp; + return dateTimeFormat.parse(dateTimeString).getTime(); } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/MostActiveUsersAggregator.java b/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/MostActiveUsersAggregator.java index 89e65b4a1c5..ea36b3cd089 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/MostActiveUsersAggregator.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/MostActiveUsersAggregator.java @@ -1,6 +1,5 @@ package org.openmetadata.service.dataInsight; -import java.text.ParseException; import java.util.ArrayList; import java.util.List; import org.elasticsearch.search.aggregations.Aggregations; @@ -18,14 +17,14 @@ public class MostActiveUsersAggregator extends DataInsightAggregatorInterface aggregate() throws ParseException { + List aggregate() { MultiBucketsAggregation userNameBuckets = this.aggregations.get("userName"); List data = new ArrayList(); for (MultiBucketsAggregation.Bucket userNameBucket : userNameBuckets.getBuckets()) { diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/MostViewedEntitiesAggregator.java b/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/MostViewedEntitiesAggregator.java index f8404fca5cc..e5db1131c4b 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/MostViewedEntitiesAggregator.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/MostViewedEntitiesAggregator.java @@ -1,6 +1,5 @@ package org.openmetadata.service.dataInsight; -import java.text.ParseException; import java.util.ArrayList; import java.util.List; import org.elasticsearch.search.aggregations.Aggregations; @@ -17,14 +16,14 @@ public class MostViewedEntitiesAggregator extends DataInsightAggregatorInterface } @Override - public DataInsightChartResult process() throws ParseException { + public DataInsightChartResult process() { List data = this.aggregate(); DataInsightChartResult dataInsightChartResult = new DataInsightChartResult(); return dataInsightChartResult.withData(data).withChartType(this.dataInsightChartType); } @Override - List aggregate() throws ParseException { + List aggregate() { MultiBucketsAggregation entityFqnBuckets = this.aggregations.get("entityFqn"); List data = new ArrayList(); for (MultiBucketsAggregation.Bucket entityFqnBucket : entityFqnBuckets.getBuckets()) { diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/TotalEntitiesAggregator.java b/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/TotalEntitiesAggregator.java index adf0499b286..901e426210f 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/TotalEntitiesAggregator.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/TotalEntitiesAggregator.java @@ -25,10 +25,10 @@ public class TotalEntitiesAggregator extends DataInsightAggregatorInterface aggregate() throws ParseException { Histogram timestampBuckets = this.aggregations.get(TIMESTAMP); - List data = new ArrayList(); - List entityCount = new ArrayList(); + List data = new ArrayList<>(); + List entityCount = new ArrayList<>(); for (Histogram.Bucket timestampBucket : timestampBuckets.getBuckets()) { String dateTimeString = timestampBucket.getKeyAsString(); @@ -46,13 +46,11 @@ public class TotalEntitiesAggregator extends DataInsightAggregatorInterface v.doubleValue()).sum(); + double totalEntities = entityCount.stream().mapToDouble(v -> v).sum(); - data.stream() - .forEach( - (el) -> { - el.withEntityCountFraction(el.getEntityCount() / totalEntities); - }); + for (TotalEntitiesByType el : data) { + el.withEntityCountFraction(el.getEntityCount() / totalEntities); + } return data; } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/TotalEntitiesByTierAggregator.java b/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/TotalEntitiesByTierAggregator.java index b74d7ab34f5..d2dd49881e1 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/TotalEntitiesByTierAggregator.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/dataInsight/TotalEntitiesByTierAggregator.java @@ -26,8 +26,8 @@ public class TotalEntitiesByTierAggregator extends DataInsightAggregatorInterfac @Override List aggregate() throws ParseException { Histogram timestampBuckets = this.aggregations.get(TIMESTAMP); - List data = new ArrayList(); - List entityCount = new ArrayList(); + List data = new ArrayList<>(); + List entityCount = new ArrayList<>(); for (Histogram.Bucket timestampBucket : timestampBuckets.getBuckets()) { String dateTimeString = timestampBucket.getKeyAsString(); @@ -45,13 +45,11 @@ public class TotalEntitiesByTierAggregator extends DataInsightAggregatorInterfac } } - double totalEntities = entityCount.stream().mapToDouble(v -> v.doubleValue()).sum(); + double totalEntities = entityCount.stream().mapToDouble(v -> v).sum(); - data.stream() - .forEach( - (el) -> { - el.withEntityCountFraction(el.getEntityCount() / totalEntities); - }); + for (TotalEntitiesByTier el : data) { + el.withEntityCountFraction(el.getEntityCount() / totalEntities); + } return data; } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/elasticsearch/ElasticSearchEventPublisher.java b/openmetadata-service/src/main/java/org/openmetadata/service/elasticsearch/ElasticSearchEventPublisher.java index 17bd4085035..557139e3b12 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/elasticsearch/ElasticSearchEventPublisher.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/elasticsearch/ElasticSearchEventPublisher.java @@ -93,7 +93,6 @@ import org.openmetadata.service.util.JsonUtils; public class ElasticSearchEventPublisher extends AbstractEventPublisher { private static final String SENDING_REQUEST_TO_ELASTIC_SEARCH = "Sending request to ElasticSearch {}"; private final RestHighLevelClient client; - private final ElasticSearchIndexDefinition esIndexDefinition; private final CollectionDAO dao; private static final String SERVICE_NAME = "service.name"; private static final String DATABASE_NAME = "database.name"; @@ -104,7 +103,7 @@ public class ElasticSearchEventPublisher extends AbstractEventPublisher { // needs Db connection registerElasticSearchJobs(); this.client = ElasticSearchClientUtils.createElasticSearchClient(esConfig); - esIndexDefinition = new ElasticSearchIndexDefinition(client, dao); + ElasticSearchIndexDefinition esIndexDefinition = new ElasticSearchIndexDefinition(client, dao); esIndexDefinition.createIndexes(); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/elasticsearch/ElasticSearchIndexDefinition.java b/openmetadata-service/src/main/java/org/openmetadata/service/elasticsearch/ElasticSearchIndexDefinition.java index ff5d2a25eb9..ebb6feb414b 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/elasticsearch/ElasticSearchIndexDefinition.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/elasticsearch/ElasticSearchIndexDefinition.java @@ -100,14 +100,6 @@ public class ElasticSearchIndexDefinition { } } - public boolean checkIndexExistsOrCreate(ElasticSearchIndexType indexType) { - boolean exists = elasticSearchIndexes.get(indexType) == ElasticSearchIndexStatus.CREATED; - if (!exists) { - exists = createIndex(indexType); - } - return exists; - } - public boolean createIndex(ElasticSearchIndexType elasticSearchIndexType) { try { GetIndexRequest gRequest = new GetIndexRequest(elasticSearchIndexType.indexName); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/events/AuditEventHandler.java b/openmetadata-service/src/main/java/org/openmetadata/service/events/AuditEventHandler.java index e7b07e9bebb..24fab31cb83 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/events/AuditEventHandler.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/events/AuditEventHandler.java @@ -27,7 +27,6 @@ import org.slf4j.MarkerFactory; @Slf4j public class AuditEventHandler implements EventHandler { private final Marker auditMarker = MarkerFactory.getMarker("AUDIT"); - private final String ANONYMOUS_USER = "anonymous"; public void init(OpenMetadataApplicationConfig config, Jdbi jdbi) { // Nothing to do @@ -38,7 +37,7 @@ public class AuditEventHandler implements EventHandler { String method = requestContext.getMethod(); if (responseContext.getEntity() != null) { String path = requestContext.getUriInfo().getPath(); - String username = ANONYMOUS_USER; + String username = "anonymous"; if (requestContext.getSecurityContext().getUserPrincipal() != null) { username = requestContext.getSecurityContext().getUserPrincipal().getName(); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/DataInsightChartRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/DataInsightChartRepository.java index fc217557da7..45b4654434d 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/DataInsightChartRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/DataInsightChartRepository.java @@ -94,7 +94,7 @@ public class DataInsightChartRepository extends EntityRepository table.setProfile(null)); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/feeds/FeedResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/feeds/FeedResource.java index 9b4bdba3ba4..060b6a92c44 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/feeds/FeedResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/feeds/FeedResource.java @@ -69,7 +69,6 @@ import org.openmetadata.service.jdbi3.FeedRepository; import org.openmetadata.service.jdbi3.FeedRepository.FilterType; import org.openmetadata.service.jdbi3.FeedRepository.PaginationType; import org.openmetadata.service.resources.Collection; -import org.openmetadata.service.resources.feeds.FeedResource.ThreadList; import org.openmetadata.service.resources.feeds.MessageParser.EntityLink; import org.openmetadata.service.security.Authorizer; import org.openmetadata.service.security.policyevaluator.OperationContext; diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/metadata/MetadataServiceResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/metadata/MetadataServiceResource.java index 7ee0bd8cc48..b8821e13257 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/metadata/MetadataServiceResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/services/metadata/MetadataServiceResource.java @@ -72,7 +72,7 @@ public class MetadataServiceResource public static final String COLLECTION_PATH = "v1/services/metadataServices/"; public static final String FIELDS = "pipelines,owner,tags"; - public void initialize(OpenMetadataApplicationConfig config) throws IOException { + public void initialize(OpenMetadataApplicationConfig config) { registerMetadataServices(config); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/security/auth/LoginAttemptCache.java b/openmetadata-service/src/main/java/org/openmetadata/service/security/auth/LoginAttemptCache.java index 47260fb0367..bed3083d8ca 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/security/auth/LoginAttemptCache.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/security/auth/LoginAttemptCache.java @@ -5,6 +5,7 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; +import lombok.NonNull; import org.openmetadata.schema.api.configuration.LoginConfiguration; import org.openmetadata.service.OpenMetadataApplicationConfig; @@ -26,7 +27,7 @@ public class LoginAttemptCache { .expireAfterWrite(accessBlockTime, TimeUnit.SECONDS) .build( new CacheLoader<>() { - public Integer load(String key) { + public Integer load(@NonNull String key) { return 0; } }); @@ -41,7 +42,7 @@ public class LoginAttemptCache { .expireAfterWrite(blockTimeInSec, TimeUnit.SECONDS) .build( new CacheLoader<>() { - public Integer load(String key) { + public Integer load(@NonNull String key) { return 0; } }); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/util/ChangeEventParser.java b/openmetadata-service/src/main/java/org/openmetadata/service/util/ChangeEventParser.java index ac4a9bb20a5..1d484476c2c 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/util/ChangeEventParser.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/util/ChangeEventParser.java @@ -605,10 +605,8 @@ public final class ChangeEventParser { String spanAddClose = getAddMarkerClose(publishTo); String spanRemove = getRemoveMarker(publishTo); String spanRemoveClose = getRemoveMarkerClose(publishTo); - if (diff != null) { - diff = replaceMarkers(diff, addMarker, spanAdd, spanAddClose); - diff = replaceMarkers(diff, removeMarker, spanRemove, spanRemoveClose); - } + diff = replaceMarkers(diff, addMarker, spanAdd, spanAddClose); + diff = replaceMarkers(diff, removeMarker, spanRemove, spanRemoveClose); return diff; } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/util/EntityUtil.java b/openmetadata-service/src/main/java/org/openmetadata/service/util/EntityUtil.java index 5fdf38c7a7b..513449196a0 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/util/EntityUtil.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/util/EntityUtil.java @@ -23,8 +23,6 @@ import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; -import java.util.Objects; -import java.util.Optional; import java.util.UUID; import java.util.function.BiPredicate; import java.util.regex.Pattern; @@ -33,8 +31,6 @@ import lombok.Getter; import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.joda.time.Period; -import org.joda.time.format.ISOPeriodFormat; import org.openmetadata.common.utils.CommonUtil; import org.openmetadata.schema.EntityInterface; import org.openmetadata.schema.api.data.TermReference; @@ -44,20 +40,15 @@ import org.openmetadata.schema.entity.data.Topic; import org.openmetadata.schema.entity.policies.accessControl.Rule; import org.openmetadata.schema.entity.tags.Tag; import org.openmetadata.schema.entity.type.CustomProperty; -import org.openmetadata.schema.filter.EventFilter; -import org.openmetadata.schema.filter.Filters; import org.openmetadata.schema.type.ChangeDescription; import org.openmetadata.schema.type.ChangeEvent; import org.openmetadata.schema.type.Column; import org.openmetadata.schema.type.EntityReference; -import org.openmetadata.schema.type.EventType; -import org.openmetadata.schema.type.FailureDetails; import org.openmetadata.schema.type.Field; import org.openmetadata.schema.type.FieldChange; import org.openmetadata.schema.type.MetadataOperation; import org.openmetadata.schema.type.MlFeature; import org.openmetadata.schema.type.MlHyperParameter; -import org.openmetadata.schema.type.Schedule; import org.openmetadata.schema.type.TableConstraint; import org.openmetadata.schema.type.TagLabel; import org.openmetadata.schema.type.TagLabel.TagSource; @@ -92,8 +83,6 @@ public final class EntityUtil { public static final Comparator compareChangeEvent = Comparator.comparing(ChangeEvent::getTimestamp); public static final Comparator compareGlossaryTerm = Comparator.comparing(GlossaryTerm::getName); public static final Comparator compareCustomProperty = Comparator.comparing(CustomProperty::getName); - public static final Comparator compareFilters = Comparator.comparing(Filters::getEventType); - public static final Comparator compareEventFilters = Comparator.comparing(EventFilter::getEntityType); // // Matchers used for matching two items in a list @@ -126,14 +115,6 @@ public final class EntityUtil { public static final BiPredicate mlFeatureMatch = MlFeature::equals; public static final BiPredicate mlHyperParameterMatch = MlHyperParameter::equals; - public static final BiPredicate failureDetailsMatch = - (failureDetails1, failureDetails2) -> - Objects.equals(failureDetails2.getLastFailedAt(), failureDetails1.getLastFailedAt()) - && Objects.equals(failureDetails2.getLastSuccessfulAt(), failureDetails1.getLastSuccessfulAt()); - - public static final BiPredicate eventFilterMatch = - (filter1, filter2) -> - filter1.getEntityType().equals(filter2.getEntityType()) && filter1.getFilters().equals(filter2.getFilters()); public static final BiPredicate glossaryTermMatch = (filter1, filter2) -> filter1.getFullyQualifiedName().equals(filter2.getFullyQualifiedName()); @@ -154,31 +135,6 @@ public final class EntityUtil { private EntityUtil() {} - /** Validate Ingestion Schedule */ - public static void validateIngestionSchedule(Schedule ingestion) { - if (ingestion == null) { - return; - } - String duration = ingestion.getRepeatFrequency(); - - // ISO8601 duration format is P{y}Y{m}M{d}DT{h}H{m}M{s}S. - String[] splits = duration.split("T"); - if (splits[0].contains("Y") || splits[0].contains("M") || (splits.length == 2 && splits[1].contains("S"))) { - throw new IllegalArgumentException( - "Ingestion repeatFrequency can only contain Days, Hours, and Minutes - " + "example P{d}DT{h}H{m}M"); - } - - Period period; - try { - period = ISOPeriodFormat.standard().parsePeriod(duration); - } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("Invalid ingestion repeatFrequency " + duration, e); - } - if (period.toStandardMinutes().getMinutes() < 60) { - throw new IllegalArgumentException("Ingestion repeatFrequency is too short and must be more than 60 minutes"); - } - } - /** Validate that JSON payload can be turned into POJO object */ public static T validate(String identity, String json, Class clz) throws WebApplicationException, IOException { T entity = null; @@ -417,19 +373,6 @@ public final class EntityUtil { return Math.round((version + 1.0) * 10.0) / 10.0; } - public static void addSoftDeleteFilter(List filters) { - // Add filter for soft delete events if delete event type is requested - Optional deleteFilter = - filters.stream().filter(eventFilter -> eventFilter.getEventType().equals(EventType.ENTITY_DELETED)).findAny(); - deleteFilter.ifPresent( - eventFilter -> - filters.add( - new Filters() - .withEventType(EventType.ENTITY_SOFT_DELETED) - .withInclude(eventFilter.getInclude()) - .withExclude(eventFilter.getExclude()))); - } - public static EntityReference copy(EntityReference from, EntityReference to) { return to.withType(from.getType()) .withId(from.getId()) @@ -506,4 +449,8 @@ public final class EntityUtil { public static EntityReference getEntityReference(EntityInterface entity) { return entity == null ? null : entity.getEntityReference(); } + + public static Column getColumn(Table table, String columnName) { + return table.getColumns().stream().filter(c -> c.getName().equals(columnName)).findFirst().orElse(null); + } } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/monitoring/CloudWatchEventMonitorTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/monitoring/CloudWatchEventMonitorTest.java index d4099c4071c..d76c1012390 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/monitoring/CloudWatchEventMonitorTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/monitoring/CloudWatchEventMonitorTest.java @@ -13,7 +13,7 @@ package org.openmetadata.service.monitoring; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.openmetadata.service.resources.services.ingestionpipelines.IngestionPipelineResourceTest.DATABASE_METADATA_CONFIG; import java.time.Instant; @@ -44,7 +44,6 @@ public class CloudWatchEventMonitorTest { private static final String NAMESPACE = "INGESTION_PIPELINE"; private static final String EXPECTED_NAMESPACE = "openmetadata/INGESTION_PIPELINE"; private static final String FQN = "service.ingestion"; - private static EventMonitorConfiguration config; private static CloudwatchEventMonitor eventMonitor; @@ -74,7 +73,7 @@ public class CloudWatchEventMonitorTest { @BeforeAll static void setUp() { - config = new EventMonitorConfiguration(); + EventMonitorConfiguration config = new EventMonitorConfiguration(); config.setEventMonitor(EventMonitorProvider.CLOUDWATCH); config.setBatchSize(10); eventMonitor = new CloudwatchEventMonitor(EventMonitorProvider.CLOUDWATCH, config, CLUSTER_NAME); diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/monitoring/EventMonitorFactoryTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/monitoring/EventMonitorFactoryTest.java index 6b060e72ef0..39415b6cd40 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/monitoring/EventMonitorFactoryTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/monitoring/EventMonitorFactoryTest.java @@ -12,7 +12,7 @@ */ package org.openmetadata.service.monitoring; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.HashMap; import org.junit.jupiter.api.BeforeEach; diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/pipelineService/airflow/AirflowRESTClientIntegrationTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/pipelineService/airflow/AirflowRESTClientIntegrationTest.java index 68914248e22..44823fc12a2 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/pipelineService/airflow/AirflowRESTClientIntegrationTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/pipelineService/airflow/AirflowRESTClientIntegrationTest.java @@ -62,14 +62,14 @@ class AirflowRESTClientIntegrationTest { void testLastIngestionLogsAreRetrievedWhenStatusCodesAre200() { Map expectedMap = Map.of("key1", "value1", "key2", "value2"); - registerMockedEndpoints(200, 200); + registerMockedEndpoints(200); assertEquals(expectedMap, airflowRESTClient.getLastIngestionLogs(INGESTION_PIPELINE, "after")); } @Test void testLastIngestionLogsExceptionWhenLoginFails() { - registerMockedEndpoints(404, 200); + registerMockedEndpoints(200); Exception exception = assertThrows( @@ -84,7 +84,7 @@ class AirflowRESTClientIntegrationTest { @Test void testLastIngestionLogsExceptionWhenStatusCode404() { - registerMockedEndpoints(200, 404); + registerMockedEndpoints(404); Exception exception = assertThrows( @@ -107,7 +107,7 @@ class AirflowRESTClientIntegrationTest { return airflowConfiguration; } - private void registerMockedEndpoints(int loginStatusCode, int lastDagLogStatusCode) { + private void registerMockedEndpoints(int lastDagLogStatusCode) { String jsonResponse = "{ \"key1\": \"value1\", \"key2\": \"value2\" }"; Map pathResponses = new HashMap<>(); diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/ChangeEventParserResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/ChangeEventParserResourceTest.java index 59fc6ef4ebc..d4411df5307 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/ChangeEventParserResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/ChangeEventParserResourceTest.java @@ -50,8 +50,7 @@ import org.openmetadata.service.util.JsonUtils; @TestInstance(Lifecycle.PER_CLASS) @TestMethodOrder(MethodOrderer.OrderAnnotation.class) class ChangeEventParserResourceTest extends OpenMetadataApplicationTest { - - Table TABLE; + private Table TABLE; @BeforeAll public void setup(TestInfo test) throws IOException, URISyntaxException { diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java index dee1d036eb7..e6bb8e55e98 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java @@ -730,11 +730,20 @@ public abstract class EntityResourceTest { super(Entity.CHART, Chart.class, ChartList.class, "charts", ChartResource.FIELDS); } - @BeforeAll - public void setup(TestInfo test) throws IOException, URISyntaxException { - super.setup(test); - } - @Test void post_chartWithoutRequiredFields_4xx(TestInfo test) { // Service is required field diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dataInsight/DataInsightResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dataInsight/DataInsightResourceTest.java index 705ca656758..286fcd67f60 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dataInsight/DataInsightResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dataInsight/DataInsightResourceTest.java @@ -7,7 +7,6 @@ import static org.openmetadata.service.util.TestUtils.assertResponseContains; import java.io.IOException; import java.util.Map; -import org.apache.http.client.HttpResponseException; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; import org.openmetadata.schema.api.dataInsight.CreateDataInsightChart; @@ -40,7 +39,7 @@ public class DataInsightResourceTest extends EntityResourceTest createEntity(createRequest(test).withName(null), ADMIN_AUTH_HEADERS), BAD_REQUEST, @@ -57,28 +56,23 @@ public class DataInsightResourceTest extends EntityResourceTest authHeaders) - throws HttpResponseException { + DataInsightChart createdEntity, CreateDataInsightChart request, Map authHeaders) { assertEquals(request.getName(), createdEntity.getName()); assertEquals(request.getDescription(), createdEntity.getDescription()); } @Override - public void compareEntities(DataInsightChart expected, DataInsightChart updated, Map authHeaders) - throws HttpResponseException { + public void compareEntities(DataInsightChart expected, DataInsightChart updated, Map authHeaders) { assertEquals(expected.getName(), updated.getName()); assertEquals(expected.getFullyQualifiedName(), updated.getFullyQualifiedName()); assertEquals(expected.getDescription(), updated.getDescription()); } @Override - public DataInsightChart validateGetWithDifferentFields(DataInsightChart entity, boolean byName) - throws HttpResponseException { + public DataInsightChart validateGetWithDifferentFields(DataInsightChart entity, boolean byName) { return null; } @Override - public void assertFieldChange(String fieldName, Object expected, Object actual) throws IOException { - return; - } + public void assertFieldChange(String fieldName, Object expected, Object actual) {} } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/databases/DatabaseResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/databases/DatabaseResourceTest.java index 3f54b24742d..e05b32472a2 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/databases/DatabaseResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/databases/DatabaseResourceTest.java @@ -24,12 +24,10 @@ import static org.openmetadata.service.util.TestUtils.assertResponse; import static org.openmetadata.service.util.TestUtils.assertResponseContains; import java.io.IOException; -import java.net.URISyntaxException; import java.util.HashMap; import java.util.Map; import lombok.extern.slf4j.Slf4j; import org.apache.http.client.HttpResponseException; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; import org.junit.jupiter.api.TestInstance; @@ -52,11 +50,6 @@ public class DatabaseResourceTest extends EntityResourceTest { super(TABLE, Table.class, TableList.class, "tables", TableResource.FIELDS); } - @BeforeAll - public void setup(TestInfo test) throws IOException, URISyntaxException { - super.setup(test); - } - public void setupDatabaseSchemas(TestInfo test) throws IOException { DatabaseResourceTest databaseResourceTest = new DatabaseResourceTest(); CreateDatabase create = databaseResourceTest.createRequest(test).withService(SNOWFLAKE_REFERENCE); diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java index 5df3c5f328f..3f1ed772c1e 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java @@ -549,9 +549,7 @@ public class TestCaseResourceTest extends EntityResourceTest createThread(create, AUTH_HEADERS), BAD_REQUEST, "[message must not be null]"); } @Test void post_feedWithoutFrom_4xx() { - // Create thread without from field in the request CreateThread create = create().withFrom(null); assertResponseContains(() -> createThread(create, AUTH_HEADERS), BAD_REQUEST, "[from must not be null]"); } @Test void post_feedWithNonExistentFrom_404() { - // Create thread with non-existent from CreateThread create = create().withFrom(NON_EXISTENT_ENTITY.toString()); assertResponse( () -> createThread(create, AUTH_HEADERS), NOT_FOUND, entityNotFound(Entity.USER, NON_EXISTENT_ENTITY)); @@ -231,7 +226,6 @@ public class FeedResourceTest extends OpenMetadataApplicationTest { @Test void post_feedWithNonExistentAbout_404() { - // Create thread with non-existent addressed To entity CreateThread create = create().withAbout("<#E::table::invalidTableName>"); assertResponse( () -> createThread(create, AUTH_HEADERS), NOT_FOUND, entityNotFound(Entity.TABLE, "invalidTableName")); @@ -594,15 +588,8 @@ public class FeedResourceTest extends OpenMetadataApplicationTest { ResolveTask resolveTask = new ResolveTask().withNewValue("accepted description"); resolveTask(taskId, resolveTask, userAuthHeaders); - ResultList tables = TABLE_RESOURCE_TEST.listEntities(null, userAuthHeaders); - Optional
table = - tables.getData().stream() - .filter(t -> t.getFullyQualifiedName().equals(TABLE.getFullyQualifiedName())) - .findFirst(); - assertTrue(table.isPresent()); - assertEquals( - "accepted description", - table.get().getColumns().stream().filter(c -> c.getName().equals("c1")).findFirst().get().getDescription()); + Table table = TABLE_RESOURCE_TEST.getEntity(TABLE.getId(), null, userAuthHeaders); + assertEquals("accepted description", EntityUtil.getColumn(table, ("c1")).getDescription()); Thread taskThread = getTask(taskId, userAuthHeaders); task = taskThread.getTask(); @@ -640,27 +627,14 @@ public class FeedResourceTest extends OpenMetadataApplicationTest { assertNotNull(task.getId()); int taskId = task.getId(); - ResultList
tables = TABLE_RESOURCE_TEST.listEntities(null, userAuthHeaders); - Optional
table = - tables.getData().stream() - .filter(t -> t.getFullyQualifiedName().equals(TABLE.getFullyQualifiedName())) - .findFirst(); - assertTrue(table.isPresent()); - String oldDescription = - table.get().getColumns().stream().filter(c -> c.getName().equals("c1")).findFirst().get().getDescription(); + Table table = TABLE_RESOURCE_TEST.getEntity(TABLE.getId(), null, userAuthHeaders); + String oldDescription = EntityUtil.getColumn(table, "c1").getDescription(); closeTask(taskId, "closing comment", userAuthHeaders); // closing the task should not affect description of the table - tables = TABLE_RESOURCE_TEST.listEntities(null, userAuthHeaders); - table = - tables.getData().stream() - .filter(t -> t.getFullyQualifiedName().equals(TABLE.getFullyQualifiedName())) - .findFirst(); - assertTrue(table.isPresent()); - assertEquals( - oldDescription, - table.get().getColumns().stream().filter(c -> c.getName().equals("c1")).findFirst().get().getDescription()); + table = TABLE_RESOURCE_TEST.getEntity(TABLE.getId(), null, userAuthHeaders); + assertEquals(oldDescription, EntityUtil.getColumn(table, "c1").getDescription()); Thread taskThread = getTask(taskId, userAuthHeaders); task = taskThread.getTask(); @@ -701,16 +675,8 @@ public class FeedResourceTest extends OpenMetadataApplicationTest { ResolveTask resolveTask = new ResolveTask().withNewValue(newValue); resolveTask(taskId, resolveTask, userAuthHeaders); - Map params = new HashMap<>(); - params.put("fields", "tags"); - ResultList
tables = TABLE_RESOURCE_TEST.listEntities(params, userAuthHeaders); - Optional
table = - tables.getData().stream() - .filter(t -> t.getFullyQualifiedName().equals(TABLE.getFullyQualifiedName())) - .findFirst(); - assertTrue(table.isPresent()); - List tags = - table.get().getColumns().stream().filter(c -> c.getName().equals("c1")).findFirst().get().getTags(); + Table table = TABLE_RESOURCE_TEST.getEntity(TABLE.getId(), "tags", userAuthHeaders); + List tags = EntityUtil.getColumn(table, "c1").getTags(); assertEquals(USER_ADDRESS_TAG_LABEL.getTagFQN(), tags.get(0).getTagFQN()); Thread taskThread = getTask(taskId, userAuthHeaders); @@ -983,7 +949,7 @@ public class FeedResourceTest extends OpenMetadataApplicationTest { .withMessage("Announcement Two") .withType(ThreadType.Announcement) .withAnnouncementDetails(announcementDetails); - Thread thread2 = createAndCheck(create, userAuthHeaders); + Thread thread2 = createAndCheck(create2, userAuthHeaders); String originalJson = JsonUtils.pojoToJson(thread2); diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/glossary/GlossaryResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/glossary/GlossaryResourceTest.java index 9fbd0e6ff57..06764d321f4 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/glossary/GlossaryResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/glossary/GlossaryResourceTest.java @@ -33,14 +33,12 @@ import static org.openmetadata.service.util.TestUtils.assertResponse; import static org.openmetadata.service.util.TestUtils.validateTagLabel; import java.io.IOException; -import java.net.URISyntaxException; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.ws.rs.core.Response.Status; import lombok.extern.slf4j.Slf4j; import org.apache.http.client.HttpResponseException; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; @@ -73,11 +71,6 @@ public class GlossaryResourceTest extends EntityResourceTest { } @Test - void post_testWithInvalidValues_4xx(TestInfo test) throws HttpResponseException { + void post_testWithInvalidValues_4xx() { String uuid = "Test2" + UUID.randomUUID(); CreateKpiRequest create1 = createRequest(uuid); create1.withDataInsightChart(USER1_REF); @@ -109,7 +109,7 @@ public class KpiResourceTest extends EntityResourceTest { } @Test - void createUpdate_tests_200(TestInfo test) throws IOException { + void createUpdate_tests_200() throws IOException { CreateKpiRequest create = createRequest("Test" + UUID.randomUUID()); Kpi createdKpi = createAndCheckEntity(create, ADMIN_AUTH_HEADERS); createdKpi = getEntity(createdKpi.getId(), KpiResource.FIELDS, ADMIN_AUTH_HEADERS); @@ -250,8 +250,7 @@ public class KpiResourceTest extends EntityResourceTest { } @Override - public void validateCreatedEntity(Kpi createdEntity, CreateKpiRequest request, Map authHeaders) - throws HttpResponseException { + public void validateCreatedEntity(Kpi createdEntity, CreateKpiRequest request, Map authHeaders) { validateCommonEntityFields(createdEntity, request, getPrincipalName(authHeaders)); assertEquals(request.getStartDate(), createdEntity.getStartDate()); assertEquals(request.getEndDate(), createdEntity.getEndDate()); @@ -325,7 +324,7 @@ public class KpiResourceTest extends EntityResourceTest { } @Override - public void compareEntities(Kpi expected, Kpi updated, Map authHeaders) throws HttpResponseException { + public void compareEntities(Kpi expected, Kpi updated, Map authHeaders) { validateCommonEntityFields(expected, updated, getPrincipalName(authHeaders)); assertEquals(expected.getStartDate(), updated.getStartDate()); assertEquals(expected.getEndDate(), updated.getEndDate()); @@ -335,16 +334,14 @@ public class KpiResourceTest extends EntityResourceTest { } @Override - public Kpi validateGetWithDifferentFields(Kpi entity, boolean byName) throws HttpResponseException { + public Kpi validateGetWithDifferentFields(Kpi entity, boolean byName) { // TODO: return null; } @Override public void assertFieldChange(String fieldName, Object expected, Object actual) { - if (expected == actual) { - return; - } + if (expected == actual) {} // TODO fix this } } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/locations/LocationResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/locations/LocationResourceTest.java index 5440675f98a..7b15cf610d7 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/locations/LocationResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/locations/LocationResourceTest.java @@ -21,7 +21,6 @@ import static org.openmetadata.service.util.TestUtils.assertListNull; import static org.openmetadata.service.util.TestUtils.assertResponse; import java.io.IOException; -import java.net.URISyntaxException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.ArrayList; @@ -34,7 +33,6 @@ import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Response.Status; import lombok.extern.slf4j.Slf4j; import org.apache.http.client.HttpResponseException; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; import org.openmetadata.schema.api.data.CreateLocation; @@ -54,11 +52,6 @@ public class LocationResourceTest extends EntityResourceTest { supportsNameWithDot = false; } - @BeforeAll - public void setup(TestInfo test) throws IOException, URISyntaxException { - super.setup(test); - } - public void setupTypes() throws HttpResponseException { INT_TYPE = getEntityByName("integer", "", ADMIN_AUTH_HEADERS); STRING_TYPE = getEntityByName("string", "", ADMIN_AUTH_HEADERS); diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/util/FullyQualifiedNameTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/util/FullyQualifiedNameTest.java index 111a729e685..81907cd15a1 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/util/FullyQualifiedNameTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/util/FullyQualifiedNameTest.java @@ -1,6 +1,7 @@ package org.openmetadata.service.util; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.List; @@ -85,6 +86,6 @@ class FullyQualifiedNameTest { assertEquals("a.b.c", FullyQualifiedName.getParent("a.b.c.d")); assertEquals("a.b", FullyQualifiedName.getParent("a.b.c")); assertEquals("a", FullyQualifiedName.getParent("a.b")); - assertEquals(null, FullyQualifiedName.getParent("a")); + assertNull(FullyQualifiedName.getParent("a")); } }