You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by gr...@apache.org on 2016/04/08 22:21:19 UTC
[32/36] usergrid git commit: Added tests and code to cover the
following cases: Somebody doesn't have a field array in the payload submitted
to the index schema. Somebody submits something other than a JSON array to
the "fields" field.
Added tests and code to cover the following cases: Somebody doesn't have a field array in the payload submitted to the index schema. Somebody submits something other than a JSON array to the "fields" field.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/fc312bd8
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/fc312bd8
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/fc312bd8
Branch: refs/heads/release-2.1.1
Commit: fc312bd8c168f395fe7a2982ef4c42c334fcfd13
Parents: 8beb3a5
Author: George Reyes <gr...@apache.org>
Authored: Fri Apr 1 12:28:31 2016 -0700
Committer: George Reyes <gr...@apache.org>
Committed: Fri Apr 1 12:28:31 2016 -0700
----------------------------------------------------------------------
.../index/impl/EntityToMapConverter.java | 5 ++-
.../rest/applications/CollectionResource.java | 16 ++++++++
.../collection/CollectionsResourceIT.java | 40 +++++++++++++++++++-
3 files changed, 58 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/fc312bd8/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EntityToMapConverter.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EntityToMapConverter.java b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EntityToMapConverter.java
index a331c38..98a8ed5 100644
--- a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EntityToMapConverter.java
+++ b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EntityToMapConverter.java
@@ -123,8 +123,9 @@ public class EntityToMapConverter {
EntityField testedField = ( EntityField ) outputEntityField;
String fieldName = ( String ) ( testedField ).get( "name" );
+ //could move this down into the method below
if ( !defaultProperties.contains( fieldName ) ) {
- iterateThroughMapForFieldsToBeIndexed( defaultProperties, collectionIterator, fieldName );
+ iterateThroughMapForFieldsToBeIndexed( defaultProperties, collectionIterator, fieldName );
}
});
@@ -142,7 +143,7 @@ public class EntityToMapConverter {
* the map.
*
* @param fieldsToKeep - contains a list of fields that the user defined in their schema.
- * @param collectionIterator - contains the iterator with the reference to the map where we want to remove the field.
+ * @param collectionIterator - contains the iterator with the reference to the map where we want to remove the field. Once removed here it is removed from the entity so it won't be indexed.
* @param fieldName - contains the name of the field that we want to keep.
*/
private static void iterateThroughMapForFieldsToBeIndexed( final Set<String> fieldsToKeep,
http://git-wip-us.apache.org/repos/asf/usergrid/blob/fc312bd8/stack/rest/src/main/java/org/apache/usergrid/rest/applications/CollectionResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/CollectionResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/CollectionResource.java
index c124f9d..5bd895c 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/CollectionResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/CollectionResource.java
@@ -18,6 +18,8 @@
package org.apache.usergrid.rest.applications;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
@@ -33,21 +35,25 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.PathSegment;
+import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
+import org.apache.commons.lang.NullArgumentException;
import org.apache.commons.lang.StringUtils;
import org.apache.usergrid.corepersistence.index.ReIndexRequestBuilder;
import org.apache.usergrid.corepersistence.index.ReIndexRequestBuilderImpl;
import org.apache.usergrid.corepersistence.index.ReIndexService;
import org.apache.usergrid.persistence.Query;
+import org.apache.usergrid.persistence.exceptions.RequiredPropertyNotFoundException;
import org.apache.usergrid.persistence.index.utils.UUIDUtils;
import org.apache.usergrid.rest.AbstractContextResource;
import org.apache.usergrid.rest.ApiResponse;
import org.apache.usergrid.rest.RootResource;
+import org.apache.usergrid.rest.exceptions.RequiredPropertyNotFoundExceptionMapper;
import org.apache.usergrid.rest.security.annotations.RequireApplicationAccess;
import org.apache.usergrid.rest.security.annotations.RequireSystemAccess;
import org.apache.usergrid.rest.system.IndexResource;
@@ -56,6 +62,7 @@ import org.apache.usergrid.services.ServiceAction;
import org.apache.usergrid.services.ServiceParameter;
import org.apache.usergrid.services.ServicePayload;
+import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.jaxrs.json.annotation.JSONP;
@@ -114,6 +121,15 @@ public class CollectionResource extends ServiceResource {
ServicePayload payload = getPayload( json );
+ if(payload.getProperty( "fields" )==null){
+ throw new NullArgumentException( "fields" );
+ }
+
+ if(! (payload.getProperty( "fields" ) instanceof ArrayList)){
+ throw new NullArgumentException( "fields must be of json array type" );
+ }
+
+
executeServicePostRequestForSchema( ui,response, ServiceAction.POST,payload );
return response;
http://git-wip-us.apache.org/repos/asf/usergrid/blob/fc312bd8/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/CollectionsResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/CollectionsResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/CollectionsResourceIT.java
index d814f55..e0b75ba 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/CollectionsResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/CollectionsResourceIT.java
@@ -35,6 +35,7 @@ import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.ws.rs.BadRequestException;
import javax.ws.rs.ClientErrorException;
import java.io.IOException;
import java.util.HashMap;
@@ -43,6 +44,8 @@ import java.util.Map;
import java.util.Set;
import java.util.ArrayList;
+import org.apache.commons.lang.NullArgumentException;
+
import static org.junit.Assert.*;
@@ -195,8 +198,43 @@ public class CollectionsResourceIT extends AbstractRestIT {
}
@Test
- public void putCollectionSchema() throws Exception {
+ public void verifyThatFieldsIsRequiredForCollectionSchema() throws Exception {
+ ArrayList<String> indexingArray = new ArrayList<>( );
+
+ //field "fields" is required.
+ Entity payload = new Entity();
+ payload.put( "fieldWeirdnessNotFields", indexingArray);
+
+ //Post index to the collection metadata
+ try {
+ this.app().collection( "testCollections" ).collection( "_indexes" ).post( payload );
+ fail();
+ }catch(BadRequestException bre){
+ //this is expected.
+ }
+
+ //ensure that it has to be an arraylist passed in.
+ Map indexingMap = new HashMap<>( );
+ indexingMap.put( "exludeStuff","randomtext" );
+ payload = new Entity();
+ payload.put( "fields", indexingMap);
+
+ try {
+ this.app().collection( "testCollections" ).collection( "_indexes" ).post( payload );
+ fail();
+ }catch(BadRequestException bre){
+ //this is expected.
+ }
+
+ payload = new Entity();
+ payload.put( "fields", indexingArray);
+
+ try {
+ this.app().collection( "testCollections" ).collection( "_indexes" ).post( payload );
+ }catch(BadRequestException bre){
+ fail( "This shouldn't fail" );
+ }
}