001package co.codewizards.cloudstore.ls.rest.server;
002
003import javax.ws.rs.ApplicationPath;
004
005import org.glassfish.jersey.server.ResourceConfig;
006import org.slf4j.Logger;
007import org.slf4j.LoggerFactory;
008
009import co.codewizards.cloudstore.ls.core.provider.JavaNativeMessageBodyReader;
010import co.codewizards.cloudstore.ls.core.provider.JavaNativeMessageBodyWriter;
011import co.codewizards.cloudstore.ls.core.provider.JavaNativeWithObjectRefMessageBodyReader;
012import co.codewizards.cloudstore.ls.core.provider.JavaNativeWithObjectRefMessageBodyWriter;
013import co.codewizards.cloudstore.ls.rest.server.auth.AuthFilter;
014import co.codewizards.cloudstore.ls.rest.server.service.ClassInfoService;
015import co.codewizards.cloudstore.ls.rest.server.service.InverseServiceRequestService;
016import co.codewizards.cloudstore.ls.rest.server.service.InverseServiceResponseService;
017import co.codewizards.cloudstore.ls.rest.server.service.InvokeMethodService;
018import co.codewizards.cloudstore.ls.rest.server.service.RepoInfoService;
019import co.codewizards.cloudstore.ls.rest.server.service.TestService;
020
021/**
022 * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de
023 */
024@ApplicationPath("LocalServerRest")
025public class LocalServerRest extends ResourceConfig {
026        private static final Logger logger = LoggerFactory.getLogger(LocalServerRest.class);
027
028        static {
029                logger.debug("<static_init>: Class loaded.");
030        }
031
032    {
033                logger.debug("<init>: Instance created.");
034
035                registerClasses(
036                                // BEGIN services
037                                ClassInfoService.class,
038                                InverseServiceRequestService.class,
039                                InverseServiceResponseService.class,
040                                InvokeMethodService.class,
041                                RepoInfoService.class,
042                                TestService.class,
043                                // END services
044
045                                // BEGIN providers
046                                // providers are not services (they are infrastructure), but they are registered the same way.
047                                AuthFilter.class,
048                                JavaNativeMessageBodyReader.class,
049                                JavaNativeMessageBodyWriter.class,
050                                CloudStoreJaxbContextResolver.class,
051                                DefaultExceptionMapper.class
052                                // END providers
053                                );
054
055                register(new LocalServerRestBinder());
056
057                final ObjectRefConverterFactoryImpl objectRefConverterFactory = new ObjectRefConverterFactoryImpl();
058                register(new JavaNativeWithObjectRefMessageBodyReader(objectRefConverterFactory));
059                register(new JavaNativeWithObjectRefMessageBodyWriter(objectRefConverterFactory));
060        }
061}