diff --git a/src/services/core/services-impl/src/main/java/org/geoserver/geofence/services/AdminRuleAdminServiceImpl.java b/src/services/core/services-impl/src/main/java/org/geoserver/geofence/services/AdminRuleAdminServiceImpl.java index f3135e3e..056e5dc5 100644 --- a/src/services/core/services-impl/src/main/java/org/geoserver/geofence/services/AdminRuleAdminServiceImpl.java +++ b/src/services/core/services-impl/src/main/java/org/geoserver/geofence/services/AdminRuleAdminServiceImpl.java @@ -236,36 +236,34 @@ public long count(RuleFilter filter) { // ========================================================================= // Search stuff - private Search buildRuleSearch(Search searchCriteria, RuleFilter filter) { + private Search buildRuleSearch(Search search, RuleFilter filter) { if(filter != null) { - addStringCriteria(searchCriteria, "username", filter.getUser()); - addStringCriteria(searchCriteria, "rolename", filter.getRole()); - addCriteria(searchCriteria, "instance", filter.getInstance()); + addStringCriteria(search, "username", filter.getUser()); + addStringCriteria(search, "rolename", filter.getRole()); + addCriteria(search, search.addJoin("instance"), filter.getInstance()); - addStringCriteria(searchCriteria, "workspace", filter.getWorkspace()); + addStringCriteria(search, "workspace", filter.getWorkspace()); } - return searchCriteria; + return search; } - - //========================================================================= private Search buildFixedRuleSearch(RuleFilter filter) { - Search searchCriteria = ruleDAO.createSearch(); + Search search = ruleDAO.createSearch(); if(filter != null) { - addFixedStringCriteria(searchCriteria, "username", filter.getUser()); - addFixedStringCriteria(searchCriteria, "rolename", filter.getRole()); - addFixedCriteria(searchCriteria, "instance", filter.getInstance()); + addFixedStringCriteria(search, "username", filter.getUser()); + addFixedStringCriteria(search, "rolename", filter.getRole()); + addFixedCriteria(search, search.addJoin("instance"), filter.getInstance()); - addFixedStringCriteria(searchCriteria, "workspace", filter.getWorkspace()); + addFixedStringCriteria(search, "workspace", filter.getWorkspace()); } - return searchCriteria; + return search; } // ========================================================================== diff --git a/src/services/core/services-impl/src/main/java/org/geoserver/geofence/services/RuleAdminServiceImpl.java b/src/services/core/services-impl/src/main/java/org/geoserver/geofence/services/RuleAdminServiceImpl.java index d767e064..355e5c32 100644 --- a/src/services/core/services-impl/src/main/java/org/geoserver/geofence/services/RuleAdminServiceImpl.java +++ b/src/services/core/services-impl/src/main/java/org/geoserver/geofence/services/RuleAdminServiceImpl.java @@ -172,7 +172,8 @@ public void deleteRulesByRole(String rolename) throws NotFoundServiceEx { @Override public void deleteRulesByInstance(long instanceId) throws NotFoundServiceEx { Search searchCriteria = ruleDAO.createSearch(); - searchCriteria.addFilterEqual("instance.id", instanceId); + Search.JoinInfo instance = searchCriteria.addJoin("instance"); + searchCriteria.addFilterEqual(instance, "id", instanceId); List list = ruleDAO.search(searchCriteria); for (Rule rule : list) { @@ -313,39 +314,39 @@ public long count(RuleFilter filter) { // Search stuff private Search buildRuleSearch(RuleFilter filter) { - Search searchCriteria = ruleDAO.createSearch(); + Search search = ruleDAO.createSearch(); if(filter != null) { - addStringCriteria(searchCriteria, "username", filter.getUser()); - addStringCriteria(searchCriteria, "rolename", filter.getRole()); - addCriteria(searchCriteria, "instance", filter.getInstance()); - - addStringCriteria(searchCriteria, "service", filter.getService()); // see class' javadoc - addStringCriteria(searchCriteria, "request", filter.getRequest()); // see class' javadoc - addStringCriteria(searchCriteria, "workspace", filter.getWorkspace()); - addStringCriteria(searchCriteria, "layer", filter.getLayer()); + addStringCriteria(search, "username", filter.getUser()); + addStringCriteria(search, "rolename", filter.getRole()); + addCriteria(search, search.addJoin("instance"), filter.getInstance()); + + addStringCriteria(search, "service", filter.getService()); // see class' javadoc + addStringCriteria(search, "request", filter.getRequest()); // see class' javadoc + addStringCriteria(search, "workspace", filter.getWorkspace()); + addStringCriteria(search, "layer", filter.getLayer()); } - return searchCriteria; + return search; } //========================================================================= private Search buildFixedRuleSearch(RuleFilter filter) { - Search searchCriteria = ruleDAO.createSearch(); + Search search = ruleDAO.createSearch(); if(filter != null) { - addFixedStringCriteria(searchCriteria, "username", filter.getUser()); - addFixedStringCriteria(searchCriteria, "rolename", filter.getRole()); - addFixedCriteria(searchCriteria, "instance", filter.getInstance()); - - addFixedStringCriteria(searchCriteria, "service", filter.getService()); // see class' javadoc - addFixedStringCriteria(searchCriteria, "request", filter.getRequest()); // see class' javadoc - addFixedStringCriteria(searchCriteria, "workspace", filter.getWorkspace()); - addFixedStringCriteria(searchCriteria, "layer", filter.getLayer()); + addFixedStringCriteria(search, "username", filter.getUser()); + addFixedStringCriteria(search, "rolename", filter.getRole()); + addFixedCriteria(search, search.addJoin("instance"), filter.getInstance()); + + addFixedStringCriteria(search, "service", filter.getService()); // see class' javadoc + addFixedStringCriteria(search, "request", filter.getRequest()); // see class' javadoc + addFixedStringCriteria(search, "workspace", filter.getWorkspace()); + addFixedStringCriteria(search, "layer", filter.getLayer()); } - return searchCriteria; + return search; } diff --git a/src/services/core/services-impl/src/main/java/org/geoserver/geofence/services/util/FilterUtils.java b/src/services/core/services-impl/src/main/java/org/geoserver/geofence/services/util/FilterUtils.java index d8f3f3a0..f03b55e0 100644 --- a/src/services/core/services-impl/src/main/java/org/geoserver/geofence/services/util/FilterUtils.java +++ b/src/services/core/services-impl/src/main/java/org/geoserver/geofence/services/util/FilterUtils.java @@ -98,32 +98,32 @@ List filterByAddress(RuleFilter filter, List rules) * * We're dealing with IDs here, so we'll suppose that the related object id field is called "id". */ - public static void addCriteria(Search search, String fieldName, RuleFilter.IdNameFilter filter) { + public static void addCriteria(Search search, Search.JoinInfo join, RuleFilter.IdNameFilter filter) { switch (filter.getType()) { case ANY: break; // no filtering case DEFAULT: - search.addFilterNull(fieldName); + search.addFilterNull(join.getField()); break; case IDVALUE: if(filter.isIncludeDefault()) { search.addFilterOr( - search.isNull(fieldName), - search.isEqual(fieldName + ".id", filter.getId())); + search.isNull(join.getField()), + search.isEqual(join, "id", filter.getId())); } else { - search.addFilterEqual(fieldName + ".id", filter.getId()); + search.addFilterEqual(join , "id", filter.getId()); } break; case NAMEVALUE: if(filter.isIncludeDefault()) { search.addFilterOr( - search.isNull(fieldName), - search.isEqual(fieldName + ".name", filter.getName())); + search.isNull(join.getField()), + search.isEqual(join, "name", filter.getName())); } else { - search.addFilterEqual(fieldName + ".name", filter.getName()); + search.addFilterEqual(join, "name", filter.getName()); } break; @@ -173,37 +173,34 @@ public static void addStringCriteria(Search search, String fieldName, RuleFilter } - - - /** * Add criteria for searching. * * We're dealing with IDs here, so we'll suppose that the related object id field is called "id". */ - public static void addFixedCriteria(Search search, String fieldName, RuleFilter.IdNameFilter filter) { + public static void addFixedCriteria(Search search, Search.JoinInfo join, RuleFilter.IdNameFilter filter) { switch (filter.getType()) { case ANY: - throw new BadRequestServiceEx(fieldName + " should be a fixed search and can't be ANY"); + throw new BadRequestServiceEx(join.getField() + " should be a fixed search and can't be ANY"); case DEFAULT: - search.addFilterNull(fieldName); + search.addFilterNull(join.getField()); break; case IDVALUE: if(filter.isIncludeDefault()) { - throw new BadRequestServiceEx(fieldName + " should be a fixed search"); + throw new BadRequestServiceEx(join.getField() + " should be a fixed search"); } else { - search.addFilterEqual(fieldName + ".id", filter.getId()); + search.addFilterEqual(join, "id", filter.getId()); } break; case NAMEVALUE: if(filter.isIncludeDefault()) { - throw new BadRequestServiceEx(fieldName + " should be a fixed search"); + throw new BadRequestServiceEx(join.getField() + " should be a fixed search"); } else { - search.addFilterEqual(fieldName + ".name", filter.getName()); + search.addFilterEqual(join, "name", filter.getName()); } break; @@ -213,8 +210,6 @@ public static void addFixedCriteria(Search search, String fieldName, RuleFilter. } - - public static void addFixedStringCriteria(Search search, String fieldName, RuleFilter.TextFilter filter) { switch (filter.getType()) { case ANY: diff --git a/src/services/core/webtest/pom.xml b/src/services/core/webtest/pom.xml index fe187a47..e90c034c 100644 --- a/src/services/core/webtest/pom.xml +++ b/src/services/core/webtest/pom.xml @@ -6,7 +6,7 @@ */ --> - 4.0.0 + 4.0.0 org.geoserver.geofence @@ -15,24 +15,24 @@ org.geoserver.geofence - geofence-webtest - war + geofence-webtest + war - GeoFence - Core - Web Test Module + GeoFence - Core - Web Test Module - - - Emanuele Tajariol - ETj - GeoSolutions - - + + + Emanuele Tajariol + ETj + GeoSolutions + + - - UTF-8 - + + UTF-8 + - + @@ -57,6 +57,14 @@ geofence-services-impl + + + + + org.hibernate + hibernate-spatial + + @@ -70,7 +78,7 @@ - + @@ -79,14 +87,19 @@ - - + + org.apache.logging.log4j log4j-core + + org.slf4j + slf4j-simple + + @@ -94,13 +107,21 @@ org.codehaus.jettison jettison - + + + + javax.servlet + javax.servlet-api + 3.1.0 provided - - + - @@ -132,7 +154,7 @@ org.apache.cxf cxf-rt-frontend-jaxrs - + org.apache.cxf @@ -153,6 +175,13 @@ + + org.springframework spring-beans @@ -165,34 +194,35 @@ org.springframework spring-core - - org.springframework - spring-aop - - - org.springframework - spring-tx - - - - org.springframework - spring-orm - - - org.springframework - spring-jdbc - - - org.springframework - spring-web - - - org.springframework - spring-webmvc - + + org.springframework + spring-aop + + + org.springframework + spring-tx + + + + org.springframework + spring-orm + + + org.springframework + spring-jdbc + + + org.springframework + spring-web + + + org.springframework + spring-webmvc + + @@ -203,14 +233,51 @@ test - + + + + + + + + + + + + junit + junit + test + + + postgis - org.hibernatespatial + org.hibernate hibernate-spatial-postgis @@ -222,7 +289,7 @@ - org.hibernatespatial + org.hibernate hibernate-spatial-h2-geodb @@ -242,30 +309,28 @@ org.apache.maven.plugins maven-war-plugin - 2.4 + 3.2.3 - - - org.mortbay.jetty - maven-jetty-plugin - 6.1.20 - - - - /geofence - - - - 9191 - 60000 - - - manual - - + + org.eclipse.jetty + jetty-maven-plugin + 9.4.25.v20191220 + + + + + /geofence + + + 9191 + 60000 + + + + diff --git a/src/services/core/webtest/src/main/webapp/WEB-INF/web.xml b/src/services/core/webtest/src/main/webapp/WEB-INF/web.xml index 2ad4a673..a25ce74e 100755 --- a/src/services/core/webtest/src/main/webapp/WEB-INF/web.xml +++ b/src/services/core/webtest/src/main/webapp/WEB-INF/web.xml @@ -15,9 +15,7 @@ contextConfigLocation - - classpath*:applicationContext.xml - + classpath*:applicationContext.xml diff --git a/src/services/modules/rest/test/pom.xml b/src/services/modules/rest/test/pom.xml index 4b909b2d..bf6e6a57 100644 --- a/src/services/modules/rest/test/pom.xml +++ b/src/services/modules/rest/test/pom.xml @@ -17,23 +17,23 @@ org.geoserver.geofence geofence-rest-test - war + war GeoFence - Modules - REST services test - - - Emanuele Tajariol - ETj - GeoSolutions - - + + + Emanuele Tajariol + ETj + GeoSolutions + + - - UTF-8 - + + UTF-8 + - + @@ -68,6 +68,13 @@ geofence-rest-impl + + + + org.hibernate + hibernate-spatial + + @@ -81,7 +88,7 @@ - + @@ -107,11 +114,11 @@ javax.servlet - servlet-api + javax.servlet-api provided - - + - - + + org.springframework spring-beans @@ -183,61 +195,60 @@ org.springframework spring-core - - org.springframework - spring-aop - - - org.springframework - spring-tx - - - - org.springframework - spring-orm - - - org.springframework - spring-jdbc - - - org.springframework - spring-web - - + + org.springframework + spring-aop + + + org.springframework + spring-tx + + + + org.springframework + spring-orm + + + org.springframework + spring-jdbc + + + org.springframework + spring-web + + - - + + - - junit - junit - 4.7 - test - + + junit + junit + test + @@ -246,7 +257,7 @@ postgis - org.hibernatespatial + org.hibernate hibernate-spatial-postgis @@ -258,7 +269,7 @@ - org.hibernatespatial + org.hibernate hibernate-spatial-h2-geodb @@ -269,46 +280,43 @@ - - - + - - org.apache.maven.plugins - maven-war-plugin - 2.4 - - - + - - - org.mortbay.jetty - maven-jetty-plugin - 6.1.26 - - - - /geofence - - - - 9191 - 60000 - - - manual + + org.apache.maven.plugins + maven-war-plugin + 2.4 + + + + + + org.eclipse.jetty + jetty-maven-plugin + 9.4.25.v20191220 + + + 9966 jetty-stop 10 + + + /geofence + + + 9191 + 60000 + + + + - - - - - + diff --git a/src/services/modules/rest/test/src/main/webapp/WEB-INF/web.xml b/src/services/modules/rest/test/src/main/webapp/WEB-INF/web.xml index bfbde363..60112607 100755 --- a/src/services/modules/rest/test/src/main/webapp/WEB-INF/web.xml +++ b/src/services/modules/rest/test/src/main/webapp/WEB-INF/web.xml @@ -27,9 +27,9 @@ --> - + org.springframework.web.context.ContextLoaderListener