Search in sources :

Example 1 with ChainedAuthFilter

use of io.dropwizard.auth.chained.ChainedAuthFilter in project fallout by datastax.

the class FalloutServiceBase method runServer.

private void runServer(FC conf, Environment environment, CreateAbortableTestRunExecutorFactory createTestRunExecutorFactory, SchemaMode schemaMode) throws Exception {
    final LifecycleManager m = new LifecycleManager(environment);
    final ResourceReservationLocks resourceReservationLocks = new ResourceReservationLocks();
    cassandraDriverManager = m.manage(new CassandraDriverManager(conf.getCassandraHost(), conf.getCassandraPort(), conf.getKeyspace(), schemaMode, preCreateSchemaCallback));
    SecurityUtil securityUtil = new SecurityUtil(conf.getSecureRandomAlgorithm());
    final var userGroupMapper = createUserGroupMapper();
    UserDAO userDAO = m.manage(new UserDAO(cassandraDriverManager, securityUtil, conf.getAdminUserCreds(), userGroupMapper));
    TestRunDAO testRunDAO = m.manage(new TestRunDAO(cassandraDriverManager));
    TestDAO testDAO = m.manage(new TestDAO(cassandraDriverManager, testRunDAO));
    PerformanceReportDAO reportDAO = m.manage(new PerformanceReportDAO(cassandraDriverManager));
    ActiveTestRunFactory activeTestRunFactory = createActiveTestRunFactory(conf);
    UserMessenger mailer = HtmlMailUserMessenger.create(conf);
    UserCredentialsFactory userCredentialsFactory = (testRun) -> {
        User user = userDAO.getUser(testRun.getOwner());
        if (user == null) {
            throw new RuntimeException(String.format("Couldn't find User with email '%s'", testRun.getOwner()));
        }
        return new UserCredentials(user, userDAO.getCIUserByUser(user));
    };
    QueuingTestRunner testRunner = m.manageStartOnly(new QueuingTestRunner(testRunDAO::update, testDAO::updateLastRunAt, new PersistentPendingQueue(testRunDAO::getQueued), userCredentialsFactory, createTestRunExecutorFactory.create(conf, m, mailer, testDAO, testRunDAO, activeTestRunFactory), testRun -> activeTestRunFactory.getResourceRequirements(testRun, userCredentialsFactory), resourceReservationLocks, conf.getResourceLimits(), conf.getStartPaused()));
    // monitor queue metrics
    QueueMetricsManager.registerMetrics(environment.metrics(), testRunDAO);
    runningTestRunsCount = testRunner::getRunningTestRunsCount;
    // Make sure the performance_reports dir exists
    FileUtils.createDirs(Paths.get(conf.getArtifactPath(), "performance_reports"));
    final HashedWheelTimer timer = m.manage(new HashedWheelTimer(new NamedThreadFactory("ServiceTimer")), HashedWheelTimer::stop);
    Path artifactPath = Paths.get(conf.getArtifactPath());
    final var runningTaskLock = new ReentrantLock();
    ArtifactScrubber artifactScrubber = m.manage(new ArtifactScrubber(conf.getStartPaused(), timer, runningTaskLock, Duration.hours(0), Duration.hours(24), artifactPath, testRunDAO, userDAO));
    ArtifactCompressor artifactCompressor = m.manage(new ArtifactCompressor(conf.getStartPaused(), timer, runningTaskLock, Duration.hours(12), Duration.hours(24), artifactPath, testRunDAO, testDAO));
    TestRunReaper testRunReaper = m.manage(new TestRunReaper(conf.getStartPaused(), timer, runningTaskLock, Duration.hours(18), Duration.days(7), testRunDAO, reportDAO, testDAO, mailer, SlackUserMessenger.create(conf.getSlackToken(), m.manage(FalloutClientBuilder.forComponent(SlackUserMessenger.class).build(), Client::close)), conf.getExternalUrl()));
    QueueAdminTask queueAdminTask = new QueueAdminTask(testRunner, List.of(artifactScrubber, artifactCompressor, testRunReaper));
    environment.admin().addTask(queueAdminTask);
    final var artifactUsageAdminTask = new ArtifactUsageAdminTask(testRunDAO);
    environment.admin().addTask(artifactUsageAdminTask);
    environment.admin().addTask(new ArtifactCompressorAdminTask(artifactCompressor));
    environment.admin().addTask(new ShutdownTask(this::shutdown));
    truncateTrailingSlashesInUrls(conf);
    final RewriteHandler rewriteHandler = new RewriteHandler();
    conf.getServerFactory().insertHandler(rewriteHandler);
    addArtifactServlet(conf, environment, rewriteHandler);
    // Add CORS headers so that fallout API can be consumed from other than the main URL
    // The `CrossOriginFilter` comes with the required default settings: allow any origin
    environment.servlets().addFilter("CORS", CrossOriginFilter.class).addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
    // Register our exception mappers: note that we must use concrete (i.e. non-generic) classes, otherwise
    // the convoluted exception mapping code in Jersey will fail with an HTTP 500 error.
    // Dropwizard registers several helpful exception mappers on server start in its ExceptionMapperBinder; one of
    // these provides a helper logging method for detecting a particular developer error when POSTing
    // forms.  Unfortunately, this intercepts _all_ IllegalStateExceptions.  We insert our IllegalStateException
    // mapper here to pre-empt it, whilest keeping the helper logic.
    environment.jersey().register(new FalloutExceptionMapper<IllegalStateException>() {

        private final IllegalStateExceptionMapper dropWizardIllegalStateExceptionMapper = new IllegalStateExceptionMapper();

        /**
         * If the helper code in {@link IllegalStateExceptionMapper} applies, use that
         */
        @Override
        public Response toResponse(IllegalStateException exception) {
            if (LocalizationMessages.FORM_PARAM_CONTENT_TYPE_ERROR().equals(exception.getMessage())) {
                return dropWizardIllegalStateExceptionMapper.toResponse(exception);
            }
            return super.toResponse(exception);
        }
    });
    // This is our default exception mapper.
    environment.jersey().register(new FalloutExceptionMapper<>() {
    });
    environment.jersey().register(new AuthDynamicFeature(new ChainedAuthFilter(getAuthFilters(conf, userDAO))));
    // Enable @RolesAllowed annotations
    environment.jersey().register(new RolesAllowedDynamicFeature());
    // If you want to use @Auth to inject a custom Principal type into your resource
    environment.jersey().register(new AuthValueFactoryProvider.Binder<>(User.class));
    final ComponentResource componentResource = new ComponentResource(conf, componentFactory);
    MainView mainView = new MainView(componentResource.getComponentTypes(), testRunner, addVersionedAssetsRewriteRule(rewriteHandler), conf::hideDisplayedEmailDomains);
    componentResource.setMainView(mainView);
    CommandExecutor commandExecutor = new LocalCommandExecutor();
    environment.jersey().register(new StatusResource(testRunner));
    environment.jersey().register(new HomeResource(conf, userDAO, testRunDAO, testRunner, conf.getResourceLimits(), mainView, userGroupMapper));
    environment.jersey().register(new AdminResource(testRunner, queueAdminTask, artifactUsageAdminTask, mainView));
    environment.jersey().register(new AccountResource(userDAO, conf, mailer, mainView, securityUtil, userGroupMapper));
    environment.jersey().register(new TestResource(conf, testDAO, testRunDAO, activeTestRunFactory, userCredentialsFactory, reportDAO, testRunner, mainView, userGroupMapper));
    environment.jersey().register(componentResource);
    environment.jersey().register(new PerformanceToolResource(testDAO, testRunDAO, reportDAO, conf.getArtifactPath(), mainView, userGroupMapper));
    registerOptionalResources(conf, environment, testRunDAO, commandExecutor);
    // Using SSE (which is what LiveResource uses) doesn't work unless we prevent the
    // GZIP output filter from flushing-on-demand (if we don't do this, data is queued up until the
    // GZIP implementation decides it's a good time to flush: see java.util.zip.Deflater#SYNC_FLUSH).
    ((DefaultServerWithHandlerFactory) conf.getServerFactory()).getGzipFilterFactory().setSyncFlush(true);
    final ArtifactWatcher artifactWatcher = new ArtifactWatcher(Paths.get(conf.getArtifactPath()), timer, conf.getArtifactWatcherCoalescingIntervalSeconds());
    environment.lifecycle().manage(artifactWatcher);
    final ServerSentEvents serverSentEvents = m.manageStartOnly(new ServerSentEvents(timer, conf.getServerSentEventsHeartBeatIntervalSeconds()));
    environment.jersey().register(new LiveResource(testRunDAO, artifactWatcher, serverSentEvents));
    setShutdownHandler(environment, testRunner, serverSentEvents);
}
Also used : RewriteHandler(org.eclipse.jetty.rewrite.handler.RewriteHandler) SwaggerBundleConfiguration(io.federecio.dropwizard.swagger.SwaggerBundleConfiguration) JacksonUtils(com.datastax.fallout.util.JacksonUtils) AuthValueFactoryProvider(io.dropwizard.auth.AuthValueFactoryProvider) Map(java.util.Map) RolesAllowedDynamicFeature(org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature) AbortableRunnableExecutorFactory(com.datastax.fallout.runner.AbortableRunnableExecutorFactory) QueuingTestRunner(com.datastax.fallout.runner.QueuingTestRunner) Path(java.nio.file.Path) ResourceReservationLocks(com.datastax.fallout.runner.ResourceReservationLocks) EnumSet(java.util.EnumSet) Duration(com.datastax.fallout.util.Duration) LocalCommandExecutor(com.datastax.fallout.ops.commands.LocalCommandExecutor) MainView(com.datastax.fallout.service.views.MainView) RewriteRegexRule(org.eclipse.jetty.rewrite.handler.RewriteRegexRule) LocalizationMessages(org.glassfish.jersey.server.internal.LocalizationMessages) NginxArtifactServlet(com.datastax.fallout.service.artifacts.NginxArtifactServlet) Verify(com.google.common.base.Verify) SingleUserAuthFilter(com.datastax.fallout.service.auth.SingleUserAuthFilter) Servlet(javax.servlet.Servlet) UserCredentials(com.datastax.fallout.runner.UserCredentialsFactory.UserCredentials) Set(java.util.Set) ScopedLogger(com.datastax.fallout.util.ScopedLogger) DefaultServerFactory(io.dropwizard.server.DefaultServerFactory) RunnableExecutorFactory(com.datastax.fallout.runner.RunnableExecutorFactory) FalloutTokenAuthenticator(com.datastax.fallout.service.auth.FalloutTokenAuthenticator) HtmlMailUserMessenger(com.datastax.fallout.util.HtmlMailUserMessenger) CheckCommand(io.dropwizard.cli.CheckCommand) FalloutExecCommand(com.datastax.fallout.service.cli.FalloutExecCommand) CommonProperties(org.glassfish.jersey.CommonProperties) User(com.datastax.fallout.service.core.User) FreemarkerViewRenderer(io.dropwizard.views.freemarker.FreemarkerViewRenderer) Bootstrap(io.dropwizard.setup.Bootstrap) ComponentFactory(com.datastax.fallout.util.component_discovery.ComponentFactory) ServerSentEvents(com.datastax.fallout.service.resources.ServerSentEvents) Exceptions(com.datastax.fallout.util.Exceptions) LiveResource(com.datastax.fallout.service.resources.server.LiveResource) TestResource(com.datastax.fallout.service.resources.server.TestResource) Supplier(java.util.function.Supplier) ViewBundle(io.dropwizard.views.ViewBundle) FalloutVersion(com.datastax.fallout.FalloutVersion) ArrayList(java.util.ArrayList) QueueMetricsManager(com.datastax.fallout.service.db.QueueMetricsManager) HttpConnectorFactory(io.dropwizard.jetty.HttpConnectorFactory) ClojureShutdown(com.datastax.fallout.harness.ClojureShutdown) DelegatingExecutorFactory(com.datastax.fallout.runner.DelegatingExecutorFactory) Environment(io.dropwizard.setup.Environment) UserGroupMapper(com.datastax.fallout.service.db.UserGroupMapper) ArtifactScrubber(com.datastax.fallout.service.artifacts.ArtifactScrubber) ReadOnlyTestRun(com.datastax.fallout.service.core.ReadOnlyTestRun) AccountResource(com.datastax.fallout.service.resources.server.AccountResource) CassandraDriverManager(com.datastax.fallout.service.db.CassandraDriverManager) Paths(java.nio.file.Paths) ForkJoinPool(java.util.concurrent.ForkJoinPool) RunnerResource(com.datastax.fallout.service.resources.runner.RunnerResource) UserMessenger(com.datastax.fallout.util.UserMessenger) PersistentPendingQueue(com.datastax.fallout.runner.queue.PersistentPendingQueue) SecurityUtil(com.datastax.fallout.service.auth.SecurityUtil) HomeResource(com.datastax.fallout.service.resources.server.HomeResource) FinishedTestRunUserNotifier(com.datastax.fallout.util.FinishedTestRunUserNotifier) TestRun(com.datastax.fallout.service.core.TestRun) IllegalStateExceptionMapper(io.dropwizard.jersey.errors.IllegalStateExceptionMapper) RedirectRegexRule(org.eclipse.jetty.rewrite.handler.RedirectRegexRule) Ensemble(com.datastax.fallout.ops.Ensemble) URI(java.net.URI) ComponentResource(com.datastax.fallout.service.resources.server.ComponentResource) PerformanceReportDAO(com.datastax.fallout.service.db.PerformanceReportDAO) Authorizer(io.dropwizard.auth.Authorizer) UserDAO(com.datastax.fallout.service.db.UserDAO) Application(io.dropwizard.Application) Cassandra(com.datastax.fallout.service.cli.Cassandra) FalloutStandaloneCommand(com.datastax.fallout.service.cli.FalloutStandaloneCommand) FalloutCookieAuthFilter(com.datastax.fallout.service.auth.FalloutCookieAuthFilter) SwaggerBundle(io.federecio.dropwizard.swagger.SwaggerBundle) ArtifactUsageAdminTask(com.datastax.fallout.service.artifacts.ArtifactUsageAdminTask) ThreadedRunnableExecutorFactory(com.datastax.fallout.runner.ThreadedRunnableExecutorFactory) MustacheViewRendererWithoutTemplatingErrors(com.datastax.fallout.util.MustacheViewRendererWithoutTemplatingErrors) AssetsBundle(io.dropwizard.assets.AssetsBundle) List(java.util.List) AuthFilter(io.dropwizard.auth.AuthFilter) TestDAO(com.datastax.fallout.service.db.TestDAO) Response(javax.ws.rs.core.Response) NamedThreadFactory(com.datastax.fallout.util.NamedThreadFactory) Managed(io.dropwizard.lifecycle.Managed) HashedWheelTimer(io.netty.util.HashedWheelTimer) Optional(java.util.Optional) ChainedAuthFilter(io.dropwizard.auth.chained.ChainedAuthFilter) ArtifactCompressorAdminTask(com.datastax.fallout.service.artifacts.ArtifactCompressorAdminTask) OAuthCredentialAuthFilter(io.dropwizard.auth.oauth.OAuthCredentialAuthFilter) GenerateNginxConf(com.datastax.fallout.service.cli.GenerateNginxConf) ServerMode(com.datastax.fallout.service.FalloutConfiguration.ServerMode) ServletRegistration(javax.servlet.ServletRegistration) CommandExecutor(com.datastax.fallout.ops.commands.CommandExecutor) Client(javax.ws.rs.client.Client) AuthDynamicFeature(io.dropwizard.auth.AuthDynamicFeature) CompletableFuture(java.util.concurrent.CompletableFuture) Function(java.util.function.Function) SchemaMode(com.datastax.fallout.service.db.CassandraDriverManager.SchemaMode) ActiveTestRun(com.datastax.fallout.harness.ActiveTestRun) FalloutQueueCommand(com.datastax.fallout.service.cli.FalloutQueueCommand) ArtifactCompressor(com.datastax.fallout.service.artifacts.ArtifactCompressor) ActiveTestRunFactory(com.datastax.fallout.runner.ActiveTestRunFactory) IntSupplier(java.util.function.IntSupplier) CrossOriginFilter(org.eclipse.jetty.servlets.CrossOriginFilter) FalloutRunnerCommand(com.datastax.fallout.service.cli.FalloutRunnerCommand) FileUtils(com.datastax.fallout.util.FileUtils) SlackUserMessenger(com.datastax.fallout.util.SlackUserMessenger) AdminResource(com.datastax.fallout.service.resources.server.AdminResource) ReentrantLock(java.util.concurrent.locks.ReentrantLock) JettyArtifactServlet(com.datastax.fallout.service.artifacts.JettyArtifactServlet) TestRunReaper(com.datastax.fallout.service.core.TestRunReaper) DelegatingRunnableExecutorFactory(com.datastax.fallout.runner.DelegatingRunnableExecutorFactory) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) UserCredentialsFactory(com.datastax.fallout.runner.UserCredentialsFactory) TestRunStatusUpdatePublisher(com.datastax.fallout.harness.TestRunStatusUpdatePublisher) AutoCloseableManager(io.dropwizard.lifecycle.AutoCloseableManager) DirectTestRunner(com.datastax.fallout.runner.DirectTestRunner) Consumer(java.util.function.Consumer) ArtifactWatcher(com.datastax.fallout.service.artifacts.ArtifactWatcher) TestRunDAO(com.datastax.fallout.service.db.TestRunDAO) JobLoggersFactory(com.datastax.fallout.runner.JobLoggersFactory) StatusResource(com.datastax.fallout.service.resources.server.StatusResource) DispatcherType(javax.servlet.DispatcherType) PerformanceToolResource(com.datastax.fallout.service.resources.server.PerformanceToolResource) WebTarget(javax.ws.rs.client.WebTarget) VisibleForTesting(com.google.common.annotations.VisibleForTesting) FalloutValidateCommand(com.datastax.fallout.service.cli.FalloutValidateCommand) LocalCommandExecutor(com.datastax.fallout.ops.commands.LocalCommandExecutor) CommandExecutor(com.datastax.fallout.ops.commands.CommandExecutor) AuthValueFactoryProvider(io.dropwizard.auth.AuthValueFactoryProvider) RolesAllowedDynamicFeature(org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature) ArtifactScrubber(com.datastax.fallout.service.artifacts.ArtifactScrubber) ComponentResource(com.datastax.fallout.service.resources.server.ComponentResource) PerformanceReportDAO(com.datastax.fallout.service.db.PerformanceReportDAO) ChainedAuthFilter(io.dropwizard.auth.chained.ChainedAuthFilter) ArtifactWatcher(com.datastax.fallout.service.artifacts.ArtifactWatcher) CassandraDriverManager(com.datastax.fallout.service.db.CassandraDriverManager) ArtifactCompressorAdminTask(com.datastax.fallout.service.artifacts.ArtifactCompressorAdminTask) DispatcherType(javax.servlet.DispatcherType) AuthDynamicFeature(io.dropwizard.auth.AuthDynamicFeature) RewriteHandler(org.eclipse.jetty.rewrite.handler.RewriteHandler) ReentrantLock(java.util.concurrent.locks.ReentrantLock) LocalCommandExecutor(com.datastax.fallout.ops.commands.LocalCommandExecutor) NamedThreadFactory(com.datastax.fallout.util.NamedThreadFactory) SlackUserMessenger(com.datastax.fallout.util.SlackUserMessenger) HashedWheelTimer(io.netty.util.HashedWheelTimer) TestRunReaper(com.datastax.fallout.service.core.TestRunReaper) UserCredentialsFactory(com.datastax.fallout.runner.UserCredentialsFactory) IllegalStateExceptionMapper(io.dropwizard.jersey.errors.IllegalStateExceptionMapper) ArtifactCompressor(com.datastax.fallout.service.artifacts.ArtifactCompressor) ArtifactUsageAdminTask(com.datastax.fallout.service.artifacts.ArtifactUsageAdminTask) User(com.datastax.fallout.service.core.User) MainView(com.datastax.fallout.service.views.MainView) HomeResource(com.datastax.fallout.service.resources.server.HomeResource) AdminResource(com.datastax.fallout.service.resources.server.AdminResource) StatusResource(com.datastax.fallout.service.resources.server.StatusResource) PerformanceToolResource(com.datastax.fallout.service.resources.server.PerformanceToolResource) LiveResource(com.datastax.fallout.service.resources.server.LiveResource) ActiveTestRunFactory(com.datastax.fallout.runner.ActiveTestRunFactory) UserDAO(com.datastax.fallout.service.db.UserDAO) ServerSentEvents(com.datastax.fallout.service.resources.ServerSentEvents) Path(java.nio.file.Path) QueuingTestRunner(com.datastax.fallout.runner.QueuingTestRunner) PersistentPendingQueue(com.datastax.fallout.runner.queue.PersistentPendingQueue) TestResource(com.datastax.fallout.service.resources.server.TestResource) CrossOriginFilter(org.eclipse.jetty.servlets.CrossOriginFilter) TestDAO(com.datastax.fallout.service.db.TestDAO) Response(javax.ws.rs.core.Response) AccountResource(com.datastax.fallout.service.resources.server.AccountResource) ResourceReservationLocks(com.datastax.fallout.runner.ResourceReservationLocks) SecurityUtil(com.datastax.fallout.service.auth.SecurityUtil) UserCredentials(com.datastax.fallout.runner.UserCredentialsFactory.UserCredentials) TestRunDAO(com.datastax.fallout.service.db.TestRunDAO) HtmlMailUserMessenger(com.datastax.fallout.util.HtmlMailUserMessenger) UserMessenger(com.datastax.fallout.util.UserMessenger) SlackUserMessenger(com.datastax.fallout.util.SlackUserMessenger)

Example 2 with ChainedAuthFilter

use of io.dropwizard.auth.chained.ChainedAuthFilter in project consent by DataBiosphere.

the class ConsentApplication method run.

@Override
public void run(ConsentConfiguration config, Environment env) {
    try {
        initializeLiquibase(config);
    } catch (LiquibaseException | SQLException e) {
        LOGGER.error("Exception initializing liquibase: " + e);
    }
    // TODO: Update all services to use an injector.
    // Previously, this code was working around a dropwizard+Guice issue with singletons and JDBI.
    final Injector injector = Guice.createInjector(new ConsentModule(config, env));
    // Clients
    final HttpClientUtil clientUtil = new HttpClientUtil();
    final GCSStore googleStore = injector.getProvider(GCSStore.class).get();
    // Services
    final ApprovalExpirationTimeService approvalExpirationTimeService = injector.getProvider(ApprovalExpirationTimeService.class).get();
    final ConsentService consentService = injector.getProvider(ConsentService.class).get();
    final DarCollectionService darCollectionService = injector.getProvider(DarCollectionService.class).get();
    final DacService dacService = injector.getProvider(DacService.class).get();
    final DataAccessRequestService dataAccessRequestService = injector.getProvider(DataAccessRequestService.class).get();
    final DatasetAssociationService datasetAssociationService = injector.getProvider(DatasetAssociationService.class).get();
    final DatasetService datasetService = injector.getProvider(DatasetService.class).get();
    final ElectionService electionService = injector.getProvider(ElectionService.class).get();
    final EmailNotifierService emailNotifierService = injector.getProvider(EmailNotifierService.class).get();
    final GCSService gcsService = injector.getProvider(GCSService.class).get();
    final InstitutionService institutionService = injector.getProvider(InstitutionService.class).get();
    final MetricsService metricsService = injector.getProvider(MetricsService.class).get();
    final PendingCaseService pendingCaseService = injector.getProvider(PendingCaseService.class).get();
    final UserService userService = injector.getProvider(UserService.class).get();
    final VoteService voteService = injector.getProvider(VoteService.class).get();
    final AuditService auditService = injector.getProvider(AuditService.class).get();
    final SummaryService summaryService = injector.getProvider(SummaryService.class).get();
    final ReviewResultsService reviewResultsService = injector.getProvider(ReviewResultsService.class).get();
    final UseRestrictionValidator useRestrictionValidator = injector.getProvider(UseRestrictionValidator.class).get();
    final MatchService matchService = injector.getProvider(MatchService.class).get();
    final OAuthAuthenticator authenticator = injector.getProvider(OAuthAuthenticator.class).get();
    final LibraryCardService libraryCardService = injector.getProvider(LibraryCardService.class).get();
    final SamService samService = injector.getProvider(SamService.class).get();
    System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
    configureCors(env);
    // Health Checks
    env.healthChecks().register(GCS_CHECK, new GCSHealthCheck(gcsService));
    env.healthChecks().register(ES_CHECK, new ElasticSearchHealthCheck(config.getElasticSearchConfiguration()));
    env.healthChecks().register(ONTOLOGY_CHECK, new OntologyHealthCheck(clientUtil, config.getServicesConfiguration()));
    env.healthChecks().register(SAM_CHECK, new SamHealthCheck(clientUtil, config.getServicesConfiguration()));
    env.healthChecks().register(SG_CHECK, new SendGridHealthCheck(clientUtil, config.getMailConfiguration()));
    final StoreOntologyService storeOntologyService = new StoreOntologyService(googleStore, config.getStoreOntologyConfiguration().getBucketSubdirectory(), config.getStoreOntologyConfiguration().getConfigurationFileName());
    final ResearcherService researcherService = injector.getProvider(ResearcherService.class).get();
    final NihService nihService = injector.getProvider(NihService.class).get();
    final IndexOntologyService indexOntologyService = new IndexOntologyService(config.getElasticSearchConfiguration());
    final IndexerService indexerService = new IndexerServiceImpl(storeOntologyService, indexOntologyService);
    // Custom Error handling. Expand to include other codes when necessary
    final ErrorPageErrorHandler errorHandler = new ErrorPageErrorHandler();
    errorHandler.addErrorPage(404, "/error/404");
    env.getApplicationContext().setErrorHandler(errorHandler);
    env.jersey().register(ResponseServerFilter.class);
    env.jersey().register(ErrorResource.class);
    // Register standard application resources.
    env.jersey().register(new ApprovalExpirationTimeResource(approvalExpirationTimeService, userService));
    env.jersey().register(new DataAccessRequestResourceVersion2(dataAccessRequestService, emailNotifierService, gcsService, userService, matchService));
    env.jersey().register(new DataAccessRequestResource(dataAccessRequestService, userService, consentService, electionService));
    env.jersey().register(new DatasetResource(consentService, datasetService, userService, dataAccessRequestService));
    env.jersey().register(new DatasetAssociationsResource(datasetAssociationService));
    env.jersey().register(new ConsentResource(auditService, userService, consentService, matchService, useRestrictionValidator));
    env.jersey().register(new ConsentAssociationResource(consentService, userService));
    env.jersey().register(new ConsentElectionResource(consentService, dacService, emailNotifierService, voteService, electionService));
    env.jersey().register(new ConsentManageResource(consentService));
    env.jersey().register(new ConsentVoteResource(emailNotifierService, electionService, voteService));
    env.jersey().register(new ConsentCasesResource(electionService, pendingCaseService, summaryService));
    env.jersey().register(new DacResource(dacService, userService));
    env.jersey().register(new DACUserResource(userService));
    env.jersey().register(new DarCollectionResource(dataAccessRequestService, darCollectionService, userService));
    env.jersey().register(new DataRequestElectionResource(dataAccessRequestService, emailNotifierService, summaryService, voteService, electionService));
    env.jersey().register(new DataRequestVoteResource(dataAccessRequestService, datasetAssociationService, emailNotifierService, voteService, datasetService, electionService, userService));
    env.jersey().register(new DataRequestCasesResource(electionService, pendingCaseService, summaryService));
    env.jersey().register(new DataRequestReportsResource(dataAccessRequestService));
    env.jersey().register(new DataUseLetterResource(auditService, googleStore, userService, consentService));
    env.jersey().register(new ElectionResource(voteService, electionService));
    env.jersey().register(new ElectionReviewResource(dataAccessRequestService, consentService, electionService, reviewResultsService));
    env.jersey().register(new EmailNotifierResource(emailNotifierService));
    env.jersey().register(new IndexerResource(indexerService, googleStore));
    env.jersey().register(new InstitutionResource(userService, institutionService));
    env.jersey().register(new LibraryCardResource(userService, libraryCardService));
    env.jersey().register(new MatchResource(matchService));
    env.jersey().register(new MetricsResource(metricsService));
    env.jersey().register(new NihAccountResource(nihService, userService));
    env.jersey().register(new ResearcherResource(researcherService));
    env.jersey().register(new SamResource(samService));
    env.jersey().register(new SwaggerResource(config.getGoogleAuthentication()));
    env.jersey().register(new StatusResource(env.healthChecks()));
    env.jersey().register(new UserResource(researcherService, samService, userService));
    env.jersey().register(new TosResource(samService));
    env.jersey().register(injector.getInstance(VersionResource.class));
    env.jersey().register(new VoteResource(userService, voteService));
    // Authentication filters
    final UserRoleDAO userRoleDAO = injector.getProvider(UserRoleDAO.class).get();
    AuthFilter defaultAuthFilter = new DefaultAuthFilter.Builder<AuthUser>().setAuthenticator(new DefaultAuthenticator()).setRealm(" ").buildAuthFilter();
    List<AuthFilter> filters = Lists.newArrayList(defaultAuthFilter, new BasicCustomAuthFilter(new BasicAuthenticator(config.getBasicAuthentication())), new OAuthCustomAuthFilter(authenticator, userRoleDAO));
    env.jersey().register(new AuthDynamicFeature(new ChainedAuthFilter(filters)));
    env.jersey().register(RolesAllowedDynamicFeature.class);
    env.jersey().register(new AuthValueFactoryProvider.Binder<>(AuthUser.class));
}
Also used : ApprovalExpirationTimeResource(org.broadinstitute.consent.http.resources.ApprovalExpirationTimeResource) UseRestrictionValidator(org.broadinstitute.consent.http.service.UseRestrictionValidator) ConsentElectionResource(org.broadinstitute.consent.http.resources.ConsentElectionResource) DacResource(org.broadinstitute.consent.http.resources.DacResource) NihAccountResource(org.broadinstitute.consent.http.resources.NihAccountResource) DataRequestCasesResource(org.broadinstitute.consent.http.resources.DataRequestCasesResource) ConsentService(org.broadinstitute.consent.http.service.ConsentService) VersionResource(org.broadinstitute.consent.http.resources.VersionResource) AuthValueFactoryProvider(io.dropwizard.auth.AuthValueFactoryProvider) DatasetService(org.broadinstitute.consent.http.service.DatasetService) DefaultAuthFilter(org.broadinstitute.consent.http.authentication.DefaultAuthFilter) BasicCustomAuthFilter(org.broadinstitute.consent.http.authentication.BasicCustomAuthFilter) OAuthCustomAuthFilter(org.broadinstitute.consent.http.authentication.OAuthCustomAuthFilter) AuthFilter(io.dropwizard.auth.AuthFilter) ChainedAuthFilter(io.dropwizard.auth.chained.ChainedAuthFilter) AuthUser(org.broadinstitute.consent.http.models.AuthUser) IndexerService(org.broadinstitute.consent.http.service.ontology.IndexerService) ConsentVoteResource(org.broadinstitute.consent.http.resources.ConsentVoteResource) LibraryCardService(org.broadinstitute.consent.http.service.LibraryCardService) ElasticSearchHealthCheck(org.broadinstitute.consent.http.health.ElasticSearchHealthCheck) BasicAuthenticator(org.broadinstitute.consent.http.authentication.BasicAuthenticator) PendingCaseService(org.broadinstitute.consent.http.service.PendingCaseService) ChainedAuthFilter(io.dropwizard.auth.chained.ChainedAuthFilter) Injector(com.google.inject.Injector) DatasetAssociationsResource(org.broadinstitute.consent.http.resources.DatasetAssociationsResource) DataRequestElectionResource(org.broadinstitute.consent.http.resources.DataRequestElectionResource) MatchService(org.broadinstitute.consent.http.service.MatchService) ResearcherResource(org.broadinstitute.consent.http.resources.ResearcherResource) ConsentVoteResource(org.broadinstitute.consent.http.resources.ConsentVoteResource) VoteResource(org.broadinstitute.consent.http.resources.VoteResource) DataRequestVoteResource(org.broadinstitute.consent.http.resources.DataRequestVoteResource) AuthDynamicFeature(io.dropwizard.auth.AuthDynamicFeature) AuditService(org.broadinstitute.consent.http.service.AuditService) DataUseLetterResource(org.broadinstitute.consent.http.resources.DataUseLetterResource) DarCollectionResource(org.broadinstitute.consent.http.resources.DarCollectionResource) MetricsResource(org.broadinstitute.consent.http.resources.MetricsResource) DarCollectionService(org.broadinstitute.consent.http.service.DarCollectionService) BasicCustomAuthFilter(org.broadinstitute.consent.http.authentication.BasicCustomAuthFilter) UserResource(org.broadinstitute.consent.http.resources.UserResource) DACUserResource(org.broadinstitute.consent.http.resources.DACUserResource) ConsentResource(org.broadinstitute.consent.http.resources.ConsentResource) StoreOntologyService(org.broadinstitute.consent.http.service.ontology.StoreOntologyService) ConsentAssociationResource(org.broadinstitute.consent.http.resources.ConsentAssociationResource) UserRoleDAO(org.broadinstitute.consent.http.db.UserRoleDAO) DataAccessRequestResourceVersion2(org.broadinstitute.consent.http.resources.DataAccessRequestResourceVersion2) LibraryCardResource(org.broadinstitute.consent.http.resources.LibraryCardResource) GCSStore(org.broadinstitute.consent.http.cloudstore.GCSStore) ApprovalExpirationTimeService(org.broadinstitute.consent.http.service.ApprovalExpirationTimeService) ConsentCasesResource(org.broadinstitute.consent.http.resources.ConsentCasesResource) DataRequestReportsResource(org.broadinstitute.consent.http.resources.DataRequestReportsResource) DataAccessRequestService(org.broadinstitute.consent.http.service.DataAccessRequestService) DatasetAssociationService(org.broadinstitute.consent.http.service.DatasetAssociationService) OAuthAuthenticator(org.broadinstitute.consent.http.authentication.OAuthAuthenticator) DatasetResource(org.broadinstitute.consent.http.resources.DatasetResource) ResearcherService(org.broadinstitute.consent.http.service.ResearcherService) IndexOntologyService(org.broadinstitute.consent.http.service.ontology.IndexOntologyService) MatchResource(org.broadinstitute.consent.http.resources.MatchResource) SwaggerResource(org.broadinstitute.consent.http.resources.SwaggerResource) TosResource(org.broadinstitute.consent.http.resources.TosResource) DefaultAuthFilter(org.broadinstitute.consent.http.authentication.DefaultAuthFilter) ReviewResultsService(org.broadinstitute.consent.http.service.ReviewResultsService) IndexerResource(org.broadinstitute.consent.http.resources.IndexerResource) ErrorPageErrorHandler(org.eclipse.jetty.servlet.ErrorPageErrorHandler) SQLException(java.sql.SQLException) OAuthCustomAuthFilter(org.broadinstitute.consent.http.authentication.OAuthCustomAuthFilter) InstitutionService(org.broadinstitute.consent.http.service.InstitutionService) ElectionReviewResource(org.broadinstitute.consent.http.resources.ElectionReviewResource) VoteService(org.broadinstitute.consent.http.service.VoteService) SummaryService(org.broadinstitute.consent.http.service.SummaryService) IndexerServiceImpl(org.broadinstitute.consent.http.service.ontology.IndexerServiceImpl) StatusResource(org.broadinstitute.consent.http.resources.StatusResource) SamResource(org.broadinstitute.consent.http.resources.SamResource) OntologyHealthCheck(org.broadinstitute.consent.http.health.OntologyHealthCheck) ConsentManageResource(org.broadinstitute.consent.http.resources.ConsentManageResource) SamHealthCheck(org.broadinstitute.consent.http.health.SamHealthCheck) InstitutionResource(org.broadinstitute.consent.http.resources.InstitutionResource) DataAccessRequestResource(org.broadinstitute.consent.http.resources.DataAccessRequestResource) GCSHealthCheck(org.broadinstitute.consent.http.health.GCSHealthCheck) HttpClientUtil(org.broadinstitute.consent.http.util.HttpClientUtil) NihService(org.broadinstitute.consent.http.service.NihService) EmailNotifierResource(org.broadinstitute.consent.http.resources.EmailNotifierResource) MetricsService(org.broadinstitute.consent.http.service.MetricsService) UserService(org.broadinstitute.consent.http.service.UserService) DefaultAuthenticator(org.broadinstitute.consent.http.authentication.DefaultAuthenticator) DACUserResource(org.broadinstitute.consent.http.resources.DACUserResource) DataRequestVoteResource(org.broadinstitute.consent.http.resources.DataRequestVoteResource) SamService(org.broadinstitute.consent.http.service.sam.SamService) DacService(org.broadinstitute.consent.http.service.DacService) SendGridHealthCheck(org.broadinstitute.consent.http.health.SendGridHealthCheck) ElectionResource(org.broadinstitute.consent.http.resources.ElectionResource) DataRequestElectionResource(org.broadinstitute.consent.http.resources.DataRequestElectionResource) ConsentElectionResource(org.broadinstitute.consent.http.resources.ConsentElectionResource) LiquibaseException(liquibase.exception.LiquibaseException) EmailNotifierService(org.broadinstitute.consent.http.service.EmailNotifierService) GCSService(org.broadinstitute.consent.http.cloudstore.GCSService) ElectionService(org.broadinstitute.consent.http.service.ElectionService)

Aggregations

AuthDynamicFeature (io.dropwizard.auth.AuthDynamicFeature)2 AuthFilter (io.dropwizard.auth.AuthFilter)2 AuthValueFactoryProvider (io.dropwizard.auth.AuthValueFactoryProvider)2 ChainedAuthFilter (io.dropwizard.auth.chained.ChainedAuthFilter)2 FalloutVersion (com.datastax.fallout.FalloutVersion)1 ActiveTestRun (com.datastax.fallout.harness.ActiveTestRun)1 ClojureShutdown (com.datastax.fallout.harness.ClojureShutdown)1 TestRunStatusUpdatePublisher (com.datastax.fallout.harness.TestRunStatusUpdatePublisher)1 Ensemble (com.datastax.fallout.ops.Ensemble)1 CommandExecutor (com.datastax.fallout.ops.commands.CommandExecutor)1 LocalCommandExecutor (com.datastax.fallout.ops.commands.LocalCommandExecutor)1 AbortableRunnableExecutorFactory (com.datastax.fallout.runner.AbortableRunnableExecutorFactory)1 ActiveTestRunFactory (com.datastax.fallout.runner.ActiveTestRunFactory)1 DelegatingExecutorFactory (com.datastax.fallout.runner.DelegatingExecutorFactory)1 DelegatingRunnableExecutorFactory (com.datastax.fallout.runner.DelegatingRunnableExecutorFactory)1 DirectTestRunner (com.datastax.fallout.runner.DirectTestRunner)1 JobLoggersFactory (com.datastax.fallout.runner.JobLoggersFactory)1 QueuingTestRunner (com.datastax.fallout.runner.QueuingTestRunner)1 ResourceReservationLocks (com.datastax.fallout.runner.ResourceReservationLocks)1 RunnableExecutorFactory (com.datastax.fallout.runner.RunnableExecutorFactory)1