diff --git a/catalog.xml b/catalog.xml new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/enunciate.xml b/enunciate.xml new file mode 100644 index 0000000000000000000000000000000000000000..38acc62875b5ceb2eb2e945af7efa394d3d4dcfd --- /dev/null +++ b/enunciate.xml @@ -0,0 +1,29 @@ +<enunciate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://enunciate.webcohesion.com/schemas/enunciate-2.0.0-M.4.xsd"> + + <title>VIPSLogic API</title> + <description> + The VIPSLogic service API gives access to stored pest predictions and observations + </description> + <copyright>NIBIO</copyright> + <contact>Tor-Einar Skog</contact> + + <application root="/"/> + + + <modules> + <docs> + <download file="LICENSE.txt" name="NIBIO" description="The license governing this API" showLink="true"/> + </docs> + <java-xml-client> + <facet name="restricted" pattern="**"/> + </java-xml-client> + </modules> + + <api-classes> + <exclude pattern="no.nibio.vips.logic.messaging.UniversalMessagingServiceClient"/> + <exclude pattern="no.nibio.vips.util.weather.dnmipointweb.**"/> + </api-classes> + <facets> + <exclude name="restricted"/> + </facets> +</enunciate> \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4cfa5b0bacdfa21ad7eb9a221fe386a7646458d8..c746e5185bd580800423d3a82260597b1e3483f1 100755 --- a/pom.xml +++ b/pom.xml @@ -245,6 +245,17 @@ <artifactId>gt-epsg-hsql</artifactId> <version>17.2</version> </dependency> + <dependency> + <groupId>com.webcohesion.enunciate</groupId> + <artifactId>enunciate-core-annotations</artifactId> + <version>2.10.1</version> + </dependency> + + <dependency> + <groupId>com.webcohesion.enunciate</groupId> + <artifactId>enunciate-rt-util</artifactId> + <version>2.10.1</version> + </dependency> </dependencies> <build> @@ -331,6 +342,23 @@ <argLine>-Xmx6048m</argLine> </configuration> </plugin> + <plugin> + <groupId>com.webcohesion.enunciate</groupId> + <artifactId>enunciate-maven-plugin</artifactId> + <version>2.10.1</version> + <executions> + <execution> + <goals> + <!--goal>assemble</goal--> + <goal>docs</goal> + </goals> + <configuration> + <docsDir>${project.build.directory}/${project.build.finalName}/public/RESTdocs</docsDir> + </configuration> + </execution> + </executions> + + </plugin> </plugins> </build> diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/LoginController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/LoginController.java index 5ee9435ac71f61902595ab9668181ad913ca5103..9f5dde0951e54e4e1423b5eb197fc46fd3ae715c 100755 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/LoginController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/LoginController.java @@ -19,6 +19,7 @@ package no.nibio.vips.logic.controller.servlet; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeRequestUrl; import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest; import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken; @@ -42,9 +43,11 @@ import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.core.Response; import no.nibio.vips.logic.entity.UserAuthenticationType; import no.nibio.vips.logic.entity.UserUuid; import no.nibio.vips.logic.entity.VipsLogicUser; +import no.nibio.vips.logic.i18n.SessionLocaleUtil; import no.nibio.vips.logic.util.Globals; import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.util.ServletUtil; @@ -197,7 +200,7 @@ public class LoginController extends HttpServlet { } if(nextPage.indexOf(Globals.PROTOCOL) == 0) { - System.out.println("nextPage=" + nextPage); + //System.out.println("nextPage=" + nextPage); response.sendRedirect(nextPage); } else @@ -263,6 +266,48 @@ public class LoginController extends HttpServlet { request.getRequestDispatcher("/login.ftl").forward(request, response); } } + // Login from a remote resource. Return UUID + else if(request.getServletPath().contains("remotelogin")) + { + String username = request.getParameter("username"); + String password = request.getParameter("password"); + + + Map<String,String> creds = new HashMap(); + creds.put("username", username); + creds.put("password", password); + + VipsLogicUser user = SessionControllerGetter.getUserBean().authenticateUser(creds); + PrintWriter out = response.getWriter(); + if(user != null && user.getUserStatusId().equals(Globals.USER_STATUS_APPROVED)) + { + request.getSession().setAttribute("user", user); + UUID uUUID = this.handleRememberUser(request, response, user); + // All is well, return object + ObjectMapper mapper = new ObjectMapper(); + user.setUserUuid(uUUID); + mapper.writeValue(out,user); + out.close(); + } + else + { + response.setStatus(Response.Status.UNAUTHORIZED.getStatusCode()); + + if(user != null && user.getUserStatusId().equals(Globals.USER_STATUS_AWAITING_EMAIL_VERIFICATION)) + { + out.print(SessionLocaleUtil.getI18nText(request, "emailNotVerified")); + } + else if(user != null && user.getUserStatusId().equals(Globals.USER_STATUS_AWAITING_APPROVAL)) + { + out.print(SessionLocaleUtil.getI18nText(request, "pleaseAwaitApproval")); + request.getRequestDispatcher("/login.ftl").forward(request, response); + } + else + { + out.print(SessionLocaleUtil.getI18nText(request, "invalidcredentials")); + } + } + } // No login attempt. Show form else { diff --git a/src/main/java/no/nibio/vips/logic/messaging/UniversalMessagingServiceClient.java b/src/main/java/no/nibio/vips/logic/messaging/UniversalMessagingServiceClient.java index 91eb2526d2c22fac7249420ddd889bc0f03ab9c0..3c5bf66ebe33fe88a53ae147e66bbce47ef66993 100755 --- a/src/main/java/no/nibio/vips/logic/messaging/UniversalMessagingServiceClient.java +++ b/src/main/java/no/nibio/vips/logic/messaging/UniversalMessagingServiceClient.java @@ -19,12 +19,10 @@ package no.nibio.vips.logic.messaging; +import com.webcohesion.enunciate.metadata.Facet; import javax.ws.rs.Consumes; -import javax.ws.rs.FormParam; -import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; -import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Response; @@ -32,6 +30,7 @@ import javax.ws.rs.core.Response; * @copyright 2015 <a href="http://www.bioforsk.no/">Bioforsk</a> * @author Tor-Einar Skog <tor-einar.skog@bioforsk.no> */ +@Facet("restricted") @Path("/") public interface UniversalMessagingServiceClient { diff --git a/src/main/java/no/nibio/vips/logic/messaging/sms/SMSHandlingService.java b/src/main/java/no/nibio/vips/logic/messaging/sms/SMSHandlingService.java index 35d6a299713880d341868d25e64b1fc6550f50e2..93d453f00bec03d1526a809218f555f15abaaa39 100755 --- a/src/main/java/no/nibio/vips/logic/messaging/sms/SMSHandlingService.java +++ b/src/main/java/no/nibio/vips/logic/messaging/sms/SMSHandlingService.java @@ -19,11 +19,11 @@ package no.nibio.vips.logic.messaging.sms; +import com.webcohesion.enunciate.metadata.Facet; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Response; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.util.SessionControllerGetter; @@ -32,6 +32,7 @@ import no.nibio.vips.logic.util.SessionControllerGetter; * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Path("rest/sms") +@Facet("restricted") public class SMSHandlingService { /** diff --git a/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothService.java b/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothService.java index de3471840d9150db4645abcafd7ab121995132dc..dbd2c57059dde9a5a33c250548f4f4d4e432d02d 100755 --- a/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothService.java +++ b/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothService.java @@ -19,6 +19,7 @@ package no.nibio.vips.logic.modules.applefruitmoth; +import com.webcohesion.enunciate.metadata.Facet; import de.micromata.opengis.kml.v_2_2_0.Kml; import java.util.Calendar; import javax.servlet.http.HttpServletRequest; @@ -38,6 +39,7 @@ import no.nibio.vips.util.ServletUtil; * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Path("rest/applefruitmoth") +@Facet("restricted") public class AppleFruitMothService { @Context diff --git a/src/main/java/no/nibio/vips/logic/modules/barleynetblotch/BarleyNetBlotchModelService.java b/src/main/java/no/nibio/vips/logic/modules/barleynetblotch/BarleyNetBlotchModelService.java index daed2eadd514f84ef9cff7eb2624ae7b70fa6a46..3092f7625e3dea370f5cd8fbd5d3bd7993902377 100755 --- a/src/main/java/no/nibio/vips/logic/modules/barleynetblotch/BarleyNetBlotchModelService.java +++ b/src/main/java/no/nibio/vips/logic/modules/barleynetblotch/BarleyNetBlotchModelService.java @@ -19,6 +19,7 @@ package no.nibio.vips.logic.modules.barleynetblotch; +import com.webcohesion.enunciate.metadata.Facet; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -55,6 +56,7 @@ import no.nibio.vips.util.weather.WeatherDataSourceUtil; * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Path("rest/barleynetblotchmodel") +@Facet("restricted") public class BarleyNetBlotchModelService { private final static String VIPSCOREMANAGER_URL = System.getProperty("no.nibio.vips.logic.VIPSCOREMANAGER_URL"); diff --git a/src/main/java/no/nibio/vips/logic/modules/roughage/RoughageService.java b/src/main/java/no/nibio/vips/logic/modules/roughage/RoughageService.java index 32042161b8870701864640a86fd99866dc641f89..81c5f25395435568cb47c61ccc35bec8f562eb8d 100755 --- a/src/main/java/no/nibio/vips/logic/modules/roughage/RoughageService.java +++ b/src/main/java/no/nibio/vips/logic/modules/roughage/RoughageService.java @@ -19,6 +19,7 @@ package no.nibio.vips.logic.modules.roughage; +import com.webcohesion.enunciate.metadata.Facet; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Arrays; @@ -26,7 +27,6 @@ import java.util.Calendar; import java.util.Collections; import java.util.Date; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.TimeZone; @@ -60,6 +60,7 @@ import no.nibio.vips.util.weather.WeatherDataSourceUtil; * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Path("rest/roughage") +@Facet("restricted") public class RoughageService { private final static String VIPSCOREMANAGER_URL = System.getProperty("no.nibio.vips.logic.VIPSCOREMANAGER_URL"); diff --git a/src/main/java/no/nibio/vips/logic/service/LogicService.java b/src/main/java/no/nibio/vips/logic/service/LogicService.java index a13b6fb4dffac65c55197f3795873a1570184b4a..157ecd2541cf5ca7860a336a6e151c2e5186c835 100755 --- a/src/main/java/no/nibio/vips/logic/service/LogicService.java +++ b/src/main/java/no/nibio/vips/logic/service/LogicService.java @@ -20,6 +20,7 @@ package no.nibio.vips.logic.service; import com.ibm.icu.util.ULocale; +import com.webcohesion.enunciate.metadata.Facet; import java.util.TimeZone; import de.micromata.opengis.kml.v_2_2_0.Kml; import java.text.DateFormat; @@ -83,6 +84,12 @@ public class LogicService { @Context private HttpServletRequest httpServletRequest; + /** + * Get all results for one pest prediction + * @param forecastConfigurationId + * @param userUUID if the forecast is private, the correct userUUID must be supplied. + * @return + */ @GET @Path("forecastresults/{forecastConfigurationId}") @GZIP @@ -107,6 +114,13 @@ public class LogicService { } } + /** + * Get the latestDays results for one pest prediction + * @param forecastConfigurationId + * @param latestDays + * @param userUUID if the forecast is private, the correct userUUID must be supplied. + * @return + */ @GET @Path("forecastresults/{forecastConfigurationId}/{latestDays}") @GZIP @@ -133,7 +147,6 @@ public class LogicService { } /** - * * @param organizationId * @param cropOrganismIds * @return @@ -142,6 +155,7 @@ public class LogicService { @Path("forecastconfigurationsummaries/{organizationId}") @GZIP @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getForecastSummaries( @PathParam("organizationId") Integer organizationId, @QueryParam("cropOrganismId") List<Integer> cropOrganismIds @@ -160,6 +174,7 @@ public class LogicService { @Path("forecastconfigurationsummaries/private/{userUUID}") @GZIP @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getForecastSummaries( @PathParam("userUUID") String userUUID ) @@ -177,10 +192,11 @@ public class LogicService { } } - + /** - * Returns the requested forecast configuration + * Get the configuration of the specified forecast * @param forecastConfigurationId + * @param userUUID if the forecast is private, the correct userUUID must be supplied. * @return */ @GET @@ -207,6 +223,7 @@ public class LogicService { @GET @Path("forecastconfigurations/private/{userUUID}") @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getPrivateForecastConfigurations(@PathParam("userUUID") String userUUID) { try @@ -234,8 +251,8 @@ public class LogicService { * Returns a list of forecasts for given organization * @param organizationId * @param cropOrganismIds - * @param from - * @param to + * @param from format="yyyy-MM-dd" + * @param to format="yyyy-MM-dd" * @return */ @GET @@ -294,6 +311,7 @@ public class LogicService { @GET @Path("evaluatepassword/{password}") @Produces("text/plain;charset=UTF-8") + @Facet("restricted") public Response evaluatePassord(@PathParam("password") String password) { ULocale currentLocale = SessionLocaleUtil.getCurrentLocale(httpServletRequest); @@ -312,6 +330,7 @@ public class LogicService { @GET @Path("forecastmodelconfiguration/{forecastConfigurationId}") @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getForecastModelConfiguration(@PathParam("forecastConfigurationId") Long forecastConfigurationId) { List<ForecastModelConfiguration> forecastModelConfigurations = SessionControllerGetter.getForecastBean().getForecastModelConfigurations(forecastConfigurationId); @@ -328,6 +347,7 @@ public class LogicService { @Path("forecastresults/aggregate/{organizationId}") @GZIP @Produces("application/vnd.google-earth.kml+xml;charset=utf-8") + @Facet("restricted") public Response getForecastResultsAggregate( @PathParam("organizationId") Integer organizationId, @QueryParam("cropCategoryId") List<Integer> cropCategoryIds) @@ -347,7 +367,7 @@ public class LogicService { /** * * @param poiId - * @return + * @return The latest forecast results (within the current season) for a given Point Of Interest (poi) */ @GET @Path("forecastresults/latest/poi/{poiId}") @@ -360,7 +380,7 @@ public class LogicService { } /** - * + * Get a list of weather stations for a given organization * @param excludeWeatherStationId * @param highlightWeatherStationId * @param organizationId @@ -376,11 +396,11 @@ public class LogicService { } /** - * + * Get a KML list of locations (pois) for a given organization * @param excludePoiId * @param highlightPoiId * @param organizationId - * @return + * @return KML */ @GET @Path("pois/kml/{organizationId}") @@ -393,7 +413,7 @@ public class LogicService { /** - * + * Get a list of locations (pois) for a given organization * @param organizationId * @return */ @@ -410,7 +430,7 @@ public class LogicService { /** * * @param pointOfInterestId - * @return + * @return a particular POI (Point of interest) */ @GET @Path("poi/{pointOfInterestId}") @@ -422,7 +442,7 @@ public class LogicService { } /** - * + * Find a POI (Point of interest) by name * @param poiName * @return */ @@ -442,6 +462,7 @@ public class LogicService { @GET @Path("poi/user/") @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getPoisForCurrentUser() { VipsLogicUser user = (VipsLogicUser) httpServletRequest.getSession().getAttribute("user"); @@ -456,6 +477,7 @@ public class LogicService { @GET @Path("organism/list") @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getOrganismList() { List<Organism> organismList = SessionControllerGetter.getOrganismBean().getOrganismSubTree(null); @@ -463,7 +485,7 @@ public class LogicService { } /** - * + * Look up an organism by its latin name * @param keywords * @return */ @@ -478,12 +500,13 @@ public class LogicService { } /** - * + * Get a list of crops * @return */ @GET @Path("organism/crop/list") @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getCropOrganismList() { List<Organism> organismList = SessionControllerGetter.getOrganismBean().getAllCrops(); @@ -498,6 +521,7 @@ public class LogicService { @GET @Path("message/{messageId}") @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getMessage(@PathParam("messageId") Integer messageId) { Message message = SessionControllerGetter.getMessageBean().getMessage(messageId); @@ -517,6 +541,7 @@ public class LogicService { @Path("message/list/{organizationId}") @GZIP @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getMessageList( @QueryParam("publishedFrom") String publishedFrom , @QueryParam("publishedTo") String publishedTo, @QueryParam("locale") String locale, @@ -557,6 +582,7 @@ public class LogicService { @Path("message/list/{organizationId}/tagfilter") @GZIP @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getMessageListWithTags(@QueryParam("tagId") List<Integer> tagIds, @PathParam("organizationId") Integer organizationId) { List<Message> messageListWithTags = SessionControllerGetter.getMessageBean().getCurrentFilteredMessagesForOrganization(tagIds, organizationId); @@ -570,6 +596,7 @@ public class LogicService { @GET @Path("messagetag/list") @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getMessageTagList() { List<MessageTag> messageTags = SessionControllerGetter.getMessageBean().getMessageTagList(); @@ -577,11 +604,11 @@ public class LogicService { } /** - * + * Get a list of observations for a given organization * @param organizationId * @return */ - @GET + /*@GET @Path("observation") @GZIP @Produces("application/json;charset=UTF-8") @@ -589,10 +616,10 @@ public class LogicService { { List<Observation> observations = SessionControllerGetter.getObservationBean().getObservations(organizationId); return Response.ok().entity(observations).build(); - } + }*/ /** - * + * Not ready for production use! * @param latitude * @param longitude * @param startTimeStr @@ -604,6 +631,7 @@ public class LogicService { @GET @Path("weather/calculation/solarradiation/json") @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getCalculatedSolarRadiationAtLocationAndTimeJSON( @QueryParam("latitude") Double latitude, @QueryParam("longitude") Double longitude, @@ -633,7 +661,7 @@ public class LogicService { } /** - * + * Not ready for production use! * @param latitude * @param longitude * @param startTimeStr @@ -645,6 +673,7 @@ public class LogicService { @GET @Path("weather/calculation/solarradiation/csv") @Produces("text/csv;charset=UTF-8") + @Facet("restricted") public Response getCalculatedSolarRadiationAtLocationAndTimeCSV( @QueryParam("latitude") Double latitude, @QueryParam("longitude") Double longitude, @@ -676,7 +705,7 @@ public class LogicService { } /** - * + * Not ready for production use! * @param latitude * @param longitude * @param startTimeStr @@ -712,6 +741,7 @@ public class LogicService { @GET @Path("batch/updateforecastcaches") @Produces("text/plain;charset=UTF-8") + @Facet("restricted") public Response updateForecastCaches() { //System.out.println(httpServletRequest.getHeader("X-Forwarded-For")); @@ -737,6 +767,7 @@ public class LogicService { @GET @Path("user/uuid/{userUUID}") @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getVipsLogicUserByUUID(@PathParam("userUUID") String userUUID) { try @@ -759,13 +790,14 @@ public class LogicService { } /** - * + * TODO: Must be authenticated or not?? * @param userUUID * @return */ @DELETE @Path("user/uuid/{userUUID}") @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response deleteVipsLogicUserUUID(@PathParam("userUUID") String userUUID) { try @@ -788,6 +820,7 @@ public class LogicService { @GET @Path("organism/croppest/{cropOrganismId}") @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getCropPest(@PathParam("cropOrganismId") Integer cropOrganismId) { CropPest retVal = SessionControllerGetter.getOrganismBean().getCropPestRecursive(cropOrganismId,true); @@ -809,6 +842,7 @@ public class LogicService { @GET @Path("organism/cropcategory/{organizationId}") @Produces("application/json;charset=UTF-8") + @Facet("restricted") public Response getCropCategories(@PathParam("organizationId") Integer organizationId) { if(organizationId != null) @@ -822,7 +856,7 @@ public class LogicService { } /** - * Get the client to use for calling VIPSCoreManager REST services programatically + * Get the client to use for calling VIPSCoreManager REST services programmatically * @return */ private ManagerResource getManagerResource() diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationService.java b/src/main/java/no/nibio/vips/logic/service/ObservationService.java index b11eac413df6d264173dda8c0400d62d29cc9c79..24a81647701723b8cf01dc4beba02e7d4c5dde42 100755 --- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java +++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java @@ -19,6 +19,7 @@ package no.nibio.vips.logic.service; +import com.webcohesion.enunciate.metadata.Facet; import java.io.IOException; import java.net.URI; import java.text.ParseException; @@ -49,6 +50,7 @@ import org.jboss.resteasy.annotations.GZIP; * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Path("rest/observation") +@Facet("restricted") public class ObservationService { @Context diff --git a/src/main/java/no/nibio/vips/logic/service/VIPSMobileService.java b/src/main/java/no/nibio/vips/logic/service/VIPSMobileService.java index b53c73e2fccb7958c4d795cb6e6355ce8a3f376f..2569197651fdbaa9bbb0e78e23040fa6696f517b 100755 --- a/src/main/java/no/nibio/vips/logic/service/VIPSMobileService.java +++ b/src/main/java/no/nibio/vips/logic/service/VIPSMobileService.java @@ -19,7 +19,7 @@ package no.nibio.vips.logic.service; -import java.text.SimpleDateFormat; +import com.webcohesion.enunciate.metadata.Facet; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -31,7 +31,6 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; import java.util.TimeZone; -import javax.json.JsonObject; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -70,6 +69,7 @@ import org.jboss.resteasy.spi.HttpRequest; * @copyright 2017 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ +@Facet("restricted") @Path("rest/vipsmobile") public class VIPSMobileService { diff --git a/src/main/java/no/nibio/vips/logic/service/WeatherProxyService.java b/src/main/java/no/nibio/vips/logic/service/WeatherProxyService.java index 792acb49157b774b4947e276b6368c948d4bbd1b..7be58c495b86a601b536bc9316ded2bb1a7a282b 100755 --- a/src/main/java/no/nibio/vips/logic/service/WeatherProxyService.java +++ b/src/main/java/no/nibio/vips/logic/service/WeatherProxyService.java @@ -21,6 +21,7 @@ package no.nibio.vips.logic.service; import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.GeometryFactory; +import com.webcohesion.enunciate.metadata.Facet; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.text.ParseException; @@ -41,7 +42,6 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; import no.nibio.vips.entity.PointWeatherObservationList; import no.nibio.vips.entity.WeatherObservation; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.vips.util.weather.ALabDataParser; import no.nibio.vips.util.weather.FruitWebDavisDataParser; @@ -224,6 +224,7 @@ public class WeatherProxyService { * @param endDateGET * @return */ + @Facet("restricted") @GET @POST @Path("dmipointweb/{stationId}") @@ -295,6 +296,7 @@ public class WeatherProxyService { } } + @Facet("restricted") @GET @Path("metno/thredds/point/") @GZIP @@ -348,6 +350,7 @@ public class WeatherProxyService { * @param elementMeasurementTypes * @return */ + @Facet("restricted") @GET @Path("metno/thredds/grid/") @GZIP diff --git a/src/main/java/no/nibio/vips/observationdata/ObservationDataService.java b/src/main/java/no/nibio/vips/observationdata/ObservationDataService.java index db79860e55d4c40e79114e8e3308d66bda7f74af..137936753347fca97cc9d732fb3910c93875ef5b 100755 --- a/src/main/java/no/nibio/vips/observationdata/ObservationDataService.java +++ b/src/main/java/no/nibio/vips/observationdata/ObservationDataService.java @@ -22,9 +22,8 @@ package no.nibio.vips.observationdata; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import com.ibm.icu.util.ULocale; +import com.webcohesion.enunciate.metadata.Facet; import java.io.IOException; -import java.math.BigDecimal; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; @@ -45,6 +44,7 @@ import no.nibio.vips.logic.i18n.SessionLocaleUtil; * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ +@Facet("restricted") @Path("rest/observationdata") public class ObservationDataService { @PersistenceContext(unitName="VIPSLogic-PU") diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 891735b0b77e44aacd697b0db5677f8debda5814..dff81c3e22c4d0c8dcb561b45e9d68fd4dcf373a 100755 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -98,6 +98,7 @@ <url-pattern>/login</url-pattern> <url-pattern>/logout</url-pattern> <url-pattern>/loginsubmit</url-pattern> + <url-pattern>/remotelogin</url-pattern> <url-pattern>/oauth2callback</url-pattern> <url-pattern>/closeAndReloadParentAfterLogin</url-pattern> </servlet-mapping>