better use of generics in service layer and persistence list methods
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / ServiceBase.java
index b9a62e17a67eeb8055bdc4989e095295c66572af..509535861ff2bf7f80ba7607387f7aa074e67739 100644 (file)
@@ -68,8 +68,8 @@ public abstract class ServiceBase<T extends CdmBase, DAO extends ICdmEntityDao<T
 \r
     @Override\r
     @Transactional(readOnly = false)\r
-    public UUID delete(T persistentObject) throws ReferencedObjectUndeletableException {\r
-        return dao.delete(persistentObject);\r
+    public String delete(T persistentObject) {\r
+        return dao.delete(persistentObject).toString();\r
     }\r
 \r
     @Override\r
@@ -116,7 +116,7 @@ public abstract class ServiceBase<T extends CdmBase, DAO extends ICdmEntityDao<T
 \r
     @Override\r
     @Transactional(readOnly = true)\r
-    public  List<T> list(Class<? extends T> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths){\r
+    public <S extends T> List<S> list(Class<S> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths){\r
         return dao.list(type,limit, start, orderHints,propertyPaths);\r
     }\r
 \r
@@ -140,15 +140,15 @@ public abstract class ServiceBase<T extends CdmBase, DAO extends ICdmEntityDao<T
 \r
     @Override\r
     @Transactional(readOnly = true)\r
-    public  Pager<T> page(Class<? extends T> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths){\r
+    public  <S extends T> Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths){\r
         Integer numberOfResults = dao.count(type);\r
-        List<T> results = new ArrayList<T>();\r
+        List<S> results = new ArrayList<S>();\r
         pageNumber = pageNumber == null ? 0 : pageNumber;\r
         if(numberOfResults > 0) { // no point checking again  //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)\r
             Integer start = pageSize == null ? 0 : pageSize * pageNumber;\r
             results = dao.list(type, pageSize, start, orderHints,propertyPaths);\r
         }\r
-        return new DefaultPagerImpl<T>(pageNumber, numberOfResults, pageSize, results);\r
+        return new DefaultPagerImpl<S>(pageNumber, numberOfResults, pageSize, results);\r
     }\r
 \r
     @Override\r
@@ -212,5 +212,7 @@ public abstract class ServiceBase<T extends CdmBase, DAO extends ICdmEntityDao<T
     public List<T> list(T example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {\r
         return dao.list(example, includeProperties, limit, start, orderHints, propertyPaths);\r
     }\r
+    \r
+    \r
 \r
 }\r