From e38708a5ba60f9c8cb4e4554a16e5daab9890000 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Wed, 15 Aug 2018 17:08:04 +0200 Subject: [PATCH 01/20] Remane MyNakadiRuntimeException1 to NakadiRuntimeBaseException --- .../nakadi/controller/CursorOperationsController.java | 6 +++--- .../org/zalando/nakadi/controller/ExceptionHandling.java | 6 +++--- .../zalando/nakadi/controller/PartitionsController.java | 4 ++-- .../nakadi/controller/PostSubscriptionController.java | 4 ++-- src/main/java/org/zalando/nakadi/domain/NakadiCursor.java | 4 ++-- .../exceptions/ErrorGettingCursorTimeLagException.java | 4 ++-- .../nakadi/exceptions/runtime/AccessDeniedException.java | 2 +- .../nakadi/exceptions/runtime/ConflictException.java | 2 +- .../runtime/ConnectionSlotOccupiedException.java | 2 +- .../exceptions/runtime/CursorConversionException.java | 2 +- .../exceptions/runtime/CursorsAreEmptyException.java | 2 +- .../runtime/DbWriteOperationsBlockedException.java | 2 +- .../runtime/DuplicatedEventTypeNameException.java | 2 +- .../exceptions/runtime/DuplicatedStorageException.java | 2 +- .../runtime/DuplicatedSubscriptionException.java | 2 +- .../exceptions/runtime/DuplicatedTimelineException.java | 2 +- .../exceptions/runtime/EventPublishingException.java | 2 +- .../exceptions/runtime/EventTypeDeletionException.java | 2 +- .../runtime/EventTypeOptionsValidationException.java | 2 +- .../exceptions/runtime/EventTypeTimeoutException.java | 2 +- .../exceptions/runtime/EventTypeUnavailableException.java | 2 +- .../exceptions/runtime/EventValidationException.java | 2 +- .../exceptions/runtime/FeatureNotAvailableException.java | 2 +- .../exceptions/runtime/IllegalClientIdException.java | 2 +- .../exceptions/runtime/InconsistentStateException.java | 2 +- .../nakadi/exceptions/runtime/InvalidCursorOperation.java | 2 +- .../exceptions/runtime/InvalidEventTypeException.java | 2 +- .../exceptions/runtime/InvalidStreamIdException.java | 2 +- .../nakadi/exceptions/runtime/LimitReachedException.java | 2 +- ...imeException1.java => NakadiRuntimeBaseException.java} | 8 ++++---- .../exceptions/runtime/NoConnectionSlotsException.java | 2 +- .../nakadi/exceptions/runtime/NoEventTypeException.java | 2 +- .../nakadi/exceptions/runtime/NoStorageException.java | 2 +- .../exceptions/runtime/NoSubscriptionException.java | 2 +- .../nakadi/exceptions/runtime/NotFoundException.java | 2 +- .../exceptions/runtime/OperationInterruptedException.java | 2 +- .../exceptions/runtime/OperationTimeoutException.java | 2 +- .../exceptions/runtime/RebalanceConflictException.java | 2 +- .../exceptions/runtime/RepositoryProblemException.java | 2 +- .../exceptions/runtime/RequestInProgressException.java | 2 +- .../runtime/ServiceTemporarilyUnavailableException.java | 2 +- .../nakadi/exceptions/runtime/StorageIsUsedException.java | 2 +- .../runtime/SubscriptionPartitionConflictException.java | 2 +- .../runtime/SubscriptionUpdateConflictException.java | 2 +- .../exceptions/runtime/TimeLagStatsTimeoutException.java | 2 +- .../nakadi/exceptions/runtime/TimelineException.java | 2 +- .../runtime/TimelinesNotSupportedException.java | 2 +- .../exceptions/runtime/TooManyPartitionsException.java | 2 +- .../nakadi/exceptions/runtime/TopicConfigException.java | 2 +- .../nakadi/exceptions/runtime/TopicCreationException.java | 2 +- .../nakadi/exceptions/runtime/TopicDeletionException.java | 2 +- .../exceptions/runtime/TopicRepositoryException.java | 2 +- .../nakadi/exceptions/runtime/UnableProcessException.java | 2 +- .../exceptions/runtime/UnknownOperationException.java | 2 +- .../exceptions/runtime/UnknownStorageTypeException.java | 2 +- .../exceptions/runtime/UnparseableCursorException.java | 2 +- .../exceptions/runtime/WrongInitialCursorsException.java | 2 +- .../runtime/WrongStreamParametersException.java | 2 +- .../nakadi/exceptions/runtime/ZookeeperException.java | 2 +- .../zalando/nakadi/service/CursorOperationsService.java | 4 ++-- .../service/subscription/SubscriptionTimeLagService.java | 6 +++--- .../nakadi/service/subscription/state/ClosingState.java | 4 ++-- .../subscription/zk/AbstractZkSubscriptionClient.java | 4 ++-- .../zk/SubscriptionNotInitializedException.java | 4 ++-- .../service/subscription/zk/ZkSubscriptionClient.java | 4 ++-- 65 files changed, 83 insertions(+), 83 deletions(-) rename src/main/java/org/zalando/nakadi/exceptions/runtime/{MyNakadiRuntimeException1.java => NakadiRuntimeBaseException.java} (53%) diff --git a/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java b/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java index 3a10cdb7ee..606b71f954 100644 --- a/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java +++ b/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java @@ -22,7 +22,7 @@ import org.zalando.nakadi.exceptions.runtime.NotFoundException; import org.zalando.nakadi.exceptions.runtime.CursorConversionException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorOperation; -import org.zalando.nakadi.exceptions.runtime.MyNakadiRuntimeException1; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.repository.EventTypeRepository; import org.zalando.nakadi.service.AuthorizationValidator; @@ -83,7 +83,7 @@ public ResponseEntity getDistance(@PathVariable("eventTypeName") final String final Long distance = cursorOperationsService.calculateDistance(initialCursor, finalCursor); query.setDistance(distance); } catch (InternalNakadiException | ServiceTemporarilyUnavailableException e) { - throw new MyNakadiRuntimeException1("problem calculating cursors distance", e); + throw new NakadiRuntimeBaseException("problem calculating cursors distance", e); } catch (final NoSuchEventTypeException e) { throw new NotFoundException("event type not found", e); } catch (final InvalidCursorException e) { @@ -151,7 +151,7 @@ private String clientErrorMessage(final InvalidCursorOperation.Reason reason) { "have matching partitions."; default: LOG.error("Unexpected invalid cursor operation reason " + reason); - throw new MyNakadiRuntimeException1(); + throw new NakadiRuntimeBaseException(); } } diff --git a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java index 2ada606512..033d3eeb46 100644 --- a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java +++ b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java @@ -20,7 +20,7 @@ import org.zalando.nakadi.exceptions.runtime.CursorsAreEmptyException; import org.zalando.nakadi.exceptions.runtime.DbWriteOperationsBlockedException; import org.zalando.nakadi.exceptions.runtime.LimitReachedException; -import org.zalando.nakadi.exceptions.runtime.MyNakadiRuntimeException1; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; import org.zalando.nakadi.exceptions.runtime.RepositoryProblemException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; @@ -120,8 +120,8 @@ public ResponseEntity handleRepositoryProblem(final RepositoryProblemEx return Responses.create(Response.Status.SERVICE_UNAVAILABLE, exception.getMessage(), request); } - @ExceptionHandler(MyNakadiRuntimeException1.class) - public ResponseEntity handleInternalError(final MyNakadiRuntimeException1 exception, + @ExceptionHandler(NakadiRuntimeBaseException.class) + public ResponseEntity handleInternalError(final NakadiRuntimeBaseException exception, final NativeWebRequest request) { LOG.error("Unexpected problem occurred", exception); return Responses.create(Response.Status.INTERNAL_SERVER_ERROR, exception.getMessage(), request); diff --git a/src/main/java/org/zalando/nakadi/controller/PartitionsController.java b/src/main/java/org/zalando/nakadi/controller/PartitionsController.java index 55233a438a..3203bd2256 100644 --- a/src/main/java/org/zalando/nakadi/controller/PartitionsController.java +++ b/src/main/java/org/zalando/nakadi/controller/PartitionsController.java @@ -23,7 +23,7 @@ import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorOperation; -import org.zalando.nakadi.exceptions.runtime.MyNakadiRuntimeException1; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.NotFoundException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.repository.EventTypeRepository; @@ -163,7 +163,7 @@ private CursorLag getCursorLag(final String eventTypeName, final String partitio .stream() .findFirst() .map(this::toCursorLag) - .orElseThrow(MyNakadiRuntimeException1::new); + .orElseThrow(NakadiRuntimeBaseException::new); } private EventTypePartitionView getTopicPartition(final String eventTypeName, final String partition) diff --git a/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java b/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java index 4a4a56d368..d71baa88ec 100644 --- a/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java +++ b/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java @@ -19,7 +19,7 @@ import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.DuplicatedSubscriptionException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; -import org.zalando.nakadi.exceptions.runtime.MyNakadiRuntimeException1; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSubscriptionException; import org.zalando.nakadi.exceptions.runtime.SubscriptionUpdateConflictException; @@ -119,7 +119,7 @@ private ResponseEntity prepareLocationResponse(final Subscription subscriptio NoEventTypeException.class, WrongInitialCursorsException.class, TooManyPartitionsException.class}) - public ResponseEntity handleUnprocessableSubscription(final MyNakadiRuntimeException1 exception, + public ResponseEntity handleUnprocessableSubscription(final NakadiRuntimeBaseException exception, final NativeWebRequest request) { LOG.debug("Error occurred when working with subscriptions", exception); return Responses.create(MoreStatus.UNPROCESSABLE_ENTITY, exception.getMessage(), request); diff --git a/src/main/java/org/zalando/nakadi/domain/NakadiCursor.java b/src/main/java/org/zalando/nakadi/domain/NakadiCursor.java index 2541bcd32b..aada4785fa 100644 --- a/src/main/java/org/zalando/nakadi/domain/NakadiCursor.java +++ b/src/main/java/org/zalando/nakadi/domain/NakadiCursor.java @@ -2,7 +2,7 @@ import com.google.common.base.Preconditions; import org.zalando.nakadi.exceptions.InvalidCursorException; -import org.zalando.nakadi.exceptions.runtime.MyNakadiRuntimeException1; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.repository.kafka.KafkaCursor; import java.util.Objects; @@ -118,7 +118,7 @@ public static NakadiCursor of(final Timeline timeline, final String partition, f case KAFKA: return new NakadiKafkaCursor(timeline, partition, offset); default: - throw new MyNakadiRuntimeException1( + throw new NakadiRuntimeBaseException( "Cursor storage type " + timeline.getStorage().getType() + " not supported"); } } diff --git a/src/main/java/org/zalando/nakadi/exceptions/ErrorGettingCursorTimeLagException.java b/src/main/java/org/zalando/nakadi/exceptions/ErrorGettingCursorTimeLagException.java index fe442242a0..0ea8a6424b 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/ErrorGettingCursorTimeLagException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/ErrorGettingCursorTimeLagException.java @@ -1,9 +1,9 @@ package org.zalando.nakadi.exceptions; import org.zalando.nakadi.domain.NakadiCursor; -import org.zalando.nakadi.exceptions.runtime.MyNakadiRuntimeException1; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; -public class ErrorGettingCursorTimeLagException extends MyNakadiRuntimeException1 { +public class ErrorGettingCursorTimeLagException extends NakadiRuntimeBaseException { private final NakadiCursor failedCursor; diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/AccessDeniedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/AccessDeniedException.java index f7771bacc4..ce1c6211fe 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/AccessDeniedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/AccessDeniedException.java @@ -3,7 +3,7 @@ import org.zalando.nakadi.plugin.api.authz.AuthorizationService; import org.zalando.nakadi.plugin.api.authz.Resource; -public class AccessDeniedException extends MyNakadiRuntimeException1 { +public class AccessDeniedException extends NakadiRuntimeBaseException { private final Resource resource; private final AuthorizationService.Operation operation; diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/ConflictException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/ConflictException.java index fda674780e..00ef12008e 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/ConflictException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/ConflictException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class ConflictException extends MyNakadiRuntimeException1 { +public class ConflictException extends NakadiRuntimeBaseException { public ConflictException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/ConnectionSlotOccupiedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/ConnectionSlotOccupiedException.java index a832ffe4cf..3b92672363 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/ConnectionSlotOccupiedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/ConnectionSlotOccupiedException.java @@ -1,4 +1,4 @@ package org.zalando.nakadi.exceptions.runtime; -public class ConnectionSlotOccupiedException extends MyNakadiRuntimeException1 { +public class ConnectionSlotOccupiedException extends NakadiRuntimeBaseException { } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorConversionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorConversionException.java index 1e8564c883..430893252c 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorConversionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorConversionException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class CursorConversionException extends MyNakadiRuntimeException1 { +public class CursorConversionException extends NakadiRuntimeBaseException { public CursorConversionException(final String message, final Exception e) { super(message, e); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorsAreEmptyException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorsAreEmptyException.java index f51fcc795a..a47d48deb4 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorsAreEmptyException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorsAreEmptyException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class CursorsAreEmptyException extends MyNakadiRuntimeException1 { +public class CursorsAreEmptyException extends NakadiRuntimeBaseException { public CursorsAreEmptyException() { super("Cursors are empty"); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/DbWriteOperationsBlockedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/DbWriteOperationsBlockedException.java index eb4fbebf4b..470810556f 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/DbWriteOperationsBlockedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/DbWriteOperationsBlockedException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class DbWriteOperationsBlockedException extends MyNakadiRuntimeException1 { +public class DbWriteOperationsBlockedException extends NakadiRuntimeBaseException { public DbWriteOperationsBlockedException(final String message) { super(message); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedEventTypeNameException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedEventTypeNameException.java index 5675698358..77d25022e6 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedEventTypeNameException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedEventTypeNameException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class DuplicatedEventTypeNameException extends MyNakadiRuntimeException1 { +public class DuplicatedEventTypeNameException extends NakadiRuntimeBaseException { public DuplicatedEventTypeNameException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedStorageException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedStorageException.java index 6ec7a94f80..3523046baf 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedStorageException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedStorageException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class DuplicatedStorageException extends MyNakadiRuntimeException1 { +public class DuplicatedStorageException extends NakadiRuntimeBaseException { public DuplicatedStorageException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedSubscriptionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedSubscriptionException.java index b8dfbedc55..2851397946 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedSubscriptionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedSubscriptionException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class DuplicatedSubscriptionException extends MyNakadiRuntimeException1 { +public class DuplicatedSubscriptionException extends NakadiRuntimeBaseException { public DuplicatedSubscriptionException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedTimelineException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedTimelineException.java index 3d53a093e1..06613132a0 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedTimelineException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedTimelineException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class DuplicatedTimelineException extends MyNakadiRuntimeException1 { +public class DuplicatedTimelineException extends NakadiRuntimeBaseException { public DuplicatedTimelineException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventPublishingException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventPublishingException.java index 4798068041..a079a8b6a4 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventPublishingException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventPublishingException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EventPublishingException extends MyNakadiRuntimeException1 { +public class EventPublishingException extends NakadiRuntimeBaseException { public EventPublishingException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeDeletionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeDeletionException.java index 1e8ace53ad..040b72e1df 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeDeletionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeDeletionException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EventTypeDeletionException extends MyNakadiRuntimeException1 { +public class EventTypeDeletionException extends NakadiRuntimeBaseException { public EventTypeDeletionException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeOptionsValidationException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeOptionsValidationException.java index 47288f648a..c58f7fab04 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeOptionsValidationException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeOptionsValidationException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EventTypeOptionsValidationException extends MyNakadiRuntimeException1 { +public class EventTypeOptionsValidationException extends NakadiRuntimeBaseException { public EventTypeOptionsValidationException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeTimeoutException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeTimeoutException.java index 6047766269..4e5a24bfa3 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeTimeoutException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeTimeoutException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EventTypeTimeoutException extends MyNakadiRuntimeException1 { +public class EventTypeTimeoutException extends NakadiRuntimeBaseException { public EventTypeTimeoutException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeUnavailableException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeUnavailableException.java index 7cf3e0aa07..263d3c8c04 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeUnavailableException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeUnavailableException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EventTypeUnavailableException extends MyNakadiRuntimeException1 { +public class EventTypeUnavailableException extends NakadiRuntimeBaseException { public EventTypeUnavailableException(final String message) { diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventValidationException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventValidationException.java index 43dd4c46e2..a67a4b79e5 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventValidationException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventValidationException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EventValidationException extends MyNakadiRuntimeException1 { +public class EventValidationException extends NakadiRuntimeBaseException { public EventValidationException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/FeatureNotAvailableException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/FeatureNotAvailableException.java index 2a34e66d28..0d50d39bc6 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/FeatureNotAvailableException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/FeatureNotAvailableException.java @@ -2,7 +2,7 @@ import org.zalando.nakadi.service.FeatureToggleService; -public class FeatureNotAvailableException extends MyNakadiRuntimeException1 { +public class FeatureNotAvailableException extends NakadiRuntimeBaseException { private final FeatureToggleService.Feature feature; public FeatureNotAvailableException(final String message, final FeatureToggleService.Feature feature) { diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/IllegalClientIdException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/IllegalClientIdException.java index bc56ecbb46..9ddd952efd 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/IllegalClientIdException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/IllegalClientIdException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class IllegalClientIdException extends MyNakadiRuntimeException1 { +public class IllegalClientIdException extends NakadiRuntimeBaseException { public IllegalClientIdException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InconsistentStateException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InconsistentStateException.java index ba3bc8d709..138b1c3e74 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/InconsistentStateException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InconsistentStateException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class InconsistentStateException extends MyNakadiRuntimeException1 { +public class InconsistentStateException extends NakadiRuntimeBaseException { public InconsistentStateException(final String msg, final Throwable cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorOperation.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorOperation.java index b9244e543d..c7b653891c 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorOperation.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorOperation.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class InvalidCursorOperation extends MyNakadiRuntimeException1 { +public class InvalidCursorOperation extends NakadiRuntimeBaseException { private final Reason reason; public enum Reason { diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidEventTypeException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidEventTypeException.java index 7f713053bb..ae18bbd44e 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidEventTypeException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidEventTypeException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class InvalidEventTypeException extends MyNakadiRuntimeException1 { +public class InvalidEventTypeException extends NakadiRuntimeBaseException { public InvalidEventTypeException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidStreamIdException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidStreamIdException.java index fec377a6a8..795f8338c7 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidStreamIdException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidStreamIdException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class InvalidStreamIdException extends MyNakadiRuntimeException1 { +public class InvalidStreamIdException extends NakadiRuntimeBaseException { private final String streamId; diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/LimitReachedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/LimitReachedException.java index 176632da4a..af2c96cb33 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/LimitReachedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/LimitReachedException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class LimitReachedException extends MyNakadiRuntimeException1 { +public class LimitReachedException extends NakadiRuntimeBaseException { public LimitReachedException(final String msg, final Throwable cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/MyNakadiRuntimeException1.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NakadiRuntimeBaseException.java similarity index 53% rename from src/main/java/org/zalando/nakadi/exceptions/runtime/MyNakadiRuntimeException1.java rename to src/main/java/org/zalando/nakadi/exceptions/runtime/NakadiRuntimeBaseException.java index 568bce1346..163df2d624 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/MyNakadiRuntimeException1.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NakadiRuntimeBaseException.java @@ -4,16 +4,16 @@ * Parent class for Nakadi runtime exceptions * Name NakadiRuntimeException was already taken for some kind of wrapper. This name is a nice alternative ;) */ -public class MyNakadiRuntimeException1 extends RuntimeException { +public class NakadiRuntimeBaseException extends RuntimeException { - public MyNakadiRuntimeException1() { + public NakadiRuntimeBaseException() { } - public MyNakadiRuntimeException1(final String message) { + public NakadiRuntimeBaseException(final String message) { super(message); } - public MyNakadiRuntimeException1(final String message, final Throwable cause) { + public NakadiRuntimeBaseException(final String message, final Throwable cause) { super(message, cause); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoConnectionSlotsException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoConnectionSlotsException.java index f8934968cd..5f4b849452 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoConnectionSlotsException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoConnectionSlotsException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class NoConnectionSlotsException extends MyNakadiRuntimeException1 { +public class NoConnectionSlotsException extends NakadiRuntimeBaseException { public NoConnectionSlotsException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoEventTypeException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoEventTypeException.java index 438433dd7c..3eb699ebce 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoEventTypeException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoEventTypeException.java @@ -2,7 +2,7 @@ import org.zalando.nakadi.exceptions.NoSuchEventTypeException; -public class NoEventTypeException extends MyNakadiRuntimeException1 { +public class NoEventTypeException extends NakadiRuntimeBaseException { public NoEventTypeException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStorageException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStorageException.java index c32d4262c8..87ea1dd21a 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStorageException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStorageException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class NoStorageException extends MyNakadiRuntimeException1 { +public class NoStorageException extends NakadiRuntimeBaseException { public NoStorageException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSubscriptionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSubscriptionException.java index 32a7900f1f..664b8b65ee 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSubscriptionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSubscriptionException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class NoSubscriptionException extends MyNakadiRuntimeException1 { +public class NoSubscriptionException extends NakadiRuntimeBaseException { public NoSubscriptionException(final String message, final Throwable cause) { super(message, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NotFoundException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NotFoundException.java index deac2c52ac..b6ba3f2a18 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NotFoundException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NotFoundException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class NotFoundException extends MyNakadiRuntimeException1 { +public class NotFoundException extends NakadiRuntimeBaseException { public NotFoundException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationInterruptedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationInterruptedException.java index 9b860a1be5..19a47d4274 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationInterruptedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationInterruptedException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class OperationInterruptedException extends MyNakadiRuntimeException1 { +public class OperationInterruptedException extends NakadiRuntimeBaseException { public OperationInterruptedException(final String message, final Throwable cause) { super(message, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationTimeoutException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationTimeoutException.java index e8e598346c..17b469573b 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationTimeoutException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationTimeoutException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class OperationTimeoutException extends MyNakadiRuntimeException1 { +public class OperationTimeoutException extends NakadiRuntimeBaseException { public OperationTimeoutException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/RebalanceConflictException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/RebalanceConflictException.java index 60d29c255b..46147b8dcd 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/RebalanceConflictException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/RebalanceConflictException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class RebalanceConflictException extends MyNakadiRuntimeException1 { +public class RebalanceConflictException extends NakadiRuntimeBaseException { public RebalanceConflictException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/RepositoryProblemException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/RepositoryProblemException.java index 6b268e5347..df029689ba 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/RepositoryProblemException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/RepositoryProblemException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class RepositoryProblemException extends MyNakadiRuntimeException1 { +public class RepositoryProblemException extends NakadiRuntimeBaseException { public RepositoryProblemException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/RequestInProgressException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/RequestInProgressException.java index 540915b887..0ed8671099 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/RequestInProgressException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/RequestInProgressException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class RequestInProgressException extends MyNakadiRuntimeException1 { +public class RequestInProgressException extends NakadiRuntimeBaseException { public RequestInProgressException(final String message, final Throwable cause) { super(message, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/ServiceTemporarilyUnavailableException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/ServiceTemporarilyUnavailableException.java index a543c9a41e..5e4106191f 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/ServiceTemporarilyUnavailableException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/ServiceTemporarilyUnavailableException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class ServiceTemporarilyUnavailableException extends MyNakadiRuntimeException1 { +public class ServiceTemporarilyUnavailableException extends NakadiRuntimeBaseException { public ServiceTemporarilyUnavailableException(final Exception cause) { super(cause.getMessage(), cause); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/StorageIsUsedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/StorageIsUsedException.java index 1992c1efee..1a757ad266 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/StorageIsUsedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/StorageIsUsedException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class StorageIsUsedException extends MyNakadiRuntimeException1 { +public class StorageIsUsedException extends NakadiRuntimeBaseException { public StorageIsUsedException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionPartitionConflictException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionPartitionConflictException.java index 1eca7c8571..d20fb3dff8 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionPartitionConflictException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionPartitionConflictException.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.stream.Collectors; -public class SubscriptionPartitionConflictException extends MyNakadiRuntimeException1 { +public class SubscriptionPartitionConflictException extends NakadiRuntimeBaseException { private SubscriptionPartitionConflictException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionUpdateConflictException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionUpdateConflictException.java index ebe50acf0c..018b58ccf3 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionUpdateConflictException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionUpdateConflictException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class SubscriptionUpdateConflictException extends MyNakadiRuntimeException1 { +public class SubscriptionUpdateConflictException extends NakadiRuntimeBaseException { public SubscriptionUpdateConflictException(final String message) { super(message); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TimeLagStatsTimeoutException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TimeLagStatsTimeoutException.java index 9eec9d7a5e..c59bbf759b 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TimeLagStatsTimeoutException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TimeLagStatsTimeoutException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TimeLagStatsTimeoutException extends MyNakadiRuntimeException1 { +public class TimeLagStatsTimeoutException extends NakadiRuntimeBaseException { public TimeLagStatsTimeoutException(final String msg, final Throwable cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelineException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelineException.java index 6830f97ba0..2852de605d 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelineException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelineException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TimelineException extends MyNakadiRuntimeException1 { +public class TimelineException extends NakadiRuntimeBaseException { public TimelineException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelinesNotSupportedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelinesNotSupportedException.java index 5b4a8d08ff..d3ef47034f 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelinesNotSupportedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelinesNotSupportedException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TimelinesNotSupportedException extends MyNakadiRuntimeException1 { +public class TimelinesNotSupportedException extends NakadiRuntimeBaseException { public TimelinesNotSupportedException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TooManyPartitionsException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TooManyPartitionsException.java index ee3faaf953..08a597f18b 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TooManyPartitionsException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TooManyPartitionsException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TooManyPartitionsException extends MyNakadiRuntimeException1 { +public class TooManyPartitionsException extends NakadiRuntimeBaseException { public TooManyPartitionsException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicConfigException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicConfigException.java index a0379ed1d8..6a9c970f47 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicConfigException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicConfigException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TopicConfigException extends MyNakadiRuntimeException1 { +public class TopicConfigException extends NakadiRuntimeBaseException { public TopicConfigException(final String message, final Exception e) { super(message, e); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicCreationException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicCreationException.java index 5913aa4e21..a4eaa41df2 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicCreationException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicCreationException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TopicCreationException extends MyNakadiRuntimeException1 { +public class TopicCreationException extends NakadiRuntimeBaseException { public TopicCreationException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicDeletionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicDeletionException.java index fb56e71dd4..f247c672f5 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicDeletionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicDeletionException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TopicDeletionException extends MyNakadiRuntimeException1 { +public class TopicDeletionException extends NakadiRuntimeBaseException { public TopicDeletionException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicRepositoryException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicRepositoryException.java index cce6f570dc..09798fa6c5 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicRepositoryException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicRepositoryException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TopicRepositoryException extends MyNakadiRuntimeException1 { +public class TopicRepositoryException extends NakadiRuntimeBaseException { public TopicRepositoryException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnableProcessException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnableProcessException.java index 5e6af521a4..bd6e6f0d5c 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnableProcessException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnableProcessException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class UnableProcessException extends MyNakadiRuntimeException1 { +public class UnableProcessException extends NakadiRuntimeBaseException { public UnableProcessException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownOperationException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownOperationException.java index 15abf9a159..8c3ae410cc 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownOperationException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownOperationException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class UnknownOperationException extends MyNakadiRuntimeException1 { +public class UnknownOperationException extends NakadiRuntimeBaseException { public UnknownOperationException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownStorageTypeException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownStorageTypeException.java index 603db17a1b..cc9860bbd0 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownStorageTypeException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownStorageTypeException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class UnknownStorageTypeException extends MyNakadiRuntimeException1 { +public class UnknownStorageTypeException extends NakadiRuntimeBaseException { public UnknownStorageTypeException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnparseableCursorException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnparseableCursorException.java index d257e0e7e0..361f16a46d 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnparseableCursorException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnparseableCursorException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class UnparseableCursorException extends MyNakadiRuntimeException1 { +public class UnparseableCursorException extends NakadiRuntimeBaseException { private final String cursors; public UnparseableCursorException(final String msg, final Exception cause, final String cursors) { diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongInitialCursorsException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongInitialCursorsException.java index 977524a9e4..8155f8a8c0 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongInitialCursorsException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongInitialCursorsException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class WrongInitialCursorsException extends MyNakadiRuntimeException1 { +public class WrongInitialCursorsException extends NakadiRuntimeBaseException { public WrongInitialCursorsException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongStreamParametersException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongStreamParametersException.java index b95549c8c7..cd99b213d8 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongStreamParametersException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongStreamParametersException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class WrongStreamParametersException extends MyNakadiRuntimeException1 { +public class WrongStreamParametersException extends NakadiRuntimeBaseException { public WrongStreamParametersException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/ZookeeperException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/ZookeeperException.java index eb656c8948..a57ee45af4 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/ZookeeperException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/ZookeeperException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class ZookeeperException extends MyNakadiRuntimeException1 { +public class ZookeeperException extends NakadiRuntimeBaseException { public ZookeeperException(final String message, final Throwable cause) { super(message, cause); diff --git a/src/main/java/org/zalando/nakadi/service/CursorOperationsService.java b/src/main/java/org/zalando/nakadi/service/CursorOperationsService.java index 098f862e4f..ec6f6074d6 100644 --- a/src/main/java/org/zalando/nakadi/service/CursorOperationsService.java +++ b/src/main/java/org/zalando/nakadi/service/CursorOperationsService.java @@ -13,7 +13,7 @@ import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorOperation; -import org.zalando.nakadi.exceptions.runtime.MyNakadiRuntimeException1; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.UnknownStorageTypeException; import org.zalando.nakadi.repository.kafka.KafkaCursor; @@ -108,7 +108,7 @@ public List cursorsLag(final String eventTypeName, final List getTimeLags(final Collection(listeners.keySet())); - } catch (final NakadiRuntimeException | MyNakadiRuntimeException1 ex) { + } catch (final NakadiRuntimeException | NakadiRuntimeBaseException ex) { // In order not to stuck here one will just log this exception, without rethrowing getLog().error("Failed to transfer partitions when leaving ClosingState", ex); } finally { diff --git a/src/main/java/org/zalando/nakadi/service/subscription/zk/AbstractZkSubscriptionClient.java b/src/main/java/org/zalando/nakadi/service/subscription/zk/AbstractZkSubscriptionClient.java index 4b9d9aa2cd..ae6600d600 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/zk/AbstractZkSubscriptionClient.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/zk/AbstractZkSubscriptionClient.java @@ -14,7 +14,7 @@ import org.zalando.nakadi.domain.EventTypePartition; import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.UnableProcessException; -import org.zalando.nakadi.exceptions.runtime.MyNakadiRuntimeException1; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.OperationInterruptedException; import org.zalando.nakadi.exceptions.runtime.OperationTimeoutException; import org.zalando.nakadi.exceptions.runtime.RequestInProgressException; @@ -112,7 +112,7 @@ public final T runLocked(final Callable function) { throw releaseException; } return result; - } catch (final NakadiRuntimeException | MyNakadiRuntimeException1 e) { + } catch (final NakadiRuntimeException | NakadiRuntimeBaseException e) { throw e; } catch (final Exception e) { throw new NakadiRuntimeException(e); diff --git a/src/main/java/org/zalando/nakadi/service/subscription/zk/SubscriptionNotInitializedException.java b/src/main/java/org/zalando/nakadi/service/subscription/zk/SubscriptionNotInitializedException.java index e462991ea4..5cf82a40b2 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/zk/SubscriptionNotInitializedException.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/zk/SubscriptionNotInitializedException.java @@ -1,8 +1,8 @@ package org.zalando.nakadi.service.subscription.zk; -import org.zalando.nakadi.exceptions.runtime.MyNakadiRuntimeException1; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; -public class SubscriptionNotInitializedException extends MyNakadiRuntimeException1 { +public class SubscriptionNotInitializedException extends NakadiRuntimeBaseException { public SubscriptionNotInitializedException(final String subscriptionId) { super("Subscription " + subscriptionId + " is not initialized"); diff --git a/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionClient.java b/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionClient.java index 64bdcca3e2..1c4cedbf67 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionClient.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionClient.java @@ -4,7 +4,7 @@ import org.apache.commons.codec.binary.Hex; import org.zalando.nakadi.domain.EventTypePartition; import org.zalando.nakadi.exceptions.NakadiRuntimeException; -import org.zalando.nakadi.exceptions.runtime.MyNakadiRuntimeException1; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.OperationTimeoutException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.ZookeeperException; @@ -214,7 +214,7 @@ public Topology withUpdatedPartitions(final String newHash, final Partition[] pa } } if (selectedIdx < 0) { - throw new MyNakadiRuntimeException1( + throw new NakadiRuntimeBaseException( "Failed to find partition " + newValue.getKey() + " in " + this); } resultPartitions[selectedIdx] = newValue; From acb21663ffc8bef58dc25be3175d82af614c5aac Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Wed, 15 Aug 2018 18:18:13 +0200 Subject: [PATCH 02/20] Remove UnprocessableEntityException --- .../controller/EventStreamController.java | 4 ++ .../controller/EventTypeController.java | 2 +- .../nakadi/controller/ExceptionHandling.java | 41 +++++++++++++++++++ .../controller/SubscriptionController.java | 2 +- .../zalando/nakadi/enrichment/Enrichment.java | 2 +- .../nakadi/enrichment/EnrichmentStrategy.java | 2 +- .../MetadataEnrichmentStrategy.java | 2 +- .../exceptions/CompactionException.java | 9 ---- .../NoSuchPartitionStrategyException.java | 9 ---- .../exceptions/PartitioningException.java | 15 ------- .../UnprocessableEntityException.java | 24 ----------- .../runtime/CompactionException.java | 9 ++++ .../{ => runtime}/EnrichmentException.java | 4 +- .../ErrorGettingCursorTimeLagException.java | 3 +- .../runtime/InvalidLimitException.java | 8 ++++ .../InvalidPartitionKeyFieldsException.java | 5 +-- .../NoSuchPartitionStrategyException.java | 9 ++++ .../runtime/PartitioningException.java | 11 +++++ .../partitioning/HashPartitionStrategy.java | 2 +- .../partitioning/PartitionResolver.java | 4 +- .../partitioning/PartitionStrategy.java | 2 +- .../UserDefinedPartitionStrategy.java | 2 +- .../nakadi/service/EventPublisher.java | 6 +-- .../nakadi/service/EventStreamConfig.java | 10 ++--- .../nakadi/service/EventTypeService.java | 2 +- .../SubscriptionTimeLagService.java | 2 +- .../zalando/nakadi/util/JsonPathAccess.java | 2 +- .../controller/EventTypeControllerTest.java | 14 ------- .../MetadataEnrichmentStrategyTest.java | 2 +- .../partitioning/PartitionResolverTest.java | 4 +- .../UserDefinedPartitionStrategyTest.java | 2 +- .../nakadi/service/EventPublisherTest.java | 4 +- .../service/EventStreamConfigBuilderTest.java | 20 ++++----- .../SubscriptionTimeLagServiceTest.java | 2 +- .../subscription/StreamParametersTest.java | 3 +- .../nakadi/util/JsonPathAccessTest.java | 2 +- 36 files changed, 126 insertions(+), 120 deletions(-) delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/CompactionException.java delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/NoSuchPartitionStrategyException.java delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/PartitioningException.java delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/UnprocessableEntityException.java create mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/CompactionException.java rename src/main/java/org/zalando/nakadi/exceptions/{ => runtime}/EnrichmentException.java (61%) rename src/main/java/org/zalando/nakadi/exceptions/{ => runtime}/ErrorGettingCursorTimeLagException.java (84%) create mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidLimitException.java rename src/main/java/org/zalando/nakadi/exceptions/{ => runtime}/InvalidPartitionKeyFieldsException.java (59%) create mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchPartitionStrategyException.java create mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/PartitioningException.java diff --git a/src/main/java/org/zalando/nakadi/controller/EventStreamController.java b/src/main/java/org/zalando/nakadi/controller/EventStreamController.java index 159b13cb09..90a71462f4 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventStreamController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventStreamController.java @@ -30,6 +30,7 @@ import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; +import org.zalando.nakadi.exceptions.runtime.InvalidLimitException; import org.zalando.nakadi.exceptions.runtime.NoConnectionSlotsException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.UnparseableCursorException; @@ -74,6 +75,7 @@ import static javax.ws.rs.core.Response.Status.PRECONDITION_FAILED; import static javax.ws.rs.core.Response.Status.SERVICE_UNAVAILABLE; import static org.zalando.nakadi.metrics.MetricUtils.metricNameFor; +import static org.zalando.problem.MoreStatus.UNPROCESSABLE_ENTITY; @RestController public class EventStreamController { @@ -272,6 +274,8 @@ public StreamingResponseBody streamEvents( } catch (final ServiceTemporarilyUnavailableException e) { LOG.error("Error while trying to stream events.", e); writeProblemResponse(response, outputStream, SERVICE_UNAVAILABLE, e.getMessage()); + } catch (final InvalidLimitException e) { + writeProblemResponse(response, outputStream, UNPROCESSABLE_ENTITY, e.getMessage()); } catch (final NakadiException e) { LOG.error("Error while trying to stream events.", e); writeProblemResponse(response, outputStream, e.asProblem()); diff --git a/src/main/java/org/zalando/nakadi/controller/EventTypeController.java b/src/main/java/org/zalando/nakadi/controller/EventTypeController.java index a49baef82a..08c96b4564 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventTypeController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventTypeController.java @@ -22,7 +22,7 @@ import org.zalando.nakadi.exceptions.InternalNakadiException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; -import org.zalando.nakadi.exceptions.NoSuchPartitionStrategyException; +import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ConflictException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; diff --git a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java index 033d3eeb46..300e75b1ff 100644 --- a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java +++ b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java @@ -10,6 +10,11 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.context.request.NativeWebRequest; +import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; +import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; +import org.zalando.nakadi.exceptions.runtime.PartitioningException; +import org.zalando.nakadi.exceptions.runtime.CompactionException; +import org.zalando.nakadi.exceptions.runtime.EnrichmentException; import org.zalando.nakadi.exceptions.runtime.FeatureNotAvailableException; import org.zalando.nakadi.exceptions.runtime.IllegalClientIdException; import org.zalando.nakadi.exceptions.NakadiException; @@ -181,7 +186,43 @@ public ResponseEntity handleFeatureNotAvailable( final NativeWebRequest request) { LOG.debug(ex.getMessage(), ex); return Responses.create(Problem.valueOf(NOT_IMPLEMENTED, ex.getMessage()), request); + } + + @ExceptionHandler(CompactionException.class) + public ResponseEntity handleCompactionException(final CompactionException exception, + final NativeWebRequest request) { + LOG.debug(exception.getMessage(), exception); + return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); + } + + @ExceptionHandler(EnrichmentException.class) + public ResponseEntity handleEnrichmentException(final EnrichmentException exception, + final NativeWebRequest request) { + LOG.debug(exception.getMessage(), exception); + return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); + } + + @ExceptionHandler(NoSuchPartitionStrategyException.class) + public ResponseEntity handleNoSuchPartitionStrategyException( + final NoSuchPartitionStrategyException exception, + final NativeWebRequest request) { + LOG.debug(exception.getMessage(), exception); + return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); + } + + @ExceptionHandler(PartitioningException.class) + public ResponseEntity handlePartitioningException(final PartitioningException exception, + final NativeWebRequest request) { + LOG.debug(exception.getMessage(), exception); + return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); + } + @ExceptionHandler(InvalidPartitionKeyFieldsException.class) + public ResponseEntity handleInvalidPartitionKeyFieldsException( + final InvalidPartitionKeyFieldsException exception, + final NativeWebRequest request) { + LOG.debug(exception.getMessage(), exception); + return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); } } diff --git a/src/main/java/org/zalando/nakadi/controller/SubscriptionController.java b/src/main/java/org/zalando/nakadi/controller/SubscriptionController.java index 3116a2029a..c15bf61244 100644 --- a/src/main/java/org/zalando/nakadi/controller/SubscriptionController.java +++ b/src/main/java/org/zalando/nakadi/controller/SubscriptionController.java @@ -14,7 +14,7 @@ import org.springframework.web.context.request.NativeWebRequest; import org.zalando.nakadi.domain.ItemsWrapper; import org.zalando.nakadi.domain.SubscriptionEventTypeStats; -import org.zalando.nakadi.exceptions.ErrorGettingCursorTimeLagException; +import org.zalando.nakadi.exceptions.runtime.ErrorGettingCursorTimeLagException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.FeatureNotAvailableException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; diff --git a/src/main/java/org/zalando/nakadi/enrichment/Enrichment.java b/src/main/java/org/zalando/nakadi/enrichment/Enrichment.java index cfca6edc91..aa576f154d 100644 --- a/src/main/java/org/zalando/nakadi/enrichment/Enrichment.java +++ b/src/main/java/org/zalando/nakadi/enrichment/Enrichment.java @@ -7,7 +7,7 @@ import org.zalando.nakadi.domain.EventCategory; import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeBase; -import org.zalando.nakadi.exceptions.EnrichmentException; +import org.zalando.nakadi.exceptions.runtime.EnrichmentException; import org.zalando.nakadi.exceptions.runtime.InvalidEventTypeException; import java.util.HashSet; diff --git a/src/main/java/org/zalando/nakadi/enrichment/EnrichmentStrategy.java b/src/main/java/org/zalando/nakadi/enrichment/EnrichmentStrategy.java index 17283dea6d..c46f270856 100644 --- a/src/main/java/org/zalando/nakadi/enrichment/EnrichmentStrategy.java +++ b/src/main/java/org/zalando/nakadi/enrichment/EnrichmentStrategy.java @@ -2,7 +2,7 @@ import org.zalando.nakadi.domain.BatchItem; import org.zalando.nakadi.domain.EventType; -import org.zalando.nakadi.exceptions.EnrichmentException; +import org.zalando.nakadi.exceptions.runtime.EnrichmentException; public interface EnrichmentStrategy { void enrich(BatchItem batchItem, EventType eventType) throws EnrichmentException; diff --git a/src/main/java/org/zalando/nakadi/enrichment/MetadataEnrichmentStrategy.java b/src/main/java/org/zalando/nakadi/enrichment/MetadataEnrichmentStrategy.java index 189fde06fc..9bb82a94cc 100644 --- a/src/main/java/org/zalando/nakadi/enrichment/MetadataEnrichmentStrategy.java +++ b/src/main/java/org/zalando/nakadi/enrichment/MetadataEnrichmentStrategy.java @@ -6,7 +6,7 @@ import org.json.JSONObject; import org.zalando.nakadi.domain.BatchItem; import org.zalando.nakadi.domain.EventType; -import org.zalando.nakadi.exceptions.EnrichmentException; +import org.zalando.nakadi.exceptions.runtime.EnrichmentException; import org.zalando.nakadi.util.FlowIdUtils; public class MetadataEnrichmentStrategy implements EnrichmentStrategy { diff --git a/src/main/java/org/zalando/nakadi/exceptions/CompactionException.java b/src/main/java/org/zalando/nakadi/exceptions/CompactionException.java deleted file mode 100644 index ae87942474..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/CompactionException.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.zalando.nakadi.exceptions; - -public class CompactionException extends UnprocessableEntityException { - - public CompactionException(final String message) { - super(message); - } - -} diff --git a/src/main/java/org/zalando/nakadi/exceptions/NoSuchPartitionStrategyException.java b/src/main/java/org/zalando/nakadi/exceptions/NoSuchPartitionStrategyException.java deleted file mode 100644 index adbf3a139c..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/NoSuchPartitionStrategyException.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.zalando.nakadi.exceptions; - -public class NoSuchPartitionStrategyException extends UnprocessableEntityException { - - public NoSuchPartitionStrategyException(final String message) { - super(message); - } - -} diff --git a/src/main/java/org/zalando/nakadi/exceptions/PartitioningException.java b/src/main/java/org/zalando/nakadi/exceptions/PartitioningException.java deleted file mode 100644 index 63d1ada554..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/PartitioningException.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.zalando.nakadi.exceptions; - -public class PartitioningException extends UnprocessableEntityException { - public PartitioningException(final String message) { - super(message); - } - - public PartitioningException(final String msg, final Exception cause) { - super(msg, cause); - } - - public PartitioningException(final String msg, final String problemMessage, final Exception cause) { - super(msg, problemMessage, cause); - } -} diff --git a/src/main/java/org/zalando/nakadi/exceptions/UnprocessableEntityException.java b/src/main/java/org/zalando/nakadi/exceptions/UnprocessableEntityException.java deleted file mode 100644 index 9b817ecdf8..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/UnprocessableEntityException.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.zalando.nakadi.exceptions; - -import org.zalando.problem.MoreStatus; - -import javax.ws.rs.core.Response; - -public class UnprocessableEntityException extends NakadiException { - public UnprocessableEntityException(final String message) { - super(message); - } - - public UnprocessableEntityException(final String msg, final Exception cause) { - super(msg, cause); - } - - public UnprocessableEntityException(final String msg, final String problemMessage, final Exception cause) { - super(msg, problemMessage, cause); - } - - @Override - protected Response.StatusType getStatus() { - return MoreStatus.UNPROCESSABLE_ENTITY; - } -} diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/CompactionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/CompactionException.java new file mode 100644 index 0000000000..e8bc1c0191 --- /dev/null +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/CompactionException.java @@ -0,0 +1,9 @@ +package org.zalando.nakadi.exceptions.runtime; + +public class CompactionException extends NakadiRuntimeBaseException { + + public CompactionException(final String message) { + super(message); + } + +} diff --git a/src/main/java/org/zalando/nakadi/exceptions/EnrichmentException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EnrichmentException.java similarity index 61% rename from src/main/java/org/zalando/nakadi/exceptions/EnrichmentException.java rename to src/main/java/org/zalando/nakadi/exceptions/runtime/EnrichmentException.java index 293fbab358..efeaba01fa 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/EnrichmentException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EnrichmentException.java @@ -1,6 +1,6 @@ -package org.zalando.nakadi.exceptions; +package org.zalando.nakadi.exceptions.runtime; -public class EnrichmentException extends UnprocessableEntityException { +public class EnrichmentException extends NakadiRuntimeBaseException { public EnrichmentException(final String msg, final Exception cause) { super(msg, cause); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/ErrorGettingCursorTimeLagException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/ErrorGettingCursorTimeLagException.java similarity index 84% rename from src/main/java/org/zalando/nakadi/exceptions/ErrorGettingCursorTimeLagException.java rename to src/main/java/org/zalando/nakadi/exceptions/runtime/ErrorGettingCursorTimeLagException.java index 0ea8a6424b..36b8ffc3c9 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/ErrorGettingCursorTimeLagException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/ErrorGettingCursorTimeLagException.java @@ -1,7 +1,6 @@ -package org.zalando.nakadi.exceptions; +package org.zalando.nakadi.exceptions.runtime; import org.zalando.nakadi.domain.NakadiCursor; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; public class ErrorGettingCursorTimeLagException extends NakadiRuntimeBaseException { diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidLimitException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidLimitException.java new file mode 100644 index 0000000000..6b36ed013c --- /dev/null +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidLimitException.java @@ -0,0 +1,8 @@ +package org.zalando.nakadi.exceptions.runtime; + +public class InvalidLimitException extends NakadiRuntimeBaseException { + + public InvalidLimitException(final String message) { + super(message); + } +} diff --git a/src/main/java/org/zalando/nakadi/exceptions/InvalidPartitionKeyFieldsException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidPartitionKeyFieldsException.java similarity index 59% rename from src/main/java/org/zalando/nakadi/exceptions/InvalidPartitionKeyFieldsException.java rename to src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidPartitionKeyFieldsException.java index 016380b6e1..640c5226ba 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/InvalidPartitionKeyFieldsException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidPartitionKeyFieldsException.java @@ -1,4 +1,4 @@ -package org.zalando.nakadi.exceptions; +package org.zalando.nakadi.exceptions.runtime; public class InvalidPartitionKeyFieldsException extends PartitioningException { public InvalidPartitionKeyFieldsException(final String message) { @@ -9,7 +9,4 @@ public InvalidPartitionKeyFieldsException(final String msg, final Exception caus super(msg, cause); } - public InvalidPartitionKeyFieldsException(final String msg, final String problemMessage, final Exception cause) { - super(msg, problemMessage, cause); - } } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchPartitionStrategyException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchPartitionStrategyException.java new file mode 100644 index 0000000000..6e56dfbfb9 --- /dev/null +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchPartitionStrategyException.java @@ -0,0 +1,9 @@ +package org.zalando.nakadi.exceptions.runtime; + +public class NoSuchPartitionStrategyException extends NakadiRuntimeBaseException { + + public NoSuchPartitionStrategyException(final String message) { + super(message); + } + +} diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/PartitioningException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/PartitioningException.java new file mode 100644 index 0000000000..e433b6017e --- /dev/null +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/PartitioningException.java @@ -0,0 +1,11 @@ +package org.zalando.nakadi.exceptions.runtime; + +public class PartitioningException extends NakadiRuntimeBaseException { + public PartitioningException(final String message) { + super(message); + } + + public PartitioningException(final String msg, final Exception cause) { + super(msg, cause); + } +} diff --git a/src/main/java/org/zalando/nakadi/partitioning/HashPartitionStrategy.java b/src/main/java/org/zalando/nakadi/partitioning/HashPartitionStrategy.java index 3e6f782514..c32e255878 100644 --- a/src/main/java/org/zalando/nakadi/partitioning/HashPartitionStrategy.java +++ b/src/main/java/org/zalando/nakadi/partitioning/HashPartitionStrategy.java @@ -5,7 +5,7 @@ import org.springframework.stereotype.Component; import org.zalando.nakadi.domain.EventCategory; import org.zalando.nakadi.domain.EventType; -import org.zalando.nakadi.exceptions.InvalidPartitionKeyFieldsException; +import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.Try; import org.zalando.nakadi.util.JsonPathAccess; diff --git a/src/main/java/org/zalando/nakadi/partitioning/PartitionResolver.java b/src/main/java/org/zalando/nakadi/partitioning/PartitionResolver.java index 3411a67c80..c55e31a09c 100644 --- a/src/main/java/org/zalando/nakadi/partitioning/PartitionResolver.java +++ b/src/main/java/org/zalando/nakadi/partitioning/PartitionResolver.java @@ -7,8 +7,8 @@ import org.springframework.stereotype.Component; import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeBase; -import org.zalando.nakadi.exceptions.NoSuchPartitionStrategyException; -import org.zalando.nakadi.exceptions.PartitioningException; +import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; +import org.zalando.nakadi.exceptions.runtime.PartitioningException; import org.zalando.nakadi.exceptions.runtime.InvalidEventTypeException; import org.zalando.nakadi.service.timeline.TimelineService; diff --git a/src/main/java/org/zalando/nakadi/partitioning/PartitionStrategy.java b/src/main/java/org/zalando/nakadi/partitioning/PartitionStrategy.java index 681ccd8b5f..f43cabd64f 100644 --- a/src/main/java/org/zalando/nakadi/partitioning/PartitionStrategy.java +++ b/src/main/java/org/zalando/nakadi/partitioning/PartitionStrategy.java @@ -2,7 +2,7 @@ import org.json.JSONObject; import org.zalando.nakadi.domain.EventType; -import org.zalando.nakadi.exceptions.PartitioningException; +import org.zalando.nakadi.exceptions.runtime.PartitioningException; import java.util.List; diff --git a/src/main/java/org/zalando/nakadi/partitioning/UserDefinedPartitionStrategy.java b/src/main/java/org/zalando/nakadi/partitioning/UserDefinedPartitionStrategy.java index 265d104e57..0a9e36f051 100644 --- a/src/main/java/org/zalando/nakadi/partitioning/UserDefinedPartitionStrategy.java +++ b/src/main/java/org/zalando/nakadi/partitioning/UserDefinedPartitionStrategy.java @@ -3,7 +3,7 @@ import org.json.JSONException; import org.json.JSONObject; import org.zalando.nakadi.domain.EventType; -import org.zalando.nakadi.exceptions.PartitioningException; +import org.zalando.nakadi.exceptions.runtime.PartitioningException; import java.util.List; diff --git a/src/main/java/org/zalando/nakadi/service/EventPublisher.java b/src/main/java/org/zalando/nakadi/service/EventPublisher.java index 9738fe9949..efef3b1c92 100644 --- a/src/main/java/org/zalando/nakadi/service/EventPublisher.java +++ b/src/main/java/org/zalando/nakadi/service/EventPublisher.java @@ -16,11 +16,11 @@ import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.enrichment.Enrichment; -import org.zalando.nakadi.exceptions.CompactionException; -import org.zalando.nakadi.exceptions.EnrichmentException; +import org.zalando.nakadi.exceptions.runtime.CompactionException; +import org.zalando.nakadi.exceptions.runtime.EnrichmentException; import org.zalando.nakadi.exceptions.InternalNakadiException; import org.zalando.nakadi.exceptions.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.PartitioningException; +import org.zalando.nakadi.exceptions.runtime.PartitioningException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.EventPublishingException; import org.zalando.nakadi.exceptions.runtime.EventTypeTimeoutException; diff --git a/src/main/java/org/zalando/nakadi/service/EventStreamConfig.java b/src/main/java/org/zalando/nakadi/service/EventStreamConfig.java index cdfc900449..0cfc5f059a 100644 --- a/src/main/java/org/zalando/nakadi/service/EventStreamConfig.java +++ b/src/main/java/org/zalando/nakadi/service/EventStreamConfig.java @@ -1,7 +1,7 @@ package org.zalando.nakadi.service; import org.zalando.nakadi.domain.NakadiCursor; -import org.zalando.nakadi.exceptions.UnprocessableEntityException; +import org.zalando.nakadi.exceptions.runtime.InvalidLimitException; import org.zalando.nakadi.security.Client; import javax.annotation.Nullable; @@ -198,13 +198,13 @@ public Builder withConsumingClient(final Client consumingClient) { } - public EventStreamConfig build() throws UnprocessableEntityException { + public EventStreamConfig build() throws InvalidLimitException { if (streamLimit != 0 && streamLimit < batchLimit) { - throw new UnprocessableEntityException("stream_limit can't be lower than batch_limit"); + throw new InvalidLimitException("stream_limit can't be lower than batch_limit"); } else if (streamTimeout != 0 && streamTimeout < batchTimeout) { - throw new UnprocessableEntityException("stream_timeout can't be lower than batch_flush_timeout"); + throw new InvalidLimitException("stream_timeout can't be lower than batch_flush_timeout"); } else if (batchLimit < 1) { - throw new UnprocessableEntityException("batch_limit can't be lower than 1"); + throw new InvalidLimitException("batch_limit can't be lower than 1"); } return new EventStreamConfig(cursors, batchLimit, streamLimit, batchTimeout, streamTimeout, streamKeepAliveLimit, etName, consumingClient, maxMemoryUsageBytes); diff --git a/src/main/java/org/zalando/nakadi/service/EventTypeService.java b/src/main/java/org/zalando/nakadi/service/EventTypeService.java index 1fba1e7585..2e2d6ea5e3 100644 --- a/src/main/java/org/zalando/nakadi/service/EventTypeService.java +++ b/src/main/java/org/zalando/nakadi/service/EventTypeService.java @@ -29,7 +29,7 @@ import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.NoSuchPartitionStrategyException; +import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ConflictException; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionTimeLagService.java b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionTimeLagService.java index 140ef549a1..cd2da6048b 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionTimeLagService.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionTimeLagService.java @@ -8,7 +8,7 @@ import org.zalando.nakadi.domain.EventTypePartition; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.PartitionEndStatistics; -import org.zalando.nakadi.exceptions.ErrorGettingCursorTimeLagException; +import org.zalando.nakadi.exceptions.runtime.ErrorGettingCursorTimeLagException; import org.zalando.nakadi.exceptions.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; diff --git a/src/main/java/org/zalando/nakadi/util/JsonPathAccess.java b/src/main/java/org/zalando/nakadi/util/JsonPathAccess.java index fed583415c..2511eab4f6 100644 --- a/src/main/java/org/zalando/nakadi/util/JsonPathAccess.java +++ b/src/main/java/org/zalando/nakadi/util/JsonPathAccess.java @@ -2,7 +2,7 @@ import org.json.JSONException; import org.json.JSONObject; -import org.zalando.nakadi.exceptions.InvalidPartitionKeyFieldsException; +import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; /* One could use JsonPath Lib instead: https://github.com/jayway/JsonPath diff --git a/src/test/java/org/zalando/nakadi/controller/EventTypeControllerTest.java b/src/test/java/org/zalando/nakadi/controller/EventTypeControllerTest.java index 7387ed3aee..a843c93723 100644 --- a/src/test/java/org/zalando/nakadi/controller/EventTypeControllerTest.java +++ b/src/test/java/org/zalando/nakadi/controller/EventTypeControllerTest.java @@ -27,7 +27,6 @@ import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; import org.zalando.nakadi.exceptions.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.UnprocessableEntityException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; import org.zalando.nakadi.exceptions.runtime.InvalidEventTypeException; import org.zalando.nakadi.exceptions.runtime.TopicConfigException; @@ -681,19 +680,6 @@ public void whenPUTNotExistingEventTypeThen404() throws Exception { .andExpect(content().string(matchesProblem(expectedProblem))); } - @Test - public void whenPUTRepoNakadiExceptionThen422() throws Exception { - final EventType eventType = buildDefaultEventType(); - - final Problem expectedProblem = Problem.valueOf(MoreStatus.UNPROCESSABLE_ENTITY); - - doThrow(UnprocessableEntityException.class).when(eventTypeRepository).findByName(eventType.getName()); - - putEventType(eventType, eventType.getName()).andExpect(status().isUnprocessableEntity()) - .andExpect(content().contentType("application/problem+json")) - .andExpect(content().string(matchesProblem(expectedProblem))); - } - @Test public void canExposeASingleEventType() throws Exception { final EventType expectedEventType = buildDefaultEventType(); diff --git a/src/test/java/org/zalando/nakadi/enrichment/MetadataEnrichmentStrategyTest.java b/src/test/java/org/zalando/nakadi/enrichment/MetadataEnrichmentStrategyTest.java index add6dadf41..a4973962a6 100644 --- a/src/test/java/org/zalando/nakadi/enrichment/MetadataEnrichmentStrategyTest.java +++ b/src/test/java/org/zalando/nakadi/enrichment/MetadataEnrichmentStrategyTest.java @@ -5,7 +5,7 @@ import org.junit.Test; import org.zalando.nakadi.domain.BatchItem; import org.zalando.nakadi.domain.EventType; -import org.zalando.nakadi.exceptions.EnrichmentException; +import org.zalando.nakadi.exceptions.runtime.EnrichmentException; import org.zalando.nakadi.util.FlowIdUtils; import org.zalando.nakadi.utils.TestUtils; diff --git a/src/test/java/org/zalando/nakadi/partitioning/PartitionResolverTest.java b/src/test/java/org/zalando/nakadi/partitioning/PartitionResolverTest.java index 0ff78a612d..e7c0032e05 100644 --- a/src/test/java/org/zalando/nakadi/partitioning/PartitionResolverTest.java +++ b/src/test/java/org/zalando/nakadi/partitioning/PartitionResolverTest.java @@ -8,8 +8,8 @@ import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.NoSuchPartitionStrategyException; -import org.zalando.nakadi.exceptions.PartitioningException; +import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; +import org.zalando.nakadi.exceptions.runtime.PartitioningException; import org.zalando.nakadi.exceptions.runtime.InvalidEventTypeException; import org.zalando.nakadi.repository.TopicRepository; import org.zalando.nakadi.service.timeline.TimelineService; diff --git a/src/test/java/org/zalando/nakadi/partitioning/UserDefinedPartitionStrategyTest.java b/src/test/java/org/zalando/nakadi/partitioning/UserDefinedPartitionStrategyTest.java index 43e917fb89..7a80b01699 100644 --- a/src/test/java/org/zalando/nakadi/partitioning/UserDefinedPartitionStrategyTest.java +++ b/src/test/java/org/zalando/nakadi/partitioning/UserDefinedPartitionStrategyTest.java @@ -3,7 +3,7 @@ import com.google.common.collect.ImmutableList; import org.json.JSONObject; import org.junit.Test; -import org.zalando.nakadi.exceptions.PartitioningException; +import org.zalando.nakadi.exceptions.runtime.PartitioningException; import java.util.List; diff --git a/src/test/java/org/zalando/nakadi/service/EventPublisherTest.java b/src/test/java/org/zalando/nakadi/service/EventPublisherTest.java index f0fd92b644..b3703584ad 100644 --- a/src/test/java/org/zalando/nakadi/service/EventPublisherTest.java +++ b/src/test/java/org/zalando/nakadi/service/EventPublisherTest.java @@ -15,8 +15,8 @@ import org.zalando.nakadi.domain.EventTypeBase; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.enrichment.Enrichment; -import org.zalando.nakadi.exceptions.EnrichmentException; -import org.zalando.nakadi.exceptions.PartitioningException; +import org.zalando.nakadi.exceptions.runtime.EnrichmentException; +import org.zalando.nakadi.exceptions.runtime.PartitioningException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.EventPublishingException; import org.zalando.nakadi.exceptions.runtime.EventTypeTimeoutException; diff --git a/src/test/java/org/zalando/nakadi/service/EventStreamConfigBuilderTest.java b/src/test/java/org/zalando/nakadi/service/EventStreamConfigBuilderTest.java index 27fabd59f3..972ee89d59 100644 --- a/src/test/java/org/zalando/nakadi/service/EventStreamConfigBuilderTest.java +++ b/src/test/java/org/zalando/nakadi/service/EventStreamConfigBuilderTest.java @@ -1,7 +1,7 @@ package org.zalando.nakadi.service; import org.junit.Test; -import org.zalando.nakadi.exceptions.UnprocessableEntityException; +import org.zalando.nakadi.exceptions.runtime.InvalidLimitException; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.lessThanOrEqualTo; @@ -12,7 +12,7 @@ public class EventStreamConfigBuilderTest { @Test - public void batchLimitZeroValueTest() throws UnprocessableEntityException { + public void batchLimitZeroValueTest() throws InvalidLimitException { final EventStreamConfig config = EventStreamConfig .builder() .withBatchLimit(1) @@ -23,7 +23,7 @@ public void batchLimitZeroValueTest() throws UnprocessableEntityException { } @Test - public void batchLimitDefaultValueTest() throws UnprocessableEntityException { + public void batchLimitDefaultValueTest() throws InvalidLimitException { final EventStreamConfig config = EventStreamConfig .builder() .withBatchLimit(1) @@ -33,7 +33,7 @@ public void batchLimitDefaultValueTest() throws UnprocessableEntityException { } @Test - public void batchLimitSpecifiedValueTest() throws UnprocessableEntityException { + public void batchLimitSpecifiedValueTest() throws InvalidLimitException { final EventStreamConfig config = EventStreamConfig .builder() .withBatchLimit(1) @@ -43,8 +43,8 @@ public void batchLimitSpecifiedValueTest() throws UnprocessableEntityException { assertThat(config.getBatchTimeout(), is(29)); } - @Test(expected = UnprocessableEntityException.class) - public void streamLimitLessThenBatchLimit() throws UnprocessableEntityException { + @Test(expected = InvalidLimitException.class) + public void streamLimitLessThenBatchLimit() throws InvalidLimitException { EventStreamConfig .builder() .withBatchLimit(10) @@ -52,8 +52,8 @@ public void streamLimitLessThenBatchLimit() throws UnprocessableEntityException .build(); } - @Test(expected = UnprocessableEntityException.class) - public void streamTimeoutLessThenBatchTimeout() throws UnprocessableEntityException { + @Test(expected = InvalidLimitException.class) + public void streamTimeoutLessThenBatchTimeout() throws InvalidLimitException { EventStreamConfig .builder() .withBatchTimeout(10) @@ -62,7 +62,7 @@ public void streamTimeoutLessThenBatchTimeout() throws UnprocessableEntityExcept } @Test - public void streamTimeoutHigherThanMax() throws UnprocessableEntityException { + public void streamTimeoutHigherThanMax() throws InvalidLimitException { final EventStreamConfig config = EventStreamConfig .builder() .withStreamTimeout(MAX_STREAM_TIMEOUT + 100) @@ -72,7 +72,7 @@ public void streamTimeoutHigherThanMax() throws UnprocessableEntityException { } @Test - public void unlimitedStreamTimeout() throws UnprocessableEntityException { + public void unlimitedStreamTimeout() throws InvalidLimitException { final EventStreamConfig config = EventStreamConfig .builder() .withStreamTimeout(0) diff --git a/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java b/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java index 6c444166c9..5c5ed83edc 100644 --- a/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java +++ b/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java @@ -9,7 +9,7 @@ import org.zalando.nakadi.domain.PartitionEndStatistics; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.ErrorGettingCursorTimeLagException; +import org.zalando.nakadi.exceptions.runtime.ErrorGettingCursorTimeLagException; import org.zalando.nakadi.exceptions.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; diff --git a/src/test/java/org/zalando/nakadi/service/subscription/StreamParametersTest.java b/src/test/java/org/zalando/nakadi/service/subscription/StreamParametersTest.java index 1a1bc932d8..538bf75942 100644 --- a/src/test/java/org/zalando/nakadi/service/subscription/StreamParametersTest.java +++ b/src/test/java/org/zalando/nakadi/service/subscription/StreamParametersTest.java @@ -2,7 +2,6 @@ import com.google.common.collect.ImmutableList; import org.junit.Test; -import org.zalando.nakadi.exceptions.UnprocessableEntityException; import org.zalando.nakadi.exceptions.runtime.WrongStreamParametersException; import org.zalando.nakadi.security.Client; import org.zalando.nakadi.service.EventStreamConfig; @@ -94,7 +93,7 @@ public static StreamParameters createStreamParameters(final int batchLimitEvents final Integer batchKeepAliveIterations, final int maxUncommittedMessages, final long commitTimeoutSeconds, - final Client client) throws UnprocessableEntityException { + final Client client) throws WrongStreamParametersException { final UserStreamParameters userParams = new UserStreamParameters(batchLimitEvents, streamLimitEvents, batchTimeoutSeconds, streamTimeoutSeconds, batchKeepAliveIterations, maxUncommittedMessages, ImmutableList.of()); diff --git a/src/test/java/org/zalando/nakadi/util/JsonPathAccessTest.java b/src/test/java/org/zalando/nakadi/util/JsonPathAccessTest.java index 28d847ec5a..28b83ec187 100644 --- a/src/test/java/org/zalando/nakadi/util/JsonPathAccessTest.java +++ b/src/test/java/org/zalando/nakadi/util/JsonPathAccessTest.java @@ -2,7 +2,7 @@ import org.json.JSONObject; import org.junit.Test; -import org.zalando.nakadi.exceptions.InvalidPartitionKeyFieldsException; +import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; import org.zalando.nakadi.utils.TestUtils; import java.io.IOException; From 4de99c5ed3f71cdc857d487662eda45202ae88b5 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Wed, 15 Aug 2018 20:49:37 +0200 Subject: [PATCH 03/20] Handle NoSuchPartitionStrategyException correctly --- .../nakadi/controller/EventTypeController.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/zalando/nakadi/controller/EventTypeController.java b/src/main/java/org/zalando/nakadi/controller/EventTypeController.java index 08c96b4564..abd17cb4e5 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventTypeController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventTypeController.java @@ -22,7 +22,6 @@ import org.zalando.nakadi.exceptions.InternalNakadiException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; -import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ConflictException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; @@ -32,6 +31,7 @@ import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.InvalidEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.TopicConfigException; import org.zalando.nakadi.exceptions.runtime.TopicCreationException; @@ -43,7 +43,6 @@ import org.zalando.nakadi.service.EventTypeService; import org.zalando.nakadi.service.FeatureToggleService; import org.zalando.nakadi.service.Result; -import org.zalando.problem.MoreStatus; import org.zalando.problem.Problem; import org.zalando.problem.spring.web.advice.Responses; @@ -55,6 +54,7 @@ import static org.springframework.http.ResponseEntity.status; import static org.zalando.nakadi.service.FeatureToggleService.Feature.DISABLE_EVENT_TYPE_CREATION; import static org.zalando.nakadi.service.FeatureToggleService.Feature.DISABLE_EVENT_TYPE_DELETION; +import static org.zalando.problem.MoreStatus.UNPROCESSABLE_ENTITY; @RestController @RequestMapping(value = "/event-types") @@ -134,7 +134,8 @@ public ResponseEntity update( InconsistentStateException, NakadiRuntimeException, ServiceTemporarilyUnavailableException, - UnableProcessException { + UnableProcessException, + NoSuchPartitionStrategyException{ if (errors.hasErrors()) { return Responses.create(new ValidationProblem(errors), request); } @@ -184,7 +185,7 @@ public ResponseEntity deletion(final EventTypeDeletionException excepti public ResponseEntity unableProcess(final UnableProcessException exception, final NativeWebRequest request) { LOG.debug(exception.getMessage(), exception); - return Responses.create(MoreStatus.UNPROCESSABLE_ENTITY, exception.getMessage(), request); + return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); } @ExceptionHandler(ConflictException.class) @@ -215,10 +216,10 @@ public ResponseEntity nakadiException(final NakadiException exception, } @ExceptionHandler(NoSuchPartitionStrategyException.class) - public ResponseEntity noSuchPartitionStrategyException(final NakadiException exception, + public ResponseEntity noSuchPartitionStrategyException(final NoSuchPartitionStrategyException exception, final NativeWebRequest request) { LOG.debug(exception.getMessage(), exception); - return Responses.create(exception.asProblem(), request); + return Responses.create(Problem.valueOf(UNPROCESSABLE_ENTITY, exception.getMessage()), request); } @ExceptionHandler(DuplicatedEventTypeNameException.class) @@ -232,13 +233,13 @@ public ResponseEntity duplicatedEventTypeNameException(final Duplicated public ResponseEntity invalidEventTypeException(final InvalidEventTypeException exception, final NativeWebRequest request) { LOG.debug(exception.getMessage(), exception); - return Responses.create(Problem.valueOf(MoreStatus.UNPROCESSABLE_ENTITY, exception.getMessage()), request); + return Responses.create(Problem.valueOf(UNPROCESSABLE_ENTITY, exception.getMessage()), request); } @ExceptionHandler(EventTypeOptionsValidationException.class) public ResponseEntity unableProcess(final EventTypeOptionsValidationException exception, final NativeWebRequest request) { LOG.debug(exception.getMessage(), exception); - return Responses.create(MoreStatus.UNPROCESSABLE_ENTITY, exception.getMessage(), request); + return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); } } From 7a1e85c79d3adf42bcd62af061b2dca222f14e74 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 09:28:14 +0200 Subject: [PATCH 04/20] fix --- .../db/EventTypeDbRepositoryTest.java | 2 +- .../zalando/nakadi/webservice/EventTypeAT.java | 2 +- .../webservice/PartitionsControllerAT.java | 2 +- .../controller/CursorOperationsController.java | 4 ++-- .../nakadi/controller/CursorsController.java | 4 ++-- .../controller/EventPublishingController.java | 5 +++-- .../controller/EventStreamController.java | 4 ++-- .../nakadi/controller/ExceptionHandling.java | 10 +++++++++- .../controller/PartitionsController.java | 4 ++-- .../controller/SubscriptionController.java | 4 +++- .../zalando/nakadi/domain/NakadiCursor.java | 2 +- .../exceptions/NoSuchEventTypeException.java | 18 ------------------ .../org/zalando/nakadi/exceptions/Try.java | 4 ++++ .../{ => runtime}/InvalidCursorException.java | 4 ++-- .../runtime/NoEventTypeException.java | 2 -- .../runtime/NoSuchEventTypeException.java | 11 +++++++++++ .../nakadi/repository/EventConsumer.java | 2 +- .../nakadi/repository/EventTypeRepository.java | 2 +- .../repository/MultiTimelineEventConsumer.java | 2 +- .../nakadi/repository/TopicRepository.java | 2 +- .../db/CachingEventTypeRepository.java | 2 +- .../nakadi/repository/db/EventTypeCache.java | 2 +- .../repository/db/EventTypeDbRepository.java | 2 +- .../nakadi/repository/kafka/KafkaCursor.java | 2 +- .../repository/kafka/KafkaTopicRepository.java | 2 +- .../nakadi/service/CursorConverter.java | 4 ++-- .../zalando/nakadi/service/CursorsService.java | 4 ++-- .../zalando/nakadi/service/EventPublisher.java | 2 +- .../nakadi/service/EventStreamFactory.java | 2 +- .../nakadi/service/EventTypeService.java | 6 ++++-- .../nakadi/service/NakadiCursorComparator.java | 2 +- .../service/converter/CursorConverterImpl.java | 4 ++-- .../service/converter/VersionOneConverter.java | 4 ++-- .../converter/VersionZeroConverter.java | 4 ++-- .../service/converter/VersionedConverter.java | 4 ++-- .../subscription/SubscriptionService.java | 16 ++++++++++------ .../SubscriptionStreamerFactory.java | 2 +- .../SubscriptionTimeLagService.java | 2 +- .../SubscriptionValidationService.java | 2 +- .../subscription/state/StreamingState.java | 2 +- .../zk/SubscriptionClientFactory.java | 2 +- .../service/timeline/TimelineService.java | 4 ++-- .../controller/CursorsControllerTest.java | 4 ++-- .../EventPublishingControllerTest.java | 2 +- .../controller/EventStreamControllerTest.java | 4 ++-- .../controller/EventTypeControllerTest.java | 2 +- .../controller/PartitionsControllerTest.java | 2 +- .../controller/SubscriptionControllerTest.java | 2 +- .../nakadi/domain/NakadiCursorTest.java | 2 +- .../repository/kafka/KafkaCursorTest.java | 2 +- .../kafka/KafkaTopicRepositoryTest.java | 2 +- .../service/NakadiCursorComparatorTest.java | 2 +- .../SubscriptionTimeLagServiceTest.java | 2 +- .../SubscriptionValidationServiceTest.java | 2 +- .../converter/VersionOneConverterTest.java | 2 +- .../converter/VersionZeroConverterTest.java | 4 ++-- .../subscription/state/StreamingStateTest.java | 4 ++-- .../service/timeline/TimelineServiceTest.java | 2 +- 58 files changed, 109 insertions(+), 97 deletions(-) delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/NoSuchEventTypeException.java rename src/main/java/org/zalando/nakadi/exceptions/{ => runtime}/InvalidCursorException.java (95%) create mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchEventTypeException.java diff --git a/src/acceptance-test/java/org/zalando/nakadi/repository/db/EventTypeDbRepositoryTest.java b/src/acceptance-test/java/org/zalando/nakadi/repository/db/EventTypeDbRepositoryTest.java index 7fd3d13bae..76204879e6 100644 --- a/src/acceptance-test/java/org/zalando/nakadi/repository/db/EventTypeDbRepositoryTest.java +++ b/src/acceptance-test/java/org/zalando/nakadi/repository/db/EventTypeDbRepositoryTest.java @@ -10,7 +10,7 @@ import org.zalando.nakadi.domain.EventTypeSchema; import org.zalando.nakadi.domain.Version; import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; import org.zalando.nakadi.repository.EventTypeRepository; import org.zalando.nakadi.utils.TestUtils; diff --git a/src/acceptance-test/java/org/zalando/nakadi/webservice/EventTypeAT.java b/src/acceptance-test/java/org/zalando/nakadi/webservice/EventTypeAT.java index c5f9a0a449..0ba764fb80 100644 --- a/src/acceptance-test/java/org/zalando/nakadi/webservice/EventTypeAT.java +++ b/src/acceptance-test/java/org/zalando/nakadi/webservice/EventTypeAT.java @@ -18,7 +18,7 @@ import org.zalando.nakadi.domain.ResourceAuthorization; import org.zalando.nakadi.domain.ResourceAuthorizationAttribute; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.partitioning.PartitionStrategy; import org.zalando.nakadi.repository.kafka.KafkaTestHelper; import org.zalando.nakadi.utils.EventTypeTestBuilder; diff --git a/src/acceptance-test/java/org/zalando/nakadi/webservice/PartitionsControllerAT.java b/src/acceptance-test/java/org/zalando/nakadi/webservice/PartitionsControllerAT.java index e68abd8ffa..44522e7bc1 100644 --- a/src/acceptance-test/java/org/zalando/nakadi/webservice/PartitionsControllerAT.java +++ b/src/acceptance-test/java/org/zalando/nakadi/webservice/PartitionsControllerAT.java @@ -11,7 +11,7 @@ import org.junit.Test; import org.springframework.http.HttpStatus; import org.zalando.nakadi.domain.EventType; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.repository.kafka.KafkaTestHelper; import org.zalando.nakadi.utils.EventTypeTestBuilder; import org.zalando.nakadi.view.Cursor; diff --git a/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java b/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java index 606b71f954..8716756147 100644 --- a/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java +++ b/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java @@ -16,9 +16,9 @@ import org.zalando.nakadi.domain.NakadiCursorLag; import org.zalando.nakadi.domain.ShiftedNakadiCursor; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NotFoundException; import org.zalando.nakadi.exceptions.runtime.CursorConversionException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorOperation; diff --git a/src/main/java/org/zalando/nakadi/controller/CursorsController.java b/src/main/java/org/zalando/nakadi/controller/CursorsController.java index c6cfa26b49..ddf62cf8c0 100644 --- a/src/main/java/org/zalando/nakadi/controller/CursorsController.java +++ b/src/main/java/org/zalando/nakadi/controller/CursorsController.java @@ -16,10 +16,10 @@ import org.zalando.nakadi.domain.ItemsWrapper; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.CursorsAreEmptyException; import org.zalando.nakadi.exceptions.runtime.FeatureNotAvailableException; import org.zalando.nakadi.exceptions.runtime.InvalidStreamIdException; diff --git a/src/main/java/org/zalando/nakadi/controller/EventPublishingController.java b/src/main/java/org/zalando/nakadi/controller/EventPublishingController.java index 24571576b6..924b8c1229 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventPublishingController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventPublishingController.java @@ -17,7 +17,7 @@ import org.zalando.nakadi.domain.EventPublishResult; import org.zalando.nakadi.domain.EventPublishingStatus; import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.EventTypeTimeoutException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; @@ -35,6 +35,7 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static org.springframework.http.ResponseEntity.status; import static org.springframework.web.bind.annotation.RequestMethod.POST; import static org.zalando.problem.spring.web.advice.Responses.create; @@ -110,7 +111,7 @@ private ResponseEntity postEventInternal(final String eventTypeName, return processJSONException(e, nativeWebRequest); } catch (final NoSuchEventTypeException e) { LOG.debug("Event type not found.", e.getMessage()); - return create(e.asProblem(), nativeWebRequest); + return create(Problem.valueOf(NOT_FOUND, e.getMessage()), nativeWebRequest); } catch (final EventTypeTimeoutException e) { LOG.debug("Failed to publish batch", e); return create(Problem.valueOf(Response.Status.SERVICE_UNAVAILABLE, e.getMessage()), nativeWebRequest); diff --git a/src/main/java/org/zalando/nakadi/controller/EventStreamController.java b/src/main/java/org/zalando/nakadi/controller/EventStreamController.java index 90a71462f4..d31a4e87ca 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventStreamController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventStreamController.java @@ -26,9 +26,9 @@ import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.InvalidLimitException; import org.zalando.nakadi.exceptions.runtime.NoConnectionSlotsException; diff --git a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java index 300e75b1ff..0938e94196 100644 --- a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java +++ b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.context.request.NativeWebRequest; import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; import org.zalando.nakadi.exceptions.runtime.PartitioningException; import org.zalando.nakadi.exceptions.runtime.CompactionException; @@ -37,6 +38,7 @@ import javax.ws.rs.core.Response; +import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static javax.ws.rs.core.Response.Status.NOT_IMPLEMENTED; import static org.zalando.problem.MoreStatus.UNPROCESSABLE_ENTITY; @@ -85,7 +87,7 @@ class and stacktrace like information. @ExceptionHandler(NoEventTypeException.class) public ResponseEntity noEventTypeException(final NoEventTypeException exception, final NativeWebRequest request) { - return Responses.create(Response.Status.NOT_FOUND, exception.getMessage(), request); + return Responses.create(NOT_FOUND, exception.getMessage(), request); } @ExceptionHandler(AccessDeniedException.class) @@ -225,4 +227,10 @@ public ResponseEntity handleInvalidPartitionKeyFieldsException( return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); } + @ExceptionHandler(NoSuchEventTypeException.class) + public ResponseEntity handleNoSuchEventTypeException(final NoSuchEventTypeException exception, + final NativeWebRequest request) { + LOG.debug(exception.getMessage(), exception); + return Responses.create(NOT_FOUND, exception.getMessage(), request); + } } diff --git a/src/main/java/org/zalando/nakadi/controller/PartitionsController.java b/src/main/java/org/zalando/nakadi/controller/PartitionsController.java index 3203bd2256..3a44572bf8 100644 --- a/src/main/java/org/zalando/nakadi/controller/PartitionsController.java +++ b/src/main/java/org/zalando/nakadi/controller/PartitionsController.java @@ -19,9 +19,9 @@ import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorOperation; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.NotFoundException; diff --git a/src/main/java/org/zalando/nakadi/controller/SubscriptionController.java b/src/main/java/org/zalando/nakadi/controller/SubscriptionController.java index c15bf61244..6eaf0bb5df 100644 --- a/src/main/java/org/zalando/nakadi/controller/SubscriptionController.java +++ b/src/main/java/org/zalando/nakadi/controller/SubscriptionController.java @@ -18,6 +18,7 @@ import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.FeatureNotAvailableException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.TimeLagStatsTimeoutException; import org.zalando.nakadi.service.FeatureToggleService; @@ -83,7 +84,8 @@ public ResponseEntity deleteSubscription(@PathVariable("id") final String sub public ItemsWrapper getSubscriptionStats( @PathVariable("id") final String subscriptionId, @RequestParam(value = "show_time_lag", required = false, defaultValue = "false") final boolean showTimeLag) - throws NakadiException, InconsistentStateException, ServiceTemporarilyUnavailableException { + throws NakadiException, InconsistentStateException, + NoSuchEventTypeException, ServiceTemporarilyUnavailableException { final StatsMode statsMode = showTimeLag ? StatsMode.TIMELAG : StatsMode.NORMAL; return subscriptionService.getSubscriptionStat(subscriptionId, statsMode); } diff --git a/src/main/java/org/zalando/nakadi/domain/NakadiCursor.java b/src/main/java/org/zalando/nakadi/domain/NakadiCursor.java index aada4785fa..a216f31243 100644 --- a/src/main/java/org/zalando/nakadi/domain/NakadiCursor.java +++ b/src/main/java/org/zalando/nakadi/domain/NakadiCursor.java @@ -1,7 +1,7 @@ package org.zalando.nakadi.domain; import com.google.common.base.Preconditions; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.repository.kafka.KafkaCursor; diff --git a/src/main/java/org/zalando/nakadi/exceptions/NoSuchEventTypeException.java b/src/main/java/org/zalando/nakadi/exceptions/NoSuchEventTypeException.java deleted file mode 100644 index f22d722baa..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/NoSuchEventTypeException.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.zalando.nakadi.exceptions; - -import javax.ws.rs.core.Response; - -public class NoSuchEventTypeException extends NakadiException { - public NoSuchEventTypeException(final String message) { - super(message); - } - - public NoSuchEventTypeException(final String msg, final Exception cause) { - super(msg, cause); - } - - @Override - protected Response.StatusType getStatus() { - return Response.Status.NOT_FOUND; - } -} diff --git a/src/main/java/org/zalando/nakadi/exceptions/Try.java b/src/main/java/org/zalando/nakadi/exceptions/Try.java index fb87f1ef65..b40295c720 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/Try.java +++ b/src/main/java/org/zalando/nakadi/exceptions/Try.java @@ -1,5 +1,7 @@ package org.zalando.nakadi.exceptions; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; + import java.util.Optional; import java.util.concurrent.Callable; import java.util.function.Function; @@ -95,6 +97,8 @@ public boolean isSuccess() { public T getOrThrow() { if (exception instanceof NakadiRuntimeException) { throw (NakadiRuntimeException) exception; + } else if (exception instanceof NakadiRuntimeBaseException) { + throw (NakadiRuntimeBaseException) exception; } throw new NakadiRuntimeException(exception); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/InvalidCursorException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorException.java similarity index 95% rename from src/main/java/org/zalando/nakadi/exceptions/InvalidCursorException.java rename to src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorException.java index 88c12022ec..1e53656644 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/InvalidCursorException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorException.java @@ -1,10 +1,10 @@ -package org.zalando.nakadi.exceptions; +package org.zalando.nakadi.exceptions.runtime; import org.zalando.nakadi.domain.CursorError; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.view.Cursor; -public class InvalidCursorException extends Exception { +public class InvalidCursorException extends NakadiRuntimeBaseException { private final CursorError error; private final Cursor cursor; diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoEventTypeException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoEventTypeException.java index 3eb699ebce..c7542644ae 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoEventTypeException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoEventTypeException.java @@ -1,7 +1,5 @@ package org.zalando.nakadi.exceptions.runtime; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; - public class NoEventTypeException extends NakadiRuntimeBaseException { public NoEventTypeException(final String msg) { diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchEventTypeException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchEventTypeException.java new file mode 100644 index 0000000000..e4966d213d --- /dev/null +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchEventTypeException.java @@ -0,0 +1,11 @@ +package org.zalando.nakadi.exceptions.runtime; + +public class NoSuchEventTypeException extends NakadiRuntimeBaseException { + public NoSuchEventTypeException(final String message) { + super(message); + } + + public NoSuchEventTypeException(final String msg, final Exception cause) { + super(msg, cause); + } +} diff --git a/src/main/java/org/zalando/nakadi/repository/EventConsumer.java b/src/main/java/org/zalando/nakadi/repository/EventConsumer.java index 4b27f7bdb0..4c1bda3569 100644 --- a/src/main/java/org/zalando/nakadi/repository/EventConsumer.java +++ b/src/main/java/org/zalando/nakadi/repository/EventConsumer.java @@ -4,7 +4,7 @@ import org.zalando.nakadi.domain.EventTypePartition; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.TopicPartition; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import java.io.Closeable; diff --git a/src/main/java/org/zalando/nakadi/repository/EventTypeRepository.java b/src/main/java/org/zalando/nakadi/repository/EventTypeRepository.java index e7cbdd139e..8f109f70ee 100644 --- a/src/main/java/org/zalando/nakadi/repository/EventTypeRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/EventTypeRepository.java @@ -3,7 +3,7 @@ import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeBase; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; import java.util.List; diff --git a/src/main/java/org/zalando/nakadi/repository/MultiTimelineEventConsumer.java b/src/main/java/org/zalando/nakadi/repository/MultiTimelineEventConsumer.java index 716af70a96..ce96b93b7e 100644 --- a/src/main/java/org/zalando/nakadi/repository/MultiTimelineEventConsumer.java +++ b/src/main/java/org/zalando/nakadi/repository/MultiTimelineEventConsumer.java @@ -8,7 +8,7 @@ import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.domain.TopicPartition; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; diff --git a/src/main/java/org/zalando/nakadi/repository/TopicRepository.java b/src/main/java/org/zalando/nakadi/repository/TopicRepository.java index cb0c55a78a..8c3322d8c0 100644 --- a/src/main/java/org/zalando/nakadi/repository/TopicRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/TopicRepository.java @@ -5,7 +5,7 @@ import org.zalando.nakadi.domain.PartitionEndStatistics; import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.EventPublishingException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; diff --git a/src/main/java/org/zalando/nakadi/repository/db/CachingEventTypeRepository.java b/src/main/java/org/zalando/nakadi/repository/db/CachingEventTypeRepository.java index 401b6eb5a8..7c362044be 100644 --- a/src/main/java/org/zalando/nakadi/repository/db/CachingEventTypeRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/db/CachingEventTypeRepository.java @@ -9,7 +9,7 @@ import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeBase; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; import org.zalando.nakadi.repository.EventTypeRepository; diff --git a/src/main/java/org/zalando/nakadi/repository/db/EventTypeCache.java b/src/main/java/org/zalando/nakadi/repository/db/EventTypeCache.java index bc11bb847d..91d29ffbb2 100644 --- a/src/main/java/org/zalando/nakadi/repository/db/EventTypeCache.java +++ b/src/main/java/org/zalando/nakadi/repository/db/EventTypeCache.java @@ -16,7 +16,7 @@ import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.repository.EventTypeRepository; import org.zalando.nakadi.repository.zookeeper.ZooKeeperHolder; import org.zalando.nakadi.service.timeline.TimelineSync; diff --git a/src/main/java/org/zalando/nakadi/repository/db/EventTypeDbRepository.java b/src/main/java/org/zalando/nakadi/repository/db/EventTypeDbRepository.java index 219055038c..99f8e09077 100644 --- a/src/main/java/org/zalando/nakadi/repository/db/EventTypeDbRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/db/EventTypeDbRepository.java @@ -16,7 +16,7 @@ import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeBase; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; import org.zalando.nakadi.repository.EventTypeRepository; diff --git a/src/main/java/org/zalando/nakadi/repository/kafka/KafkaCursor.java b/src/main/java/org/zalando/nakadi/repository/kafka/KafkaCursor.java index 7f0375d96f..f57bb7743c 100644 --- a/src/main/java/org/zalando/nakadi/repository/kafka/KafkaCursor.java +++ b/src/main/java/org/zalando/nakadi/repository/kafka/KafkaCursor.java @@ -2,7 +2,7 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import java.util.Objects; diff --git a/src/main/java/org/zalando/nakadi/repository/kafka/KafkaTopicRepository.java b/src/main/java/org/zalando/nakadi/repository/kafka/KafkaTopicRepository.java index 90023698f9..e3a0d44142 100644 --- a/src/main/java/org/zalando/nakadi/repository/kafka/KafkaTopicRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/kafka/KafkaTopicRepository.java @@ -27,7 +27,7 @@ import org.zalando.nakadi.domain.PartitionEndStatistics; import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.EventPublishingException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.TopicConfigException; diff --git a/src/main/java/org/zalando/nakadi/service/CursorConverter.java b/src/main/java/org/zalando/nakadi/service/CursorConverter.java index 1d4f311782..c173fb75ed 100644 --- a/src/main/java/org/zalando/nakadi/service/CursorConverter.java +++ b/src/main/java/org/zalando/nakadi/service/CursorConverter.java @@ -3,8 +3,8 @@ import com.google.common.base.Preconditions; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.view.Cursor; import org.zalando.nakadi.view.SubscriptionCursor; diff --git a/src/main/java/org/zalando/nakadi/service/CursorsService.java b/src/main/java/org/zalando/nakadi/service/CursorsService.java index d64b4f443d..40c45f1f81 100644 --- a/src/main/java/org/zalando/nakadi/service/CursorsService.java +++ b/src/main/java/org/zalando/nakadi/service/CursorsService.java @@ -9,12 +9,12 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.InvalidStreamIdException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.OperationTimeoutException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; diff --git a/src/main/java/org/zalando/nakadi/service/EventPublisher.java b/src/main/java/org/zalando/nakadi/service/EventPublisher.java index efef3b1c92..9cdb3ed239 100644 --- a/src/main/java/org/zalando/nakadi/service/EventPublisher.java +++ b/src/main/java/org/zalando/nakadi/service/EventPublisher.java @@ -19,7 +19,7 @@ import org.zalando.nakadi.exceptions.runtime.CompactionException; import org.zalando.nakadi.exceptions.runtime.EnrichmentException; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.PartitioningException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.EventPublishingException; diff --git a/src/main/java/org/zalando/nakadi/service/EventStreamFactory.java b/src/main/java/org/zalando/nakadi/service/EventStreamFactory.java index 9dee599d65..272a2bede0 100644 --- a/src/main/java/org/zalando/nakadi/service/EventStreamFactory.java +++ b/src/main/java/org/zalando/nakadi/service/EventStreamFactory.java @@ -4,7 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.repository.EventConsumer; diff --git a/src/main/java/org/zalando/nakadi/service/EventTypeService.java b/src/main/java/org/zalando/nakadi/service/EventTypeService.java index 2e2d6ea5e3..fa712933bd 100644 --- a/src/main/java/org/zalando/nakadi/service/EventTypeService.java +++ b/src/main/java/org/zalando/nakadi/service/EventTypeService.java @@ -28,7 +28,7 @@ import org.zalando.nakadi.exceptions.InternalNakadiException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; @@ -61,6 +61,7 @@ import org.zalando.nakadi.util.JsonUtils; import org.zalando.nakadi.validation.SchemaEvolutionService; import org.zalando.nakadi.validation.SchemaIncompatibility; +import org.zalando.problem.Problem; import java.io.Closeable; import java.io.IOException; @@ -71,6 +72,7 @@ import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; +import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static org.zalando.nakadi.service.FeatureToggleService.Feature.DELETE_EVENT_TYPE_WITH_SUBSCRIPTIONS; @Component @@ -444,7 +446,7 @@ public Result get(final String eventTypeName) { return Result.ok(eventType); } catch (final NoSuchEventTypeException e) { LOG.debug("Could not find EventType: {}", eventTypeName); - return Result.problem(e.asProblem()); + return Result.problem(Problem.valueOf(NOT_FOUND, e.getMessage())); } catch (final InternalNakadiException e) { LOG.error("Problem loading event type " + eventTypeName, e); return Result.problem(e.asProblem()); diff --git a/src/main/java/org/zalando/nakadi/service/NakadiCursorComparator.java b/src/main/java/org/zalando/nakadi/service/NakadiCursorComparator.java index 8f7e94e0cd..c861bb02f0 100644 --- a/src/main/java/org/zalando/nakadi/service/NakadiCursorComparator.java +++ b/src/main/java/org/zalando/nakadi/service/NakadiCursorComparator.java @@ -5,7 +5,7 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.repository.db.EventTypeCache; import java.util.Comparator; diff --git a/src/main/java/org/zalando/nakadi/service/converter/CursorConverterImpl.java b/src/main/java/org/zalando/nakadi/service/converter/CursorConverterImpl.java index 2e48b8548b..daa7732ffd 100644 --- a/src/main/java/org/zalando/nakadi/service/converter/CursorConverterImpl.java +++ b/src/main/java/org/zalando/nakadi/service/converter/CursorConverterImpl.java @@ -5,8 +5,8 @@ import org.springframework.stereotype.Service; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.repository.db.EventTypeCache; import org.zalando.nakadi.service.CursorConverter; diff --git a/src/main/java/org/zalando/nakadi/service/converter/VersionOneConverter.java b/src/main/java/org/zalando/nakadi/service/converter/VersionOneConverter.java index 880bfa4a86..9c6cd4c3ef 100644 --- a/src/main/java/org/zalando/nakadi/service/converter/VersionOneConverter.java +++ b/src/main/java/org/zalando/nakadi/service/converter/VersionOneConverter.java @@ -4,8 +4,8 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.repository.db.EventTypeCache; import org.zalando.nakadi.service.CursorConverter; import org.zalando.nakadi.service.StaticStorageWorkerFactory; diff --git a/src/main/java/org/zalando/nakadi/service/converter/VersionZeroConverter.java b/src/main/java/org/zalando/nakadi/service/converter/VersionZeroConverter.java index 110b3ab012..80acfe0a03 100644 --- a/src/main/java/org/zalando/nakadi/service/converter/VersionZeroConverter.java +++ b/src/main/java/org/zalando/nakadi/service/converter/VersionZeroConverter.java @@ -6,8 +6,8 @@ import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.repository.TopicRepository; import org.zalando.nakadi.service.CursorConverter; diff --git a/src/main/java/org/zalando/nakadi/service/converter/VersionedConverter.java b/src/main/java/org/zalando/nakadi/service/converter/VersionedConverter.java index 30a5296d60..7a6b596dc6 100644 --- a/src/main/java/org/zalando/nakadi/service/converter/VersionedConverter.java +++ b/src/main/java/org/zalando/nakadi/service/converter/VersionedConverter.java @@ -2,8 +2,8 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.service.CursorConverter; import org.zalando.nakadi.view.Cursor; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java index ab5593e092..b800ed4b18 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java @@ -23,8 +23,8 @@ import org.zalando.nakadi.domain.SubscriptionEventTypeStats; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.Try; import org.zalando.nakadi.exceptions.runtime.DbWriteOperationsBlockedException; @@ -69,6 +69,8 @@ import java.util.Set; import java.util.stream.Collectors; +import static javax.ws.rs.core.Response.Status.NOT_FOUND; + @Component public class SubscriptionService { @@ -244,13 +246,14 @@ public Result deleteSubscription(final String subscriptionId) throws DbWri return Result.problem(Problem.valueOf(Response.Status.SERVICE_UNAVAILABLE, e.getMessage())); } catch (final NoSuchEventTypeException | InternalNakadiException e) { LOG.error("Exception can not occur", e); - return Result.problem(e.asProblem()); + return Result.problem(Problem.valueOf(NOT_FOUND, e.getMessage())); } } public ItemsWrapper getSubscriptionStat(final String subscriptionId, final StatsMode statsMode) - throws InconsistentStateException, NoSuchSubscriptionException, ServiceTemporarilyUnavailableException { + throws InconsistentStateException, NoSuchEventTypeException, + NoSuchSubscriptionException, ServiceTemporarilyUnavailableException { final Subscription subscription; try { subscription = subscriptionRepository.getSubscription(subscriptionId); @@ -263,7 +266,7 @@ public ItemsWrapper getSubscriptionStat(final String private List createSubscriptionStat(final Subscription subscription, final StatsMode statsMode) - throws InconsistentStateException, ServiceTemporarilyUnavailableException { + throws InconsistentStateException, NoSuchEventTypeException, ServiceTemporarilyUnavailableException { final List eventTypes = getEventTypesForSubscription(subscription); final ZkSubscriptionClient subscriptionClient = createZkSubscriptionClient(subscription); final Optional zkSubscriptionNode = subscriptionClient.getZkSubscriptionNode(); @@ -285,7 +288,8 @@ private ZkSubscriptionClient createZkSubscriptionClient(final Subscription subsc } } - private List getEventTypesForSubscription(final Subscription subscription) { + private List getEventTypesForSubscription(final Subscription subscription) + throws NoSuchEventTypeException { return subscription.getEventTypes().stream() .map(Try.wrap(eventTypeRepository::findByName)) .map(Try::getOrThrow) diff --git a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionStreamerFactory.java b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionStreamerFactory.java index fa4d8d4343..2102537748 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionStreamerFactory.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionStreamerFactory.java @@ -8,7 +8,7 @@ import org.springframework.stereotype.Service; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.repository.db.EventTypeCache; import org.zalando.nakadi.service.AuthorizationValidator; import org.zalando.nakadi.service.BlacklistService; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionTimeLagService.java b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionTimeLagService.java index cd2da6048b..fb5c68b42a 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionTimeLagService.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionTimeLagService.java @@ -9,7 +9,7 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.PartitionEndStatistics; import org.zalando.nakadi.exceptions.runtime.ErrorGettingCursorTimeLagException; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.LimitReachedException; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionValidationService.java b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionValidationService.java index b36c160f2a..d23d91a5ed 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionValidationService.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionValidationService.java @@ -10,7 +10,7 @@ import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.SubscriptionBase; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java b/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java index 0f0e8fc64d..d38c5eb387 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java @@ -9,7 +9,7 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/zk/SubscriptionClientFactory.java b/src/main/java/org/zalando/nakadi/service/subscription/zk/SubscriptionClientFactory.java index 59abfe2065..f736524b5a 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/zk/SubscriptionClientFactory.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/zk/SubscriptionClientFactory.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.repository.zookeeper.ZooKeeperHolder; @Service diff --git a/src/main/java/org/zalando/nakadi/service/timeline/TimelineService.java b/src/main/java/org/zalando/nakadi/service/timeline/TimelineService.java index 4a3cbfb8b4..1e941fb11d 100644 --- a/src/main/java/org/zalando/nakadi/service/timeline/TimelineService.java +++ b/src/main/java/org/zalando/nakadi/service/timeline/TimelineService.java @@ -21,9 +21,9 @@ import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ConflictException; import org.zalando.nakadi.exceptions.runtime.DbWriteOperationsBlockedException; diff --git a/src/test/java/org/zalando/nakadi/controller/CursorsControllerTest.java b/src/test/java/org/zalando/nakadi/controller/CursorsControllerTest.java index b489d245e9..91e0284003 100644 --- a/src/test/java/org/zalando/nakadi/controller/CursorsControllerTest.java +++ b/src/test/java/org/zalando/nakadi/controller/CursorsControllerTest.java @@ -12,8 +12,8 @@ import org.zalando.nakadi.domain.ItemsWrapper; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InvalidCursorException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.repository.EventTypeRepository; diff --git a/src/test/java/org/zalando/nakadi/controller/EventPublishingControllerTest.java b/src/test/java/org/zalando/nakadi/controller/EventPublishingControllerTest.java index a46d4142f4..f144e78c12 100644 --- a/src/test/java/org/zalando/nakadi/controller/EventPublishingControllerTest.java +++ b/src/test/java/org/zalando/nakadi/controller/EventPublishingControllerTest.java @@ -17,7 +17,7 @@ import org.zalando.nakadi.domain.EventPublishingStatus; import org.zalando.nakadi.domain.EventPublishingStep; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.EventTypeTimeoutException; import org.zalando.nakadi.metrics.EventTypeMetricRegistry; import org.zalando.nakadi.metrics.EventTypeMetrics; diff --git a/src/test/java/org/zalando/nakadi/controller/EventStreamControllerTest.java b/src/test/java/org/zalando/nakadi/controller/EventStreamControllerTest.java index 58eed109ee..db50090942 100644 --- a/src/test/java/org/zalando/nakadi/controller/EventStreamControllerTest.java +++ b/src/test/java/org/zalando/nakadi/controller/EventStreamControllerTest.java @@ -20,9 +20,9 @@ import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.plugin.api.authz.AuthorizationService; diff --git a/src/test/java/org/zalando/nakadi/controller/EventTypeControllerTest.java b/src/test/java/org/zalando/nakadi/controller/EventTypeControllerTest.java index a843c93723..749615580c 100644 --- a/src/test/java/org/zalando/nakadi/controller/EventTypeControllerTest.java +++ b/src/test/java/org/zalando/nakadi/controller/EventTypeControllerTest.java @@ -26,7 +26,7 @@ import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; import org.zalando.nakadi.exceptions.runtime.InvalidEventTypeException; import org.zalando.nakadi.exceptions.runtime.TopicConfigException; diff --git a/src/test/java/org/zalando/nakadi/controller/PartitionsControllerTest.java b/src/test/java/org/zalando/nakadi/controller/PartitionsControllerTest.java index bde6e42a15..e26d6621e7 100644 --- a/src/test/java/org/zalando/nakadi/controller/PartitionsControllerTest.java +++ b/src/test/java/org/zalando/nakadi/controller/PartitionsControllerTest.java @@ -15,7 +15,7 @@ import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.repository.EventTypeRepository; import org.zalando.nakadi.repository.TopicRepository; diff --git a/src/test/java/org/zalando/nakadi/controller/SubscriptionControllerTest.java b/src/test/java/org/zalando/nakadi/controller/SubscriptionControllerTest.java index 5ce11c6ca1..61dac0bba5 100644 --- a/src/test/java/org/zalando/nakadi/controller/SubscriptionControllerTest.java +++ b/src/test/java/org/zalando/nakadi/controller/SubscriptionControllerTest.java @@ -22,7 +22,7 @@ import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.SubscriptionEventTypeStats; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.plugin.api.ApplicationService; diff --git a/src/test/java/org/zalando/nakadi/domain/NakadiCursorTest.java b/src/test/java/org/zalando/nakadi/domain/NakadiCursorTest.java index 5d1057dc60..e08eeaef20 100644 --- a/src/test/java/org/zalando/nakadi/domain/NakadiCursorTest.java +++ b/src/test/java/org/zalando/nakadi/domain/NakadiCursorTest.java @@ -2,7 +2,7 @@ import com.google.common.collect.ImmutableMap; import org.junit.Test; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; diff --git a/src/test/java/org/zalando/nakadi/repository/kafka/KafkaCursorTest.java b/src/test/java/org/zalando/nakadi/repository/kafka/KafkaCursorTest.java index 2b653ba9dc..cfabf2ebd7 100644 --- a/src/test/java/org/zalando/nakadi/repository/kafka/KafkaCursorTest.java +++ b/src/test/java/org/zalando/nakadi/repository/kafka/KafkaCursorTest.java @@ -4,7 +4,7 @@ import org.junit.Test; import org.zalando.nakadi.domain.CursorError; import org.zalando.nakadi.domain.NakadiCursor; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.utils.TestUtils; public class KafkaCursorTest { diff --git a/src/test/java/org/zalando/nakadi/repository/kafka/KafkaTopicRepositoryTest.java b/src/test/java/org/zalando/nakadi/repository/kafka/KafkaTopicRepositoryTest.java index 205ce97def..d87efec091 100644 --- a/src/test/java/org/zalando/nakadi/repository/kafka/KafkaTopicRepositoryTest.java +++ b/src/test/java/org/zalando/nakadi/repository/kafka/KafkaTopicRepositoryTest.java @@ -23,7 +23,7 @@ import org.zalando.nakadi.domain.PartitionEndStatistics; import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.EventPublishingException; import org.zalando.nakadi.repository.zookeeper.ZooKeeperHolder; import org.zalando.nakadi.repository.zookeeper.ZookeeperSettings; diff --git a/src/test/java/org/zalando/nakadi/service/NakadiCursorComparatorTest.java b/src/test/java/org/zalando/nakadi/service/NakadiCursorComparatorTest.java index f7f6de0d83..ea19eeb86d 100644 --- a/src/test/java/org/zalando/nakadi/service/NakadiCursorComparatorTest.java +++ b/src/test/java/org/zalando/nakadi/service/NakadiCursorComparatorTest.java @@ -7,7 +7,7 @@ import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.repository.db.EventTypeCache; import org.zalando.nakadi.repository.kafka.KafkaCursor; diff --git a/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java b/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java index 5c5ed83edc..0ab31f1d64 100644 --- a/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java +++ b/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java @@ -10,7 +10,7 @@ import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.runtime.ErrorGettingCursorTimeLagException; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.repository.EventConsumer; diff --git a/src/test/java/org/zalando/nakadi/service/SubscriptionValidationServiceTest.java b/src/test/java/org/zalando/nakadi/service/SubscriptionValidationServiceTest.java index 7068bffa35..e99a4c896d 100644 --- a/src/test/java/org/zalando/nakadi/service/SubscriptionValidationServiceTest.java +++ b/src/test/java/org/zalando/nakadi/service/SubscriptionValidationServiceTest.java @@ -11,7 +11,7 @@ import org.zalando.nakadi.domain.SubscriptionBase; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; import org.zalando.nakadi.exceptions.runtime.RepositoryProblemException; diff --git a/src/test/java/org/zalando/nakadi/service/converter/VersionOneConverterTest.java b/src/test/java/org/zalando/nakadi/service/converter/VersionOneConverterTest.java index 85a649c4b2..f0de627811 100644 --- a/src/test/java/org/zalando/nakadi/service/converter/VersionOneConverterTest.java +++ b/src/test/java/org/zalando/nakadi/service/converter/VersionOneConverterTest.java @@ -8,7 +8,7 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.repository.db.EventTypeCache; import org.zalando.nakadi.view.Cursor; diff --git a/src/test/java/org/zalando/nakadi/service/converter/VersionZeroConverterTest.java b/src/test/java/org/zalando/nakadi/service/converter/VersionZeroConverterTest.java index 20fa8c66ca..144e733a0e 100644 --- a/src/test/java/org/zalando/nakadi/service/converter/VersionZeroConverterTest.java +++ b/src/test/java/org/zalando/nakadi/service/converter/VersionZeroConverterTest.java @@ -3,8 +3,8 @@ import org.junit.Before; import org.junit.Test; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.service.timeline.TimelineService; import org.zalando.nakadi.view.Cursor; diff --git a/src/test/java/org/zalando/nakadi/service/subscription/state/StreamingStateTest.java b/src/test/java/org/zalando/nakadi/service/subscription/state/StreamingStateTest.java index c6d42ad2dc..3a9abe6637 100644 --- a/src/test/java/org/zalando/nakadi/service/subscription/state/StreamingStateTest.java +++ b/src/test/java/org/zalando/nakadi/service/subscription/state/StreamingStateTest.java @@ -12,8 +12,8 @@ import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.InvalidCursorException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.repository.EventConsumer; import org.zalando.nakadi.repository.TopicRepository; diff --git a/src/test/java/org/zalando/nakadi/service/timeline/TimelineServiceTest.java b/src/test/java/org/zalando/nakadi/service/timeline/TimelineServiceTest.java index 27153642cc..1a2a265155 100644 --- a/src/test/java/org/zalando/nakadi/service/timeline/TimelineServiceTest.java +++ b/src/test/java/org/zalando/nakadi/service/timeline/TimelineServiceTest.java @@ -13,7 +13,7 @@ import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.NotFoundException; import org.zalando.nakadi.exceptions.runtime.TimelineException; From 3677664a2d7ebd8b3c1704bc5173ccba4816559b Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 12:29:23 +0200 Subject: [PATCH 05/20] fix --- .../org/zalando/nakadi/webservice/EventStreamReadingAT.java | 2 +- .../java/org/zalando/nakadi/repository/db/EventTypeCache.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/acceptance-test/java/org/zalando/nakadi/webservice/EventStreamReadingAT.java b/src/acceptance-test/java/org/zalando/nakadi/webservice/EventStreamReadingAT.java index 499fe06bc3..aaa04db1d4 100644 --- a/src/acceptance-test/java/org/zalando/nakadi/webservice/EventStreamReadingAT.java +++ b/src/acceptance-test/java/org/zalando/nakadi/webservice/EventStreamReadingAT.java @@ -262,7 +262,7 @@ public void whenReachKeepAliveLimitThenStreamIsClosed() { } @Test(timeout = 5000) - public void whenGetEventsWithUknownTopicThenTopicNotFound() { + public void whenGetEventsWithUnknownTopicThenTopicNotFound() { given() .when() .get(createStreamEndpointUrl("blah-topic")) diff --git a/src/main/java/org/zalando/nakadi/repository/db/EventTypeCache.java b/src/main/java/org/zalando/nakadi/repository/db/EventTypeCache.java index 91d29ffbb2..cd4ca37021 100644 --- a/src/main/java/org/zalando/nakadi/repository/db/EventTypeCache.java +++ b/src/main/java/org/zalando/nakadi/repository/db/EventTypeCache.java @@ -5,6 +5,7 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; +import com.google.common.util.concurrent.UncheckedExecutionException; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.recipes.cache.PathChildrenCache; import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent; @@ -161,7 +162,7 @@ private Optional getCached(final String name) throws NoSuchEventTypeException, InternalNakadiException { try { return Optional.ofNullable(eventTypeCache.get(name)); - } catch (final ExecutionException e) { + } catch (final UncheckedExecutionException | ExecutionException e) { if (e.getCause() instanceof NoSuchEventTypeException) { throw (NoSuchEventTypeException) e.getCause(); } else { From c1d8843ef749a3913de52c43f70dd4fb093eb472 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 12:52:42 +0200 Subject: [PATCH 06/20] Refactor NoSuchSchemaException --- .../nakadi/controller/ExceptionHandling.java | 8 ++++++++ .../exceptions/NoSuchSchemaException.java | 19 ------------------- .../runtime/NoSuchSchemaException.java | 13 +++++++++++++ .../repository/db/SchemaRepository.java | 2 +- .../zalando/nakadi/service/SchemaService.java | 4 ++-- .../nakadi/service/SchemaServiceTest.java | 2 +- 6 files changed, 25 insertions(+), 23 deletions(-) delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/NoSuchSchemaException.java create mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSchemaException.java diff --git a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java index 0938e94196..3ddcc13751 100644 --- a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java +++ b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java @@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.context.request.NativeWebRequest; +import org.zalando.nakadi.exceptions.runtime.NoSuchSchemaException; import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; @@ -233,4 +234,11 @@ public ResponseEntity handleNoSuchEventTypeException(final NoSuchEventT LOG.debug(exception.getMessage(), exception); return Responses.create(NOT_FOUND, exception.getMessage(), request); } + + @ExceptionHandler(NoSuchSchemaException.class) + public ResponseEntity handleNoSuchEventTypeException(final NoSuchSchemaException exception, + final NativeWebRequest request) { + LOG.debug(exception.getMessage(), exception); + return Responses.create(NOT_FOUND, exception.getMessage(), request); + } } diff --git a/src/main/java/org/zalando/nakadi/exceptions/NoSuchSchemaException.java b/src/main/java/org/zalando/nakadi/exceptions/NoSuchSchemaException.java deleted file mode 100644 index 631898000e..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/NoSuchSchemaException.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.zalando.nakadi.exceptions; - -import javax.ws.rs.core.Response; - -public class NoSuchSchemaException extends NakadiException { - - public NoSuchSchemaException(final String message) { - super(message); - } - - public NoSuchSchemaException(final String msg, final Exception cause) { - super(msg, cause); - } - - @Override - protected Response.StatusType getStatus() { - return Response.Status.NOT_FOUND; - } -} diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSchemaException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSchemaException.java new file mode 100644 index 0000000000..a8824d12d1 --- /dev/null +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSchemaException.java @@ -0,0 +1,13 @@ +package org.zalando.nakadi.exceptions.runtime; + +public class NoSuchSchemaException extends NakadiRuntimeBaseException { + + public NoSuchSchemaException(final String message) { + super(message); + } + + public NoSuchSchemaException(final String msg, final Exception cause) { + super(msg, cause); + } + +} diff --git a/src/main/java/org/zalando/nakadi/repository/db/SchemaRepository.java b/src/main/java/org/zalando/nakadi/repository/db/SchemaRepository.java index 958a0e70f2..e776f84bc2 100644 --- a/src/main/java/org/zalando/nakadi/repository/db/SchemaRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/db/SchemaRepository.java @@ -7,7 +7,7 @@ import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Component; import org.zalando.nakadi.domain.EventTypeSchema; -import org.zalando.nakadi.exceptions.NoSuchSchemaException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSchemaException; import java.io.IOException; import java.sql.ResultSet; diff --git a/src/main/java/org/zalando/nakadi/service/SchemaService.java b/src/main/java/org/zalando/nakadi/service/SchemaService.java index 9eb9e0b71c..544159e1e4 100644 --- a/src/main/java/org/zalando/nakadi/service/SchemaService.java +++ b/src/main/java/org/zalando/nakadi/service/SchemaService.java @@ -5,7 +5,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.zalando.nakadi.domain.EventTypeSchema; -import org.zalando.nakadi.exceptions.NoSuchSchemaException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSchemaException; import org.zalando.nakadi.repository.db.SchemaRepository; import org.zalando.problem.Problem; @@ -57,7 +57,7 @@ public Result getSchemaVersion(final String name, final String return Result.ok(schema); } catch (final NoSuchSchemaException e) { LOG.debug("Could not find EventTypeSchema version: {} for EventType: {}", version, name); - return Result.problem(e.asProblem()); + return Result.problem(Problem.valueOf(Response.Status.NOT_FOUND, e.getMessage())); } } } diff --git a/src/test/java/org/zalando/nakadi/service/SchemaServiceTest.java b/src/test/java/org/zalando/nakadi/service/SchemaServiceTest.java index 685d04e8d4..5d7fd724fb 100644 --- a/src/test/java/org/zalando/nakadi/service/SchemaServiceTest.java +++ b/src/test/java/org/zalando/nakadi/service/SchemaServiceTest.java @@ -8,7 +8,7 @@ import org.zalando.nakadi.domain.EventTypeSchema; import org.zalando.nakadi.domain.PaginationWrapper; import org.zalando.nakadi.domain.Version; -import org.zalando.nakadi.exceptions.NoSuchSchemaException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSchemaException; import org.zalando.nakadi.repository.db.SchemaRepository; import javax.ws.rs.core.Response; From 1ea81f73a1dbc38c979ab88bc4b40bfbc55c2701 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 13:48:35 +0200 Subject: [PATCH 07/20] Refactor NoSuchSubscriptionException --- .../db/SubscriptionDbRepositoryTest.java | 2 +- .../nakadi/controller/CursorsController.java | 5 +++++ .../nakadi/controller/ExceptionHandling.java | 12 ++++++++++-- .../PostSubscriptionController.java | 5 +++-- .../SubscriptionStreamController.java | 2 +- .../NoSuchSubscriptionException.java | 19 ------------------- .../runtime/NoSuchSubscriptionException.java | 12 ++++++++++++ .../db/SubscriptionDbRepository.java | 2 +- .../nakadi/service/BlacklistService.java | 2 +- .../nakadi/service/CursorsService.java | 2 +- .../nakadi/service/EventTypeService.java | 2 +- .../subscription/SubscriptionService.java | 6 +++--- .../controller/CursorsControllerTest.java | 2 +- .../SubscriptionControllerTest.java | 2 +- .../service/SubscriptionServiceTest.java | 2 +- 15 files changed, 42 insertions(+), 35 deletions(-) delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/NoSuchSubscriptionException.java create mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSubscriptionException.java diff --git a/src/acceptance-test/java/org/zalando/nakadi/repository/db/SubscriptionDbRepositoryTest.java b/src/acceptance-test/java/org/zalando/nakadi/repository/db/SubscriptionDbRepositoryTest.java index bae9b0dec1..130fdb124b 100644 --- a/src/acceptance-test/java/org/zalando/nakadi/repository/db/SubscriptionDbRepositoryTest.java +++ b/src/acceptance-test/java/org/zalando/nakadi/repository/db/SubscriptionDbRepositoryTest.java @@ -8,7 +8,7 @@ import org.zalando.nakadi.config.JsonConfig; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.SubscriptionBase; -import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.DuplicatedSubscriptionException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.util.HashGenerator; diff --git a/src/main/java/org/zalando/nakadi/controller/CursorsController.java b/src/main/java/org/zalando/nakadi/controller/CursorsController.java index ddf62cf8c0..ce00a42b6b 100644 --- a/src/main/java/org/zalando/nakadi/controller/CursorsController.java +++ b/src/main/java/org/zalando/nakadi/controller/CursorsController.java @@ -23,6 +23,7 @@ import org.zalando.nakadi.exceptions.runtime.CursorsAreEmptyException; import org.zalando.nakadi.exceptions.runtime.FeatureNotAvailableException; import org.zalando.nakadi.exceptions.runtime.InvalidStreamIdException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.RequestInProgressException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.UnableProcessException; @@ -46,6 +47,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; +import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static javax.ws.rs.core.Response.Status.SERVICE_UNAVAILABLE; import static org.springframework.http.ResponseEntity.noContent; import static org.springframework.http.ResponseEntity.ok; @@ -110,6 +112,9 @@ public ResponseEntity commitCursors(@PathVariable("subscriptionId") final Str } } catch (final NoSuchEventTypeException | InvalidCursorException e) { return create(Problem.valueOf(UNPROCESSABLE_ENTITY, e.getMessage()), request); + } catch (final NoSuchSubscriptionException e) { + LOG.error("Subscription not found", e); + return create(Problem.valueOf(NOT_FOUND, e.getMessage()), request); } catch (final ServiceTemporarilyUnavailableException e) { LOG.error("Failed to commit cursors", e); return create(Problem.valueOf(SERVICE_UNAVAILABLE, e.getMessage()), request); diff --git a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java index 3ddcc13751..f207e101d6 100644 --- a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java +++ b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java @@ -14,6 +14,7 @@ import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.PartitioningException; import org.zalando.nakadi.exceptions.runtime.CompactionException; import org.zalando.nakadi.exceptions.runtime.EnrichmentException; @@ -236,8 +237,15 @@ public ResponseEntity handleNoSuchEventTypeException(final NoSuchEventT } @ExceptionHandler(NoSuchSchemaException.class) - public ResponseEntity handleNoSuchEventTypeException(final NoSuchSchemaException exception, - final NativeWebRequest request) { + public ResponseEntity handleNoSuchSchemaException(final NoSuchSchemaException exception, + final NativeWebRequest request) { + LOG.debug(exception.getMessage(), exception); + return Responses.create(NOT_FOUND, exception.getMessage(), request); + } + + @ExceptionHandler(NoSuchSubscriptionException.class) + public ResponseEntity handleNoSuchSubscriptionException(final NoSuchSubscriptionException exception, + final NativeWebRequest request) { LOG.debug(exception.getMessage(), exception); return Responses.create(NOT_FOUND, exception.getMessage(), request); } diff --git a/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java b/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java index d71baa88ec..885262a9bc 100644 --- a/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java +++ b/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java @@ -16,7 +16,7 @@ import org.springframework.web.util.UriComponents; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.SubscriptionBase; -import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.DuplicatedSubscriptionException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; @@ -37,6 +37,7 @@ import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.Response; +import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static org.springframework.http.HttpStatus.OK; import static org.zalando.nakadi.service.FeatureToggleService.Feature.DISABLE_SUBSCRIPTION_CREATION; @@ -98,7 +99,7 @@ public ResponseEntity updateSubscription( } catch (final SubscriptionUpdateConflictException ex) { return Responses.create(MoreStatus.UNPROCESSABLE_ENTITY, ex.getMessage(), request); } catch (final NoSuchSubscriptionException ex) { - return Responses.create(ex.asProblem(), request); + return Responses.create(Problem.valueOf(NOT_FOUND, ex.getMessage()), request); } } diff --git a/src/main/java/org/zalando/nakadi/controller/SubscriptionStreamController.java b/src/main/java/org/zalando/nakadi/controller/SubscriptionStreamController.java index 7abe9f8c62..c6676e87df 100644 --- a/src/main/java/org/zalando/nakadi/controller/SubscriptionStreamController.java +++ b/src/main/java/org/zalando/nakadi/controller/SubscriptionStreamController.java @@ -22,7 +22,7 @@ import org.zalando.nakadi.config.NakadiSettings; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.SubscriptionPartitionConflictException; import org.zalando.nakadi.exceptions.runtime.WrongStreamParametersException; diff --git a/src/main/java/org/zalando/nakadi/exceptions/NoSuchSubscriptionException.java b/src/main/java/org/zalando/nakadi/exceptions/NoSuchSubscriptionException.java deleted file mode 100644 index cd788fdce9..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/NoSuchSubscriptionException.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.zalando.nakadi.exceptions; - -import javax.ws.rs.core.Response; - -public class NoSuchSubscriptionException extends NakadiException { - - public NoSuchSubscriptionException(final String message) { - super(message); - } - - public NoSuchSubscriptionException(final String msg, final Exception cause) { - super(msg, cause); - } - - @Override - protected Response.StatusType getStatus() { - return Response.Status.NOT_FOUND; - } -} diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSubscriptionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSubscriptionException.java new file mode 100644 index 0000000000..235f111b03 --- /dev/null +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSubscriptionException.java @@ -0,0 +1,12 @@ +package org.zalando.nakadi.exceptions.runtime; + +public class NoSuchSubscriptionException extends NakadiRuntimeBaseException { + + public NoSuchSubscriptionException(final String message) { + super(message); + } + + public NoSuchSubscriptionException(final String msg, final Exception cause) { + super(msg, cause); + } +} diff --git a/src/main/java/org/zalando/nakadi/repository/db/SubscriptionDbRepository.java b/src/main/java/org/zalando/nakadi/repository/db/SubscriptionDbRepository.java index e93bb0c17f..66e8c8010b 100644 --- a/src/main/java/org/zalando/nakadi/repository/db/SubscriptionDbRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/db/SubscriptionDbRepository.java @@ -18,7 +18,7 @@ import org.springframework.stereotype.Component; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.SubscriptionBase; -import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.DuplicatedSubscriptionException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.NoSubscriptionException; diff --git a/src/main/java/org/zalando/nakadi/service/BlacklistService.java b/src/main/java/org/zalando/nakadi/service/BlacklistService.java index 9130ea58ba..c19f8966aa 100644 --- a/src/main/java/org/zalando/nakadi/service/BlacklistService.java +++ b/src/main/java/org/zalando/nakadi/service/BlacklistService.java @@ -8,7 +8,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.repository.db.SubscriptionDbRepository; import org.zalando.nakadi.repository.zookeeper.ZooKeeperHolder; diff --git a/src/main/java/org/zalando/nakadi/service/CursorsService.java b/src/main/java/org/zalando/nakadi/service/CursorsService.java index 40c45f1f81..38963b96e5 100644 --- a/src/main/java/org/zalando/nakadi/service/CursorsService.java +++ b/src/main/java/org/zalando/nakadi/service/CursorsService.java @@ -15,7 +15,7 @@ import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.OperationTimeoutException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.UnableProcessException; diff --git a/src/main/java/org/zalando/nakadi/service/EventTypeService.java b/src/main/java/org/zalando/nakadi/service/EventTypeService.java index fa712933bd..2790916fa3 100644 --- a/src/main/java/org/zalando/nakadi/service/EventTypeService.java +++ b/src/main/java/org/zalando/nakadi/service/EventTypeService.java @@ -30,7 +30,7 @@ import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; -import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ConflictException; import org.zalando.nakadi.exceptions.runtime.DbWriteOperationsBlockedException; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java index b800ed4b18..44e5f0fdc3 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java @@ -25,7 +25,7 @@ import org.zalando.nakadi.exceptions.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.Try; import org.zalando.nakadi.exceptions.runtime.DbWriteOperationsBlockedException; import org.zalando.nakadi.exceptions.runtime.DuplicatedSubscriptionException; @@ -211,7 +211,7 @@ public Result getSubscription(final String subscriptionId) { return Result.ok(subscription); } catch (final NoSuchSubscriptionException e) { LOG.debug("Failed to find subscription: {}", subscriptionId); - return Result.problem(e.asProblem()); + return Result.problem(Problem.valueOf(NOT_FOUND, e.getMessage())); } catch (final ServiceTemporarilyUnavailableException e) { LOG.error("Error occurred when trying to get subscription: {}", subscriptionId, e); return Result.problem(Problem.valueOf(Response.Status.SERVICE_UNAVAILABLE, e.getMessage())); @@ -240,7 +240,7 @@ public Result deleteSubscription(final String subscriptionId) throws DbWri return Result.ok(); } catch (final NoSuchSubscriptionException e) { LOG.debug("Failed to find subscription: {}", subscriptionId, e); - return Result.problem(e.asProblem()); + return Result.problem(Problem.valueOf(NOT_FOUND, e.getMessage())); } catch (final ServiceTemporarilyUnavailableException e) { LOG.error("Error occurred when trying to delete subscription: {}", subscriptionId, e); return Result.problem(Problem.valueOf(Response.Status.SERVICE_UNAVAILABLE, e.getMessage())); diff --git a/src/test/java/org/zalando/nakadi/controller/CursorsControllerTest.java b/src/test/java/org/zalando/nakadi/controller/CursorsControllerTest.java index 91e0284003..810f287dd3 100644 --- a/src/test/java/org/zalando/nakadi/controller/CursorsControllerTest.java +++ b/src/test/java/org/zalando/nakadi/controller/CursorsControllerTest.java @@ -14,7 +14,7 @@ import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.repository.EventTypeRepository; import org.zalando.nakadi.repository.db.SubscriptionDbRepository; diff --git a/src/test/java/org/zalando/nakadi/controller/SubscriptionControllerTest.java b/src/test/java/org/zalando/nakadi/controller/SubscriptionControllerTest.java index 61dac0bba5..df95d26a89 100644 --- a/src/test/java/org/zalando/nakadi/controller/SubscriptionControllerTest.java +++ b/src/test/java/org/zalando/nakadi/controller/SubscriptionControllerTest.java @@ -23,7 +23,7 @@ import org.zalando.nakadi.domain.SubscriptionEventTypeStats; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.plugin.api.ApplicationService; import org.zalando.nakadi.repository.EventTypeRepository; diff --git a/src/test/java/org/zalando/nakadi/service/SubscriptionServiceTest.java b/src/test/java/org/zalando/nakadi/service/SubscriptionServiceTest.java index 0ddd75ac8e..70bebfa13e 100644 --- a/src/test/java/org/zalando/nakadi/service/SubscriptionServiceTest.java +++ b/src/test/java/org/zalando/nakadi/service/SubscriptionServiceTest.java @@ -6,7 +6,7 @@ import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.SubscriptionBase; import org.zalando.nakadi.domain.SubscriptionResource; -import org.zalando.nakadi.exceptions.NoSuchSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.UnableProcessException; import org.zalando.nakadi.plugin.api.authz.AuthorizationService; From b14339933ae5d31b0214beee45f7beba51caa6d2 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 14:00:39 +0200 Subject: [PATCH 08/20] Refactor NoStreamingSlotsAvailable --- .../nakadi/controller/ExceptionHandling.java | 31 ++++++++++++------- .../exceptions/NoStreamingSlotsAvailable.java | 14 --------- .../runtime/NoStreamingSlotsAvailable.java | 7 +++++ .../subscription/state/StartingState.java | 2 +- 4 files changed, 28 insertions(+), 26 deletions(-) delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/NoStreamingSlotsAvailable.java create mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/NoStreamingSlotsAvailable.java diff --git a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java index f207e101d6..84d13876f0 100644 --- a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java +++ b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java @@ -10,28 +10,29 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.context.request.NativeWebRequest; -import org.zalando.nakadi.exceptions.runtime.NoSuchSchemaException; -import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; -import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; -import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; -import org.zalando.nakadi.exceptions.runtime.PartitioningException; -import org.zalando.nakadi.exceptions.runtime.CompactionException; -import org.zalando.nakadi.exceptions.runtime.EnrichmentException; -import org.zalando.nakadi.exceptions.runtime.FeatureNotAvailableException; -import org.zalando.nakadi.exceptions.runtime.IllegalClientIdException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; -import org.zalando.nakadi.exceptions.runtime.TimelineException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; +import org.zalando.nakadi.exceptions.runtime.CompactionException; import org.zalando.nakadi.exceptions.runtime.CursorConversionException; import org.zalando.nakadi.exceptions.runtime.CursorsAreEmptyException; import org.zalando.nakadi.exceptions.runtime.DbWriteOperationsBlockedException; +import org.zalando.nakadi.exceptions.runtime.EnrichmentException; +import org.zalando.nakadi.exceptions.runtime.FeatureNotAvailableException; +import org.zalando.nakadi.exceptions.runtime.IllegalClientIdException; +import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; import org.zalando.nakadi.exceptions.runtime.LimitReachedException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoStreamingSlotsAvailable; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSchemaException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.PartitioningException; import org.zalando.nakadi.exceptions.runtime.RepositoryProblemException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; +import org.zalando.nakadi.exceptions.runtime.TimelineException; import org.zalando.nakadi.exceptions.runtime.TopicCreationException; import org.zalando.problem.MoreStatus; import org.zalando.problem.Problem; @@ -40,6 +41,7 @@ import javax.ws.rs.core.Response; +import static javax.ws.rs.core.Response.Status.CONFLICT; import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static javax.ws.rs.core.Response.Status.NOT_IMPLEMENTED; import static org.zalando.problem.MoreStatus.UNPROCESSABLE_ENTITY; @@ -249,4 +251,11 @@ public ResponseEntity handleNoSuchSubscriptionException(final NoSuchSub LOG.debug(exception.getMessage(), exception); return Responses.create(NOT_FOUND, exception.getMessage(), request); } + + @ExceptionHandler(NoStreamingSlotsAvailable.class) + public ResponseEntity handleNoStreamingSlotsAvailable(final NoStreamingSlotsAvailable exception, + final NativeWebRequest request) { + LOG.debug(exception.getMessage(), exception); + return Responses.create(CONFLICT, exception.getMessage(), request); + } } diff --git a/src/main/java/org/zalando/nakadi/exceptions/NoStreamingSlotsAvailable.java b/src/main/java/org/zalando/nakadi/exceptions/NoStreamingSlotsAvailable.java deleted file mode 100644 index 9ebe84fdb1..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/NoStreamingSlotsAvailable.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.zalando.nakadi.exceptions; - -import javax.ws.rs.core.Response; - -public class NoStreamingSlotsAvailable extends NakadiException { - public NoStreamingSlotsAvailable(final int totalSlots) { - super("No free slots for streaming available. Total slots: " + totalSlots); - } - - @Override - protected Response.StatusType getStatus() { - return Response.Status.CONFLICT; - } -} diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStreamingSlotsAvailable.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStreamingSlotsAvailable.java new file mode 100644 index 0000000000..16d71735fe --- /dev/null +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStreamingSlotsAvailable.java @@ -0,0 +1,7 @@ +package org.zalando.nakadi.exceptions.runtime; + +public class NoStreamingSlotsAvailable extends NakadiRuntimeBaseException { + public NoStreamingSlotsAvailable(final int totalSlots) { + super("No free slots for streaming available. Total slots: " + totalSlots); + } +} diff --git a/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java b/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java index e2bbbbb47f..62e8d1de89 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java @@ -8,7 +8,7 @@ import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; -import org.zalando.nakadi.exceptions.NoStreamingSlotsAvailable; +import org.zalando.nakadi.exceptions.runtime.NoStreamingSlotsAvailable; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.SubscriptionPartitionConflictException; From 55d5302cdd84e38d0363d463ea6f9b814064fc18 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 14:38:43 +0200 Subject: [PATCH 09/20] fix test --- .../SubscriptionStreamController.java | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/zalando/nakadi/controller/SubscriptionStreamController.java b/src/main/java/org/zalando/nakadi/controller/SubscriptionStreamController.java index c6676e87df..126fe9fe0b 100644 --- a/src/main/java/org/zalando/nakadi/controller/SubscriptionStreamController.java +++ b/src/main/java/org/zalando/nakadi/controller/SubscriptionStreamController.java @@ -22,8 +22,9 @@ import org.zalando.nakadi.config.NakadiSettings; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; +import org.zalando.nakadi.exceptions.runtime.NoStreamingSlotsAvailable; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.SubscriptionPartitionConflictException; import org.zalando.nakadi.exceptions.runtime.WrongStreamParametersException; import org.zalando.nakadi.repository.db.SubscriptionDbRepository; @@ -38,7 +39,6 @@ import org.zalando.nakadi.service.subscription.SubscriptionValidationService; import org.zalando.nakadi.util.FlowIdUtils; import org.zalando.nakadi.view.UserStreamParameters; -import org.zalando.problem.MoreStatus; import org.zalando.problem.Problem; import org.zalando.problem.spring.web.advice.Responses; @@ -46,12 +46,16 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import javax.ws.rs.core.Response; import java.io.IOException; import java.io.OutputStream; import java.util.concurrent.atomic.AtomicBoolean; +import static javax.ws.rs.core.Response.Status.CONFLICT; +import static javax.ws.rs.core.Response.Status.FORBIDDEN; +import static javax.ws.rs.core.Response.Status.NOT_FOUND; +import static javax.ws.rs.core.Response.Status.SERVICE_UNAVAILABLE; import static org.zalando.nakadi.metrics.MetricUtils.metricNameForSubscription; +import static org.zalando.problem.MoreStatus.UNPROCESSABLE_ENTITY; @RestController public class SubscriptionStreamController { @@ -118,21 +122,23 @@ public void onException(final Exception ex) { headersSent = true; try { if (ex instanceof AccessDeniedException) { - writeProblemResponse(response, out, Problem.valueOf(Response.Status.FORBIDDEN, + writeProblemResponse(response, out, Problem.valueOf(FORBIDDEN, ((AccessDeniedException) ex).explain())); } else if (ex instanceof SubscriptionPartitionConflictException) { - writeProblemResponse(response, out, Problem.valueOf(Response.Status.CONFLICT, + writeProblemResponse(response, out, Problem.valueOf(CONFLICT, ex.getMessage())); } else if (ex instanceof WrongStreamParametersException) { - writeProblemResponse(response, out, Problem.valueOf(MoreStatus.UNPROCESSABLE_ENTITY, + writeProblemResponse(response, out, Problem.valueOf(UNPROCESSABLE_ENTITY, ex.getMessage())); } else if (ex instanceof NoSuchSubscriptionException) { - writeProblemResponse(response, out, Problem.valueOf(Response.Status.NOT_FOUND, + writeProblemResponse(response, out, Problem.valueOf(NOT_FOUND, ex.getMessage())); } else if (ex instanceof NakadiException) { writeProblemResponse(response, out, ((NakadiException) ex).asProblem()); + } else if (ex instanceof NoStreamingSlotsAvailable) { + writeProblemResponse(response, out, Problem.valueOf(CONFLICT, ex.getMessage())); } else { - writeProblemResponse(response, out, Problem.valueOf(Response.Status.SERVICE_UNAVAILABLE, + writeProblemResponse(response, out, Problem.valueOf(SERVICE_UNAVAILABLE, "Failed to continue streaming")); } out.flush(); @@ -207,7 +213,7 @@ private StreamingResponseBody stream(final String subscriptionId, try { if (blacklistService.isSubscriptionConsumptionBlocked(subscriptionId, client.getClientId())) { writeProblemResponse(response, outputStream, - Problem.valueOf(Response.Status.FORBIDDEN, "Application or event type is blocked")); + Problem.valueOf(FORBIDDEN, "Application or event type is blocked")); return; } @@ -243,7 +249,7 @@ private void writeProblemResponse(final HttpServletResponse response, public ResponseEntity invalidEventTypeException(final WrongStreamParametersException exception, final NativeWebRequest request) { LOG.debug(exception.getMessage(), exception); - return Responses.create(MoreStatus.UNPROCESSABLE_ENTITY, exception.getMessage(), request); + return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); } } From 3648944958278514c5b809ca63089dcf220e50ff Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 15:06:13 +0200 Subject: [PATCH 10/20] Refactor InternalNakadiException --- .../zalando/nakadi/config/NakadiConfig.java | 2 +- .../CursorOperationsController.java | 13 +++++------ .../nakadi/controller/CursorsController.java | 11 +++++----- .../controller/EventPublishingController.java | 12 +++++----- .../controller/EventStreamController.java | 2 +- .../controller/EventTypeController.java | 2 +- .../controller/PartitionsController.java | 14 ++++++------ .../exceptions/InternalNakadiException.java | 22 ------------------- .../runtime/InternalNakadiException.java | 11 ++++++++++ .../repository/EventTypeRepository.java | 2 +- .../db/CachingEventTypeRepository.java | 2 +- .../nakadi/repository/db/EventTypeCache.java | 2 +- .../repository/db/EventTypeDbRepository.java | 2 +- .../service/AuthorizationValidator.java | 2 +- .../nakadi/service/CursorConverter.java | 2 +- .../service/CursorOperationsService.java | 6 ++--- .../nakadi/service/CursorsService.java | 2 +- .../nakadi/service/EventPublisher.java | 2 +- .../nakadi/service/EventTypeService.java | 15 +++++++------ .../service/NakadiCursorComparator.java | 2 +- .../converter/CursorConverterImpl.java | 2 +- .../converter/VersionOneConverter.java | 2 +- .../converter/VersionZeroConverter.java | 2 +- .../service/converter/VersionedConverter.java | 2 +- .../subscription/SubscriptionService.java | 2 +- .../SubscriptionStreamerFactory.java | 2 +- .../SubscriptionValidationService.java | 7 +++--- .../subscription/state/StartingState.java | 5 +++-- .../subscription/state/StreamingState.java | 3 ++- .../zk/SubscriptionClientFactory.java | 2 +- .../service/timeline/TimelineService.java | 4 ++-- .../EventPublishingControllerTest.java | 2 +- .../controller/EventTypeControllerTest.java | 2 +- .../controller/PartitionsControllerTest.java | 2 +- .../db/CachingEventTypeRepositoryTest.java | 2 +- .../nakadi/service/EventTypeServiceTest.java | 2 +- .../service/NakadiCursorComparatorTest.java | 2 +- .../SubscriptionValidationServiceTest.java | 2 +- .../converter/VersionZeroConverterTest.java | 2 +- .../state/StreamingStateTest.java | 2 +- .../service/timeline/TimelineServiceTest.java | 2 +- 41 files changed, 87 insertions(+), 94 deletions(-) delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/InternalNakadiException.java create mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/InternalNakadiException.java diff --git a/src/main/java/org/zalando/nakadi/config/NakadiConfig.java b/src/main/java/org/zalando/nakadi/config/NakadiConfig.java index 85fa3d489e..f1cf7f4fb6 100644 --- a/src/main/java/org/zalando/nakadi/config/NakadiConfig.java +++ b/src/main/java/org/zalando/nakadi/config/NakadiConfig.java @@ -14,7 +14,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.zalando.nakadi.domain.DefaultStorage; import org.zalando.nakadi.domain.Storage; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.DuplicatedStorageException; import org.zalando.nakadi.repository.db.StorageDbRepository; import org.zalando.nakadi.repository.zookeeper.ZooKeeperHolder; diff --git a/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java b/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java index 8716756147..1ae88ace5e 100644 --- a/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java +++ b/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java @@ -15,14 +15,13 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.NakadiCursorLag; import org.zalando.nakadi.domain.ShiftedNakadiCursor; -import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.runtime.NotFoundException; import org.zalando.nakadi.exceptions.runtime.CursorConversionException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorOperation; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NotFoundException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.repository.EventTypeRepository; import org.zalando.nakadi.service.AuthorizationValidator; @@ -168,7 +167,7 @@ private Function toNakadiCursor(final String eventTypeName return cursor -> { try { return cursorConverter.convert(eventTypeName, cursor); - } catch (final NakadiException | InvalidCursorException e) { + } catch (final InternalNakadiException | InvalidCursorException e) { throw new CursorConversionException("problem converting cursors", e); } }; @@ -180,7 +179,7 @@ private Function toShiftedNakadiCursor(final final NakadiCursor nakadiCursor = cursorConverter.convert(eventTypeName, cursor); return new ShiftedNakadiCursor(nakadiCursor.getTimeline(), nakadiCursor.getPartition(), nakadiCursor.getOffset(), cursor.getShift()); - } catch (final NakadiException | InvalidCursorException e) { + } catch (final InternalNakadiException | InvalidCursorException e) { throw new CursorConversionException("problem converting cursors", e); } }; diff --git a/src/main/java/org/zalando/nakadi/controller/CursorsController.java b/src/main/java/org/zalando/nakadi/controller/CursorsController.java index ce00a42b6b..7515b81f11 100644 --- a/src/main/java/org/zalando/nakadi/controller/CursorsController.java +++ b/src/main/java/org/zalando/nakadi/controller/CursorsController.java @@ -15,7 +15,7 @@ import org.springframework.web.context.request.NativeWebRequest; import org.zalando.nakadi.domain.ItemsWrapper; import org.zalando.nakadi.domain.NakadiCursor; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; @@ -47,6 +47,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; +import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static javax.ws.rs.core.Response.Status.SERVICE_UNAVAILABLE; import static org.springframework.http.ResponseEntity.noContent; @@ -118,9 +119,9 @@ public ResponseEntity commitCursors(@PathVariable("subscriptionId") final Str } catch (final ServiceTemporarilyUnavailableException e) { LOG.error("Failed to commit cursors", e); return create(Problem.valueOf(SERVICE_UNAVAILABLE, e.getMessage()), request); - } catch (final NakadiException e) { + } catch (final InternalNakadiException e) { LOG.error("Failed to commit cursors", e); - return create(e.asProblem(), request); + return create(Problem.valueOf(INTERNAL_SERVER_ERROR, e.getMessage()), request); } } @@ -136,8 +137,8 @@ public ResponseEntity resetCursors( throw new UnableProcessException(e.getMessage()); } catch (final InvalidCursorException e) { return create(Problem.valueOf(UNPROCESSABLE_ENTITY, e.getMessage()), request); - } catch (final NakadiException e) { - return create(e.asProblem(), request); + } catch (final InternalNakadiException e) { + return create(Problem.valueOf(INTERNAL_SERVER_ERROR, e.getMessage()), request); } } diff --git a/src/main/java/org/zalando/nakadi/controller/EventPublishingController.java b/src/main/java/org/zalando/nakadi/controller/EventPublishingController.java index 924b8c1229..f74b47c35d 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventPublishingController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventPublishingController.java @@ -16,10 +16,10 @@ import org.springframework.web.context.request.NativeWebRequest; import org.zalando.nakadi.domain.EventPublishResult; import org.zalando.nakadi.domain.EventPublishingStatus; -import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.EventTypeTimeoutException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.metrics.EventTypeMetricRegistry; import org.zalando.nakadi.metrics.EventTypeMetrics; @@ -35,7 +35,9 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; import static javax.ws.rs.core.Response.Status.NOT_FOUND; +import static javax.ws.rs.core.Response.Status.SERVICE_UNAVAILABLE; import static org.springframework.http.ResponseEntity.status; import static org.springframework.web.bind.annotation.RequestMethod.POST; import static org.zalando.problem.spring.web.advice.Responses.create; @@ -114,10 +116,10 @@ private ResponseEntity postEventInternal(final String eventTypeName, return create(Problem.valueOf(NOT_FOUND, e.getMessage()), nativeWebRequest); } catch (final EventTypeTimeoutException e) { LOG.debug("Failed to publish batch", e); - return create(Problem.valueOf(Response.Status.SERVICE_UNAVAILABLE, e.getMessage()), nativeWebRequest); - } catch (final NakadiException e) { + return create(Problem.valueOf(SERVICE_UNAVAILABLE, e.getMessage()), nativeWebRequest); + } catch (final InternalNakadiException e) { LOG.debug("Failed to publish batch", e); - return create(e.asProblem(), nativeWebRequest); + return create(Problem.valueOf(INTERNAL_SERVER_ERROR, e.getMessage()), nativeWebRequest); } finally { eventTypeMetrics.updateTiming(startingNanos, System.nanoTime()); } diff --git a/src/main/java/org/zalando/nakadi/controller/EventStreamController.java b/src/main/java/org/zalando/nakadi/controller/EventStreamController.java index d31a4e87ca..6d02a2d33c 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventStreamController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventStreamController.java @@ -25,7 +25,7 @@ import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; diff --git a/src/main/java/org/zalando/nakadi/controller/EventTypeController.java b/src/main/java/org/zalando/nakadi/controller/EventTypeController.java index abd17cb4e5..28aec3821f 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventTypeController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventTypeController.java @@ -19,7 +19,7 @@ import org.zalando.nakadi.domain.CleanupPolicy; import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeBase; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; diff --git a/src/main/java/org/zalando/nakadi/controller/PartitionsController.java b/src/main/java/org/zalando/nakadi/controller/PartitionsController.java index 3a44572bf8..0ad3c3c899 100644 --- a/src/main/java/org/zalando/nakadi/controller/PartitionsController.java +++ b/src/main/java/org/zalando/nakadi/controller/PartitionsController.java @@ -18,12 +18,11 @@ import org.zalando.nakadi.domain.PartitionEndStatistics; import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorOperation; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NotFoundException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.repository.EventTypeRepository; @@ -46,6 +45,7 @@ import java.util.stream.Collectors; import static javax.ws.rs.core.Response.Status.NOT_FOUND; +import static javax.ws.rs.core.Response.Status.SERVICE_UNAVAILABLE; import static org.springframework.http.ResponseEntity.ok; import static org.zalando.problem.spring.web.advice.Responses.create; @@ -105,9 +105,9 @@ public ResponseEntity listPartitions(@PathVariable("name") final String event return ok().body(result); } catch (final NoSuchEventTypeException e) { return create(Problem.valueOf(NOT_FOUND, "topic not found"), request); - } catch (final NakadiException e) { + } catch (final InternalNakadiException e) { LOG.error("Could not list partitions. Respond with SERVICE_UNAVAILABLE.", e); - return create(e.asProblem(), request); + return create(Problem.valueOf(SERVICE_UNAVAILABLE, e.getMessage()), request); } } @@ -132,9 +132,9 @@ public ResponseEntity getPartition( } } catch (final NoSuchEventTypeException e) { return create(Problem.valueOf(NOT_FOUND, "topic not found"), request); - } catch (final NakadiException e) { + } catch (final InternalNakadiException e) { LOG.error("Could not get partition. Respond with SERVICE_UNAVAILABLE.", e); - return create(e.asProblem(), request); + return create(Problem.valueOf(SERVICE_UNAVAILABLE, e.getMessage()), request); } catch (final InvalidCursorException e) { return create(Problem.valueOf(MoreStatus.UNPROCESSABLE_ENTITY, INVALID_CURSOR_MESSAGE), request); diff --git a/src/main/java/org/zalando/nakadi/exceptions/InternalNakadiException.java b/src/main/java/org/zalando/nakadi/exceptions/InternalNakadiException.java deleted file mode 100644 index 90415303ac..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/InternalNakadiException.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.zalando.nakadi.exceptions; - -import javax.ws.rs.core.Response; - -public class InternalNakadiException extends NakadiException { - public InternalNakadiException(final String message) { - super(message); - } - - public InternalNakadiException(final String msg, final Exception cause) { - super(msg, cause); - } - - public InternalNakadiException(final String msg, final String problemMessage, final Exception cause) { - super(msg, problemMessage, cause); - } - - @Override - protected Response.StatusType getStatus() { - return Response.Status.INTERNAL_SERVER_ERROR; - } -} diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InternalNakadiException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InternalNakadiException.java new file mode 100644 index 0000000000..ccc73816a7 --- /dev/null +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InternalNakadiException.java @@ -0,0 +1,11 @@ +package org.zalando.nakadi.exceptions.runtime; + +public class InternalNakadiException extends NakadiRuntimeBaseException { + public InternalNakadiException(final String message) { + super(message); + } + + public InternalNakadiException(final String msg, final Exception cause) { + super(msg, cause); + } +} diff --git a/src/main/java/org/zalando/nakadi/repository/EventTypeRepository.java b/src/main/java/org/zalando/nakadi/repository/EventTypeRepository.java index 8f109f70ee..c1a35d8580 100644 --- a/src/main/java/org/zalando/nakadi/repository/EventTypeRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/EventTypeRepository.java @@ -2,7 +2,7 @@ import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeBase; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; diff --git a/src/main/java/org/zalando/nakadi/repository/db/CachingEventTypeRepository.java b/src/main/java/org/zalando/nakadi/repository/db/CachingEventTypeRepository.java index 7c362044be..06bd41bfa5 100644 --- a/src/main/java/org/zalando/nakadi/repository/db/CachingEventTypeRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/db/CachingEventTypeRepository.java @@ -8,7 +8,7 @@ import org.zalando.nakadi.annotations.DB; import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeBase; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; import org.zalando.nakadi.repository.EventTypeRepository; diff --git a/src/main/java/org/zalando/nakadi/repository/db/EventTypeCache.java b/src/main/java/org/zalando/nakadi/repository/db/EventTypeCache.java index cd4ca37021..8d7b77cc72 100644 --- a/src/main/java/org/zalando/nakadi/repository/db/EventTypeCache.java +++ b/src/main/java/org/zalando/nakadi/repository/db/EventTypeCache.java @@ -16,7 +16,7 @@ import org.slf4j.LoggerFactory; import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.repository.EventTypeRepository; import org.zalando.nakadi.repository.zookeeper.ZooKeeperHolder; diff --git a/src/main/java/org/zalando/nakadi/repository/db/EventTypeDbRepository.java b/src/main/java/org/zalando/nakadi/repository/db/EventTypeDbRepository.java index 99f8e09077..3a0edafdf1 100644 --- a/src/main/java/org/zalando/nakadi/repository/db/EventTypeDbRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/db/EventTypeDbRepository.java @@ -15,7 +15,7 @@ import org.zalando.nakadi.annotations.DB; import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeBase; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; import org.zalando.nakadi.repository.EventTypeRepository; diff --git a/src/main/java/org/zalando/nakadi/service/AuthorizationValidator.java b/src/main/java/org/zalando/nakadi/service/AuthorizationValidator.java index 381ce29098..1336f59f62 100644 --- a/src/main/java/org/zalando/nakadi/service/AuthorizationValidator.java +++ b/src/main/java/org/zalando/nakadi/service/AuthorizationValidator.java @@ -7,7 +7,7 @@ import org.zalando.nakadi.domain.EventTypeResource; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.ValidatableAuthorization; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.UnableProcessException; diff --git a/src/main/java/org/zalando/nakadi/service/CursorConverter.java b/src/main/java/org/zalando/nakadi/service/CursorConverter.java index c173fb75ed..dc58deef42 100644 --- a/src/main/java/org/zalando/nakadi/service/CursorConverter.java +++ b/src/main/java/org/zalando/nakadi/service/CursorConverter.java @@ -2,7 +2,7 @@ import com.google.common.base.Preconditions; import org.zalando.nakadi.domain.NakadiCursor; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; diff --git a/src/main/java/org/zalando/nakadi/service/CursorOperationsService.java b/src/main/java/org/zalando/nakadi/service/CursorOperationsService.java index ec6f6074d6..6c144f6280 100644 --- a/src/main/java/org/zalando/nakadi/service/CursorOperationsService.java +++ b/src/main/java/org/zalando/nakadi/service/CursorOperationsService.java @@ -11,7 +11,7 @@ import org.zalando.nakadi.domain.ShiftedNakadiCursor; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorOperation; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; @@ -107,7 +107,7 @@ public List cursorsLag(final String eventTypeName, final List timelines; try { timelines = timelineService.getAllTimelinesOrdered(eventTypeName); - } catch (final NakadiException e) { + } catch (final InternalNakadiException e) { throw new RuntimeException(e); } return timelines.stream() diff --git a/src/main/java/org/zalando/nakadi/service/CursorsService.java b/src/main/java/org/zalando/nakadi/service/CursorsService.java index 38963b96e5..6b8db62b8a 100644 --- a/src/main/java/org/zalando/nakadi/service/CursorsService.java +++ b/src/main/java/org/zalando/nakadi/service/CursorsService.java @@ -8,7 +8,7 @@ import org.zalando.nakadi.domain.EventTypePartition; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Subscription; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.InvalidStreamIdException; diff --git a/src/main/java/org/zalando/nakadi/service/EventPublisher.java b/src/main/java/org/zalando/nakadi/service/EventPublisher.java index 9cdb3ed239..6a7a87f5ae 100644 --- a/src/main/java/org/zalando/nakadi/service/EventPublisher.java +++ b/src/main/java/org/zalando/nakadi/service/EventPublisher.java @@ -18,7 +18,7 @@ import org.zalando.nakadi.enrichment.Enrichment; import org.zalando.nakadi.exceptions.runtime.CompactionException; import org.zalando.nakadi.exceptions.runtime.EnrichmentException; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.PartitioningException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; diff --git a/src/main/java/org/zalando/nakadi/service/EventTypeService.java b/src/main/java/org/zalando/nakadi/service/EventTypeService.java index 2790916fa3..51745e550c 100644 --- a/src/main/java/org/zalando/nakadi/service/EventTypeService.java +++ b/src/main/java/org/zalando/nakadi/service/EventTypeService.java @@ -25,7 +25,7 @@ import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.enrichment.Enrichment; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; @@ -72,6 +72,7 @@ import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; +import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static org.zalando.nakadi.service.FeatureToggleService.Feature.DELETE_EVENT_TYPE_WITH_SUBSCRIPTIONS; @@ -251,7 +252,7 @@ public void delete(final String eventTypeName) throws EventTypeDeletionException LOG.error("Failed to wait for timeline switch", e); throw new EventTypeUnavailableException("Event type " + eventTypeName + " is currently in maintenance, please repeat request"); - } catch (final NakadiException | ServiceTemporarilyUnavailableException e) { + } catch (final InternalNakadiException | ServiceTemporarilyUnavailableException e) { LOG.error("Error deleting event type " + eventTypeName, e); throw new EventTypeDeletionException("Failed to delete event type " + eventTypeName); } finally { @@ -401,13 +402,13 @@ private void updateRetentionTime(final EventType original, final EventType event } private void updateEventTypeInDB(final EventType eventType, final Long newRetentionTime, - final Long oldRetentionTime) throws NakadiException { - final NakadiException exception = transactionTemplate.execute(action -> { + final Long oldRetentionTime) throws InternalNakadiException { + final InternalNakadiException exception = transactionTemplate.execute(action -> { try { updateTimelinesCleanup(eventType.getName(), newRetentionTime, oldRetentionTime); eventTypeRepository.update(eventType); return null; - } catch (final NakadiException e) { + } catch (final InternalNakadiException e) { return e; } }); @@ -449,7 +450,7 @@ public Result get(final String eventTypeName) { return Result.problem(Problem.valueOf(NOT_FOUND, e.getMessage())); } catch (final InternalNakadiException e) { LOG.error("Problem loading event type " + eventTypeName, e); - return Result.problem(e.asProblem()); + return Result.problem(Problem.valueOf(INTERNAL_SERVER_ERROR, e.getMessage())); } } @@ -463,7 +464,7 @@ private Multimap deleteEventType(final String eventType } catch (TimelineException | NotFoundException e) { LOG.error("Problem deleting timeline for event type " + eventTypeName, e); throw new EventTypeDeletionException("Failed to delete timelines for event type " + eventTypeName); - } catch (NakadiException e) { + } catch (InternalNakadiException e) { LOG.error("Error deleting event type " + eventTypeName, e); throw new EventTypeDeletionException("Failed to delete event type " + eventTypeName); } diff --git a/src/main/java/org/zalando/nakadi/service/NakadiCursorComparator.java b/src/main/java/org/zalando/nakadi/service/NakadiCursorComparator.java index c861bb02f0..8f5d7596f1 100644 --- a/src/main/java/org/zalando/nakadi/service/NakadiCursorComparator.java +++ b/src/main/java/org/zalando/nakadi/service/NakadiCursorComparator.java @@ -4,7 +4,7 @@ import org.springframework.stereotype.Component; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.repository.db.EventTypeCache; diff --git a/src/main/java/org/zalando/nakadi/service/converter/CursorConverterImpl.java b/src/main/java/org/zalando/nakadi/service/converter/CursorConverterImpl.java index daa7732ffd..d3e824d73b 100644 --- a/src/main/java/org/zalando/nakadi/service/converter/CursorConverterImpl.java +++ b/src/main/java/org/zalando/nakadi/service/converter/CursorConverterImpl.java @@ -4,7 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.zalando.nakadi.domain.NakadiCursor; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; diff --git a/src/main/java/org/zalando/nakadi/service/converter/VersionOneConverter.java b/src/main/java/org/zalando/nakadi/service/converter/VersionOneConverter.java index 9c6cd4c3ef..df2fa4e126 100644 --- a/src/main/java/org/zalando/nakadi/service/converter/VersionOneConverter.java +++ b/src/main/java/org/zalando/nakadi/service/converter/VersionOneConverter.java @@ -3,7 +3,7 @@ import org.zalando.nakadi.domain.CursorError; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.repository.db.EventTypeCache; diff --git a/src/main/java/org/zalando/nakadi/service/converter/VersionZeroConverter.java b/src/main/java/org/zalando/nakadi/service/converter/VersionZeroConverter.java index 80acfe0a03..453eb545c9 100644 --- a/src/main/java/org/zalando/nakadi/service/converter/VersionZeroConverter.java +++ b/src/main/java/org/zalando/nakadi/service/converter/VersionZeroConverter.java @@ -5,7 +5,7 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; diff --git a/src/main/java/org/zalando/nakadi/service/converter/VersionedConverter.java b/src/main/java/org/zalando/nakadi/service/converter/VersionedConverter.java index 7a6b596dc6..c64d695d7b 100644 --- a/src/main/java/org/zalando/nakadi/service/converter/VersionedConverter.java +++ b/src/main/java/org/zalando/nakadi/service/converter/VersionedConverter.java @@ -1,7 +1,7 @@ package org.zalando.nakadi.service.converter; import org.zalando.nakadi.domain.NakadiCursor; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java index 44e5f0fdc3..55d82eb0df 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java @@ -22,7 +22,7 @@ import org.zalando.nakadi.domain.SubscriptionBase; import org.zalando.nakadi.domain.SubscriptionEventTypeStats; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionStreamerFactory.java b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionStreamerFactory.java index 2102537748..343a3e9bc2 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionStreamerFactory.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionStreamerFactory.java @@ -7,7 +7,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.zalando.nakadi.domain.Subscription; -import org.zalando.nakadi.exceptions.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.repository.db.EventTypeCache; import org.zalando.nakadi.service.AuthorizationValidator; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionValidationService.java b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionValidationService.java index d23d91a5ed..aeb757e484 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionValidationService.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionValidationService.java @@ -9,10 +9,9 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.SubscriptionBase; -import org.zalando.nakadi.exceptions.InternalNakadiException; -import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; import org.zalando.nakadi.exceptions.runtime.RepositoryProblemException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; @@ -158,7 +157,7 @@ private void validateInitialCursors(final SubscriptionBase subscription, } } catch (final InvalidCursorException ex) { throw new WrongInitialCursorsException(ex.getMessage(), ex); - } catch (final NakadiException | ServiceTemporarilyUnavailableException ex) { + } catch (final InternalNakadiException | ServiceTemporarilyUnavailableException ex) { throw new RepositoryProblemException("Topic repository problem occurred when validating cursors", ex); } } diff --git a/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java b/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java index 62e8d1de89..89598d59f2 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java @@ -8,6 +8,7 @@ import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.NoStreamingSlotsAvailable; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; @@ -158,7 +159,7 @@ public List calculate( try { // get oldest active timeline return timelineService.getActiveTimelinesOrdered(et).get(0); - } catch (final NakadiException e) { + } catch (final InternalNakadiException e) { throw new NakadiRuntimeException(e); } }) @@ -197,7 +198,7 @@ public List calculate( // get newest active timeline final List activeTimelines = timelineService.getActiveTimelinesOrdered(et); return activeTimelines.get(activeTimelines.size() - 1); - } catch (final NakadiException e) { + } catch (final InternalNakadiException e) { throw new NakadiRuntimeException(e); } }) diff --git a/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java b/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java index d38c5eb387..513a2c5693 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java @@ -9,6 +9,7 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; @@ -590,7 +591,7 @@ private Map getBeforeFirstCursors(final Set Date: Mon, 20 Aug 2018 15:12:04 +0200 Subject: [PATCH 11/20] Use kakfa 1.1.1 in docker-compose.yml --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index d5bfc3d793..509198f665 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -45,7 +45,7 @@ services: - "2181:2181" kafka: - image: wurstmeister/kafka:1.1.0 + image: wurstmeister/kafka:2.11-1.1.1 network_mode: "host" ports: - "9092:9092" From f1f97903b796128c064b528916e1b1803ce8c971 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 15:41:03 +0200 Subject: [PATCH 12/20] Do not throw NakadiException --- .../controller/EventTypeController.java | 10 +--------- .../controller/SubscriptionController.java | 13 +++--------- .../subscription/state/StartingState.java | 20 ++++--------------- 3 files changed, 8 insertions(+), 35 deletions(-) diff --git a/src/main/java/org/zalando/nakadi/controller/EventTypeController.java b/src/main/java/org/zalando/nakadi/controller/EventTypeController.java index 28aec3821f..594bd185c1 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventTypeController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventTypeController.java @@ -19,8 +19,6 @@ import org.zalando.nakadi.domain.CleanupPolicy; import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeBase; -import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ConflictException; @@ -29,6 +27,7 @@ import org.zalando.nakadi.exceptions.runtime.EventTypeOptionsValidationException; import org.zalando.nakadi.exceptions.runtime.EventTypeUnavailableException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; @@ -208,13 +207,6 @@ public ResponseEntity eventTypeUnavailable(final EventTypeUnavailableEx return Responses.create(Response.Status.SERVICE_UNAVAILABLE, exception.getMessage(), request); } - @ExceptionHandler(NakadiException.class) - public ResponseEntity nakadiException(final NakadiException exception, - final NativeWebRequest request) { - LOG.debug(exception.getMessage(), exception); - return Responses.create(exception.asProblem(), request); - } - @ExceptionHandler(NoSuchPartitionStrategyException.class) public ResponseEntity noSuchPartitionStrategyException(final NoSuchPartitionStrategyException exception, final NativeWebRequest request) { diff --git a/src/main/java/org/zalando/nakadi/controller/SubscriptionController.java b/src/main/java/org/zalando/nakadi/controller/SubscriptionController.java index 6eaf0bb5df..c23d7a5bad 100644 --- a/src/main/java/org/zalando/nakadi/controller/SubscriptionController.java +++ b/src/main/java/org/zalando/nakadi/controller/SubscriptionController.java @@ -15,10 +15,10 @@ import org.zalando.nakadi.domain.ItemsWrapper; import org.zalando.nakadi.domain.SubscriptionEventTypeStats; import org.zalando.nakadi.exceptions.runtime.ErrorGettingCursorTimeLagException; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.FeatureNotAvailableException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.TimeLagStatsTimeoutException; import org.zalando.nakadi.service.FeatureToggleService; @@ -84,19 +84,12 @@ public ResponseEntity deleteSubscription(@PathVariable("id") final String sub public ItemsWrapper getSubscriptionStats( @PathVariable("id") final String subscriptionId, @RequestParam(value = "show_time_lag", required = false, defaultValue = "false") final boolean showTimeLag) - throws NakadiException, InconsistentStateException, - NoSuchEventTypeException, ServiceTemporarilyUnavailableException { + throws InconsistentStateException, + NoSuchEventTypeException, NoSuchSubscriptionException, ServiceTemporarilyUnavailableException { final StatsMode statsMode = showTimeLag ? StatsMode.TIMELAG : StatsMode.NORMAL; return subscriptionService.getSubscriptionStat(subscriptionId, statsMode); } - @ExceptionHandler(NakadiException.class) - public ResponseEntity handleNakadiException(final NakadiException ex, - final NativeWebRequest request) { - LOG.debug(ex.getMessage(), ex); - return Responses.create(ex.asProblem(), request); - } - @ExceptionHandler(FeatureNotAvailableException.class) public ResponseEntity handleFeatureTurnedOff(final FeatureNotAvailableException ex, final NativeWebRequest request) { diff --git a/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java b/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java index 89598d59f2..dbb1d22d1f 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java @@ -6,11 +6,11 @@ import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.SubscriptionBase; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; +import org.zalando.nakadi.exceptions.runtime.ConflictException; import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.NoStreamingSlotsAvailable; -import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.SubscriptionPartitionConflictException; import org.zalando.nakadi.service.CursorConverter; @@ -20,7 +20,6 @@ import org.zalando.nakadi.service.timeline.TimelineService; import org.zalando.nakadi.view.SubscriptionCursorWithoutToken; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.Collection; import java.util.EnumMap; @@ -38,13 +37,7 @@ public void onEnter() { try { getContext().checkAccessAuthorized(); } catch (final AccessDeniedException e) { - switchState(new CleanupState( - new NakadiException(e.explain()) { - @Override - protected Response.StatusType getStatus() { - return Response.Status.FORBIDDEN; - } - })); + switchState(new CleanupState(e)); return; } getZk().runLocked(this::initializeStream); @@ -95,12 +88,7 @@ private void initializeStream() { if (getZk().isCursorResetInProgress()) { switchState(new CleanupState( - new NakadiException("Resetting subscription cursors request is still in progress") { - @Override - protected Response.StatusType getStatus() { - return Response.Status.CONFLICT; - } - })); + new ConflictException("Resetting subscription cursors request is still in progress"))); return; } From 6d2d014569326faeb5afa2266c84eb166acd9b48 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 16:25:46 +0200 Subject: [PATCH 13/20] Remove NakadiException --- .../db/EventTypeDbRepositoryTest.java | 11 +++-- .../nakadi/controller/CursorsController.java | 9 ++-- .../controller/EventStreamController.java | 9 ++-- .../nakadi/controller/ExceptionHandling.java | 13 +++--- .../SubscriptionStreamController.java | 7 ++-- .../nakadi/exceptions/NakadiException.java | 41 ------------------- .../nakadi/repository/EventConsumer.java | 3 +- .../MultiTimelineEventConsumer.java | 13 +++--- .../nakadi/repository/TopicRepository.java | 5 +-- .../nakadi/service/CursorsService.java | 8 ++-- .../nakadi/service/EventStreamFactory.java | 3 +- .../nakadi/service/EventTypeService.java | 13 +++--- .../SubscriptionTimeLagService.java | 5 +-- .../subscription/state/StreamingState.java | 7 ++-- .../service/timeline/TimelineService.java | 9 ++-- .../controller/EventStreamControllerTest.java | 23 +++++------ .../partitioning/PartitionResolverTest.java | 9 ++-- .../kafka/NakadiKafkaConsumerTest.java | 9 ++-- .../nakadi/service/EventStreamTest.java | 33 +++++++-------- .../SubscriptionTimeLagServiceTest.java | 14 +++---- 20 files changed, 94 insertions(+), 150 deletions(-) delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/NakadiException.java diff --git a/src/acceptance-test/java/org/zalando/nakadi/repository/db/EventTypeDbRepositoryTest.java b/src/acceptance-test/java/org/zalando/nakadi/repository/db/EventTypeDbRepositoryTest.java index 76204879e6..e52b989843 100644 --- a/src/acceptance-test/java/org/zalando/nakadi/repository/db/EventTypeDbRepositoryTest.java +++ b/src/acceptance-test/java/org/zalando/nakadi/repository/db/EventTypeDbRepositoryTest.java @@ -9,9 +9,8 @@ import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeSchema; import org.zalando.nakadi.domain.Version; -import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.repository.EventTypeRepository; import org.zalando.nakadi.utils.TestUtils; @@ -100,12 +99,12 @@ public void whenEventExistsFindByNameReturnsSomething() throws Exception { } @Test(expected = NoSuchEventTypeException.class) - public void whenEventDoesntExistsFindByNameReturnsNothing() throws NakadiException { + public void whenEventDoesntExistsFindByNameReturnsNothing() { repository.findByName("inexisting-name"); } @Test - public void whenUpdateExistingEventTypeItUpdates() throws NakadiException, IOException { + public void whenUpdateExistingEventTypeItUpdates() throws IOException { final EventType eventType = buildDefaultEventType(); repository.saveEventType(eventType); @@ -135,7 +134,7 @@ public void whenUpdateExistingEventTypeItUpdates() throws NakadiException, IOExc } @Test - public void whenUpdateDifferentSchemaVersionThenInsertIt() throws NakadiException, IOException { + public void whenUpdateDifferentSchemaVersionThenInsertIt() throws IOException { final EventType eventType = buildDefaultEventType(); repository.saveEventType(eventType); @@ -151,7 +150,7 @@ public void whenUpdateDifferentSchemaVersionThenInsertIt() throws NakadiExceptio } @Test - public void whenListExistingEventTypesAreListed() throws NakadiException { + public void whenListExistingEventTypesAreListed() { final EventType eventType1 = buildDefaultEventType(); final EventType eventType2 = buildDefaultEventType(); diff --git a/src/main/java/org/zalando/nakadi/controller/CursorsController.java b/src/main/java/org/zalando/nakadi/controller/CursorsController.java index 7515b81f11..c5df428f83 100644 --- a/src/main/java/org/zalando/nakadi/controller/CursorsController.java +++ b/src/main/java/org/zalando/nakadi/controller/CursorsController.java @@ -15,14 +15,13 @@ import org.springframework.web.context.request.NativeWebRequest; import org.zalando.nakadi.domain.ItemsWrapper; import org.zalando.nakadi.domain.NakadiCursor; -import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; -import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; -import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.CursorsAreEmptyException; import org.zalando.nakadi.exceptions.runtime.FeatureNotAvailableException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.InvalidStreamIdException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.RequestInProgressException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; @@ -84,7 +83,7 @@ public ItemsWrapper getCursors(@PathVariable("subscriptionId .map(cursor -> cursor.withToken(cursorTokenService.generateToken())) .collect(Collectors.toList()); return new ItemsWrapper<>(cursors); - } catch (final NakadiException e) { + } catch (final InternalNakadiException e) { throw new NakadiRuntimeException(e); } } diff --git a/src/main/java/org/zalando/nakadi/controller/EventStreamController.java b/src/main/java/org/zalando/nakadi/controller/EventStreamController.java index 6d02a2d33c..d6a441d35a 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventStreamController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventStreamController.java @@ -25,13 +25,12 @@ import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; +import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.InvalidLimitException; import org.zalando.nakadi.exceptions.runtime.NoConnectionSlotsException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.UnparseableCursorException; import org.zalando.nakadi.metrics.MetricUtils; @@ -276,9 +275,9 @@ public StreamingResponseBody streamEvents( writeProblemResponse(response, outputStream, SERVICE_UNAVAILABLE, e.getMessage()); } catch (final InvalidLimitException e) { writeProblemResponse(response, outputStream, UNPROCESSABLE_ENTITY, e.getMessage()); - } catch (final NakadiException e) { + } catch (final InternalNakadiException e) { LOG.error("Error while trying to stream events.", e); - writeProblemResponse(response, outputStream, e.asProblem()); + writeProblemResponse(response, outputStream, INTERNAL_SERVER_ERROR, e.getMessage()); } catch (final InvalidCursorException e) { writeProblemResponse(response, outputStream, PRECONDITION_FAILED, e.getMessage()); } catch (final AccessDeniedException e) { diff --git a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java index 84d13876f0..1b170f2e51 100644 --- a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java +++ b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java @@ -10,7 +10,6 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.context.request.NativeWebRequest; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.CompactionException; @@ -20,6 +19,7 @@ import org.zalando.nakadi.exceptions.runtime.EnrichmentException; import org.zalando.nakadi.exceptions.runtime.FeatureNotAvailableException; import org.zalando.nakadi.exceptions.runtime.IllegalClientIdException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; import org.zalando.nakadi.exceptions.runtime.LimitReachedException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; @@ -42,6 +42,7 @@ import javax.ws.rs.core.Response; import static javax.ws.rs.core.Response.Status.CONFLICT; +import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static javax.ws.rs.core.Response.Status.NOT_IMPLEMENTED; import static org.zalando.problem.MoreStatus.UNPROCESSABLE_ENTITY; @@ -117,9 +118,8 @@ public ResponseEntity handleCursorsUnavailableException(final RuntimeEx public ResponseEntity handleExceptionWrapper(final NakadiRuntimeException exception, final NativeWebRequest request) throws Exception { final Throwable cause = exception.getCause(); - if (cause instanceof NakadiException) { - final NakadiException ne = (NakadiException) cause; - return Responses.create(ne.asProblem(), request); + if (cause instanceof InternalNakadiException) { + return Responses.create(INTERNAL_SERVER_ERROR, exception.getMessage(), request); } throw exception.getException(); } @@ -143,9 +143,8 @@ public ResponseEntity handleTimelineException(final TimelineException e final NativeWebRequest request) { LOG.error(exception.getMessage(), exception); final Throwable cause = exception.getCause(); - if (cause instanceof NakadiException) { - final NakadiException ne = (NakadiException) cause; - return Responses.create(ne.asProblem(), request); + if (cause instanceof InternalNakadiException) { + return Responses.create(Problem.valueOf(INTERNAL_SERVER_ERROR, exception.getMessage()), request); } return Responses.create(Response.Status.SERVICE_UNAVAILABLE, exception.getMessage(), request); } diff --git a/src/main/java/org/zalando/nakadi/controller/SubscriptionStreamController.java b/src/main/java/org/zalando/nakadi/controller/SubscriptionStreamController.java index 126fe9fe0b..5d9b261677 100644 --- a/src/main/java/org/zalando/nakadi/controller/SubscriptionStreamController.java +++ b/src/main/java/org/zalando/nakadi/controller/SubscriptionStreamController.java @@ -21,8 +21,8 @@ import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody; import org.zalando.nakadi.config.NakadiSettings; import org.zalando.nakadi.domain.Subscription; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.NoStreamingSlotsAvailable; import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.SubscriptionPartitionConflictException; @@ -52,6 +52,7 @@ import static javax.ws.rs.core.Response.Status.CONFLICT; import static javax.ws.rs.core.Response.Status.FORBIDDEN; +import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static javax.ws.rs.core.Response.Status.SERVICE_UNAVAILABLE; import static org.zalando.nakadi.metrics.MetricUtils.metricNameForSubscription; @@ -133,8 +134,8 @@ public void onException(final Exception ex) { } else if (ex instanceof NoSuchSubscriptionException) { writeProblemResponse(response, out, Problem.valueOf(NOT_FOUND, ex.getMessage())); - } else if (ex instanceof NakadiException) { - writeProblemResponse(response, out, ((NakadiException) ex).asProblem()); + } else if (ex instanceof InternalNakadiException) { + writeProblemResponse(response, out, Problem.valueOf(INTERNAL_SERVER_ERROR, ex.getMessage())); } else if (ex instanceof NoStreamingSlotsAvailable) { writeProblemResponse(response, out, Problem.valueOf(CONFLICT, ex.getMessage())); } else { diff --git a/src/main/java/org/zalando/nakadi/exceptions/NakadiException.java b/src/main/java/org/zalando/nakadi/exceptions/NakadiException.java deleted file mode 100644 index 00a83c2ed9..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/NakadiException.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.zalando.nakadi.exceptions; - - -import org.apache.commons.lang3.StringUtils; -import org.zalando.problem.Problem; - -import javax.ws.rs.core.Response; - -public abstract class NakadiException extends Exception { - - private String problemMessage; - - public NakadiException(final String message) { - super(message); - } - - public NakadiException(final String msg, final Exception cause) { - super(msg, cause); - } - - public NakadiException(final String msg, final String problemMessage, final Exception cause) { - this(msg, cause); - setProblemMessage(problemMessage); - } - - public String getProblemMessage() { - return problemMessage; - } - - public void setProblemMessage(final String problemMessage) { - this.problemMessage = problemMessage; - } - - public Problem asProblem() { - final String detail = StringUtils.isNotBlank(problemMessage) ? problemMessage : getMessage(); - return Problem.valueOf(getStatus(), detail); - } - - protected abstract Response.StatusType getStatus(); - -} diff --git a/src/main/java/org/zalando/nakadi/repository/EventConsumer.java b/src/main/java/org/zalando/nakadi/repository/EventConsumer.java index 4c1bda3569..119fbcc027 100644 --- a/src/main/java/org/zalando/nakadi/repository/EventConsumer.java +++ b/src/main/java/org/zalando/nakadi/repository/EventConsumer.java @@ -5,7 +5,6 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.TopicPartition; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; import java.io.Closeable; import java.util.Collection; @@ -23,6 +22,6 @@ interface LowLevelConsumer extends EventConsumer { interface ReassignableEventConsumer extends EventConsumer { Set getAssignment(); - void reassign(Collection newValues) throws NakadiException, InvalidCursorException; + void reassign(Collection newValues) throws InvalidCursorException; } } diff --git a/src/main/java/org/zalando/nakadi/repository/MultiTimelineEventConsumer.java b/src/main/java/org/zalando/nakadi/repository/MultiTimelineEventConsumer.java index ce96b93b7e..80636b7172 100644 --- a/src/main/java/org/zalando/nakadi/repository/MultiTimelineEventConsumer.java +++ b/src/main/java/org/zalando/nakadi/repository/MultiTimelineEventConsumer.java @@ -8,9 +8,8 @@ import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.domain.TopicPartition; -import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.service.timeline.TimelineService; import org.zalando.nakadi.service.timeline.TimelineSync; @@ -85,7 +84,7 @@ public List readEvents() { if (timelinesChanged.compareAndSet(true, false)) { try { onTimelinesChanged(); - } catch (final NakadiException | InvalidCursorException ex) { + } catch (final InvalidCursorException ex) { throw new NakadiRuntimeException(ex); } } @@ -177,7 +176,7 @@ private NakadiCursor getBeforeFirstCursor( " and partition " + partition + ", but it wasn't found")).getBeforeFirst(); } - private void electTopicRepositories() throws NakadiException, InvalidCursorException { + private void electTopicRepositories() throws InvalidCursorException { final Map> newAssignment = new HashMap<>(); borderOffsets.clear(); // Purpose of this collection is to hold tr that definitely changed their positions and should be recreated. @@ -244,7 +243,7 @@ private void stopAndRemoveConsumer(final TopicRepository toRemove) { } - private void onTimelinesChanged() throws NakadiException, InvalidCursorException { + private void onTimelinesChanged() throws InvalidCursorException { final Set eventTypes = latestOffsets.values().stream() .map(NakadiCursor::getEventType) .collect(Collectors.toSet()); @@ -265,7 +264,7 @@ private void onTimelinesChanged() throws NakadiException, InvalidCursorException } @Override - public void reassign(final Collection newValues) throws NakadiException, InvalidCursorException { + public void reassign(final Collection newValues) throws InvalidCursorException { final Map newCursorMap = newValues.stream() .collect(Collectors.toMap(NakadiCursor::getEventTypePartition, Function.identity())); @@ -308,7 +307,7 @@ void onTimelineChange(final String eventType) { public void close() throws IOException { try { reassign(Collections.emptySet()); - } catch (final NakadiException | InvalidCursorException e) { + } catch (final InvalidCursorException e) { throw new IOException(e); } } diff --git a/src/main/java/org/zalando/nakadi/repository/TopicRepository.java b/src/main/java/org/zalando/nakadi/repository/TopicRepository.java index 8c3322d8c0..02033448ee 100644 --- a/src/main/java/org/zalando/nakadi/repository/TopicRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/TopicRepository.java @@ -5,9 +5,8 @@ import org.zalando.nakadi.domain.PartitionEndStatistics; import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.EventPublishingException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.TopicConfigException; import org.zalando.nakadi.exceptions.runtime.TopicCreationException; @@ -69,7 +68,7 @@ List loadTopicEndStatistics(Collection topics) List listPartitionNames(String topicId); EventConsumer.LowLevelConsumer createEventConsumer(String clientId, List positions) - throws NakadiException, InvalidCursorException; + throws InvalidCursorException; void validateReadCursors(List cursors) throws InvalidCursorException, ServiceTemporarilyUnavailableException; diff --git a/src/main/java/org/zalando/nakadi/service/CursorsService.java b/src/main/java/org/zalando/nakadi/service/CursorsService.java index 6b8db62b8a..05ae0c0172 100644 --- a/src/main/java/org/zalando/nakadi/service/CursorsService.java +++ b/src/main/java/org/zalando/nakadi/service/CursorsService.java @@ -8,12 +8,11 @@ import org.zalando.nakadi.domain.EventTypePartition; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Subscription; +import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.InvalidStreamIdException; -import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.OperationTimeoutException; @@ -128,7 +127,8 @@ private void validateStreamId(final List cursors, final String str } public List getSubscriptionCursors(final String subscriptionId) - throws NakadiException, ServiceTemporarilyUnavailableException { + throws InternalNakadiException, NoSuchEventTypeException, + NoSuchSubscriptionException, ServiceTemporarilyUnavailableException { final Subscription subscription = subscriptionRepository.getSubscription(subscriptionId); final ZkSubscriptionClient zkSubscriptionClient = zkSubscriptionFactory.createClient( subscription, LogPathBuilder.build(subscriptionId, "get_cursors")); diff --git a/src/main/java/org/zalando/nakadi/service/EventStreamFactory.java b/src/main/java/org/zalando/nakadi/service/EventStreamFactory.java index 272a2bede0..a83bfbad2c 100644 --- a/src/main/java/org/zalando/nakadi/service/EventStreamFactory.java +++ b/src/main/java/org/zalando/nakadi/service/EventStreamFactory.java @@ -5,7 +5,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.repository.EventConsumer; import java.io.OutputStream; @@ -38,7 +37,7 @@ public EventStreamFactory( public EventStream createEventStream(final OutputStream outputStream, final EventConsumer eventConsumer, final EventStreamConfig config, final Meter bytesFlushedMeter) - throws NakadiException, InvalidCursorException { + throws InvalidCursorException { return new EventStream( eventConsumer, outputStream, diff --git a/src/main/java/org/zalando/nakadi/service/EventTypeService.java b/src/main/java/org/zalando/nakadi/service/EventTypeService.java index 51745e550c..84b9dccbfc 100644 --- a/src/main/java/org/zalando/nakadi/service/EventTypeService.java +++ b/src/main/java/org/zalando/nakadi/service/EventTypeService.java @@ -25,12 +25,7 @@ import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.enrichment.Enrichment; -import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.NakadiRuntimeException; -import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; -import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ConflictException; import org.zalando.nakadi.exceptions.runtime.DbWriteOperationsBlockedException; @@ -40,8 +35,12 @@ import org.zalando.nakadi.exceptions.runtime.EventTypeUnavailableException; import org.zalando.nakadi.exceptions.runtime.FeatureNotAvailableException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.NotFoundException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.TimelineException; @@ -358,7 +357,7 @@ public void update(final String eventTypeName, LOG.error("Failed to wait for timeline switch", e); throw new ServiceTemporarilyUnavailableException( "Event type is currently in maintenance, please repeat request", e); - } catch (final NakadiException e) { + } catch (final InternalNakadiException e) { LOG.error("Unable to update event type", e); throw new NakadiRuntimeException(e); } finally { @@ -378,7 +377,7 @@ public void update(final String eventTypeName, .put("compatibility_mode", eventTypeBase.getCompatibilityMode())); } - private void updateRetentionTime(final EventType original, final EventType eventType) throws NakadiException { + private void updateRetentionTime(final EventType original, final EventType eventType) { final Long newRetentionTime = eventType.getOptions().getRetentionTime(); final Long oldRetentionTime = original.getOptions().getRetentionTime(); if (oldRetentionTime == null) { diff --git a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionTimeLagService.java b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionTimeLagService.java index fb5c68b42a..e81e82001b 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionTimeLagService.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionTimeLagService.java @@ -9,9 +9,8 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.PartitionEndStatistics; import org.zalando.nakadi.exceptions.runtime.ErrorGettingCursorTimeLagException; -import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.LimitReachedException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.TimeLagStatsTimeoutException; @@ -172,7 +171,7 @@ private Duration getNextEventTimeLag(final NakadiCursor cursor) throws ErrorGett } else { return Duration.ofMillis(new Date().getTime() - nextEvent.getTimestamp()); } - } catch (final NakadiException | IOException e) { + } catch (final IOException e) { throw new InconsistentStateException("Unexpected error happened when getting consumer time lag", e); } catch (final InvalidCursorException e) { throw new ErrorGettingCursorTimeLagException(cursor, e); diff --git a/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java b/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java index 513a2c5693..696115d7b7 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java @@ -9,10 +9,9 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; +import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.metrics.MetricUtils; import org.zalando.nakadi.metrics.StreamKpiData; @@ -554,7 +553,7 @@ private void reconfigureKafkaConsumer(final boolean forceSeek) { // removing all the current assignments for real consumer. try { eventConsumer.reassign(Collections.emptyList()); - } catch (final NakadiException | InvalidCursorException ex) { + } catch (final InvalidCursorException ex) { throw new NakadiRuntimeException(ex); } } @@ -578,7 +577,7 @@ private void reconfigureKafkaConsumer(final boolean forceSeek) { .collect(Collectors.toList()); eventConsumer.reassign(cursors); - } catch (NakadiException | InvalidCursorException ex) { + } catch (InvalidCursorException ex) { throw new NakadiRuntimeException(ex); } } diff --git a/src/main/java/org/zalando/nakadi/service/timeline/TimelineService.java b/src/main/java/org/zalando/nakadi/service/timeline/TimelineService.java index d46f761e79..d9253084be 100644 --- a/src/main/java/org/zalando/nakadi/service/timeline/TimelineService.java +++ b/src/main/java/org/zalando/nakadi/service/timeline/TimelineService.java @@ -20,15 +20,14 @@ import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; -import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; -import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ConflictException; import org.zalando.nakadi.exceptions.runtime.DbWriteOperationsBlockedException; import org.zalando.nakadi.exceptions.runtime.DuplicatedTimelineException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NotFoundException; import org.zalando.nakadi.exceptions.runtime.RepositoryProblemException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; @@ -251,7 +250,7 @@ public TopicRepository getTopicRepository(final Timeline timeline) } public EventConsumer createEventConsumer(@Nullable final String clientId, final List positions) - throws NakadiException, InvalidCursorException { + throws InvalidCursorException { final MultiTimelineEventConsumer result = new MultiTimelineEventConsumer( clientId, this, timelineSync, new NakadiCursorComparator(eventTypeCache)); result.reassign(positions); diff --git a/src/test/java/org/zalando/nakadi/controller/EventStreamControllerTest.java b/src/test/java/org/zalando/nakadi/controller/EventStreamControllerTest.java index db50090942..7166c4f9ef 100644 --- a/src/test/java/org/zalando/nakadi/controller/EventStreamControllerTest.java +++ b/src/test/java/org/zalando/nakadi/controller/EventStreamControllerTest.java @@ -20,10 +20,9 @@ import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; +import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.plugin.api.authz.AuthorizationService; import org.zalando.nakadi.repository.EventConsumer; @@ -121,7 +120,7 @@ public class EventStreamControllerTest { private AuthorizationService authorizationService; @Before - public void setup() throws NakadiException, UnknownHostException, InvalidCursorException { + public void setup() throws UnknownHostException, InvalidCursorException { EVENT_TYPE.setName(TEST_EVENT_TYPE_NAME); timeline = buildTimelineWithTopic(TEST_TOPIC); @@ -229,7 +228,7 @@ public void whenNoParamsThenDefaultsAreUsed() throws Exception { } @Test - public void whenTopicNotExistsThenTopicNotFound() throws IOException, NakadiException { + public void whenTopicNotExistsThenTopicNotFound() throws IOException { when(eventTypeRepository.findByName(TEST_EVENT_TYPE_NAME)).thenThrow(NoSuchEventTypeException.class); final StreamingResponseBody responseBody = createStreamingResponseBody(); @@ -239,7 +238,7 @@ public void whenTopicNotExistsThenTopicNotFound() throws IOException, NakadiExce } @Test - public void whenStreamLimitLowerThanBatchLimitThenUnprocessableEntity() throws NakadiException, IOException { + public void whenStreamLimitLowerThanBatchLimitThenUnprocessableEntity() throws IOException { when(eventTypeRepository.findByName(TEST_EVENT_TYPE_NAME)).thenReturn(EVENT_TYPE); final StreamingResponseBody responseBody = createStreamingResponseBody(20, 10, 0, 0, 0, null); @@ -250,7 +249,7 @@ public void whenStreamLimitLowerThanBatchLimitThenUnprocessableEntity() throws N } @Test - public void whenStreamTimeoutLowerThanBatchTimeoutThenUnprocessableEntity() throws NakadiException, IOException { + public void whenStreamTimeoutLowerThanBatchTimeoutThenUnprocessableEntity() throws IOException { when(eventTypeRepository.findByName(TEST_EVENT_TYPE_NAME)).thenReturn(EVENT_TYPE); final StreamingResponseBody responseBody = createStreamingResponseBody(0, 0, 20, 10, 0, null); @@ -261,7 +260,7 @@ public void whenStreamTimeoutLowerThanBatchTimeoutThenUnprocessableEntity() thro } @Test - public void whenBatchLimitLowerThan1ThenUnprocessableEntity() throws NakadiException, IOException { + public void whenBatchLimitLowerThan1ThenUnprocessableEntity() throws IOException { when(eventTypeRepository.findByName(TEST_EVENT_TYPE_NAME)).thenReturn(EVENT_TYPE); final StreamingResponseBody responseBody = createStreamingResponseBody(0, 0, 0, 0, 0, null); @@ -271,7 +270,7 @@ public void whenBatchLimitLowerThan1ThenUnprocessableEntity() throws NakadiExcep } @Test - public void whenWrongCursorsFormatThenBadRequest() throws NakadiException, IOException { + public void whenWrongCursorsFormatThenBadRequest() throws IOException { when(eventTypeRepository.findByName(TEST_EVENT_TYPE_NAME)).thenReturn(EVENT_TYPE); final StreamingResponseBody responseBody = createStreamingResponseBody(0, 0, 0, 0, 0, @@ -297,7 +296,7 @@ public void whenInvalidCursorsThenPreconditionFailed() throws Exception { } @Test - public void whenNoCursorsThenLatestOffsetsAreUsed() throws NakadiException, IOException, InvalidCursorException { + public void whenNoCursorsThenLatestOffsetsAreUsed() throws IOException, InvalidCursorException { when(eventTypeRepository.findByName(TEST_EVENT_TYPE_NAME)).thenReturn(EVENT_TYPE); final List tps2 = ImmutableList.of( new KafkaPartitionStatistics(timeline, 0, 0, 87), @@ -370,7 +369,7 @@ public void whenNormalCaseThenParametersArePassedToConfigAndStreamStarted() thro } @Test - public void whenNakadiExceptionIsThrownThenServiceUnavailable() throws NakadiException, IOException { + public void whenNakadiExceptionIsThrownThenServiceUnavailable() throws IOException { when(eventTypeRepository.findByName(TEST_EVENT_TYPE_NAME)) .thenThrow(ServiceTemporarilyUnavailableException.class); @@ -381,7 +380,7 @@ public void whenNakadiExceptionIsThrownThenServiceUnavailable() throws NakadiExc } @Test - public void whenExceptionIsThrownThenInternalServerError() throws NakadiException, IOException { + public void whenExceptionIsThrownThenInternalServerError() throws IOException { when(eventTypeRepository.findByName(TEST_EVENT_TYPE_NAME)).thenThrow(NullPointerException.class); final StreamingResponseBody responseBody = createStreamingResponseBody(); @@ -505,7 +504,7 @@ private ArgumentCaptor getStatusCaptor() { return statusCaptor; } - private void prepareScopeRead() throws NakadiException, InvalidCursorException { + private void prepareScopeRead() throws InvalidCursorException { final EventConsumer.LowLevelConsumer eventConsumerMock = mock(EventConsumer.LowLevelConsumer.class); when(eventTypeRepository.findByName(TEST_EVENT_TYPE_NAME)).thenReturn(EVENT_TYPE); when(topicRepositoryMock.createEventConsumer( diff --git a/src/test/java/org/zalando/nakadi/partitioning/PartitionResolverTest.java b/src/test/java/org/zalando/nakadi/partitioning/PartitionResolverTest.java index e7c0032e05..ded230526f 100644 --- a/src/test/java/org/zalando/nakadi/partitioning/PartitionResolverTest.java +++ b/src/test/java/org/zalando/nakadi/partitioning/PartitionResolverTest.java @@ -7,10 +7,9 @@ import org.mockito.Mockito; import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NakadiException; +import org.zalando.nakadi.exceptions.runtime.InvalidEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; import org.zalando.nakadi.exceptions.runtime.PartitioningException; -import org.zalando.nakadi.exceptions.runtime.InvalidEventTypeException; import org.zalando.nakadi.repository.TopicRepository; import org.zalando.nakadi.service.timeline.TimelineService; @@ -32,7 +31,7 @@ public class PartitionResolverTest { private TimelineService timelineService; @Before - public void before() throws NakadiException { + public void before() { final TopicRepository topicRepository = Mockito.mock(TopicRepository.class); when(topicRepository.listPartitionNames(any(String.class))).thenReturn(ImmutableList.of("0")); timelineService = Mockito.mock(TimelineService.class); @@ -42,7 +41,7 @@ public void before() throws NakadiException { } @Test - public void whenResolvePartitionWithKnownStrategyThenOk() throws NakadiException { + public void whenResolvePartitionWithKnownStrategyThenOk() { final EventType eventType = new EventType(); eventType.setPartitionStrategy(RANDOM_STRATEGY); @@ -57,7 +56,7 @@ public void whenResolvePartitionWithKnownStrategyThenOk() throws NakadiException } @Test(expected = PartitioningException.class) - public void whenResolvePartitionWithUnknownStrategyThenPartitioningException() throws NakadiException { + public void whenResolvePartitionWithUnknownStrategyThenPartitioningException() { final EventType eventType = new EventType(); eventType.setPartitionStrategy("blah_strategy"); diff --git a/src/test/java/org/zalando/nakadi/repository/kafka/NakadiKafkaConsumerTest.java b/src/test/java/org/zalando/nakadi/repository/kafka/NakadiKafkaConsumerTest.java index 4e87c05de2..c72ee907d6 100644 --- a/src/test/java/org/zalando/nakadi/repository/kafka/NakadiKafkaConsumerTest.java +++ b/src/test/java/org/zalando/nakadi/repository/kafka/NakadiKafkaConsumerTest.java @@ -152,13 +152,13 @@ public void whenReadEventsThenGetRightEvents() { @Test @SuppressWarnings("unchecked") - public void whenReadEventsThenNakadiException() { + public void whenReadEventsThenNakadiRuntimeBaseException() { // ARRANGE // final ImmutableList exceptions = ImmutableList.of(new NoOffsetForPartitionException( new TopicPartition("", 0)), new KafkaException()); - int numberOfNakadiExceptions = 0; + int numberOfNakadiRuntimeBaseExceptions = 0; for (final Exception exception : exceptions) { final KafkaConsumer kafkaConsumerMock = mock(KafkaConsumer.class); when(kafkaConsumerMock.poll(POLL_TIMEOUT)).thenThrow(exception); @@ -173,11 +173,12 @@ public void whenReadEventsThenNakadiException() { // ASSERT // fail("An Exception was expected to be be thrown"); } catch (final Exception e) { - numberOfNakadiExceptions++; + numberOfNakadiRuntimeBaseExceptions++; } } - assertThat("We should get a NakadiException for every call", numberOfNakadiExceptions, + assertThat("We should get a NakadiRuntimeBaseException for every call", + numberOfNakadiRuntimeBaseExceptions, equalTo(exceptions.size())); } diff --git a/src/test/java/org/zalando/nakadi/service/EventStreamTest.java b/src/test/java/org/zalando/nakadi/service/EventStreamTest.java index d269c5fe3e..5fa6f654c3 100644 --- a/src/test/java/org/zalando/nakadi/service/EventStreamTest.java +++ b/src/test/java/org/zalando/nakadi/service/EventStreamTest.java @@ -13,7 +13,6 @@ import org.zalando.nakadi.domain.ConsumedEvent; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.repository.db.EventTypeCache; import org.zalando.nakadi.repository.kafka.KafkaCursor; @@ -82,7 +81,7 @@ public static void setupMocks() { } @Test(timeout = 15000) - public void whenIOExceptionThenStreamIsClosed() throws NakadiException, InterruptedException, IOException { + public void whenIOExceptionThenStreamIsClosed() throws InterruptedException, IOException { final EventStreamConfig config = EventStreamConfig .builder() .withCursors(ImmutableList.of(NakadiCursor.of(TIMELINE, "0", "0"))) @@ -111,7 +110,7 @@ public void whenIOExceptionThenStreamIsClosed() throws NakadiException, Interrup } @Test(timeout = 10000) - public void whenCrutchWorkedThenStreamIsClosed() throws NakadiException, InterruptedException, IOException { + public void whenCrutchWorkedThenStreamIsClosed() throws InterruptedException, IOException { final EventStreamConfig config = EventStreamConfig .builder() .withCursors(ImmutableList.of(NakadiCursor.of(TIMELINE, "0", "0"))) @@ -139,7 +138,7 @@ public void whenCrutchWorkedThenStreamIsClosed() throws NakadiException, Interru } @Test(timeout = 10000) - public void whenAuthorizationChangedStreamClosed() throws NakadiException, InterruptedException, IOException { + public void whenAuthorizationChangedStreamClosed() throws InterruptedException, IOException { final EventStreamConfig config = EventStreamConfig .builder() .withCursors(ImmutableList.of(NakadiCursor.of(TIMELINE, "0", "0"))) @@ -181,7 +180,7 @@ public void whenAuthorizationChangedStreamClosed() throws NakadiException, Inter } @Test(timeout = 5000) - public void whenStreamTimeoutIsSetThenStreamIsClosed() throws NakadiException, IOException, InterruptedException { + public void whenStreamTimeoutIsSetThenStreamIsClosed() throws IOException, InterruptedException { final EventStreamConfig config = EventStreamConfig .builder() .withBatchLimit(1) @@ -199,7 +198,7 @@ public void whenStreamTimeoutIsSetThenStreamIsClosed() throws NakadiException, I } @Test(timeout = 3000) - public void whenStreamLimitIsSetThenStreamIsClosed() throws NakadiException, IOException, InterruptedException { + public void whenStreamLimitIsSetThenStreamIsClosed() throws IOException, InterruptedException { final EventStreamConfig config = EventStreamConfig .builder() .withCursors(ImmutableList.of(NakadiCursor.of(TIMELINE, "0", "0"))) @@ -216,7 +215,7 @@ public void whenStreamLimitIsSetThenStreamIsClosed() throws NakadiException, IOE } @Test(timeout = 5000) - public void whenKeepAliveLimitIsSetThenStreamIsClosed() throws NakadiException, IOException, InterruptedException { + public void whenKeepAliveLimitIsSetThenStreamIsClosed() throws IOException, InterruptedException { final EventStreamConfig config = EventStreamConfig .builder() .withCursors(ImmutableList.of(NakadiCursor.of(TIMELINE, "0", "0"))) @@ -234,7 +233,7 @@ public void whenKeepAliveLimitIsSetThenStreamIsClosed() throws NakadiException, } @Test(timeout = 15000) - public void whenNoEventsToReadThenKeepAliveIsSent() throws NakadiException, IOException, InterruptedException { + public void whenNoEventsToReadThenKeepAliveIsSent() throws IOException, InterruptedException { final EventStreamConfig config = EventStreamConfig .builder() .withCursors(ImmutableList.of(NakadiCursor.of(TIMELINE, "0", "000000000000000000"))) @@ -261,7 +260,7 @@ public void whenNoEventsToReadThenKeepAliveIsSent() throws NakadiException, IOEx } @Test(timeout = 10000) - public void whenBatchSizeIsSetThenGetEventsInBatches() throws NakadiException, IOException, InterruptedException { + public void whenBatchSizeIsSetThenGetEventsInBatches() throws IOException, InterruptedException { final EventStreamConfig config = EventStreamConfig .builder() .withCursors(ImmutableList.of(NakadiCursor.of(TIMELINE, "0", String.format("%18d", 0)))) @@ -291,7 +290,7 @@ public void whenBatchSizeIsSetThenGetEventsInBatches() throws NakadiException, I } @Test(timeout = 10000) - public void whenReadingEventsTheOrderIsCorrect() throws NakadiException, IOException, InterruptedException { + public void whenReadingEventsTheOrderIsCorrect() throws IOException, InterruptedException { final EventStreamConfig config = EventStreamConfig .builder() .withCursors(ImmutableList.of(NakadiCursor.of(TIMELINE, "0", "0"))) @@ -332,7 +331,7 @@ public void whenReadingEventsTheOrderIsCorrect() throws NakadiException, IOExcep @Test(timeout = 10000) public void whenReadFromMultiplePartitionsThenGroupedInBatchesAccordingToPartition() - throws NakadiException, IOException, InterruptedException { + throws IOException, InterruptedException { final EventStreamConfig config = EventStreamConfig .builder() @@ -373,13 +372,13 @@ public void whenReadFromMultiplePartitionsThenGroupedInBatchesAccordingToPartiti Optional.of(nCopies(2, new String(DUMMY)))))); } - private static NakadiKafkaConsumer emptyConsumer() throws NakadiException { + private static NakadiKafkaConsumer emptyConsumer() { final NakadiKafkaConsumer nakadiKafkaConsumer = mock(NakadiKafkaConsumer.class); when(nakadiKafkaConsumer.readEvents()).thenReturn(Collections.emptyList()); return nakadiKafkaConsumer; } - private static NakadiKafkaConsumer endlessDummyConsumerForPartition(final String partition) throws NakadiException { + private static NakadiKafkaConsumer endlessDummyConsumerForPartition(final String partition) { final NakadiKafkaConsumer nakadiKafkaConsumer = mock(NakadiKafkaConsumer.class); when(nakadiKafkaConsumer.readEvents()) .thenReturn(Collections.singletonList( @@ -387,8 +386,7 @@ private static NakadiKafkaConsumer endlessDummyConsumerForPartition(final String return nakadiKafkaConsumer; } - private static NakadiKafkaConsumer nCountDummyConsumerForPartition(final int eventNum, final String partition) - throws NakadiException { + private static NakadiKafkaConsumer nCountDummyConsumerForPartition(final int eventNum, final String partition) { final NakadiKafkaConsumer nakadiKafkaConsumer = mock(NakadiKafkaConsumer.class); final AtomicInteger eventsToCreate = new AtomicInteger(eventNum); when(nakadiKafkaConsumer.readEvents()).thenAnswer(invocation -> { @@ -403,8 +401,7 @@ private static NakadiKafkaConsumer nCountDummyConsumerForPartition(final int eve return nakadiKafkaConsumer; } - private static NakadiKafkaConsumer predefinedConsumer(final List events) - throws NakadiException { + private static NakadiKafkaConsumer predefinedConsumer(final List events) { final NakadiKafkaConsumer nakadiKafkaConsumer = mock(NakadiKafkaConsumer.class); final AtomicBoolean sent = new AtomicBoolean(false); when(nakadiKafkaConsumer.readEvents()).thenAnswer(invocation -> { @@ -418,7 +415,7 @@ private static NakadiKafkaConsumer predefinedConsumer(final List return nakadiKafkaConsumer; } - private static NakadiKafkaConsumer endlessDummyConsumer() throws NakadiException { + private static NakadiKafkaConsumer endlessDummyConsumer() { return endlessDummyConsumerForPartition("0"); } diff --git a/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java b/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java index 0ab31f1d64..425ddc5b46 100644 --- a/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java +++ b/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java @@ -9,10 +9,10 @@ import org.zalando.nakadi.domain.PartitionEndStatistics; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; +import org.zalando.nakadi.exceptions.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.ErrorGettingCursorTimeLagException; -import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.NakadiException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.repository.EventConsumer; import org.zalando.nakadi.service.subscription.SubscriptionTimeLagService; import org.zalando.nakadi.service.timeline.TimelineService; @@ -45,7 +45,7 @@ public void setUp() throws Exception { } @Test - public void testTimeLagsForTailAndNotTailPositions() throws NakadiException, InvalidCursorException { + public void testTimeLagsForTailAndNotTailPositions() throws InvalidCursorException { final EventConsumer eventConsumer = mock(EventConsumer.class); final Timeline timeline = mock(Timeline.class); @@ -81,9 +81,9 @@ public void testTimeLagsForTailAndNotTailPositions() throws NakadiException, Inv @Test(expected = InconsistentStateException.class) @SuppressWarnings("unchecked") - public void whenNakadiExceptionThenInconsistentStateExceptionIsThrown() - throws NakadiException, InvalidCursorException { - when(timelineService.createEventConsumer(any(), any())).thenThrow(NakadiException.class); + public void whenNakadiRuntimeExceptionThenInconsistentStateExceptionIsThrown() + throws InvalidCursorException { + when(timelineService.createEventConsumer(any(), any())).thenThrow(NakadiRuntimeException.class); final Timeline et1Timeline = new Timeline("et1", 0, new Storage("", Storage.Type.KAFKA), "t1", null); final NakadiCursor committedCursor1 = NakadiCursor.of(et1Timeline, "p1", "o1"); @@ -94,7 +94,7 @@ public void whenNakadiExceptionThenInconsistentStateExceptionIsThrown() @Test(expected = ErrorGettingCursorTimeLagException.class) @SuppressWarnings("unchecked") public void whenInvalidCursorThenErrorGettingCursorTimeLagExceptionIsThrown() - throws NakadiException, InvalidCursorException { + throws InvalidCursorException { when(timelineService.createEventConsumer(any(), any())).thenThrow(InvalidCursorException.class); final Timeline et1Timeline = new Timeline("et1", 0, new Storage("", Storage.Type.KAFKA), "t1", null); From 65dbab9a98b2d6ae03e4137e5b21267a8443cce2 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 16:34:14 +0200 Subject: [PATCH 14/20] move NakadiRuntimeException with the others --- .../java/org/zalando/nakadi/controller/CursorsController.java | 2 +- .../java/org/zalando/nakadi/controller/EventTypeController.java | 2 +- .../java/org/zalando/nakadi/controller/ExceptionHandling.java | 2 +- src/main/java/org/zalando/nakadi/exceptions/Try.java | 1 + .../nakadi/exceptions/{ => runtime}/NakadiRuntimeException.java | 2 +- .../org/zalando/nakadi/partitioning/HashPartitionStrategy.java | 2 +- .../org/zalando/nakadi/repository/KafkaRepositoryCreator.java | 2 +- .../zalando/nakadi/repository/MultiTimelineEventConsumer.java | 2 +- .../org/zalando/nakadi/repository/TopicRepositoryCreator.java | 2 +- .../org/zalando/nakadi/repository/TopicRepositoryHolder.java | 2 +- .../zalando/nakadi/repository/zookeeper/ZkChildrenCache.java | 2 +- src/main/java/org/zalando/nakadi/service/CursorsService.java | 2 +- src/main/java/org/zalando/nakadi/service/EventTypeService.java | 2 +- .../zalando/nakadi/service/subscription/StreamingContext.java | 2 +- .../zalando/nakadi/service/subscription/state/ClosingState.java | 2 +- .../nakadi/service/subscription/state/StartingState.java | 2 +- .../nakadi/service/subscription/state/StreamingState.java | 2 +- .../service/subscription/zk/AbstractZkSubscriptionClient.java | 2 +- .../nakadi/service/subscription/zk/NewZkSubscriptionClient.java | 2 +- .../zalando/nakadi/service/subscription/zk/ZkSubscription.java | 2 +- .../nakadi/service/subscription/zk/ZkSubscriptionClient.java | 2 +- .../nakadi/service/subscription/zk/ZkSubscriptionImpl.java | 2 +- .../zalando/nakadi/repository/TopicRepositoryHolderTest.java | 2 +- .../zalando/nakadi/service/SubscriptionTimeLagServiceTest.java | 2 +- 24 files changed, 24 insertions(+), 23 deletions(-) rename src/main/java/org/zalando/nakadi/exceptions/{ => runtime}/NakadiRuntimeException.java (89%) diff --git a/src/main/java/org/zalando/nakadi/controller/CursorsController.java b/src/main/java/org/zalando/nakadi/controller/CursorsController.java index c5df428f83..941f5ab5de 100644 --- a/src/main/java/org/zalando/nakadi/controller/CursorsController.java +++ b/src/main/java/org/zalando/nakadi/controller/CursorsController.java @@ -15,7 +15,7 @@ import org.springframework.web.context.request.NativeWebRequest; import org.zalando.nakadi.domain.ItemsWrapper; import org.zalando.nakadi.domain.NakadiCursor; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.CursorsAreEmptyException; import org.zalando.nakadi.exceptions.runtime.FeatureNotAvailableException; import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; diff --git a/src/main/java/org/zalando/nakadi/controller/EventTypeController.java b/src/main/java/org/zalando/nakadi/controller/EventTypeController.java index 594bd185c1..7018786a52 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventTypeController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventTypeController.java @@ -19,7 +19,7 @@ import org.zalando.nakadi.domain.CleanupPolicy; import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeBase; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ConflictException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; diff --git a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java index 1b170f2e51..0c34de5e1e 100644 --- a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java +++ b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.context.request.NativeWebRequest; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.CompactionException; import org.zalando.nakadi.exceptions.runtime.CursorConversionException; diff --git a/src/main/java/org/zalando/nakadi/exceptions/Try.java b/src/main/java/org/zalando/nakadi/exceptions/Try.java index b40295c720..0a4865e580 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/Try.java +++ b/src/main/java/org/zalando/nakadi/exceptions/Try.java @@ -1,6 +1,7 @@ package org.zalando.nakadi.exceptions; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import java.util.Optional; import java.util.concurrent.Callable; diff --git a/src/main/java/org/zalando/nakadi/exceptions/NakadiRuntimeException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NakadiRuntimeException.java similarity index 89% rename from src/main/java/org/zalando/nakadi/exceptions/NakadiRuntimeException.java rename to src/main/java/org/zalando/nakadi/exceptions/runtime/NakadiRuntimeException.java index dcf88383d8..20313b178e 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/NakadiRuntimeException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NakadiRuntimeException.java @@ -1,4 +1,4 @@ -package org.zalando.nakadi.exceptions; +package org.zalando.nakadi.exceptions.runtime; /* This exception is meant to be caught and unwrap the real excpetion */ public class NakadiRuntimeException extends RuntimeException { diff --git a/src/main/java/org/zalando/nakadi/partitioning/HashPartitionStrategy.java b/src/main/java/org/zalando/nakadi/partitioning/HashPartitionStrategy.java index c32e255878..e4db3da7cf 100644 --- a/src/main/java/org/zalando/nakadi/partitioning/HashPartitionStrategy.java +++ b/src/main/java/org/zalando/nakadi/partitioning/HashPartitionStrategy.java @@ -6,7 +6,7 @@ import org.zalando.nakadi.domain.EventCategory; import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.Try; import org.zalando.nakadi.util.JsonPathAccess; import org.zalando.nakadi.validation.JsonSchemaEnrichment; diff --git a/src/main/java/org/zalando/nakadi/repository/KafkaRepositoryCreator.java b/src/main/java/org/zalando/nakadi/repository/KafkaRepositoryCreator.java index 731bba8ef1..e047754e9c 100644 --- a/src/main/java/org/zalando/nakadi/repository/KafkaRepositoryCreator.java +++ b/src/main/java/org/zalando/nakadi/repository/KafkaRepositoryCreator.java @@ -7,7 +7,7 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.TopicRepositoryException; import org.zalando.nakadi.repository.kafka.KafkaFactory; import org.zalando.nakadi.repository.kafka.KafkaLocationManager; diff --git a/src/main/java/org/zalando/nakadi/repository/MultiTimelineEventConsumer.java b/src/main/java/org/zalando/nakadi/repository/MultiTimelineEventConsumer.java index 80636b7172..d0deb8fe4a 100644 --- a/src/main/java/org/zalando/nakadi/repository/MultiTimelineEventConsumer.java +++ b/src/main/java/org/zalando/nakadi/repository/MultiTimelineEventConsumer.java @@ -8,7 +8,7 @@ import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.domain.TopicPartition; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.service.timeline.TimelineService; diff --git a/src/main/java/org/zalando/nakadi/repository/TopicRepositoryCreator.java b/src/main/java/org/zalando/nakadi/repository/TopicRepositoryCreator.java index acae318b10..fd6472b8bd 100644 --- a/src/main/java/org/zalando/nakadi/repository/TopicRepositoryCreator.java +++ b/src/main/java/org/zalando/nakadi/repository/TopicRepositoryCreator.java @@ -3,7 +3,7 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.TopicRepositoryException; import java.util.List; diff --git a/src/main/java/org/zalando/nakadi/repository/TopicRepositoryHolder.java b/src/main/java/org/zalando/nakadi/repository/TopicRepositoryHolder.java index f7c9d708d5..00c60a7e03 100644 --- a/src/main/java/org/zalando/nakadi/repository/TopicRepositoryHolder.java +++ b/src/main/java/org/zalando/nakadi/repository/TopicRepositoryHolder.java @@ -9,7 +9,7 @@ import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.TopicRepositoryException; diff --git a/src/main/java/org/zalando/nakadi/repository/zookeeper/ZkChildrenCache.java b/src/main/java/org/zalando/nakadi/repository/zookeeper/ZkChildrenCache.java index 852cf55d98..377c3db501 100644 --- a/src/main/java/org/zalando/nakadi/repository/zookeeper/ZkChildrenCache.java +++ b/src/main/java/org/zalando/nakadi/repository/zookeeper/ZkChildrenCache.java @@ -7,7 +7,7 @@ import org.echocat.jomon.runtime.concurrent.RetryForSpecifiedCountStrategy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import static org.apache.curator.framework.recipes.cache.PathChildrenCache.StartMode.BUILD_INITIAL_CACHE; import static org.echocat.jomon.runtime.concurrent.Retryer.executeWithRetry; diff --git a/src/main/java/org/zalando/nakadi/service/CursorsService.java b/src/main/java/org/zalando/nakadi/service/CursorsService.java index 05ae0c0172..7c5481588e 100644 --- a/src/main/java/org/zalando/nakadi/service/CursorsService.java +++ b/src/main/java/org/zalando/nakadi/service/CursorsService.java @@ -8,7 +8,7 @@ import org.zalando.nakadi.domain.EventTypePartition; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Subscription; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; diff --git a/src/main/java/org/zalando/nakadi/service/EventTypeService.java b/src/main/java/org/zalando/nakadi/service/EventTypeService.java index 84b9dccbfc..9f4a17eabd 100644 --- a/src/main/java/org/zalando/nakadi/service/EventTypeService.java +++ b/src/main/java/org/zalando/nakadi/service/EventTypeService.java @@ -25,7 +25,7 @@ import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.enrichment.Enrichment; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ConflictException; import org.zalando.nakadi.exceptions.runtime.DbWriteOperationsBlockedException; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/StreamingContext.java b/src/main/java/org/zalando/nakadi/service/subscription/StreamingContext.java index e78c586ff2..8b0a85266c 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/StreamingContext.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/StreamingContext.java @@ -8,7 +8,7 @@ import org.zalando.nakadi.ShutdownHooks; import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Subscription; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.service.AuthorizationValidator; import org.zalando.nakadi.service.BlacklistService; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/state/ClosingState.java b/src/main/java/org/zalando/nakadi/service/subscription/state/ClosingState.java index 3ad6f41f18..6470e5de99 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/state/ClosingState.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/state/ClosingState.java @@ -2,7 +2,7 @@ import org.zalando.nakadi.domain.EventTypePartition; import org.zalando.nakadi.domain.NakadiCursor; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.service.subscription.model.Partition; import org.zalando.nakadi.service.subscription.zk.ZkSubscription; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java b/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java index dbb1d22d1f..fee67591b7 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/state/StartingState.java @@ -6,7 +6,7 @@ import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.SubscriptionBase; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ConflictException; import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java b/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java index 696115d7b7..5ba63ab7b9 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/state/StreamingState.java @@ -9,7 +9,7 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.PartitionStatistics; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/zk/AbstractZkSubscriptionClient.java b/src/main/java/org/zalando/nakadi/service/subscription/zk/AbstractZkSubscriptionClient.java index ae6600d600..f1160cf276 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/zk/AbstractZkSubscriptionClient.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/zk/AbstractZkSubscriptionClient.java @@ -12,7 +12,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.zalando.nakadi.domain.EventTypePartition; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.UnableProcessException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.OperationInterruptedException; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/zk/NewZkSubscriptionClient.java b/src/main/java/org/zalando/nakadi/service/subscription/zk/NewZkSubscriptionClient.java index d68882c3ed..27d430889f 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/zk/NewZkSubscriptionClient.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/zk/NewZkSubscriptionClient.java @@ -6,7 +6,7 @@ import org.apache.curator.framework.CuratorFramework; import org.apache.zookeeper.KeeperException; import org.zalando.nakadi.domain.EventTypePartition; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.service.subscription.model.Partition; import org.zalando.nakadi.service.subscription.model.Session; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscription.java b/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscription.java index 6fdd761592..9dff6183cb 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscription.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscription.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.service.subscription.zk; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import java.io.Closeable; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionClient.java b/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionClient.java index 1c4cedbf67..170268ec24 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionClient.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionClient.java @@ -3,7 +3,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import org.apache.commons.codec.binary.Hex; import org.zalando.nakadi.domain.EventTypePartition; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.OperationTimeoutException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; diff --git a/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionImpl.java b/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionImpl.java index 529919eadb..1d0dd05f83 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionImpl.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionImpl.java @@ -5,7 +5,7 @@ import org.apache.curator.framework.api.GetDataBuilder; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import java.util.List; import java.util.function.Function; diff --git a/src/test/java/org/zalando/nakadi/repository/TopicRepositoryHolderTest.java b/src/test/java/org/zalando/nakadi/repository/TopicRepositoryHolderTest.java index becec77404..5f3ac8039d 100644 --- a/src/test/java/org/zalando/nakadi/repository/TopicRepositoryHolderTest.java +++ b/src/test/java/org/zalando/nakadi/repository/TopicRepositoryHolderTest.java @@ -5,7 +5,7 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.TopicRepositoryException; import java.util.List; diff --git a/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java b/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java index 425ddc5b46..df885b643d 100644 --- a/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java +++ b/src/test/java/org/zalando/nakadi/service/SubscriptionTimeLagServiceTest.java @@ -9,7 +9,7 @@ import org.zalando.nakadi.domain.PartitionEndStatistics; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.ErrorGettingCursorTimeLagException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; From e75bb71ccc2b2cb09aae3efe331d3e173f59b391 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 16:52:57 +0200 Subject: [PATCH 15/20] Refactor exceptions and logs - merge NoEventTypeException and NoSuchEventTypeException - merge NoSubscriptionException and NoSuchSubscriptionException - rename NoStorageException to NoSuchStorageException (consistency) - create UnprocessableSubscriptionException - don't log whole stack trace when error is in user input (still log message) --- .../db/StorageDbRepositoryTest.java | 4 +- .../controller/EventTypeController.java | 13 ++----- .../nakadi/controller/ExceptionHandling.java | 38 ++++++++++--------- .../PostSubscriptionController.java | 11 +++--- .../runtime/NoEventTypeException.java | 12 ------ .../runtime/NoStorageException.java | 9 ----- .../runtime/NoSubscriptionException.java | 8 ---- .../runtime/NoSuchStorageException.java | 9 +++++ .../UnprocessableSubscriptionException.java | 7 ++++ .../repository/db/StorageDbRepository.java | 6 +-- .../db/SubscriptionDbRepository.java | 7 ++-- .../nakadi/service/EventTypeService.java | 7 ++-- .../nakadi/service/StorageService.java | 4 +- .../subscription/SubscriptionService.java | 14 +++---- .../SubscriptionValidationService.java | 10 ++--- .../PostSubscriptionControllerTest.java | 18 ++++----- .../nakadi/service/StorageServiceTest.java | 4 +- .../SubscriptionValidationServiceTest.java | 8 ++-- 18 files changed, 84 insertions(+), 105 deletions(-) delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/NoEventTypeException.java delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/NoStorageException.java delete mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/NoSubscriptionException.java create mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchStorageException.java create mode 100644 src/main/java/org/zalando/nakadi/exceptions/runtime/UnprocessableSubscriptionException.java diff --git a/src/acceptance-test/java/org/zalando/nakadi/repository/db/StorageDbRepositoryTest.java b/src/acceptance-test/java/org/zalando/nakadi/repository/db/StorageDbRepositoryTest.java index ba6fd27726..e5fabc6eae 100644 --- a/src/acceptance-test/java/org/zalando/nakadi/repository/db/StorageDbRepositoryTest.java +++ b/src/acceptance-test/java/org/zalando/nakadi/repository/db/StorageDbRepositoryTest.java @@ -5,7 +5,7 @@ import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.runtime.NoStorageException; +import org.zalando.nakadi.exceptions.runtime.NoSuchStorageException; import org.zalando.nakadi.exceptions.runtime.StorageIsUsedException; import org.zalando.nakadi.utils.TestUtils; @@ -94,7 +94,7 @@ public void testStorageDeleted() throws Exception { assertFalse(repository.getStorage(storage.getId()).isPresent()); } - @Test(expected = NoStorageException.class) + @Test(expected = NoSuchStorageException.class) public void testDeleteNoneExistingStorage() throws Exception { repository.deleteStorage(randomUUID()); } diff --git a/src/main/java/org/zalando/nakadi/controller/EventTypeController.java b/src/main/java/org/zalando/nakadi/controller/EventTypeController.java index 7018786a52..321229d212 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventTypeController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventTypeController.java @@ -19,7 +19,6 @@ import org.zalando.nakadi.domain.CleanupPolicy; import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.domain.EventTypeBase; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.ConflictException; import org.zalando.nakadi.exceptions.runtime.DuplicatedEventTypeNameException; @@ -29,7 +28,8 @@ import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidEventTypeException; -import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.TopicConfigException; @@ -110,7 +110,7 @@ public ResponseEntity create(@Valid @RequestBody final EventTypeBase eventTyp public ResponseEntity delete(@PathVariable("name") final String eventTypeName) throws EventTypeDeletionException, AccessDeniedException, - NoEventTypeException, + NoSuchEventTypeException, ConflictException, ServiceTemporarilyUnavailableException { if (featureToggleService.isFeatureEnabled(DISABLE_EVENT_TYPE_DELETION) @@ -193,13 +193,6 @@ public ResponseEntity conflict(final ConflictException exception, final return Responses.create(Response.Status.CONFLICT, exception.getMessage(), request); } - @ExceptionHandler(NoEventTypeException.class) - public ResponseEntity noEventType(final NoEventTypeException exception, - final NativeWebRequest request) { - LOG.debug(exception.getMessage(), exception); - return Responses.create(Response.Status.NOT_FOUND, exception.getMessage(), request); - } - @ExceptionHandler(EventTypeUnavailableException.class) public ResponseEntity eventTypeUnavailable(final EventTypeUnavailableException exception, final NativeWebRequest request) { diff --git a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java index 0c34de5e1e..7632cafcb6 100644 --- a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java +++ b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java @@ -10,7 +10,6 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.context.request.NativeWebRequest; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.CompactionException; import org.zalando.nakadi.exceptions.runtime.CursorConversionException; @@ -23,7 +22,7 @@ import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; import org.zalando.nakadi.exceptions.runtime.LimitReachedException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; -import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.NoStreamingSlotsAvailable; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchPartitionStrategyException; @@ -34,6 +33,7 @@ import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.TimelineException; import org.zalando.nakadi.exceptions.runtime.TopicCreationException; +import org.zalando.nakadi.exceptions.runtime.UnprocessableSubscriptionException; import org.zalando.problem.MoreStatus; import org.zalando.problem.Problem; import org.zalando.problem.spring.web.advice.ProblemHandling; @@ -89,12 +89,6 @@ class and stacktrace like information. return Responses.create(Response.Status.BAD_REQUEST, message, request); } - @ExceptionHandler(NoEventTypeException.class) - public ResponseEntity noEventTypeException(final NoEventTypeException exception, - final NativeWebRequest request) { - return Responses.create(NOT_FOUND, exception.getMessage(), request); - } - @ExceptionHandler(AccessDeniedException.class) public ResponseEntity accessDeniedException(final AccessDeniedException exception, final NativeWebRequest request) { @@ -189,21 +183,21 @@ public ResponseEntity handleDbWriteOperationsBlockedException( public ResponseEntity handleFeatureNotAvailable( final FeatureNotAvailableException ex, final NativeWebRequest request) { - LOG.debug(ex.getMessage(), ex); + LOG.debug(ex.getMessage()); return Responses.create(Problem.valueOf(NOT_IMPLEMENTED, ex.getMessage()), request); } @ExceptionHandler(CompactionException.class) public ResponseEntity handleCompactionException(final CompactionException exception, final NativeWebRequest request) { - LOG.debug(exception.getMessage(), exception); + LOG.debug(exception.getMessage()); return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); } @ExceptionHandler(EnrichmentException.class) public ResponseEntity handleEnrichmentException(final EnrichmentException exception, final NativeWebRequest request) { - LOG.debug(exception.getMessage(), exception); + LOG.debug(exception.getMessage()); return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); } @@ -211,14 +205,14 @@ public ResponseEntity handleEnrichmentException(final EnrichmentExcepti public ResponseEntity handleNoSuchPartitionStrategyException( final NoSuchPartitionStrategyException exception, final NativeWebRequest request) { - LOG.debug(exception.getMessage(), exception); + LOG.debug(exception.getMessage()); return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); } @ExceptionHandler(PartitioningException.class) public ResponseEntity handlePartitioningException(final PartitioningException exception, final NativeWebRequest request) { - LOG.debug(exception.getMessage(), exception); + LOG.debug(exception.getMessage()); return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); } @@ -226,35 +220,43 @@ public ResponseEntity handlePartitioningException(final PartitioningExc public ResponseEntity handleInvalidPartitionKeyFieldsException( final InvalidPartitionKeyFieldsException exception, final NativeWebRequest request) { - LOG.debug(exception.getMessage(), exception); + LOG.debug(exception.getMessage()); return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); } @ExceptionHandler(NoSuchEventTypeException.class) public ResponseEntity handleNoSuchEventTypeException(final NoSuchEventTypeException exception, final NativeWebRequest request) { - LOG.debug(exception.getMessage(), exception); + LOG.debug(exception.getMessage()); return Responses.create(NOT_FOUND, exception.getMessage(), request); } @ExceptionHandler(NoSuchSchemaException.class) public ResponseEntity handleNoSuchSchemaException(final NoSuchSchemaException exception, final NativeWebRequest request) { - LOG.debug(exception.getMessage(), exception); + LOG.debug(exception.getMessage()); return Responses.create(NOT_FOUND, exception.getMessage(), request); } @ExceptionHandler(NoSuchSubscriptionException.class) public ResponseEntity handleNoSuchSubscriptionException(final NoSuchSubscriptionException exception, final NativeWebRequest request) { - LOG.debug(exception.getMessage(), exception); + LOG.debug(exception.getMessage()); return Responses.create(NOT_FOUND, exception.getMessage(), request); } @ExceptionHandler(NoStreamingSlotsAvailable.class) public ResponseEntity handleNoStreamingSlotsAvailable(final NoStreamingSlotsAvailable exception, final NativeWebRequest request) { - LOG.debug(exception.getMessage(), exception); + LOG.debug(exception.getMessage()); return Responses.create(CONFLICT, exception.getMessage(), request); } + + @ExceptionHandler(UnprocessableSubscriptionException.class) + public ResponseEntity handleUnprocessableSubscriptionException( + final UnprocessableSubscriptionException exception, + final NativeWebRequest request) { + LOG.debug(exception.getMessage()); + return Responses.create(UNPROCESSABLE_ENTITY, exception.getMessage(), request); + } } diff --git a/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java b/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java index 885262a9bc..0c844ce23c 100644 --- a/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java +++ b/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java @@ -16,14 +16,14 @@ import org.springframework.web.util.UriComponents; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.SubscriptionBase; -import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.DuplicatedSubscriptionException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; -import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; -import org.zalando.nakadi.exceptions.runtime.NoSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.SubscriptionUpdateConflictException; import org.zalando.nakadi.exceptions.runtime.TooManyPartitionsException; +import org.zalando.nakadi.exceptions.runtime.UnprocessableSubscriptionException; import org.zalando.nakadi.exceptions.runtime.WrongInitialCursorsException; import org.zalando.nakadi.plugin.api.ApplicationService; import org.zalando.nakadi.problem.ValidationProblem; @@ -70,7 +70,7 @@ public ResponseEntity createOrGetSubscription(@Valid @RequestBody final Subsc try { return ok(subscriptionService.getExistingSubscription(subscriptionBase)); - } catch (final NoSubscriptionException e) { + } catch (final NoSuchSubscriptionException e) { if (featureToggleService.isFeatureEnabled(DISABLE_SUBSCRIPTION_CREATION)) { return Responses.create(Response.Status.SERVICE_UNAVAILABLE, "Subscription creation is temporarily unavailable", request); @@ -80,6 +80,8 @@ public ResponseEntity createOrGetSubscription(@Valid @RequestBody final Subsc return prepareLocationResponse(subscription); } catch (final DuplicatedSubscriptionException ex) { throw new InconsistentStateException("Unexpected problem occurred when creating subscription", ex); + } catch (final NoSuchEventTypeException ex) { + throw new UnprocessableSubscriptionException(ex.getMessage()); } } } @@ -117,7 +119,6 @@ private ResponseEntity prepareLocationResponse(final Subscription subscriptio } @ExceptionHandler({ - NoEventTypeException.class, WrongInitialCursorsException.class, TooManyPartitionsException.class}) public ResponseEntity handleUnprocessableSubscription(final NakadiRuntimeBaseException exception, diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoEventTypeException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoEventTypeException.java deleted file mode 100644 index c7542644ae..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoEventTypeException.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.zalando.nakadi.exceptions.runtime; - -public class NoEventTypeException extends NakadiRuntimeBaseException { - - public NoEventTypeException(final String msg) { - super(msg); - } - - public NoEventTypeException(final String message, final NoSuchEventTypeException e) { - super(message, e); - } -} diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStorageException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStorageException.java deleted file mode 100644 index 87ea1dd21a..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStorageException.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.zalando.nakadi.exceptions.runtime; - -public class NoStorageException extends NakadiRuntimeBaseException { - - public NoStorageException(final String msg) { - super(msg); - } - -} diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSubscriptionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSubscriptionException.java deleted file mode 100644 index 664b8b65ee..0000000000 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSubscriptionException.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.zalando.nakadi.exceptions.runtime; - -public class NoSubscriptionException extends NakadiRuntimeBaseException { - - public NoSubscriptionException(final String message, final Throwable cause) { - super(message, cause); - } -} diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchStorageException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchStorageException.java new file mode 100644 index 0000000000..0cf65f11c9 --- /dev/null +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchStorageException.java @@ -0,0 +1,9 @@ +package org.zalando.nakadi.exceptions.runtime; + +public class NoSuchStorageException extends NakadiRuntimeBaseException { + + public NoSuchStorageException(final String msg) { + super(msg); + } + +} diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnprocessableSubscriptionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnprocessableSubscriptionException.java new file mode 100644 index 0000000000..8218cacdf6 --- /dev/null +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnprocessableSubscriptionException.java @@ -0,0 +1,7 @@ +package org.zalando.nakadi.exceptions.runtime; + +public class UnprocessableSubscriptionException extends NakadiRuntimeBaseException { + public UnprocessableSubscriptionException(String message) { + super(message); + } +} diff --git a/src/main/java/org/zalando/nakadi/repository/db/StorageDbRepository.java b/src/main/java/org/zalando/nakadi/repository/db/StorageDbRepository.java index e79e6343ff..9611453cf5 100644 --- a/src/main/java/org/zalando/nakadi/repository/db/StorageDbRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/db/StorageDbRepository.java @@ -12,7 +12,7 @@ import org.zalando.nakadi.annotations.DB; import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.exceptions.runtime.DuplicatedStorageException; -import org.zalando.nakadi.exceptions.runtime.NoStorageException; +import org.zalando.nakadi.exceptions.runtime.NoSuchStorageException; import org.zalando.nakadi.exceptions.runtime.RepositoryProblemException; import org.zalando.nakadi.exceptions.runtime.StorageIsUsedException; @@ -73,11 +73,11 @@ public Storage createStorage(final Storage storage) throws DuplicatedStorageExce } public void deleteStorage(final String id) - throws NoStorageException, StorageIsUsedException, RepositoryProblemException { + throws NoSuchStorageException, StorageIsUsedException, RepositoryProblemException { try { final int rowDeleted = jdbcTemplate.update("DELETE FROM zn_data.storage WHERE st_id=?", id); if (rowDeleted == 0) { - throw new NoStorageException("Tried to remove storage that doesn't exist, id: " + id); + throw new NoSuchStorageException("Tried to remove storage that doesn't exist, id: " + id); } } catch (final DataIntegrityViolationException e) { throw new StorageIsUsedException("Can't delete storage as it is still used, id: " + id, e); diff --git a/src/main/java/org/zalando/nakadi/repository/db/SubscriptionDbRepository.java b/src/main/java/org/zalando/nakadi/repository/db/SubscriptionDbRepository.java index 66e8c8010b..ec8e7d5fdc 100644 --- a/src/main/java/org/zalando/nakadi/repository/db/SubscriptionDbRepository.java +++ b/src/main/java/org/zalando/nakadi/repository/db/SubscriptionDbRepository.java @@ -18,10 +18,9 @@ import org.springframework.stereotype.Component; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.SubscriptionBase; -import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.DuplicatedSubscriptionException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; -import org.zalando.nakadi.exceptions.runtime.NoSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.RepositoryProblemException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.util.HashGenerator; @@ -161,7 +160,7 @@ public List listSubscriptions(final Set eventTypes, final public Subscription getSubscription(final String owningApplication, final Set eventTypes, final String consumerGroup) - throws InconsistentStateException, NoSubscriptionException, RepositoryProblemException { + throws InconsistentStateException, NoSuchSubscriptionException, RepositoryProblemException { final String sql = "SELECT s_subscription_object FROM zn_data.subscription " + "WHERE s_subscription_object->>'owning_application' = ? " + @@ -174,7 +173,7 @@ public Subscription getSubscription(final String owningApplication, final Set eventTypeOpt = eventTypeRepository.findByNameO(eventTypeName); if (!eventTypeOpt.isPresent()) { - throw new NoEventTypeException("EventType \"" + eventTypeName + "\" does not exist."); + throw new NoSuchEventTypeException("EventType \"" + eventTypeName + "\" does not exist."); } eventType = eventTypeOpt.get(); diff --git a/src/main/java/org/zalando/nakadi/service/StorageService.java b/src/main/java/org/zalando/nakadi/service/StorageService.java index fd1c7eedfb..df3dd48cc7 100644 --- a/src/main/java/org/zalando/nakadi/service/StorageService.java +++ b/src/main/java/org/zalando/nakadi/service/StorageService.java @@ -16,7 +16,7 @@ import org.zalando.nakadi.domain.Storage; import org.zalando.nakadi.exceptions.runtime.DbWriteOperationsBlockedException; import org.zalando.nakadi.exceptions.runtime.DuplicatedStorageException; -import org.zalando.nakadi.exceptions.runtime.NoStorageException; +import org.zalando.nakadi.exceptions.runtime.NoSuchStorageException; import org.zalando.nakadi.exceptions.runtime.RepositoryProblemException; import org.zalando.nakadi.exceptions.runtime.StorageIsUsedException; import org.zalando.nakadi.repository.db.StorageDbRepository; @@ -152,7 +152,7 @@ public Result deleteStorage(final String id) throws DbWriteOperationsBlock } try { storageDbRepository.deleteStorage(id); - } catch (final NoStorageException e) { + } catch (final NoSuchStorageException e) { return Result.notFound("No storage with ID " + id); } catch (final StorageIsUsedException e) { return Result.forbidden("Storage " + id + " is in use"); diff --git a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java index 55d82eb0df..dcae6188d8 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionService.java @@ -22,17 +22,15 @@ import org.zalando.nakadi.domain.SubscriptionBase; import org.zalando.nakadi.domain.SubscriptionEventTypeStats; import org.zalando.nakadi.domain.Timeline; -import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; -import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; -import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.Try; import org.zalando.nakadi.exceptions.runtime.DbWriteOperationsBlockedException; import org.zalando.nakadi.exceptions.runtime.DuplicatedSubscriptionException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; +import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; +import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorOperation; -import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; -import org.zalando.nakadi.exceptions.runtime.NoSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.RepositoryProblemException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.SubscriptionUpdateConflictException; @@ -125,7 +123,7 @@ public SubscriptionService(final SubscriptionDbRepository subscriptionRepository public Subscription createSubscription(final SubscriptionBase subscriptionBase) throws TooManyPartitionsException, RepositoryProblemException, DuplicatedSubscriptionException, - NoEventTypeException, InconsistentStateException, WrongInitialCursorsException, + NoSuchEventTypeException, InconsistentStateException, WrongInitialCursorsException, DbWriteOperationsBlockedException { if (featureToggleService.isFeatureEnabled(FeatureToggleService.Feature.DISABLE_DB_WRITE_OPERATIONS)) { throw new DbWriteOperationsBlockedException("Cannot create subscription: write operations on DB " + @@ -160,7 +158,7 @@ public Subscription updateSubscription(final String subscriptionId, final Subscr } public Subscription getExistingSubscription(final SubscriptionBase subscriptionBase) - throws InconsistentStateException, NoSubscriptionException, RepositoryProblemException { + throws InconsistentStateException, NoSuchSubscriptionException, RepositoryProblemException { return subscriptionRepository.getSubscription( subscriptionBase.getOwningApplication(), subscriptionBase.getEventTypes(), diff --git a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionValidationService.java b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionValidationService.java index aeb757e484..8adb08444d 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionValidationService.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/SubscriptionValidationService.java @@ -12,7 +12,7 @@ import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.RepositoryProblemException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.SubscriptionUpdateConflictException; @@ -59,7 +59,7 @@ public SubscriptionValidationService(final TimelineService timelineService, } public void validateSubscription(final SubscriptionBase subscription) - throws TooManyPartitionsException, RepositoryProblemException, NoEventTypeException, + throws TooManyPartitionsException, RepositoryProblemException, NoSuchEventTypeException, InconsistentStateException, WrongInitialCursorsException { // check that all event-types exist @@ -186,14 +186,14 @@ private Map> getSubscriptionEventTypesOrNone(final S } private void checkEventTypesExist(final Map> eventTypesOrNone) - throws NoEventTypeException { + throws NoSuchEventTypeException { final List missingEventTypes = eventTypesOrNone.entrySet().stream() .filter(entry -> !entry.getValue().isPresent()) .map(Map.Entry::getKey) .collect(Collectors.toList()); if (!missingEventTypes.isEmpty()) { - throw new NoEventTypeException(String.format("Failed to create subscription, event type(s) not found: '%s'", - StringUtils.join(missingEventTypes, "', '"))); + throw new NoSuchEventTypeException(String.format("Failed to create subscription, event type(s) not " + + "found: '%s'", StringUtils.join(missingEventTypes, "', '"))); } } } diff --git a/src/test/java/org/zalando/nakadi/controller/PostSubscriptionControllerTest.java b/src/test/java/org/zalando/nakadi/controller/PostSubscriptionControllerTest.java index 14a6ee80a9..2e94ce20f5 100644 --- a/src/test/java/org/zalando/nakadi/controller/PostSubscriptionControllerTest.java +++ b/src/test/java/org/zalando/nakadi/controller/PostSubscriptionControllerTest.java @@ -16,13 +16,13 @@ import org.springframework.web.method.support.ModelAndViewContainer; import org.zalando.nakadi.domain.Subscription; import org.zalando.nakadi.domain.SubscriptionBase; -import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; -import org.zalando.nakadi.exceptions.runtime.NoSubscriptionException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.TooManyPartitionsException; import org.zalando.nakadi.plugin.api.ApplicationService; import org.zalando.nakadi.security.NakadiClient; -import org.zalando.nakadi.service.subscription.SubscriptionService; import org.zalando.nakadi.service.FeatureToggleService; +import org.zalando.nakadi.service.subscription.SubscriptionService; import org.zalando.nakadi.utils.TestUtils; import org.zalando.problem.Problem; @@ -74,7 +74,7 @@ public PostSubscriptionControllerTest() throws Exception { @Test public void whenSubscriptionCreationIsDisabledThenCreationFails() throws Exception { final SubscriptionBase subscriptionBase = builder().buildSubscriptionBase(); - when(subscriptionService.getExistingSubscription(any())).thenThrow(new NoSubscriptionException("", null)); + when(subscriptionService.getExistingSubscription(any())).thenThrow(new NoSuchSubscriptionException("", null)); when(featureToggleService.isFeatureEnabled(DISABLE_SUBSCRIPTION_CREATION)).thenReturn(true); postSubscription(subscriptionBase).andExpect(status().isServiceUnavailable()); @@ -103,7 +103,7 @@ public void whenPostValidSubscriptionThenOk() throws Exception { final SubscriptionBase subscriptionBase = builder().buildSubscriptionBase(); final Subscription subscription = new Subscription("123", new DateTime(DateTimeZone.UTC), subscriptionBase); - when(subscriptionService.getExistingSubscription(any())).thenThrow(new NoSubscriptionException("", null)); + when(subscriptionService.getExistingSubscription(any())).thenThrow(new NoSuchSubscriptionException("", null)); when(subscriptionService.createSubscription(any())).thenReturn(subscription); postSubscription(subscriptionBase) @@ -152,7 +152,7 @@ public void whenEventTypesIsEmptyThenUnprocessableEntity() throws Exception { @Test public void whenMoreThanAllowedEventTypeThenUnprocessableEntity() throws Exception { - when(subscriptionService.getExistingSubscription(any())).thenThrow(new NoSubscriptionException("", null)); + when(subscriptionService.getExistingSubscription(any())).thenThrow(new NoSuchSubscriptionException("", null)); when(subscriptionService.createSubscription(any())).thenThrow(new TooManyPartitionsException("msg")); final SubscriptionBase subscriptionBase = builder().buildSubscriptionBase(); @@ -178,8 +178,8 @@ public void whenWrongStartFromThenBadRequest() throws Exception { @Test public void whenEventTypeDoesNotExistThenUnprocessableEntity() throws Exception { final SubscriptionBase subscriptionBase = builder().buildSubscriptionBase(); - when(subscriptionService.getExistingSubscription(any())).thenThrow(new NoSubscriptionException("", null)); - when(subscriptionService.createSubscription(any())).thenThrow(new NoEventTypeException("msg")); + when(subscriptionService.getExistingSubscription(any())).thenThrow(new NoSuchSubscriptionException("", null)); + when(subscriptionService.createSubscription(any())).thenThrow(new NoSuchEventTypeException("msg")); final Problem expectedProblem = Problem.valueOf(UNPROCESSABLE_ENTITY, "msg"); checkForProblem(postSubscription(subscriptionBase), expectedProblem); @@ -192,7 +192,7 @@ public void whenSubscriptionExistsThenReturnIt() throws Exception { subscriptionBase); when(subscriptionService.getExistingSubscription(any())).thenReturn(existingSubscription); - when(subscriptionService.createSubscription(any())).thenThrow(new NoEventTypeException("msg")); + when(subscriptionService.createSubscription(any())).thenThrow(new NoSuchEventTypeException("msg")); postSubscription(subscriptionBase) .andExpect(status().isOk()) diff --git a/src/test/java/org/zalando/nakadi/service/StorageServiceTest.java b/src/test/java/org/zalando/nakadi/service/StorageServiceTest.java index 8351ca69e0..0e10138dfc 100644 --- a/src/test/java/org/zalando/nakadi/service/StorageServiceTest.java +++ b/src/test/java/org/zalando/nakadi/service/StorageServiceTest.java @@ -5,7 +5,7 @@ import org.junit.Test; import org.zalando.nakadi.domain.DefaultStorage; import org.zalando.nakadi.domain.Storage; -import org.zalando.nakadi.exceptions.runtime.NoStorageException; +import org.zalando.nakadi.exceptions.runtime.NoSuchStorageException; import org.zalando.nakadi.exceptions.runtime.StorageIsUsedException; import org.zalando.nakadi.repository.db.StorageDbRepository; import org.zalando.nakadi.repository.zookeeper.ZooKeeperHolder; @@ -64,7 +64,7 @@ public void testDeleteStorageInUse() throws Exception { @Test public void testDeleteNonExistingStorage() throws Exception { - doThrow(new NoStorageException("")).when(storageDbRepository).deleteStorage("s"); + doThrow(new NoSuchStorageException("")).when(storageDbRepository).deleteStorage("s"); final Result result = storageService.deleteStorage("s"); diff --git a/src/test/java/org/zalando/nakadi/service/SubscriptionValidationServiceTest.java b/src/test/java/org/zalando/nakadi/service/SubscriptionValidationServiceTest.java index d8d3a9c010..b02b376fe4 100644 --- a/src/test/java/org/zalando/nakadi/service/SubscriptionValidationServiceTest.java +++ b/src/test/java/org/zalando/nakadi/service/SubscriptionValidationServiceTest.java @@ -10,10 +10,10 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.domain.SubscriptionBase; import org.zalando.nakadi.domain.Timeline; +import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; -import org.zalando.nakadi.exceptions.runtime.NoEventTypeException; +import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.RepositoryProblemException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.TooManyPartitionsException; @@ -104,8 +104,8 @@ public void whenNoEventTypeThenException() throws Exception { try { subscriptionValidationService.validateSubscription(subscriptionBase); - fail("NoEventTypeException expected"); - } catch (final NoEventTypeException e) { + fail("NoSuchEventTypeException expected"); + } catch (final NoSuchEventTypeException e) { final String expectedMessage = String.format("Failed to create subscription, event type(s) not found: '%s', '%s'", ET1, ET3); assertThat(e.getMessage(), equalTo(expectedMessage)); From 3b56bc7901aab414c88cc2f7d3d38e63ae423b67 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 16:59:17 +0200 Subject: [PATCH 16/20] Rename NakadiRuntimeBaseException to NakadiBaseException --- .../nakadi/controller/CursorOperationsController.java | 6 +++--- .../org/zalando/nakadi/controller/ExceptionHandling.java | 6 +++--- .../zalando/nakadi/controller/PartitionsController.java | 4 ++-- .../nakadi/controller/PostSubscriptionController.java | 4 ++-- src/main/java/org/zalando/nakadi/domain/NakadiCursor.java | 4 ++-- src/main/java/org/zalando/nakadi/exceptions/Try.java | 6 +++--- .../nakadi/exceptions/runtime/AccessDeniedException.java | 2 +- .../nakadi/exceptions/runtime/CompactionException.java | 2 +- .../nakadi/exceptions/runtime/ConflictException.java | 2 +- .../runtime/ConnectionSlotOccupiedException.java | 2 +- .../exceptions/runtime/CursorConversionException.java | 2 +- .../exceptions/runtime/CursorsAreEmptyException.java | 2 +- .../runtime/DbWriteOperationsBlockedException.java | 2 +- .../runtime/DuplicatedEventTypeNameException.java | 2 +- .../exceptions/runtime/DuplicatedStorageException.java | 2 +- .../runtime/DuplicatedSubscriptionException.java | 2 +- .../exceptions/runtime/DuplicatedTimelineException.java | 2 +- .../nakadi/exceptions/runtime/EnrichmentException.java | 2 +- .../runtime/ErrorGettingCursorTimeLagException.java | 2 +- .../exceptions/runtime/EventPublishingException.java | 2 +- .../exceptions/runtime/EventTypeDeletionException.java | 2 +- .../runtime/EventTypeOptionsValidationException.java | 2 +- .../exceptions/runtime/EventTypeTimeoutException.java | 2 +- .../exceptions/runtime/EventTypeUnavailableException.java | 2 +- .../exceptions/runtime/EventValidationException.java | 2 +- .../exceptions/runtime/FeatureNotAvailableException.java | 2 +- .../exceptions/runtime/IllegalClientIdException.java | 2 +- .../exceptions/runtime/InconsistentStateException.java | 2 +- .../exceptions/runtime/InternalNakadiException.java | 2 +- .../nakadi/exceptions/runtime/InvalidCursorException.java | 2 +- .../nakadi/exceptions/runtime/InvalidCursorOperation.java | 2 +- .../exceptions/runtime/InvalidEventTypeException.java | 2 +- .../nakadi/exceptions/runtime/InvalidLimitException.java | 2 +- .../exceptions/runtime/InvalidStreamIdException.java | 2 +- .../nakadi/exceptions/runtime/LimitReachedException.java | 2 +- ...RuntimeBaseException.java => NakadiBaseException.java} | 8 ++++---- .../exceptions/runtime/NoConnectionSlotsException.java | 2 +- .../exceptions/runtime/NoStreamingSlotsAvailable.java | 2 +- .../exceptions/runtime/NoSuchEventTypeException.java | 2 +- .../runtime/NoSuchPartitionStrategyException.java | 2 +- .../nakadi/exceptions/runtime/NoSuchSchemaException.java | 2 +- .../nakadi/exceptions/runtime/NoSuchStorageException.java | 2 +- .../exceptions/runtime/NoSuchSubscriptionException.java | 2 +- .../nakadi/exceptions/runtime/NotFoundException.java | 2 +- .../exceptions/runtime/OperationInterruptedException.java | 2 +- .../exceptions/runtime/OperationTimeoutException.java | 2 +- .../nakadi/exceptions/runtime/PartitioningException.java | 2 +- .../exceptions/runtime/RebalanceConflictException.java | 2 +- .../exceptions/runtime/RepositoryProblemException.java | 2 +- .../exceptions/runtime/RequestInProgressException.java | 2 +- .../runtime/ServiceTemporarilyUnavailableException.java | 2 +- .../nakadi/exceptions/runtime/StorageIsUsedException.java | 2 +- .../runtime/SubscriptionPartitionConflictException.java | 2 +- .../runtime/SubscriptionUpdateConflictException.java | 2 +- .../exceptions/runtime/TimeLagStatsTimeoutException.java | 2 +- .../nakadi/exceptions/runtime/TimelineException.java | 2 +- .../runtime/TimelinesNotSupportedException.java | 2 +- .../exceptions/runtime/TooManyPartitionsException.java | 2 +- .../nakadi/exceptions/runtime/TopicConfigException.java | 2 +- .../nakadi/exceptions/runtime/TopicCreationException.java | 2 +- .../nakadi/exceptions/runtime/TopicDeletionException.java | 2 +- .../exceptions/runtime/TopicRepositoryException.java | 2 +- .../nakadi/exceptions/runtime/UnableProcessException.java | 2 +- .../exceptions/runtime/UnknownOperationException.java | 2 +- .../exceptions/runtime/UnknownStorageTypeException.java | 2 +- .../exceptions/runtime/UnparseableCursorException.java | 2 +- .../runtime/UnprocessableSubscriptionException.java | 2 +- .../exceptions/runtime/WrongInitialCursorsException.java | 2 +- .../runtime/WrongStreamParametersException.java | 2 +- .../nakadi/exceptions/runtime/ZookeeperException.java | 2 +- .../zalando/nakadi/service/CursorOperationsService.java | 4 ++-- .../service/subscription/SubscriptionTimeLagService.java | 6 +++--- .../nakadi/service/subscription/state/ClosingState.java | 4 ++-- .../subscription/zk/AbstractZkSubscriptionClient.java | 4 ++-- .../zk/SubscriptionNotInitializedException.java | 4 ++-- .../service/subscription/zk/ZkSubscriptionClient.java | 4 ++-- .../nakadi/repository/kafka/NakadiKafkaConsumerTest.java | 2 +- 77 files changed, 96 insertions(+), 96 deletions(-) rename src/main/java/org/zalando/nakadi/exceptions/runtime/{NakadiRuntimeBaseException.java => NakadiBaseException.java} (53%) diff --git a/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java b/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java index 1ae88ace5e..ab640408df 100644 --- a/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java +++ b/src/main/java/org/zalando/nakadi/controller/CursorOperationsController.java @@ -19,7 +19,7 @@ import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorOperation; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; +import org.zalando.nakadi.exceptions.runtime.NakadiBaseException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NotFoundException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; @@ -82,7 +82,7 @@ public ResponseEntity getDistance(@PathVariable("eventTypeName") final String final Long distance = cursorOperationsService.calculateDistance(initialCursor, finalCursor); query.setDistance(distance); } catch (InternalNakadiException | ServiceTemporarilyUnavailableException e) { - throw new NakadiRuntimeBaseException("problem calculating cursors distance", e); + throw new NakadiBaseException("problem calculating cursors distance", e); } catch (final NoSuchEventTypeException e) { throw new NotFoundException("event type not found", e); } catch (final InvalidCursorException e) { @@ -150,7 +150,7 @@ private String clientErrorMessage(final InvalidCursorOperation.Reason reason) { "have matching partitions."; default: LOG.error("Unexpected invalid cursor operation reason " + reason); - throw new NakadiRuntimeBaseException(); + throw new NakadiBaseException(); } } diff --git a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java index 7632cafcb6..604042b162 100644 --- a/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java +++ b/src/main/java/org/zalando/nakadi/controller/ExceptionHandling.java @@ -21,7 +21,7 @@ import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidPartitionKeyFieldsException; import org.zalando.nakadi.exceptions.runtime.LimitReachedException; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; +import org.zalando.nakadi.exceptions.runtime.NakadiBaseException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.NoStreamingSlotsAvailable; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; @@ -125,8 +125,8 @@ public ResponseEntity handleRepositoryProblem(final RepositoryProblemEx return Responses.create(Response.Status.SERVICE_UNAVAILABLE, exception.getMessage(), request); } - @ExceptionHandler(NakadiRuntimeBaseException.class) - public ResponseEntity handleInternalError(final NakadiRuntimeBaseException exception, + @ExceptionHandler(NakadiBaseException.class) + public ResponseEntity handleInternalError(final NakadiBaseException exception, final NativeWebRequest request) { LOG.error("Unexpected problem occurred", exception); return Responses.create(Response.Status.INTERNAL_SERVER_ERROR, exception.getMessage(), request); diff --git a/src/main/java/org/zalando/nakadi/controller/PartitionsController.java b/src/main/java/org/zalando/nakadi/controller/PartitionsController.java index 0ad3c3c899..19e37ac713 100644 --- a/src/main/java/org/zalando/nakadi/controller/PartitionsController.java +++ b/src/main/java/org/zalando/nakadi/controller/PartitionsController.java @@ -21,7 +21,7 @@ import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorOperation; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; +import org.zalando.nakadi.exceptions.runtime.NakadiBaseException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NotFoundException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; @@ -163,7 +163,7 @@ private CursorLag getCursorLag(final String eventTypeName, final String partitio .stream() .findFirst() .map(this::toCursorLag) - .orElseThrow(NakadiRuntimeBaseException::new); + .orElseThrow(NakadiBaseException::new); } private EventTypePartitionView getTopicPartition(final String eventTypeName, final String partition) diff --git a/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java b/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java index 0c844ce23c..b8d0faa9b8 100644 --- a/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java +++ b/src/main/java/org/zalando/nakadi/controller/PostSubscriptionController.java @@ -18,7 +18,7 @@ import org.zalando.nakadi.domain.SubscriptionBase; import org.zalando.nakadi.exceptions.runtime.DuplicatedSubscriptionException; import org.zalando.nakadi.exceptions.runtime.InconsistentStateException; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; +import org.zalando.nakadi.exceptions.runtime.NakadiBaseException; import org.zalando.nakadi.exceptions.runtime.NoSuchEventTypeException; import org.zalando.nakadi.exceptions.runtime.NoSuchSubscriptionException; import org.zalando.nakadi.exceptions.runtime.SubscriptionUpdateConflictException; @@ -121,7 +121,7 @@ private ResponseEntity prepareLocationResponse(final Subscription subscriptio @ExceptionHandler({ WrongInitialCursorsException.class, TooManyPartitionsException.class}) - public ResponseEntity handleUnprocessableSubscription(final NakadiRuntimeBaseException exception, + public ResponseEntity handleUnprocessableSubscription(final NakadiBaseException exception, final NativeWebRequest request) { LOG.debug("Error occurred when working with subscriptions", exception); return Responses.create(MoreStatus.UNPROCESSABLE_ENTITY, exception.getMessage(), request); diff --git a/src/main/java/org/zalando/nakadi/domain/NakadiCursor.java b/src/main/java/org/zalando/nakadi/domain/NakadiCursor.java index a216f31243..a3881b87f9 100644 --- a/src/main/java/org/zalando/nakadi/domain/NakadiCursor.java +++ b/src/main/java/org/zalando/nakadi/domain/NakadiCursor.java @@ -2,7 +2,7 @@ import com.google.common.base.Preconditions; import org.zalando.nakadi.exceptions.runtime.InvalidCursorException; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; +import org.zalando.nakadi.exceptions.runtime.NakadiBaseException; import org.zalando.nakadi.repository.kafka.KafkaCursor; import java.util.Objects; @@ -118,7 +118,7 @@ public static NakadiCursor of(final Timeline timeline, final String partition, f case KAFKA: return new NakadiKafkaCursor(timeline, partition, offset); default: - throw new NakadiRuntimeBaseException( + throw new NakadiBaseException( "Cursor storage type " + timeline.getStorage().getType() + " not supported"); } } diff --git a/src/main/java/org/zalando/nakadi/exceptions/Try.java b/src/main/java/org/zalando/nakadi/exceptions/Try.java index 0a4865e580..9b0cac27c4 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/Try.java +++ b/src/main/java/org/zalando/nakadi/exceptions/Try.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; +import org.zalando.nakadi.exceptions.runtime.NakadiBaseException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import java.util.Optional; @@ -98,8 +98,8 @@ public boolean isSuccess() { public T getOrThrow() { if (exception instanceof NakadiRuntimeException) { throw (NakadiRuntimeException) exception; - } else if (exception instanceof NakadiRuntimeBaseException) { - throw (NakadiRuntimeBaseException) exception; + } else if (exception instanceof NakadiBaseException) { + throw (NakadiBaseException) exception; } throw new NakadiRuntimeException(exception); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/AccessDeniedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/AccessDeniedException.java index ce1c6211fe..c494b381f0 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/AccessDeniedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/AccessDeniedException.java @@ -3,7 +3,7 @@ import org.zalando.nakadi.plugin.api.authz.AuthorizationService; import org.zalando.nakadi.plugin.api.authz.Resource; -public class AccessDeniedException extends NakadiRuntimeBaseException { +public class AccessDeniedException extends NakadiBaseException { private final Resource resource; private final AuthorizationService.Operation operation; diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/CompactionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/CompactionException.java index e8bc1c0191..0555c78036 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/CompactionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/CompactionException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class CompactionException extends NakadiRuntimeBaseException { +public class CompactionException extends NakadiBaseException { public CompactionException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/ConflictException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/ConflictException.java index 00ef12008e..97f12b1928 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/ConflictException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/ConflictException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class ConflictException extends NakadiRuntimeBaseException { +public class ConflictException extends NakadiBaseException { public ConflictException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/ConnectionSlotOccupiedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/ConnectionSlotOccupiedException.java index 3b92672363..fbbc93c47e 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/ConnectionSlotOccupiedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/ConnectionSlotOccupiedException.java @@ -1,4 +1,4 @@ package org.zalando.nakadi.exceptions.runtime; -public class ConnectionSlotOccupiedException extends NakadiRuntimeBaseException { +public class ConnectionSlotOccupiedException extends NakadiBaseException { } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorConversionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorConversionException.java index 430893252c..cf9bf7ed0b 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorConversionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorConversionException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class CursorConversionException extends NakadiRuntimeBaseException { +public class CursorConversionException extends NakadiBaseException { public CursorConversionException(final String message, final Exception e) { super(message, e); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorsAreEmptyException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorsAreEmptyException.java index a47d48deb4..58dd633a7a 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorsAreEmptyException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/CursorsAreEmptyException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class CursorsAreEmptyException extends NakadiRuntimeBaseException { +public class CursorsAreEmptyException extends NakadiBaseException { public CursorsAreEmptyException() { super("Cursors are empty"); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/DbWriteOperationsBlockedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/DbWriteOperationsBlockedException.java index 470810556f..9352601c13 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/DbWriteOperationsBlockedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/DbWriteOperationsBlockedException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class DbWriteOperationsBlockedException extends NakadiRuntimeBaseException { +public class DbWriteOperationsBlockedException extends NakadiBaseException { public DbWriteOperationsBlockedException(final String message) { super(message); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedEventTypeNameException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedEventTypeNameException.java index 77d25022e6..10be80f2aa 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedEventTypeNameException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedEventTypeNameException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class DuplicatedEventTypeNameException extends NakadiRuntimeBaseException { +public class DuplicatedEventTypeNameException extends NakadiBaseException { public DuplicatedEventTypeNameException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedStorageException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedStorageException.java index 3523046baf..ca2464b93e 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedStorageException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedStorageException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class DuplicatedStorageException extends NakadiRuntimeBaseException { +public class DuplicatedStorageException extends NakadiBaseException { public DuplicatedStorageException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedSubscriptionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedSubscriptionException.java index 2851397946..4f1e7b03dc 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedSubscriptionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedSubscriptionException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class DuplicatedSubscriptionException extends NakadiRuntimeBaseException { +public class DuplicatedSubscriptionException extends NakadiBaseException { public DuplicatedSubscriptionException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedTimelineException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedTimelineException.java index 06613132a0..848ce0641a 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedTimelineException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/DuplicatedTimelineException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class DuplicatedTimelineException extends NakadiRuntimeBaseException { +public class DuplicatedTimelineException extends NakadiBaseException { public DuplicatedTimelineException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EnrichmentException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EnrichmentException.java index efeaba01fa..990902975f 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EnrichmentException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EnrichmentException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EnrichmentException extends NakadiRuntimeBaseException { +public class EnrichmentException extends NakadiBaseException { public EnrichmentException(final String msg, final Exception cause) { super(msg, cause); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/ErrorGettingCursorTimeLagException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/ErrorGettingCursorTimeLagException.java index 36b8ffc3c9..0af37e820c 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/ErrorGettingCursorTimeLagException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/ErrorGettingCursorTimeLagException.java @@ -2,7 +2,7 @@ import org.zalando.nakadi.domain.NakadiCursor; -public class ErrorGettingCursorTimeLagException extends NakadiRuntimeBaseException { +public class ErrorGettingCursorTimeLagException extends NakadiBaseException { private final NakadiCursor failedCursor; diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventPublishingException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventPublishingException.java index a079a8b6a4..e0bc7d82b0 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventPublishingException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventPublishingException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EventPublishingException extends NakadiRuntimeBaseException { +public class EventPublishingException extends NakadiBaseException { public EventPublishingException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeDeletionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeDeletionException.java index 040b72e1df..a9ff52d056 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeDeletionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeDeletionException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EventTypeDeletionException extends NakadiRuntimeBaseException { +public class EventTypeDeletionException extends NakadiBaseException { public EventTypeDeletionException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeOptionsValidationException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeOptionsValidationException.java index c58f7fab04..c26a5a92ce 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeOptionsValidationException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeOptionsValidationException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EventTypeOptionsValidationException extends NakadiRuntimeBaseException { +public class EventTypeOptionsValidationException extends NakadiBaseException { public EventTypeOptionsValidationException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeTimeoutException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeTimeoutException.java index 4e5a24bfa3..3cabc9d821 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeTimeoutException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeTimeoutException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EventTypeTimeoutException extends NakadiRuntimeBaseException { +public class EventTypeTimeoutException extends NakadiBaseException { public EventTypeTimeoutException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeUnavailableException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeUnavailableException.java index 263d3c8c04..f6e06c4699 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeUnavailableException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventTypeUnavailableException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EventTypeUnavailableException extends NakadiRuntimeBaseException { +public class EventTypeUnavailableException extends NakadiBaseException { public EventTypeUnavailableException(final String message) { diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventValidationException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventValidationException.java index a67a4b79e5..4ff1ad7093 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/EventValidationException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/EventValidationException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class EventValidationException extends NakadiRuntimeBaseException { +public class EventValidationException extends NakadiBaseException { public EventValidationException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/FeatureNotAvailableException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/FeatureNotAvailableException.java index 0d50d39bc6..fa968c1c73 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/FeatureNotAvailableException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/FeatureNotAvailableException.java @@ -2,7 +2,7 @@ import org.zalando.nakadi.service.FeatureToggleService; -public class FeatureNotAvailableException extends NakadiRuntimeBaseException { +public class FeatureNotAvailableException extends NakadiBaseException { private final FeatureToggleService.Feature feature; public FeatureNotAvailableException(final String message, final FeatureToggleService.Feature feature) { diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/IllegalClientIdException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/IllegalClientIdException.java index 9ddd952efd..8c3c0bc518 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/IllegalClientIdException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/IllegalClientIdException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class IllegalClientIdException extends NakadiRuntimeBaseException { +public class IllegalClientIdException extends NakadiBaseException { public IllegalClientIdException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InconsistentStateException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InconsistentStateException.java index 138b1c3e74..98b4b62edc 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/InconsistentStateException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InconsistentStateException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class InconsistentStateException extends NakadiRuntimeBaseException { +public class InconsistentStateException extends NakadiBaseException { public InconsistentStateException(final String msg, final Throwable cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InternalNakadiException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InternalNakadiException.java index ccc73816a7..66c5ae64f5 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/InternalNakadiException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InternalNakadiException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class InternalNakadiException extends NakadiRuntimeBaseException { +public class InternalNakadiException extends NakadiBaseException { public InternalNakadiException(final String message) { super(message); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorException.java index 1e53656644..19db439a9e 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorException.java @@ -4,7 +4,7 @@ import org.zalando.nakadi.domain.NakadiCursor; import org.zalando.nakadi.view.Cursor; -public class InvalidCursorException extends NakadiRuntimeBaseException { +public class InvalidCursorException extends NakadiBaseException { private final CursorError error; private final Cursor cursor; diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorOperation.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorOperation.java index c7b653891c..e997909a16 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorOperation.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidCursorOperation.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class InvalidCursorOperation extends NakadiRuntimeBaseException { +public class InvalidCursorOperation extends NakadiBaseException { private final Reason reason; public enum Reason { diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidEventTypeException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidEventTypeException.java index ae18bbd44e..d3780de91f 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidEventTypeException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidEventTypeException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class InvalidEventTypeException extends NakadiRuntimeBaseException { +public class InvalidEventTypeException extends NakadiBaseException { public InvalidEventTypeException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidLimitException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidLimitException.java index 6b36ed013c..707345cc15 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidLimitException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidLimitException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class InvalidLimitException extends NakadiRuntimeBaseException { +public class InvalidLimitException extends NakadiBaseException { public InvalidLimitException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidStreamIdException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidStreamIdException.java index 795f8338c7..f7316272b7 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidStreamIdException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/InvalidStreamIdException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class InvalidStreamIdException extends NakadiRuntimeBaseException { +public class InvalidStreamIdException extends NakadiBaseException { private final String streamId; diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/LimitReachedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/LimitReachedException.java index af2c96cb33..9c1f02b129 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/LimitReachedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/LimitReachedException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class LimitReachedException extends NakadiRuntimeBaseException { +public class LimitReachedException extends NakadiBaseException { public LimitReachedException(final String msg, final Throwable cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NakadiRuntimeBaseException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NakadiBaseException.java similarity index 53% rename from src/main/java/org/zalando/nakadi/exceptions/runtime/NakadiRuntimeBaseException.java rename to src/main/java/org/zalando/nakadi/exceptions/runtime/NakadiBaseException.java index 163df2d624..a3ca3a8ab1 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NakadiRuntimeBaseException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NakadiBaseException.java @@ -4,16 +4,16 @@ * Parent class for Nakadi runtime exceptions * Name NakadiRuntimeException was already taken for some kind of wrapper. This name is a nice alternative ;) */ -public class NakadiRuntimeBaseException extends RuntimeException { +public class NakadiBaseException extends RuntimeException { - public NakadiRuntimeBaseException() { + public NakadiBaseException() { } - public NakadiRuntimeBaseException(final String message) { + public NakadiBaseException(final String message) { super(message); } - public NakadiRuntimeBaseException(final String message, final Throwable cause) { + public NakadiBaseException(final String message, final Throwable cause) { super(message, cause); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoConnectionSlotsException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoConnectionSlotsException.java index 5f4b849452..deb22eef1c 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoConnectionSlotsException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoConnectionSlotsException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class NoConnectionSlotsException extends NakadiRuntimeBaseException { +public class NoConnectionSlotsException extends NakadiBaseException { public NoConnectionSlotsException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStreamingSlotsAvailable.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStreamingSlotsAvailable.java index 16d71735fe..9d99abccb1 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStreamingSlotsAvailable.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoStreamingSlotsAvailable.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class NoStreamingSlotsAvailable extends NakadiRuntimeBaseException { +public class NoStreamingSlotsAvailable extends NakadiBaseException { public NoStreamingSlotsAvailable(final int totalSlots) { super("No free slots for streaming available. Total slots: " + totalSlots); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchEventTypeException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchEventTypeException.java index e4966d213d..cd7e33a8ee 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchEventTypeException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchEventTypeException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class NoSuchEventTypeException extends NakadiRuntimeBaseException { +public class NoSuchEventTypeException extends NakadiBaseException { public NoSuchEventTypeException(final String message) { super(message); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchPartitionStrategyException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchPartitionStrategyException.java index 6e56dfbfb9..5325918097 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchPartitionStrategyException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchPartitionStrategyException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class NoSuchPartitionStrategyException extends NakadiRuntimeBaseException { +public class NoSuchPartitionStrategyException extends NakadiBaseException { public NoSuchPartitionStrategyException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSchemaException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSchemaException.java index a8824d12d1..970878344f 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSchemaException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSchemaException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class NoSuchSchemaException extends NakadiRuntimeBaseException { +public class NoSuchSchemaException extends NakadiBaseException { public NoSuchSchemaException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchStorageException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchStorageException.java index 0cf65f11c9..9a23e92c53 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchStorageException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchStorageException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class NoSuchStorageException extends NakadiRuntimeBaseException { +public class NoSuchStorageException extends NakadiBaseException { public NoSuchStorageException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSubscriptionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSubscriptionException.java index 235f111b03..a57c48923a 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSubscriptionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NoSuchSubscriptionException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class NoSuchSubscriptionException extends NakadiRuntimeBaseException { +public class NoSuchSubscriptionException extends NakadiBaseException { public NoSuchSubscriptionException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/NotFoundException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/NotFoundException.java index b6ba3f2a18..b82bc85156 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/NotFoundException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/NotFoundException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class NotFoundException extends NakadiRuntimeBaseException { +public class NotFoundException extends NakadiBaseException { public NotFoundException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationInterruptedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationInterruptedException.java index 19a47d4274..4f864604cb 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationInterruptedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationInterruptedException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class OperationInterruptedException extends NakadiRuntimeBaseException { +public class OperationInterruptedException extends NakadiBaseException { public OperationInterruptedException(final String message, final Throwable cause) { super(message, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationTimeoutException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationTimeoutException.java index 17b469573b..af27d03f5b 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationTimeoutException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/OperationTimeoutException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class OperationTimeoutException extends NakadiRuntimeBaseException { +public class OperationTimeoutException extends NakadiBaseException { public OperationTimeoutException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/PartitioningException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/PartitioningException.java index e433b6017e..a786f729e1 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/PartitioningException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/PartitioningException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class PartitioningException extends NakadiRuntimeBaseException { +public class PartitioningException extends NakadiBaseException { public PartitioningException(final String message) { super(message); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/RebalanceConflictException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/RebalanceConflictException.java index 46147b8dcd..0b476eebc7 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/RebalanceConflictException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/RebalanceConflictException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class RebalanceConflictException extends NakadiRuntimeBaseException { +public class RebalanceConflictException extends NakadiBaseException { public RebalanceConflictException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/RepositoryProblemException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/RepositoryProblemException.java index df029689ba..71856f93ce 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/RepositoryProblemException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/RepositoryProblemException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class RepositoryProblemException extends NakadiRuntimeBaseException { +public class RepositoryProblemException extends NakadiBaseException { public RepositoryProblemException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/RequestInProgressException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/RequestInProgressException.java index 0ed8671099..ad1fb4a960 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/RequestInProgressException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/RequestInProgressException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class RequestInProgressException extends NakadiRuntimeBaseException { +public class RequestInProgressException extends NakadiBaseException { public RequestInProgressException(final String message, final Throwable cause) { super(message, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/ServiceTemporarilyUnavailableException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/ServiceTemporarilyUnavailableException.java index 5e4106191f..80f187f1ae 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/ServiceTemporarilyUnavailableException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/ServiceTemporarilyUnavailableException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class ServiceTemporarilyUnavailableException extends NakadiRuntimeBaseException { +public class ServiceTemporarilyUnavailableException extends NakadiBaseException { public ServiceTemporarilyUnavailableException(final Exception cause) { super(cause.getMessage(), cause); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/StorageIsUsedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/StorageIsUsedException.java index 1a757ad266..11bfb92cc6 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/StorageIsUsedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/StorageIsUsedException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class StorageIsUsedException extends NakadiRuntimeBaseException { +public class StorageIsUsedException extends NakadiBaseException { public StorageIsUsedException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionPartitionConflictException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionPartitionConflictException.java index d20fb3dff8..c30b842657 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionPartitionConflictException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionPartitionConflictException.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.stream.Collectors; -public class SubscriptionPartitionConflictException extends NakadiRuntimeBaseException { +public class SubscriptionPartitionConflictException extends NakadiBaseException { private SubscriptionPartitionConflictException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionUpdateConflictException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionUpdateConflictException.java index 018b58ccf3..2a54ab8c27 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionUpdateConflictException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/SubscriptionUpdateConflictException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class SubscriptionUpdateConflictException extends NakadiRuntimeBaseException { +public class SubscriptionUpdateConflictException extends NakadiBaseException { public SubscriptionUpdateConflictException(final String message) { super(message); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TimeLagStatsTimeoutException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TimeLagStatsTimeoutException.java index c59bbf759b..2da65922dd 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TimeLagStatsTimeoutException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TimeLagStatsTimeoutException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TimeLagStatsTimeoutException extends NakadiRuntimeBaseException { +public class TimeLagStatsTimeoutException extends NakadiBaseException { public TimeLagStatsTimeoutException(final String msg, final Throwable cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelineException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelineException.java index 2852de605d..914c857872 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelineException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelineException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TimelineException extends NakadiRuntimeBaseException { +public class TimelineException extends NakadiBaseException { public TimelineException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelinesNotSupportedException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelinesNotSupportedException.java index d3ef47034f..4f7b71d74b 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelinesNotSupportedException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TimelinesNotSupportedException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TimelinesNotSupportedException extends NakadiRuntimeBaseException { +public class TimelinesNotSupportedException extends NakadiBaseException { public TimelinesNotSupportedException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TooManyPartitionsException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TooManyPartitionsException.java index 08a597f18b..fe0083491c 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TooManyPartitionsException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TooManyPartitionsException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TooManyPartitionsException extends NakadiRuntimeBaseException { +public class TooManyPartitionsException extends NakadiBaseException { public TooManyPartitionsException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicConfigException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicConfigException.java index 6a9c970f47..b9bcf80ae0 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicConfigException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicConfigException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TopicConfigException extends NakadiRuntimeBaseException { +public class TopicConfigException extends NakadiBaseException { public TopicConfigException(final String message, final Exception e) { super(message, e); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicCreationException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicCreationException.java index a4eaa41df2..87efdeb37e 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicCreationException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicCreationException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TopicCreationException extends NakadiRuntimeBaseException { +public class TopicCreationException extends NakadiBaseException { public TopicCreationException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicDeletionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicDeletionException.java index f247c672f5..e98c6f6362 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicDeletionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicDeletionException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TopicDeletionException extends NakadiRuntimeBaseException { +public class TopicDeletionException extends NakadiBaseException { public TopicDeletionException(final String msg, final Exception cause) { super(msg, cause); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicRepositoryException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicRepositoryException.java index 09798fa6c5..afdfa62464 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicRepositoryException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/TopicRepositoryException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class TopicRepositoryException extends NakadiRuntimeBaseException { +public class TopicRepositoryException extends NakadiBaseException { public TopicRepositoryException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnableProcessException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnableProcessException.java index bd6e6f0d5c..93d9abda84 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnableProcessException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnableProcessException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class UnableProcessException extends NakadiRuntimeBaseException { +public class UnableProcessException extends NakadiBaseException { public UnableProcessException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownOperationException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownOperationException.java index 8c3ae410cc..1b30365196 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownOperationException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownOperationException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class UnknownOperationException extends NakadiRuntimeBaseException { +public class UnknownOperationException extends NakadiBaseException { public UnknownOperationException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownStorageTypeException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownStorageTypeException.java index cc9860bbd0..e292c6ec54 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownStorageTypeException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnknownStorageTypeException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class UnknownStorageTypeException extends NakadiRuntimeBaseException { +public class UnknownStorageTypeException extends NakadiBaseException { public UnknownStorageTypeException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnparseableCursorException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnparseableCursorException.java index 361f16a46d..62cef7f182 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnparseableCursorException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnparseableCursorException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class UnparseableCursorException extends NakadiRuntimeBaseException { +public class UnparseableCursorException extends NakadiBaseException { private final String cursors; public UnparseableCursorException(final String msg, final Exception cause, final String cursors) { diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnprocessableSubscriptionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnprocessableSubscriptionException.java index 8218cacdf6..3ec1f5cd01 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnprocessableSubscriptionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnprocessableSubscriptionException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class UnprocessableSubscriptionException extends NakadiRuntimeBaseException { +public class UnprocessableSubscriptionException extends NakadiBaseException { public UnprocessableSubscriptionException(String message) { super(message); } diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongInitialCursorsException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongInitialCursorsException.java index 8155f8a8c0..2684c20ca8 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongInitialCursorsException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongInitialCursorsException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class WrongInitialCursorsException extends NakadiRuntimeBaseException { +public class WrongInitialCursorsException extends NakadiBaseException { public WrongInitialCursorsException(final String msg) { super(msg); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongStreamParametersException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongStreamParametersException.java index cd99b213d8..13f390f222 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongStreamParametersException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/WrongStreamParametersException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class WrongStreamParametersException extends NakadiRuntimeBaseException { +public class WrongStreamParametersException extends NakadiBaseException { public WrongStreamParametersException(final String message) { super(message); diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/ZookeeperException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/ZookeeperException.java index a57ee45af4..6592bd6bb1 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/ZookeeperException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/ZookeeperException.java @@ -1,6 +1,6 @@ package org.zalando.nakadi.exceptions.runtime; -public class ZookeeperException extends NakadiRuntimeBaseException { +public class ZookeeperException extends NakadiBaseException { public ZookeeperException(final String message, final Throwable cause) { super(message, cause); diff --git a/src/main/java/org/zalando/nakadi/service/CursorOperationsService.java b/src/main/java/org/zalando/nakadi/service/CursorOperationsService.java index 6c144f6280..c58f81f1c1 100644 --- a/src/main/java/org/zalando/nakadi/service/CursorOperationsService.java +++ b/src/main/java/org/zalando/nakadi/service/CursorOperationsService.java @@ -13,7 +13,7 @@ import org.zalando.nakadi.domain.Timeline; import org.zalando.nakadi.exceptions.runtime.InternalNakadiException; import org.zalando.nakadi.exceptions.runtime.InvalidCursorOperation; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; +import org.zalando.nakadi.exceptions.runtime.NakadiBaseException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.UnknownStorageTypeException; import org.zalando.nakadi.repository.kafka.KafkaCursor; @@ -108,7 +108,7 @@ public List cursorsLag(final String eventTypeName, final List getTimeLags(final Collection(listeners.keySet())); - } catch (final NakadiRuntimeException | NakadiRuntimeBaseException ex) { + } catch (final NakadiRuntimeException | NakadiBaseException ex) { // In order not to stuck here one will just log this exception, without rethrowing getLog().error("Failed to transfer partitions when leaving ClosingState", ex); } finally { diff --git a/src/main/java/org/zalando/nakadi/service/subscription/zk/AbstractZkSubscriptionClient.java b/src/main/java/org/zalando/nakadi/service/subscription/zk/AbstractZkSubscriptionClient.java index f1160cf276..dcb559b451 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/zk/AbstractZkSubscriptionClient.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/zk/AbstractZkSubscriptionClient.java @@ -12,9 +12,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.zalando.nakadi.domain.EventTypePartition; +import org.zalando.nakadi.exceptions.runtime.NakadiBaseException; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; import org.zalando.nakadi.exceptions.runtime.UnableProcessException; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; import org.zalando.nakadi.exceptions.runtime.OperationInterruptedException; import org.zalando.nakadi.exceptions.runtime.OperationTimeoutException; import org.zalando.nakadi.exceptions.runtime.RequestInProgressException; @@ -112,7 +112,7 @@ public final T runLocked(final Callable function) { throw releaseException; } return result; - } catch (final NakadiRuntimeException | NakadiRuntimeBaseException e) { + } catch (final NakadiRuntimeException | NakadiBaseException e) { throw e; } catch (final Exception e) { throw new NakadiRuntimeException(e); diff --git a/src/main/java/org/zalando/nakadi/service/subscription/zk/SubscriptionNotInitializedException.java b/src/main/java/org/zalando/nakadi/service/subscription/zk/SubscriptionNotInitializedException.java index 5cf82a40b2..8e4fdd384f 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/zk/SubscriptionNotInitializedException.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/zk/SubscriptionNotInitializedException.java @@ -1,8 +1,8 @@ package org.zalando.nakadi.service.subscription.zk; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; +import org.zalando.nakadi.exceptions.runtime.NakadiBaseException; -public class SubscriptionNotInitializedException extends NakadiRuntimeBaseException { +public class SubscriptionNotInitializedException extends NakadiBaseException { public SubscriptionNotInitializedException(final String subscriptionId) { super("Subscription " + subscriptionId + " is not initialized"); diff --git a/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionClient.java b/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionClient.java index 170268ec24..13dfc3f223 100644 --- a/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionClient.java +++ b/src/main/java/org/zalando/nakadi/service/subscription/zk/ZkSubscriptionClient.java @@ -4,7 +4,7 @@ import org.apache.commons.codec.binary.Hex; import org.zalando.nakadi.domain.EventTypePartition; import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeException; -import org.zalando.nakadi.exceptions.runtime.NakadiRuntimeBaseException; +import org.zalando.nakadi.exceptions.runtime.NakadiBaseException; import org.zalando.nakadi.exceptions.runtime.OperationTimeoutException; import org.zalando.nakadi.exceptions.runtime.ServiceTemporarilyUnavailableException; import org.zalando.nakadi.exceptions.runtime.ZookeeperException; @@ -214,7 +214,7 @@ public Topology withUpdatedPartitions(final String newHash, final Partition[] pa } } if (selectedIdx < 0) { - throw new NakadiRuntimeBaseException( + throw new NakadiBaseException( "Failed to find partition " + newValue.getKey() + " in " + this); } resultPartitions[selectedIdx] = newValue; diff --git a/src/test/java/org/zalando/nakadi/repository/kafka/NakadiKafkaConsumerTest.java b/src/test/java/org/zalando/nakadi/repository/kafka/NakadiKafkaConsumerTest.java index c72ee907d6..aa300d797b 100644 --- a/src/test/java/org/zalando/nakadi/repository/kafka/NakadiKafkaConsumerTest.java +++ b/src/test/java/org/zalando/nakadi/repository/kafka/NakadiKafkaConsumerTest.java @@ -177,7 +177,7 @@ public void whenReadEventsThenNakadiRuntimeBaseException() { } } - assertThat("We should get a NakadiRuntimeBaseException for every call", + assertThat("We should get a NakadiBaseException for every call", numberOfNakadiRuntimeBaseExceptions, equalTo(exceptions.size())); } From 465e53f6b9fbc9cad6ec14b69ea1ade3c8066c55 Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 17:00:04 +0200 Subject: [PATCH 17/20] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a59bc351ca..ffffc21087 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Fixed - Upgraded dependencies +- Refactored exceptions ## [2.8.3] - 2018-08-01 From ade79f3e41327daa948ecef5b7412917cbf779fe Mon Sep 17 00:00:00 2001 From: Lionel Montrieux Date: Mon, 20 Aug 2018 17:06:49 +0200 Subject: [PATCH 18/20] checkstyle --- .../exceptions/runtime/UnprocessableSubscriptionException.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnprocessableSubscriptionException.java b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnprocessableSubscriptionException.java index 3ec1f5cd01..73df3e051e 100644 --- a/src/main/java/org/zalando/nakadi/exceptions/runtime/UnprocessableSubscriptionException.java +++ b/src/main/java/org/zalando/nakadi/exceptions/runtime/UnprocessableSubscriptionException.java @@ -1,7 +1,7 @@ package org.zalando.nakadi.exceptions.runtime; public class UnprocessableSubscriptionException extends NakadiBaseException { - public UnprocessableSubscriptionException(String message) { + public UnprocessableSubscriptionException(final String message) { super(message); } } From 513a43781259df45f58ed70b11184eccec8f66f4 Mon Sep 17 00:00:00 2001 From: Andrey Dyachkov Date: Tue, 28 Aug 2018 12:11:25 +0200 Subject: [PATCH 19/20] enable multiple forward slashes reject --- .../nakadi/config/SecurityConfiguration.java | 137 ------------------ 1 file changed, 137 deletions(-) diff --git a/src/main/java/org/zalando/nakadi/config/SecurityConfiguration.java b/src/main/java/org/zalando/nakadi/config/SecurityConfiguration.java index 81b10df382..e2ec571431 100644 --- a/src/main/java/org/zalando/nakadi/config/SecurityConfiguration.java +++ b/src/main/java/org/zalando/nakadi/config/SecurityConfiguration.java @@ -199,141 +199,4 @@ public String getDetail() { } } - // TODO: REMOVE IT AFTER EVERYONE HAS NORMALIZED THEIR URLS - @Bean - public HttpFirewall allowUrlEncodedSlashHttpFirewall() { - return new AllowForwardSlashesStrictHttpFirewall(); - } - - // TODO: REMOVE IT AFTER EVERYONE HAS NORMALIZED THEIR URLS - private static class AllowForwardSlashesStrictHttpFirewall extends StrictHttpFirewall { - - private static final String ENCODED_PERCENT = "%25"; - private static final String PERCENT = "%"; - private static final List FORBIDDEN_ENCODED_PERIOD = - Collections.unmodifiableList(Arrays.asList("%2e", "%2E")); - private Set encodedUrlBlacklist = new HashSet<>(); - private Set decodedUrlBlacklist = new HashSet<>(); - - AllowForwardSlashesStrictHttpFirewall() { - super(); - this.encodedUrlBlacklist.add(ENCODED_PERCENT); - this.encodedUrlBlacklist.addAll(FORBIDDEN_ENCODED_PERIOD); - this.decodedUrlBlacklist.add(PERCENT); - } - - private static boolean containsOnlyPrintableAsciiCharacters(final String uri) { - final int length = uri.length(); - for (int i = 0; i < length; i++) { - final char c = uri.charAt(i); - if (c < '\u0020' || c > '\u007e') { - return false; - } - } - - return true; - } - - private static boolean encodedUrlContains(final HttpServletRequest request, final String value) { - if (valueContains(request.getContextPath(), value)) { - return true; - } - return valueContains(request.getRequestURI(), value); - } - - private static boolean decodedUrlContains(final HttpServletRequest request, final String value) { - if (valueContains(request.getServletPath(), value)) { - return true; - } - if (valueContains(request.getPathInfo(), value)) { - return true; - } - return false; - } - - private static boolean valueContains(final String value, final String contains) { - return value != null && value.contains(contains); - } - - @Override - public FirewalledRequest getFirewalledRequest(final HttpServletRequest request) - throws RequestRejectedException { - rejectedBlacklistedUrls(request); - - if (!isNormalized(request)) { - throw new RequestRejectedException("The request was rejected because the URL was not normalized."); - } - - final String requestUri = request.getRequestURI(); - if (!containsOnlyPrintableAsciiCharacters(requestUri)) { - throw new RequestRejectedException("The requestURI was rejected because it can only " + - "contain printable ASCII characters."); - } - return new FirewalledRequest(request) { - @Override - public void reset() { - } - }; - } - - private static boolean isNormalized(final HttpServletRequest request) { - if (!isNormalized(request.getRequestURI())) { - return false; - } - if (!isNormalized(request.getContextPath())) { - return false; - } - if (!isNormalized(request.getServletPath())) { - return false; - } - if (!isNormalized(request.getPathInfo())) { - return false; - } - return true; - } - - private static boolean isNormalized(final String path) { - if (path == null) { - return true; - } - - // ONLY THIS PART IS REMOVED, ALL OTHER CODE IS THE SAME AS IN StrictHttpFirewall - // if (path.indexOf("//") > -1) { - // return false; - // } - - for (int j = path.length(); j > 0;) { - final int i = path.lastIndexOf('/', j - 1); - final int gap = j - i; - - if (gap == 2 && path.charAt(i + 1) == '.') { - // ".", "/./" or "/." - return false; - } else if (gap == 3 && path.charAt(i + 1) == '.' && path.charAt(i + 2) == '.') { - return false; - } - - j = i; - } - - return true; - } - - private void rejectedBlacklistedUrls(final HttpServletRequest request) { - for (final String forbidden : this.encodedUrlBlacklist) { - if (encodedUrlContains(request, forbidden)) { - throw new RequestRejectedException("The request was rejected because the URL contained " + - "a potentially malicious String \"" + forbidden + "\""); - } - } - for (final String forbidden : this.decodedUrlBlacklist) { - if (decodedUrlContains(request, forbidden)) { - throw new RequestRejectedException("The request was rejected because the URL contained " + - "a potentially malicious String \"" + forbidden + "\""); - } - } - } - - } - } From 36db745fae4c84e7d0f0e5316242726eeb9fe87a Mon Sep 17 00:00:00 2001 From: Andrey Dyachkov Date: Tue, 28 Aug 2018 12:52:38 +0200 Subject: [PATCH 20/20] removed unused imports --- .../zalando/nakadi/config/SecurityConfiguration.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/main/java/org/zalando/nakadi/config/SecurityConfiguration.java b/src/main/java/org/zalando/nakadi/config/SecurityConfiguration.java index e2ec571431..012995bd59 100644 --- a/src/main/java/org/zalando/nakadi/config/SecurityConfiguration.java +++ b/src/main/java/org/zalando/nakadi/config/SecurityConfiguration.java @@ -4,7 +4,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpOutputMessage; import org.springframework.http.converter.HttpMessageConverter; @@ -20,22 +19,13 @@ import org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler; import org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint; import org.springframework.security.oauth2.provider.token.ResourceServerTokenServices; -import org.springframework.security.web.firewall.FirewalledRequest; -import org.springframework.security.web.firewall.HttpFirewall; -import org.springframework.security.web.firewall.RequestRejectedException; -import org.springframework.security.web.firewall.StrictHttpFirewall; import org.zalando.stups.oauth2.spring.security.expression.ExtendedOAuth2WebSecurityExpressionHandler; -import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.Response; import java.io.IOException; import java.text.MessageFormat; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; import java.util.List; -import java.util.Set; import static org.springframework.http.HttpMethod.DELETE; import static org.springframework.http.HttpMethod.GET;