package org.skyscreamer.yoga.demo.test.jersey.standalone;
import java.util.Map;
import javax.ws.rs.core.MediaType;
import org.skyscreamer.yoga.builder.YogaBuilder;
import org.skyscreamer.yoga.builder.YogaBuilderViewFactory;
import org.skyscreamer.yoga.classfinder.HibernateClassFinderStrategy;
import org.skyscreamer.yoga.demo.dao.GenericDao;
import org.skyscreamer.yoga.demo.dao.inmemory.DemoData;
import org.skyscreamer.yoga.demo.dao.inmemory.DemoDataGenericDao;
import org.skyscreamer.yoga.demo.dto.UserConfiguration;
import org.skyscreamer.yoga.demo.jaxrs.resources.AlbumResource;
import org.skyscreamer.yoga.demo.jaxrs.resources.ArtistResource;
import org.skyscreamer.yoga.demo.jaxrs.resources.SongResource;
import org.skyscreamer.yoga.demo.jaxrs.resources.UserResource;
import org.skyscreamer.yoga.demo.model.Album;
import org.skyscreamer.yoga.demo.model.Artist;
import org.skyscreamer.yoga.demo.model.Song;
import org.skyscreamer.yoga.demo.model.User;
import org.skyscreamer.yoga.demo.test.MapBeanConext;
import org.skyscreamer.yoga.demo.util.TestUtil;
import org.skyscreamer.yoga.jaxrs.resource.MetaDataController;
import org.skyscreamer.yoga.jaxrs.view.builder.SelectorBuilderMessageBodyWriter;
import org.skyscreamer.yoga.jaxrs.view.builder.StreamingJsonSelectorMessageBodyWriter;
import org.skyscreamer.yoga.jaxrs.view.builder.XmlSelectorMessageBodyWriter;
import org.skyscreamer.yoga.jersey.config.YogaMediaTypes;
import com.sun.jersey.api.core.DefaultResourceConfig;
public class DemoApplication extends DefaultResourceConfig
{
public DemoApplication()
{
DemoData data = new DemoData();
data.init();
GenericDao dao = new DemoDataGenericDao( data );
YogaBuilder builder = new YogaBuilder()
.withClassFinderStrategy( new HibernateClassFinderStrategy() )
.withAliasProperties( this.getClass().getClassLoader().getResourceAsStream( "selectorAlias.properties" ) )
.withOutputCountLimit( 2000 )
.enableYogaLinks()
.registerYogaMetaDataClasses( User.class, Album.class, Artist.class, Song.class )
.registerEntityConfigurations( new UserConfiguration( dao ) );
getSingletons().add( new AlbumResource( dao ) );
getSingletons().add( new ArtistResource( dao ) );
getSingletons().add( new SongResource( dao ) );
getSingletons().add( new UserResource( dao ) );
getSingletons().add( new MetaDataController( builder.getMetaDataRegistry() ) );
YogaBuilderViewFactory util = new YogaBuilderViewFactory( builder );
getSingletons().add( new StreamingJsonSelectorMessageBodyWriter( util ) );
getSingletons().add( new XmlSelectorMessageBodyWriter( util ) );
getSingletons().add( new SelectorBuilderMessageBodyWriter( util ) );
MapBeanConext context = new MapBeanConext();
context.register( GenericDao.class, dao );
TestUtil.setContext( context );
}
@Override
public Map<String, MediaType> getMediaTypeMappings()
{
return YogaMediaTypes.getMediaTypeMappings();
}
}