Merge branch 'selectiveIndexingCherryPicked' into release-2.1.1

* selectiveIndexingCherryPicked: (33 commits)
  Removed all instance of java.util.Optional from selective indexing.
  Add some more comments and clarity to selective indexing.
  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.
  Cleaned up the old code that used to do the filtering.
  Created a easier to understand algorithm that checks for top level indexing values. Passes existing tests.
  Forced the indexing schema to store the map instead of the JSON string that way we only do the parsing once if we're doing a lot of get's on the schema.
  Added a way to use the existing reindex code to reindex the collection rather than copying and pasting the reindex code.
  Added a delete test and a delete endpoint so that we can delete schema's
  Added a put that will automatically invalidate the cache.
  Removed the index schema cache from the manager cache as it can and should stand alone.
  Added the index schema cache to the index service.
  Added first instances of using a cache for access index schema values
  Removed all unused imports in cpRelationManager and IndexServiceImpl and EsEntityIndexBatchImpl. Re-added final keyword to indexing interface
  Changed the seemingly not working delay to 50 millisecond , moved the collection reindexing timer updating code to be easier to follow.
  Cleaning up the left over code from the endeavor.
  Simplified the CollectionResource and remove recursive call based on serviceResource wonkiness
  Working lower level selective indexing. Working field updates when we do reindexing and stuff. Added test proving that it works.
  Comments with changes to make to selective indexing. Changes to reindexing to add a delay given the reindexing call.
  Commented out the delay because it broke tests. Cleaned up some commented out code and spaces.
  Cleaned up the updating test to verify that a collection of 10 will be indexed.
  ...
tree: 552648b646ee937f449f402b9ce9fa30e77eb48d
  1. chop/
  2. content/
  3. deployment/
  4. docs/
  5. portal/
  6. release/
  7. sdks/
  8. stack/
  9. tests/
  10. ugc/
  11. website/
  12. .gitattributes
  13. .gitignore
  14. .usergridversion
  15. CHANGELOG
  16. LICENSE
  17. NOTICE
  18. README-Docs.md
  19. README.md
README.md

Apache Usergrid

Overview

Usergrid is a multi-tenant Backend-as-a-Service stack for web & mobile apps, based on RESTful APIs.

Contributing

We accept all contributions via our GitHub, so you can fork our repo (apache/usergrid) and then submit a PR back to us for approval. For larger PRs you'll need to have an ICLA form on file with Apache. For more information see How to Contribute Code & Docs.

Build awesome apps with Usergrid!

Apache Usergrid provides all code necessary to build and power modern mobile applications. This includes the server stack, administrative portal website, SDKs in most popular languages, as well as command line tools.

  • The server-side stack, a Java 8 + Cassandra + ElasticSearch codebase that powers all of the features, is located under /stack. You can install dependencies and compile it with maven. See stack/README.md for instructions.

  • The admin portal is a pure HTML5+JavaScript app allowing you to register developers and let them manage their apps in a multi-tenant cluster. Located under /portal

  • SDKs for iOS, Android, HTML5/JavaScript, node.js, Ruby on Rails, pure Ruby, PHP, (server-side) Java, .Net / Windows, and Perl, located in their respective subdirectories under /sdks.

  • a command-line client “ugc” allowing you to complete most maintenance tasks, as well as queries in a manner similar to the mysql or the mongo shell, located under /ugc. You can install it on your machine with a simple sudo gem install ugc

For more information

See the Apache Usergrid web site and documentation.