sdi-service/src/main/java/org/gcube/spatial/data/sdi/SDIService.java

64 lines
1.9 KiB
Java

package org.gcube.spatial.data.sdi;
import java.net.URL;
import javax.ws.rs.ApplicationPath;
import org.gcube.smartgears.ContextProvider;
import org.gcube.smartgears.configuration.container.ContainerConfiguration;
import org.gcube.smartgears.context.application.ApplicationContext;
import org.gcube.spatial.data.sdi.model.ServiceConstants;
import org.gcube.spatial.data.sdi.rest.GeoNetwork;
import org.glassfish.jersey.server.ResourceConfig;
import io.swagger.jaxrs.config.BeanConfig;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@ApplicationPath(ServiceConstants.APPLICATION)
public class SDIService extends ResourceConfig{
public SDIService() {
super();
packages("org.gcube.spatial.data");
register(io.swagger.jaxrs.listing.ApiListingResource.class);
register(io.swagger.jaxrs.listing.SwaggerSerializers.class);
ApplicationContext context=ContextProvider.get();
ContainerConfiguration configuration=context.container().configuration();
String hostName=configuration.hostname();
Integer port=configuration.port();
try{
URL resourceUrl = context.application().getResource("/WEB-INF/config.properties");
LocalConfiguration.init(resourceUrl);
}catch(Throwable t){
log.debug("Listing available paths");
for(Object obj:context.application().getResourcePaths("/WEB-INF"))
log.debug("OBJ : {} ",obj);
throw new RuntimeException("Unable to load configuration properties",t);
}
//SWAGGER
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0.0");
beanConfig.setSchemes(new String[]{"http","https"});
beanConfig.setHost(hostName+":"+port);
beanConfig.setBasePath("/gcube/service/");
beanConfig.setResourcePackage(GeoNetwork.class.getPackage().getName());
beanConfig.setTitle("SDI Service");
beanConfig.setDescription("REST Interface towards SDI facilities");
beanConfig.setPrettyPrint(true);
beanConfig.setScan(true);
}
}