// Path: acmeair-booking-service/src/main/java/com/acmeair/config/AcmeAirConfiguration.java
// @RestSchema(schemaId = "config")
// @Path("/info/config")
// @Api(value = "Booking Service Configuration Information Service", produces = MediaType.APPLICATION_JSON)
// public class AcmeAirConfiguration {
// 
//     Logger logger = Logger.getLogger(AcmeAirConfiguration.class.getName());
// 
//     @Autowired
//     private BookingService bs;
// 
//     @Autowired
//     private FlightService flightService;
// 
//     public AcmeAirConfiguration() {
//         super();
//     }
// 
//     @GET
//     @Path("/dataServices")
//     @Produces(MediaType.APPLICATION_JSON)
//     public ArrayList<ServiceData> getDataServiceInfo() {
//         // We don't use the ServiceLocator to lookup the DataService
//         ArrayList<ServiceData> list = new ArrayList<>();
//         return list;
//     }
// 
//     @GET
//     @Path("/activeDataService")
//     @Produces(MediaType.APPLICATION_JSON)
//     public String getActiveDataServiceInfo() {
//         logger.fine("Get active Data Service info");
//         // We just have one implementation here
//         return "Morphia";
//     }
// 
//     @GET
//     @Path("/runtime")
//     @Produces("application/json")
//     public ArrayList<ServiceData> getRuntimeInfo() {
//         try {
//             logger.fine("Getting Runtime info");
//             ArrayList<ServiceData> list = new ArrayList<ServiceData>();
//             ServiceData data = new ServiceData();
//             data.name = "Runtime";
//             data.description = "Java";
//             list.add(data);
// 
//             data = new ServiceData();
//             data.name = "Version";
//             data.description = System.getProperty("java.version");
//             list.add(data);
// 
//             data = new ServiceData();
//             data.name = "Vendor";
//             data.description = System.getProperty("java.vendor");
//             list.add(data);
// 
//             return list;
//         } catch (Exception e) {
//             e.printStackTrace();
//             return null;
//         }
//     }
// 
//     class ServiceData {
//         public String name = "";
// 
//         public String description = "";
//     }
// 
//     @GET
//     @Path("/countBookings")
//     @Produces("application/json")
//     public Long countBookings() {
//         try {
//             Long count = bs.count();
//             return count;
//         } catch (Exception e) {
//             e.printStackTrace();
//             return -1L;
//         }
//     }
// 
//     @GET
//     @Path("/countFlights")
//     @Produces("application/json")
//     public Long countFlights() {
//         try {
//             Long count = flightService.countFlights();
//             return count;
//         } catch (Exception e) {
//             e.printStackTrace();
//             return -1L;
//         }
//     }
// 
//     @GET
//     @Path("/countFlightSegments")
//     @Produces("application/json")
//     public Long countFlightSegments() {
//         try {
//             Long count = flightService.countFlightSegments();
//             return count;
//         } catch (Exception e) {
//             e.printStackTrace();
//             return -1L;
//         }
//     }
// 
//     @GET
//     @Path("/countAirports")
//     @Produces("application/json")
//     public Long countAirports() {
//         try {
//             Long count = flightService.countAirports();
//             return count;
//         } catch (Exception e) {
//             e.printStackTrace();
//             return -1L;
//         }
//     }
// 
// }
// 
// Path: acmeair-booking-service/src/main/java/com/acmeair/config/LoaderREST.java
// @RestSchema(schemaId = "loader")
// @Path("/info/loader")
// @Api(value = "Customer Service User Information Loading Service", produces = MediaType.TEXT_PLAIN)
// public class LoaderREST {
// 
//     @Autowired
//     private Loader loader;
// 
//     @GET
//     @Path("/query")
//     @Produces(MediaType.TEXT_PLAIN)
//     public String queryLoader() {
//         String response = loader.queryLoader();
//         return response;
//     }
// 
//     @GET
//     @Path("/load")
//     @Produces(MediaType.TEXT_PLAIN)
//     public String loadDB(@DefaultValue("-1") @QueryParam("numCustomers") long numCustomers) {
//         String response = loader.loadDB(numCustomers);
//         return response;
//     }
// }
// 
// Path: acmeair-common/src/main/java/com/acmeair/problems/ProblemInjectFilter.java
// public class ProblemInjectFilter implements ContainerRequestFilter {
//     private ProblemInjector problemInjector = new ProblemInjector();
//     
//     @Override
//     public void filter(ContainerRequestContext requestContext) throws IOException {
//         problemInjector.handleRequest(new ContainerRequest(requestContext));
//     }
//     
//     class ContainerRequest implements Request {
//         private ContainerRequestContext requestContext;
//         
//         ContainerRequest(ContainerRequestContext requestContext) {
//              this.requestContext = requestContext;
//         }
//     
//     
//         @Override
//         public String getHeader(String header) {
//             return requestContext.getHeaderString(header);
//         }
//     }
// }


import com.acmeair.config.AcmeAirConfiguration;
import com.acmeair.config.LoaderREST;
import com.acmeair.problems.ProblemInjectFilter;
import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.jaxrs.listing.ApiListingResource;
import io.swagger.jaxrs.listing.SwaggerSerializers;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.servlet.ServletProperties;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.annotation.PostConstruct;
package com.acmeair.web;



@Configuration
@Primary
public class AcmeAirApp extends ResourceConfig {

    @Value("${spring.jersey.application-path:/}")
    private String apiPath;

    public AcmeAirApp() {
        registerClasses(BookingsREST.class, FlightsREST.class);
// Path: acmeair-booking-service/src/main/java/com/acmeair/config/AcmeAirConfiguration.java
// @RestSchema(schemaId = "config")
// @Path("/info/config")
// @Api(value = "Booking Service Configuration Information Service", produces = MediaType.APPLICATION_JSON)
// public class AcmeAirConfiguration {
// 
//     Logger logger = Logger.getLogger(AcmeAirConfiguration.class.getName());
// 
//     @Autowired
//     private BookingService bs;
// 
//     @Autowired
//     private FlightService flightService;
// 
//     public AcmeAirConfiguration() {
//         super();
//     }
// 
//     @GET
//     @Path("/dataServices")
//     @Produces(MediaType.APPLICATION_JSON)
//     public ArrayList<ServiceData> getDataServiceInfo() {
//         // We don't use the ServiceLocator to lookup the DataService
//         ArrayList<ServiceData> list = new ArrayList<>();
//         return list;
//     }
// 
//     @GET
//     @Path("/activeDataService")
//     @Produces(MediaType.APPLICATION_JSON)
//     public String getActiveDataServiceInfo() {
//         logger.fine("Get active Data Service info");
//         // We just have one implementation here
//         return "Morphia";
//     }
// 
//     @GET
//     @Path("/runtime")
//     @Produces("application/json")
//     public ArrayList<ServiceData> getRuntimeInfo() {
//         try {
//             logger.fine("Getting Runtime info");
//             ArrayList<ServiceData> list = new ArrayList<ServiceData>();
//             ServiceData data = new ServiceData();
//             data.name = "Runtime";
//             data.description = "Java";
//             list.add(data);
// 
//             data = new ServiceData();
//             data.name = "Version";
//             data.description = System.getProperty("java.version");
//             list.add(data);
// 
//             data = new ServiceData();
//             data.name = "Vendor";
//             data.description = System.getProperty("java.vendor");
//             list.add(data);
// 
//             return list;
//         } catch (Exception e) {
//             e.printStackTrace();
//             return null;
//         }
//     }
// 
//     class ServiceData {
//         public String name = "";
// 
//         public String description = "";
//     }
// 
//     @GET
//     @Path("/countBookings")
//     @Produces("application/json")
//     public Long countBookings() {
//         try {
//             Long count = bs.count();
//             return count;
//         } catch (Exception e) {
//             e.printStackTrace();
//             return -1L;
//         }
//     }
// 
//     @GET
//     @Path("/countFlights")
//     @Produces("application/json")
//     public Long countFlights() {
//         try {
//             Long count = flightService.countFlights();
//             return count;
//         } catch (Exception e) {
//             e.printStackTrace();
//             return -1L;
//         }
//     }
// 
//     @GET
//     @Path("/countFlightSegments")
//     @Produces("application/json")
//     public Long countFlightSegments() {
//         try {
//             Long count = flightService.countFlightSegments();
//             return count;
//         } catch (Exception e) {
//             e.printStackTrace();
//             return -1L;
//         }
//     }
// 
//     @GET
//     @Path("/countAirports")
//     @Produces("application/json")
//     public Long countAirports() {
//         try {
//             Long count = flightService.countAirports();
//             return count;
//         } catch (Exception e) {
//             e.printStackTrace();
//             return -1L;
//         }
//     }
// 
// }
// 
// Path: acmeair-booking-service/src/main/java/com/acmeair/config/LoaderREST.java
// @RestSchema(schemaId = "loader")
// @Path("/info/loader")
// @Api(value = "Customer Service User Information Loading Service", produces = MediaType.TEXT_PLAIN)
// public class LoaderREST {
// 
//     @Autowired
//     private Loader loader;
// 
//     @GET
//     @Path("/query")
//     @Produces(MediaType.TEXT_PLAIN)
//     public String queryLoader() {
//         String response = loader.queryLoader();
//         return response;
//     }
// 
//     @GET
//     @Path("/load")
//     @Produces(MediaType.TEXT_PLAIN)
//     public String loadDB(@DefaultValue("-1") @QueryParam("numCustomers") long numCustomers) {
//         String response = loader.loadDB(numCustomers);
//         return response;
//     }
// }
// 
// Path: acmeair-common/src/main/java/com/acmeair/problems/ProblemInjectFilter.java
// public class ProblemInjectFilter implements ContainerRequestFilter {
//     private ProblemInjector problemInjector = new ProblemInjector();
//     
//     @Override
//     public void filter(ContainerRequestContext requestContext) throws IOException {
//         problemInjector.handleRequest(new ContainerRequest(requestContext));
//     }
//     
//     class ContainerRequest implements Request {
//         private ContainerRequestContext requestContext;
//         
//         ContainerRequest(ContainerRequestContext requestContext) {
//              this.requestContext = requestContext;
//         }
//     
//     
//         @Override
//         public String getHeader(String header) {
//             return requestContext.getHeaderString(header);
//         }
//     }
// }


// Path: acmeair-booking-service/src/main/java/com/acmeair/web/AcmeAirApp.java
import com.acmeair.config.AcmeAirConfiguration;
import com.acmeair.config.LoaderREST;
import com.acmeair.problems.ProblemInjectFilter;
import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.jaxrs.listing.ApiListingResource;
import io.swagger.jaxrs.listing.SwaggerSerializers;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.servlet.ServletProperties;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.annotation.PostConstruct;

package com.acmeair.web;



@Configuration
@Primary
public class AcmeAirApp extends ResourceConfig {

    @Value("${spring.jersey.application-path:/}")
    private String apiPath;

    public AcmeAirApp() {
        registerClasses(BookingsREST.class, FlightsREST.class);
        registerClasses(LoaderREST.class, AcmeAirConfiguration.class);