adityagupta1089/Bike-Rental-App

View on GitHub
src/main/java/com/csl456/bikerentalapp/filter/LoggedInFeature.java

Summary

Maintainability
A
0 mins
Test Coverage
package com.csl456.bikerentalapp.filter;

import com.csl456.bikerentalapp.BikeRentalAppConfiguration;
import com.csl456.bikerentalapp.db.SessionDAO;
import io.dropwizard.hibernate.HibernateBundle;
import io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory;

import javax.ws.rs.container.DynamicFeature;
import javax.ws.rs.container.ResourceInfo;
import javax.ws.rs.core.FeatureContext;

public class LoggedInFeature implements DynamicFeature {

    private final HibernateBundle<BikeRentalAppConfiguration> hibernateBundle;

    private final SessionDAO sessionDAO;

    public LoggedInFeature(
            HibernateBundle<BikeRentalAppConfiguration> hibernateBundle,
            SessionDAO sessionDAO) {
        this.hibernateBundle = hibernateBundle;
        this.sessionDAO      = sessionDAO;
    }

    @Override
    public void configure(ResourceInfo resourceInfo, FeatureContext context) {
        if (resourceInfo.getResourceMethod().getAnnotation(LoggedIn.class)
                != null) {
            LoggedInFilter loggedInFilter = new UnitOfWorkAwareProxyFactory(
                    hibernateBundle).create(LoggedInFilter.class,
                    SessionDAO.class,
                    sessionDAO
            );
            context.register(loggedInFilter);
        }
    }

}