diff --git a/src/main/java/org/zalando/nakadi/controller/EventPublishingController.java b/src/main/java/org/zalando/nakadi/controller/EventPublishingController.java index 12aa5c3cf3..f0c1892276 100644 --- a/src/main/java/org/zalando/nakadi/controller/EventPublishingController.java +++ b/src/main/java/org/zalando/nakadi/controller/EventPublishingController.java @@ -15,7 +15,6 @@ import org.springframework.web.context.request.NativeWebRequest; import org.zalando.nakadi.domain.EventPublishResult; import org.zalando.nakadi.domain.EventPublishingStatus; -import org.zalando.nakadi.domain.EventType; import org.zalando.nakadi.exceptions.runtime.AccessDeniedException; import org.zalando.nakadi.exceptions.runtime.BlockedException; import org.zalando.nakadi.exceptions.runtime.EventTypeTimeoutException; @@ -25,10 +24,8 @@ import org.zalando.nakadi.metrics.EventTypeMetricRegistry; import org.zalando.nakadi.metrics.EventTypeMetrics; import org.zalando.nakadi.security.Client; -import org.zalando.nakadi.service.AuthorizationValidator; import org.zalando.nakadi.service.BlacklistService; import org.zalando.nakadi.service.EventPublisher; -import org.zalando.nakadi.service.EventTypeService; import org.zalando.nakadi.service.NakadiKpiPublisher; import java.util.concurrent.TimeUnit; @@ -49,8 +46,6 @@ public class EventPublishingController { private final BlacklistService blacklistService; private final NakadiKpiPublisher nakadiKpiPublisher; private final String kpiBatchPublishedEventType; - private final EventTypeService eventTypeService; - private final AuthorizationValidator authorizationValidator; @Autowired public EventPublishingController(final EventPublisher publisher, @@ -58,16 +53,12 @@ public EventPublishingController(final EventPublisher publisher, final BlacklistService blacklistService, final NakadiKpiPublisher nakadiKpiPublisher, @Value("${nakadi.kpi.event-types.nakadiBatchPublished}") - final String kpiBatchPublishedEventType, - final AuthorizationValidator authorizationValidator, - final EventTypeService eventTypeService) { + final String kpiBatchPublishedEventType) { this.publisher = publisher; this.eventTypeMetricRegistry = eventTypeMetricRegistry; this.blacklistService = blacklistService; this.nakadiKpiPublisher = nakadiKpiPublisher; this.kpiBatchPublishedEventType = kpiBatchPublishedEventType; - this.eventTypeService = eventTypeService; - this.authorizationValidator = authorizationValidator; } @RequestMapping(value = "/event-types/{eventTypeName}/events", method = POST) @@ -79,9 +70,6 @@ public ResponseEntity postEvent(@PathVariable final String eventTypeName, InternalNakadiException, EventTypeTimeoutException, NoSuchEventTypeException { LOG.trace("Received event {} for event type {}", eventsAsString, eventTypeName); - final EventType eventType = eventTypeService.get(eventTypeName); - authorizationValidator.authorizeEventTypeView(eventType); - final EventTypeMetrics eventTypeMetrics = eventTypeMetricRegistry.metricsFor(eventTypeName); if (blacklistService.isProductionBlocked(eventTypeName, client.getClientId())) { diff --git a/src/main/java/org/zalando/nakadi/service/AdminService.java b/src/main/java/org/zalando/nakadi/service/AdminService.java index 40f24bcdf9..f7b7592863 100644 --- a/src/main/java/org/zalando/nakadi/service/AdminService.java +++ b/src/main/java/org/zalando/nakadi/service/AdminService.java @@ -53,12 +53,16 @@ public AdminService(final AuthorizationDbRepository authorizationDbRepository, this.authorizationService = authorizationService; this.featureToggleService = featureToggleService; this.nakadiSettings = nakadiSettings; - this.resourceCache = CacheBuilder.newBuilder().expireAfterWrite(1, TimeUnit.MINUTES).build(); + this.resourceCache = CacheBuilder.newBuilder().expireAfterWrite(5, TimeUnit.MINUTES).build(); this.auditLogPublisher = auditLogPublisher; } public List getAdmins() { - return addDefaultAdmin(authorizationDbRepository.listAdmins()); + try { + return addDefaultAdmin(resourceCache.get(ADMIN_RESOURCE, authorizationDbRepository::listAdmins)); + } catch (ExecutionException e) { + return addDefaultAdmin(authorizationDbRepository.listAdmins()); + } } public void updateAdmins(final List newAdmins) diff --git a/src/test/java/org/zalando/nakadi/controller/EventPublishingControllerTest.java b/src/test/java/org/zalando/nakadi/controller/EventPublishingControllerTest.java index 87bb2cb2ea..83c1dc3821 100644 --- a/src/test/java/org/zalando/nakadi/controller/EventPublishingControllerTest.java +++ b/src/test/java/org/zalando/nakadi/controller/EventPublishingControllerTest.java @@ -25,10 +25,8 @@ import org.zalando.nakadi.metrics.EventTypeMetrics; import org.zalando.nakadi.plugin.api.authz.AuthorizationService; import org.zalando.nakadi.security.ClientResolver; -import org.zalando.nakadi.service.AuthorizationValidator; import org.zalando.nakadi.service.BlacklistService; import org.zalando.nakadi.service.EventPublisher; -import org.zalando.nakadi.service.EventTypeService; import org.zalando.nakadi.service.NakadiKpiPublisher; import org.zalando.nakadi.utils.TestUtils; @@ -75,8 +73,6 @@ public class EventPublishingControllerTest { private NakadiKpiPublisher kpiPublisher; private BlacklistService blacklistService; private AuthorizationService authorizationService; - private EventTypeService eventTypeService; - private AuthorizationValidator authorizationValidator; @Before public void setUp() { @@ -86,8 +82,6 @@ public void setUp() { kpiPublisher = mock(NakadiKpiPublisher.class); settings = mock(SecuritySettings.class); authorizationService = mock(AuthorizationService.class); - eventTypeService = mock(EventTypeService.class); - authorizationValidator = mock(AuthorizationValidator.class); when(authorizationService.getSubject()).thenReturn(Optional.of(() -> "adminClientId")); when(settings.getAuthMode()).thenReturn(OFF); when(settings.getAdminClientId()).thenReturn("adminClientId"); @@ -97,7 +91,7 @@ public void setUp() { final EventPublishingController controller = new EventPublishingController(publisher, eventTypeMetricRegistry, blacklistService, kpiPublisher, - "kpiEventTypeName", authorizationValidator, eventTypeService); + "kpiEventTypeName"); mockMvc = standaloneSetup(controller) .setMessageConverters(new StringHttpMessageConverter(), TestUtils.JACKSON_2_HTTP_MESSAGE_CONVERTER)