package com.packtpub.hibernatesearch.rest;

import javax.ws.rs.ApplicationPath;

import com.sun.jersey.api.core.PackagesResourceConfig;
import com.sun.jersey.api.json.JSONConfiguration;

/**
 * Klasa dziedziczy po "javax.ws.rs.core.Application". Rejestruje RESTowe usługi napisane w JAX-RS.
 * Nasza aplikacja ma tylko jedną usługę sieciową, patrz klasa "AppResource".
 * 
 * Adnotacja @ApplicationPath deklaruje ścieżkę, pod którą są dostępne usługi.
 */
@ApplicationPath("/rest")
public class RestfulApplication extends PackagesResourceConfig {

	public RestfulApplication() {
		// Ta paczka Javy będzie automatycznie przeszukiwana w celu odnalezienia usług JAX-RS do zarejestrowania.
		super("com.packtpub.hibernatesearch.rest");
		
		// Jersey jest implementacją JAX-RS użytą w tej aplikacji.  Jersey udostępnia parser
		// Jackson konwertujący obiekty do formatu JSON.
		getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
	}
	
}
