refactoring taxon controllers, reducing code duplication
[cdmlib.git] / cdmlib-remote / src / main / java / eu / etaxonomy / cdm / remote / controller / DescriptionListPortalController.java
index ff99373534b9bd2ddcee9554c9afc6c100210daa..5e4dcb965de93e96b8edc40fc761c2eabec224e2 100644 (file)
@@ -66,18 +66,19 @@ public class DescriptionListPortalController extends IdentifiableListController<
             "elements.$",\r
             "elements.annotations",\r
             "elements.markers",\r
-            "elements.states.$",\r
+            "elements.stateData.$",\r
             "elements.sources.citation.authorTeam",\r
             "elements.sources.nameUsedInSource",\r
             "elements.multilanguageText",\r
             "elements.media",\r
+            "elements.kindOfUnit"\r
     });\r
 \r
     protected static final List<String> DESCRIPTION_ELEMENT_INIT_STRATEGY = Arrays.asList(new String []{\r
             "$",\r
             "annotations",\r
             "markers",\r
-            "states.$",\r
+            "stateData.$",\r
             "sources.citation.authorTeam",\r
             "sources.nameUsedInSource",\r
             "multilanguageText",\r
@@ -125,7 +126,7 @@ public class DescriptionListPortalController extends IdentifiableListController<
     * @return\r
     * @throws IOException\r
     */\r
-   @RequestMapping(value = "/portal/descriptionElement/find", method = RequestMethod.GET)\r
+   @RequestMapping(value = "//portal/descriptionElement/find", method = RequestMethod.GET) // mapped as absolute path, see CdmAntPathMatcher\r
    public Pager<DescriptionElementBase> doFindDescriptionElements(\r
            @RequestParam(value = "query", required = true) String queryString,\r
            @RequestParam(value = "type", required = false) Class<? extends DescriptionElementBase> type,\r
@@ -160,7 +161,7 @@ public class DescriptionListPortalController extends IdentifiableListController<
     * @return\r
     * @throws IOException\r
     */\r
-   @RequestMapping(value = "/portal/descriptionElement/byFeature", method = {RequestMethod.GET, RequestMethod.POST})\r
+   @RequestMapping(value = "//portal/descriptionElement/byFeature", method = {RequestMethod.GET, RequestMethod.POST}) // mapped as absolute path, see CdmAntPathMatcher\r
    public Pager<DescriptionElementBase> doPageDescriptionElementsByFeature(\r
            @RequestParam(value = "features", required = false) DefinedTermBaseList<Feature> features,\r
            @RequestParam(value = "descriptionType", required = true) Class<? extends DescriptionBase> descriptionType,\r
@@ -174,6 +175,10 @@ public class DescriptionListPortalController extends IdentifiableListController<
        PagerParameters pagerParams = new PagerParameters(pageSize, pageNumber);\r
        pagerParams.normalizeAndValidate(response);\r
 \r
+       if(features == null){\r
+           features = new DefinedTermBaseList<Feature>();\r
+       }\r
+\r
        Pager<DescriptionElementBase> pager = service.pageDescriptionElements(null, descriptionType, features.asSet(),\r
                type, pagerParams.getPageSize(), pagerParams.getPageIndex(), DESCRIPTION_ELEMENT_INIT_STRATEGY);\r
 \r
@@ -193,7 +198,7 @@ public class DescriptionListPortalController extends IdentifiableListController<
     * @return\r
     * @throws IOException\r
     */\r
-   @RequestMapping(value = "/portal/descriptionElement/byTaxon", method = {RequestMethod.GET, RequestMethod.POST})\r
+   @RequestMapping(value = "//portal/descriptionElement/byTaxon", method = {RequestMethod.GET, RequestMethod.POST}) // mapped as absolute path, see CdmAntPathMatcher\r
    public <T extends DescriptionElementBase> Pager<T> getDescriptionElementsForTaxon(\r
            @RequestParam(value = "taxon", required = true) UUID taxon_uuid,\r
            @RequestParam(value = "features", required = false) DefinedTermBaseList<Feature> features,\r