merge master

Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/e17dab4c
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/e17dab4c
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/e17dab4c

Branch: refs/heads/master
Commit: e17dab4c05f581b984f9e77e59d903fe0e482a1f
Parents: f8614a6 91fa489
Author: Shawn Feldman <sfeld...@apache.org>
Authored: Fri Oct 9 15:36:04 2015 -0600
Committer: Shawn Feldman <sfeld...@apache.org>
Committed: Fri Oct 9 15:36:04 2015 -0600

----------------------------------------------------------------------
 README-Docs.md                                  |    13 +
 README.md                                       |    10 +-
 content/bootstrap/bootstrap.min.css             |     9 +
 content/community/index.html                    |    22 +-
 content/css/bootflat-extensions.css             |   356 +
 content/css/bootflat-square.css                 |    69 +
 content/css/bootflat.css                        |  1560 +
 content/css/font-awesome.min.css                |   405 +
 content/css/usergrid-site.css                   |  1553 +
 .../docs/_sources/jersey2skeleton/README.txt    |     9 +
 .../creating-and-managing-notifications.txt     |     2 +
 .../docs/_sources/rest-endpoints/api-docs.txt   |   653 +-
 content/docs/jersey2skeleton/README.html        |   303 +
 .../creating-and-managing-notifications.html    |     1 +
 content/docs/rest-endpoints/api-docs.html       |   533 +-
 content/docs/searchindex.js                     |     2 +-
 content/favicon.ico                             |   Bin 0 -> 3989 bytes
 content/font/FontAwesome.otf                    |   Bin 0 -> 61896 bytes
 content/font/fontawesome-webfont-eot.eot        |   Bin 0 -> 37405 bytes
 content/font/fontawesome-webfont-svg.svg        |   399 +
 content/font/fontawesome-webfont-ttf.ttf        |   Bin 0 -> 79076 bytes
 content/font/fontawesome-webfont-woff.woff      |   Bin 0 -> 43572 bytes
 content/img/alberto.jpg                         |   Bin 0 -> 16137 bytes
 content/img/alex.png                            |   Bin 0 -> 40842 bytes
 content/img/apache_usergrid_favicon.png         |   Bin 0 -> 10735 bytes
 content/img/apache_usergrid_logo_white.png      |   Bin 0 -> 26418 bytes
 .../img/apache_usergrid_logo_white_small.png    |   Bin 0 -> 11905 bytes
 content/img/check_flat/default.png              |   Bin 0 -> 25851 bytes
 content/img/dave.jpg                            |   Bin 0 -> 14005 bytes
 content/img/ed.jpg                              |   Bin 0 -> 20460 bytes
 content/img/egg-logo.png                        |   Bin 0 -> 9938 bytes
 content/img/github.png                          |   Bin 0 -> 8936 bytes
 content/img/grey.png                            |   Bin 0 -> 37896 bytes
 content/img/intellij.png                        |   Bin 0 -> 9199 bytes
 content/img/jeff.jpg                            |   Bin 0 -> 13857 bytes
 content/img/michael_r.jpg                       |   Bin 0 -> 10244 bytes
 content/img/mike_d.JPG                          |   Bin 0 -> 36443 bytes
 content/img/nate.jpg                            |   Bin 0 -> 4291 bytes
 content/img/rod.jpg                             |   Bin 0 -> 40313 bytes
 content/img/scott.jpg                           |   Bin 0 -> 8555 bytes
 content/img/shawn.jpg                           |   Bin 0 -> 69304 bytes
 content/img/stliu.jpg                           |   Bin 0 -> 51303 bytes
 content/img/strong.jpg                          |   Bin 0 -> 7434 bytes
 content/img/structure101.png                    |   Bin 0 -> 6475 bytes
 content/img/sungju.jpg                          |   Bin 0 -> 11440 bytes
 content/img/tim.jpg                             |   Bin 0 -> 7611 bytes
 content/img/todd.jpg                            |   Bin 0 -> 18142 bytes
 content/img/usergrid-logo.pdf                   |   398 +
 content/img/usergrid.png                        |   Bin 0 -> 21994 bytes
 content/img/usergrid_160.png                    |   Bin 0 -> 2126 bytes
 content/img/usergrid_200.png                    |   Bin 0 -> 6397 bytes
 content/img/usergrid_300.png                    |   Bin 0 -> 16330 bytes
 content/img/usergrid_300_transparent.png        |   Bin 0 -> 16308 bytes
 content/img/usergrid_400.png                    |   Bin 0 -> 8746 bytes
 content/img/usergrid_800.png                    |   Bin 0 -> 14452 bytes
 content/img/usergrid_card.png                   |   Bin 0 -> 23295 bytes
 content/img/usergrid_logo.png                   |   Bin 0 -> 118086 bytes
 content/img/usergrid_logo_205_50.png            |   Bin 0 -> 7058 bytes
 content/img/usergrid_logo_260_50.png            |   Bin 0 -> 8682 bytes
 content/img/usergrid_logo_720.png               |   Bin 0 -> 27610 bytes
 content/img/usergrid_logo_720p.png              |   Bin 0 -> 27608 bytes
 content/img/usergrid_logo_900_200.png           |   Bin 0 -> 12273 bytes
 content/img/usergrid_logo_white.png             |   Bin 0 -> 16900 bytes
 content/img/usergrid_profile_128.png            |   Bin 0 -> 6689 bytes
 content/img/usergrid_profile_256.png            |   Bin 0 -> 10470 bytes
 content/img/usergrid_profile_256_white.png      |   Bin 0 -> 10724 bytes
 content/img/usergrid_profile_512_margins.png    |   Bin 0 -> 19112 bytes
 content/img/usergrid_profile_64_white.png       |   Bin 0 -> 4839 bytes
 content/img/usergrid_profile_background.png     |   Bin 0 -> 6710 bytes
 content/img/usergrid_screencast_bg.png          |   Bin 0 -> 20478 bytes
 content/img/usergrid_small_100.png              |   Bin 0 -> 6681 bytes
 content/img/usergrid_wiki.png                   |   Bin 0 -> 7135 bytes
 content/img/yourkit.jpeg                        |   Bin 0 -> 7763 bytes
 content/js/bootstrap.min.js                     |     8 +
 content/js/head.js                              |   708 +
 content/js/html5shiv.js                         |     8 +
 content/js/jquery-1.10.1.min.js                 |     6 +
 content/js/jquery.icheck.js                     |   397 +
 content/js/respond.min.js                       |     6 +
 content/js/usergrid-site.js                     |    50 +
 content/static/github-btn.html                  |     2 +
 content/v101-portal-demo/config.js              |   129 +
 content/v101-portal-demo/css/entypo/entypo.eot  |   Bin 0 -> 35540 bytes
 content/v101-portal-demo/css/entypo/entypo.svg  |    13 +
 content/v101-portal-demo/css/entypo/entypo.ttf  |   Bin 0 -> 35392 bytes
 content/v101-portal-demo/css/entypo/entypo.woff |   Bin 0 -> 21916 bytes
 content/v101-portal-demo/css/main.css           |  1990 +
 content/v101-portal-demo/css/main.min.css       |     1 +
 content/v101-portal-demo/favicon.ico            |   Bin 0 -> 3989 bytes
 content/v101-portal-demo/helpJson.json          |    47 +
 .../img/appswitcher/apiPlatform_lg.png          |   Bin 0 -> 2397 bytes
 .../img/appswitcher/appServices_lg.png          |   Bin 0 -> 2295 bytes
 .../img/appswitcher/console_lg.png              |   Bin 0 -> 1453 bytes
 .../img/appswitcher/home_lg.png                 |   Bin 0 -> 1522 bytes
 .../img/appswitcher/logo_color.png              |   Bin 0 -> 3459 bytes
 .../v101-portal-demo/img/appswitcher/max_lg.png |   Bin 0 -> 1970 bytes
 .../img/appswitcher/triangleMenuItem_right.png  |   Bin 0 -> 1158 bytes
 .../triangleMenuItem_right_hover.png            |   Bin 0 -> 1169 bytes
 content/v101-portal-demo/img/blue-bars.png      |   Bin 0 -> 3635 bytes
 content/v101-portal-demo/img/blue-bolt.png      |   Bin 0 -> 3942 bytes
 content/v101-portal-demo/img/blue-carat.png     |   Bin 0 -> 1006 bytes
 content/v101-portal-demo/img/green_dot.png      |   Bin 0 -> 3472 bytes
 .../img/introjs_arrow_step_next.png             |   Bin 0 -> 219 bytes
 .../img/introjs_arrow_step_next_disabled.png    |   Bin 0 -> 220 bytes
 .../img/introjs_arrow_step_prev.png             |   Bin 0 -> 217 bytes
 .../img/introjs_arrow_step_prev_disabled.png    |   Bin 0 -> 218 bytes
 content/v101-portal-demo/img/introjs_close.png  |   Bin 0 -> 274 bytes
 content/v101-portal-demo/img/logo.png           |   Bin 0 -> 7758 bytes
 content/v101-portal-demo/img/nav-device.gif     |   Bin 0 -> 2184 bytes
 content/v101-portal-demo/img/nav-sprites.png    |   Bin 0 -> 7953 bytes
 content/v101-portal-demo/img/no-data1.png       |   Bin 0 -> 45300 bytes
 content/v101-portal-demo/img/phone-small.gif    |   Bin 0 -> 1300 bytes
 .../img/push/APNS_cert_upload.png               |   Bin 0 -> 33956 bytes
 .../img/push/APNS_certification.png             |   Bin 0 -> 16855 bytes
 .../img/push/android-notification.png           |   Bin 0 -> 41629 bytes
 .../img/push/google_api_key.png                 |   Bin 0 -> 98118 bytes
 .../img/push/iphone_message.png                 |   Bin 0 -> 90307 bytes
 content/v101-portal-demo/img/push/step_1.png    |   Bin 0 -> 1953 bytes
 content/v101-portal-demo/img/push/step_2.png    |   Bin 0 -> 2117 bytes
 content/v101-portal-demo/img/push/step_3.png    |   Bin 0 -> 2162 bytes
 content/v101-portal-demo/img/red_dot.png        |   Bin 0 -> 3482 bytes
 .../v101-portal-demo/img/sdk-sprites-large.png  |   Bin 0 -> 15115 bytes
 content/v101-portal-demo/img/sdk-sprites.png    |   Bin 0 -> 4401 bytes
 content/v101-portal-demo/img/tablet-small.gif   |   Bin 0 -> 1390 bytes
 content/v101-portal-demo/img/user-photo.png     |   Bin 0 -> 3849 bytes
 content/v101-portal-demo/img/user_profile.png   |   Bin 0 -> 3775 bytes
 content/v101-portal-demo/img/verify.png         |   Bin 0 -> 22934 bytes
 content/v101-portal-demo/img/yellow_dot.png     |   Bin 0 -> 3475 bytes
 content/v101-portal-demo/index-debug.html       |   151 +
 content/v101-portal-demo/index-template.html    |   156 +
 content/v101-portal-demo/index.html             |   151 +
 .../js/generated/usergrid-dev.js                |  4886 +
 .../js/generated/usergrid-libs.min.js           |    38 +
 .../js/generated/usergrid.min.js                |    25 +
 content/v101-portal-demo/js/libs/MD5.min.js     |     1 +
 .../js/libs/angular-1.2.5/angular-animate.js    |  1323 +
 .../libs/angular-1.2.5/angular-animate.min.js   |    23 +
 .../angular-1.2.5/angular-animate.min.js.map    |     8 +
 .../js/libs/angular-1.2.5/angular-cookies.js    |   202 +
 .../libs/angular-1.2.5/angular-cookies.min.js   |     8 +
 .../angular-1.2.5/angular-cookies.min.js.map    |     8 +
 .../js/libs/angular-1.2.5/angular-csp.css       |    24 +
 .../js/libs/angular-1.2.5/angular-loader.js     |   410 +
 .../js/libs/angular-1.2.5/angular-loader.min.js |     9 +
 .../angular-1.2.5/angular-loader.min.js.map     |     8 +
 .../js/libs/angular-1.2.5/angular-mocks.js      |  2116 +
 .../js/libs/angular-1.2.5/angular-resource.js   |   565 +
 .../libs/angular-1.2.5/angular-resource.min.js  |    13 +
 .../angular-1.2.5/angular-resource.min.js.map   |     8 +
 .../js/libs/angular-1.2.5/angular-route.js      |   911 +
 .../js/libs/angular-1.2.5/angular-route.min.js  |    14 +
 .../libs/angular-1.2.5/angular-route.min.js.map |     8 +
 .../js/libs/angular-1.2.5/angular-sanitize.js   |   622 +
 .../libs/angular-1.2.5/angular-sanitize.min.js  |    14 +
 .../angular-1.2.5/angular-sanitize.min.js.map   |     8 +
 .../js/libs/angular-1.2.5/angular-scenario.js   | 32374 ++++++
 .../js/libs/angular-1.2.5/angular-touch.js      |   563 +
 .../js/libs/angular-1.2.5/angular-touch.min.js  |    13 +
 .../libs/angular-1.2.5/angular-touch.min.js.map |     8 +
 .../js/libs/angular-1.2.5/angular.js            | 20369 ++++
 .../js/libs/angular-1.2.5/angular.min.js        |   201 +
 .../js/libs/angular-1.2.5/angular.min.js.map    |     8 +
 .../js/libs/angular-1.2.5/errors.json           |     1 +
 .../js/libs/angular-1.2.5/version.json          |     1 +
 .../js/libs/angular-1.2.5/version.txt           |     1 +
 .../libs/bootstrap/css/bootstrap-responsive.css |  1345 +
 .../bootstrap/css/bootstrap-responsive.min.css  |  1245 +
 .../js/libs/bootstrap/css/bootstrap.css         |  6169 ++
 .../js/libs/bootstrap/css/bootstrap.min.css     |  5469 ++
 .../js/libs/bootstrap/custom/css/bootstrap.css  |  6316 ++
 .../libs/bootstrap/custom/css/bootstrap.min.css |     9 +
 .../custom/img/glyphicons-halflings-white.png   |   Bin 0 -> 8777 bytes
 .../custom/img/glyphicons-halflings.png         |   Bin 0 -> 12799 bytes
 .../js/libs/bootstrap/custom/js/bootstrap.js    |  2291 +
 .../libs/bootstrap/custom/js/bootstrap.min.js   |     7 +
 .../img/glyphicons-halflings-white.png          |   Bin 0 -> 8777 bytes
 .../libs/bootstrap/img/glyphicons-halflings.png |   Bin 0 -> 12799 bytes
 .../js/libs/bootstrap/js/bootstrap.js           |  2117 +
 .../js/libs/bootstrap/js/bootstrap.min.js       |   644 +
 .../v101-portal-demo/js/libs/google-viz-api.js  |    49 +
 .../js/libs/jquery/jquery-1.9.1.min.js          |     5 +
 .../js/libs/jquery/jquery-migrate-1.1.1.min.js  |     3 +
 .../js/libs/jquery/jquery.sparkline.min.js      |     5 +
 .../js/libs/jqueryui/date.min.js                |     2 +
 .../ui-bg_diagonals-thick_90_eeeeee_40x40.png   |   Bin 0 -> 251 bytes
 .../images/ui-bg_flat_100_deedf7_40x100.png     |   Bin 0 -> 182 bytes
 .../images/ui-bg_flat_100_e4f1fb_40x100.png     |   Bin 0 -> 213 bytes
 .../images/ui-bg_flat_100_f2f5f7_40x100.png     |   Bin 0 -> 212 bytes
 .../images/ui-bg_flat_15_cd0a0a_40x100.png      |   Bin 0 -> 181 bytes
 .../images/ui-bg_flat_50_3baae3_40x100.png      |   Bin 0 -> 182 bytes
 .../images/ui-bg_flat_80_d7ebf9_40x100.png      |   Bin 0 -> 183 bytes
 .../ui-bg_highlight-hard_70_000000_1x100.png    |   Bin 0 -> 118 bytes
 .../ui-bg_highlight-soft_25_ffef8f_1x100.png    |   Bin 0 -> 153 bytes
 .../jqueryui/images/ui-icons_000000_256x240.png |   Bin 0 -> 4369 bytes
 .../jqueryui/images/ui-icons_2694e8_256x240.png |   Bin 0 -> 4369 bytes
 .../jqueryui/images/ui-icons_2e83ff_256x240.png |   Bin 0 -> 4369 bytes
 .../jqueryui/images/ui-icons_3d80b3_256x240.png |   Bin 0 -> 4369 bytes
 .../jqueryui/images/ui-icons_72a7cf_256x240.png |   Bin 0 -> 4369 bytes
 .../jqueryui/images/ui-icons_ffffff_256x240.png |   Bin 0 -> 4369 bytes
 .../js/libs/jqueryui/jquery-ui-1.8.18.min.js    |    15 +
 .../js/libs/jqueryui/jquery-ui-1.8.9.custom.css |     1 +
 .../js/libs/jqueryui/jquery-ui-timepicker.css   |     1 +
 .../libs/jqueryui/jquery.ui.timepicker.min.js   |     1 +
 .../ui-bootstrap-custom-0.3.0.min.js            |     1 +
 .../ui-bootstrap-custom-tpls-0.3.0.min.js       |     1 +
 .../v101-portal-demo/js/libs/usergrid.sdk.js    |  2568 +
 docs/jersey2skeleton/README.md                  |     9 +
 docs/jersey2skeleton/pom.xml                    |   387 +
 .../usergrid/testapp/AbstractResource.java      |    51 +
 .../apache/usergrid/testapp/ApiResponse.java    |    52 +
 .../org/apache/usergrid/testapp/Entity.java     |    55 +
 .../usergrid/testapp/ManagementResource.java    |    56 +
 .../usergrid/testapp/OrganizationResource.java  |    64 +
 .../usergrid/testapp/OrganizationsResource.java |    76 +
 .../apache/usergrid/testapp/StatusResource.java |    34 +
 .../java/org/apache/usergrid/testapp/User.java  |    28 +
 .../src/main/resources/applicationContext.xml   |    28 +
 .../main/resources/jersey2skeleton-context.xml  |    28 +
 .../src/main/webapp/WEB-INF/web.xml             |    95 +
 .../usergrid/testapp/AvailablePortFinder.java   |   208 +
 .../usergrid/testapp/OrganizationTest.java      |   127 +
 .../org/apache/usergrid/testapp/TomcatMain.java |    57 +
 .../apache/usergrid/testapp/TomcatRuntime.java  |   185 +
 .../src/test/resources/log4j.properties         |    31 +
 .../src/test/resources/logging.properties       |    26 +
 docs/jersey2skeleton/templates/markdown.hbs     |   108 +
 docs/jersey2skeleton/templates/operation.hbs    |    73 +
 docs/jersey2skeleton/templates/security.hbs     |    88 +
 .../templates/strapdown.html.hbs                |    10 +
 docs/rest-endpoints/api-docs.html               |   750 +-
 docs/rest-endpoints/api-docs.md                 |   142 +-
 stack/build-tools/pom.xml                       |     2 +-
 stack/config/pom.xml                            |     2 +-
 stack/core/pom.xml                              |    14 +-
 .../corepersistence/CpEntityManager.java        |    22 +-
 .../corepersistence/CpRelationManager.java      |    21 +-
 .../asyncevents/EventBuilderImpl.java           |    44 +-
 .../pipeline/read/search/CandidateIdFilter.java |     3 +-
 .../usergrid/persistence/EntityManager.java     |     2 +
 .../usergrid/persistence/CollectionIT.java      |    10 +-
 .../usergrid/persistence/PermissionsIT.java     |     7 +-
 stack/corepersistence/collection/pom.xml        |     2 +-
 stack/corepersistence/common/pom.xml            |     2 +-
 stack/corepersistence/graph/pom.xml             |     2 +-
 stack/corepersistence/map/pom.xml               |     2 +-
 stack/corepersistence/model/pom.xml             |     2 +-
 stack/corepersistence/pom.xml                   |     2 +-
 stack/corepersistence/queryindex/pom.xml        |     2 +-
 .../index/impl/EsEntityIndexBatchImpl.java      |    10 +-
 .../index/impl/EsIndexProducerImpl.java         |     8 +
 .../persistence/index/impl/IndexProducer.java   |     2 +
 .../index/impl/IndexRefreshCommandImpl.java     |     2 +-
 .../persistence/index/impl/EntityIndexTest.java |    22 +-
 .../persistence/index/impl/GeoPagingTest.java   |     6 +-
 stack/corepersistence/queue/pom.xml             |     2 +-
 stack/pom.xml                                   |   252 +-
 stack/rest/pom.xml                              |   141 +-
 .../usergrid/rest/AbstractContextResource.java  |    45 +-
 .../usergrid/rest/ApplicationsResource.java     |   178 -
 .../apache/usergrid/rest/DatabaseResource.java  |    98 -
 .../org/apache/usergrid/rest/IndexResource.java |    54 +-
 .../apache/usergrid/rest/MigrateResource.java   |    61 +-
 .../org/apache/usergrid/rest/RootResource.java  |    92 +-
 .../apache/usergrid/rest/SwaggerServlet.java    |     5 +-
 .../apache/usergrid/rest/SystemResource.java    |    26 +-
 .../usergrid/rest/TextToJsonSwapWriter.java     |   182 +-
 .../rest/applications/ApplicationResource.java  |    30 +-
 .../rest/applications/ServiceResource.java      |   111 +-
 .../applications/assets/AssetsResource.java     |    13 +-
 .../applications/events/EventsResource.java     |    36 +-
 .../notifiers/NotifierResource.java             |    29 +-
 .../notifiers/NotifiersResource.java            |    29 +-
 .../rest/applications/queues/QueueResource.java |    86 +-
 .../queues/QueueSubscriberResource.java         |    63 +-
 .../queues/QueueSubscriptionResource.java       |    63 +-
 .../queues/QueueTransactionsResource.java       |    40 +-
 .../rest/applications/users/UserResource.java   |   134 +-
 .../rest/applications/users/UsersResource.java  |    51 +-
 .../exceptions/NotFoundExceptionMapper.java     |     3 +-
 .../rest/exceptions/SecurityException.java      |    31 +-
 .../exceptions/SecurityExceptionMapper.java     |     3 +-
 .../exceptions/UnsupportedMediaTypeMapper.java  |    43 +
 .../rest/filters/ContentTypeFilter.java         |    74 +-
 .../rest/filters/JSONPCallbackFilter.java       |    26 +-
 .../usergrid/rest/filters/MeteringFilter.java   |   632 +-
 .../usergrid/rest/filters/TracingFilter.java    |    37 +-
 .../rest/management/ManagementResource.java     |    53 +-
 .../management/metrics/MetricsResource.java     |     9 +-
 .../organizations/OrganizationResource.java     |    64 +-
 .../organizations/OrganizationsResource.java    |    66 +-
 .../applications/ApplicationResource.java       |    56 +-
 .../applications/ApplicationsResource.java      |    20 +-
 .../imports/FileErrorsResource.java             |    41 +-
 .../imports/FileIncludesResource.java           |    15 +-
 .../applications/imports/ImportsResource.java   |    57 +-
 .../organizations/users/UsersResource.java      |    88 +-
 .../rest/management/users/UserResource.java     |    95 +-
 .../rest/management/users/UsersResource.java    |    11 +-
 .../organizations/OrganizationsResource.java    |    76 +-
 .../organizations/OrganizationResource.java     |    28 +-
 .../rest/security/CrossOriginRequestFilter.java |    18 +-
 .../security/SecuredResourceFilterFactory.java  |   181 +-
 .../ShiroAuthenticationExceptionMapper.java     |     3 +-
 .../shiro/filters/BasicAuthSecurityFilter.java  |    35 +-
 .../ClientCredentialsSecurityFilter.java        |    25 +-
 .../OAuth2AccessTokenSecurityFilter.java        |   168 +-
 .../security/shiro/filters/SecurityFilter.java  |    33 +-
 .../rest/system/ApplicationsResource.java       |   178 +
 .../usergrid/rest/system/DatabaseResource.java  |   101 +
 .../rest/system/QueueSystemResource.java        |    77 +
 .../apache/usergrid/rest/utils/CORSUtils.java   |    42 +-
 stack/rest/src/main/webapp/WEB-INF/web.xml      |    63 +-
 .../java/org/apache/usergrid/rest/BasicIT.java  |    22 +-
 .../usergrid/rest/CollectionMetadataIT.java     |     7 +-
 .../apache/usergrid/rest/IndexResourceIT.java   |    43 +-
 .../apache/usergrid/rest/NotificationsIT.java   |     6 +-
 .../apache/usergrid/rest/PartialUpdateTest.java |    16 +-
 .../apache/usergrid/rest/SystemResourceIT.java  |    27 +-
 .../org/apache/usergrid/rest/TomcatRuntime.java |    12 +-
 .../rest/applications/ApplicationCreateIT.java  |    14 +-
 .../rest/applications/ApplicationDeleteIT.java  |   206 +-
 .../applications/ApplicationResourceIT.java     |   266 +-
 .../applications/assets/AssetResourceIT.java    |    21 +-
 .../applications/assets/AwsAssetResourceIT.java |    53 +-
 .../applications/assets/aws/NoAWSCredsRule.java |    15 +-
 .../collection/CollectionsResourceIT.java       |    26 +-
 .../collection/DuplicateNameIT.java             |     5 +-
 .../activities/ActivityResourceIT.java          |     5 +-
 .../collection/devices/DevicesResourceIT.java   |     4 +-
 .../collection/groups/GroupResourceIT.java      |    34 +-
 .../collection/paging/PagingResourceIT.java     |    65 +-
 .../users/ConnectionResourceTest.java           |    12 +-
 .../collection/users/OwnershipResourceIT.java   |    15 +-
 .../collection/users/PermissionsResourceIT.java |    34 +-
 .../collection/users/UserResourceIT.java        |   126 +-
 .../queries/BadGrammarQueryTest.java            |    15 +-
 .../applications/queries/BasicGeoTests.java     |    45 +-
 .../rest/filters/ContentTypeResourceIT.java     |    70 +-
 .../usergrid/rest/management/AccessTokenIT.java |    42 +-
 .../usergrid/rest/management/AdminUsersIT.java  |    48 +-
 .../rest/management/ExportResourceIT.java       |   137 +-
 .../rest/management/ImportResourceIT.java       |    50 +-
 .../rest/management/ManagementResourceIT.java   |   149 +-
 .../rest/management/OrganizationsIT.java        |    60 +-
 .../rest/management/RegistrationIT.java         |    32 +-
 .../organizations/AdminEmailEncodingIT.java     |     5 +-
 .../rest/test/resource/AbstractRestIT.java      |    79 +-
 .../rest/test/resource/ClientSetup.java         |     4 +-
 .../usergrid/rest/test/resource/RestClient.java |    44 +-
 .../test/resource/TestPropertiesResource.java   |    14 +-
 .../endpoints/ApplicationsResource.java         |     8 +-
 .../resource/endpoints/BoostrapResource.java    |    19 +-
 .../resource/endpoints/CollectionEndpoint.java  |   109 +-
 .../test/resource/endpoints/EntityEndpoint.java |    40 +-
 .../test/resource/endpoints/NamedResource.java  |   241 +-
 .../test/resource/endpoints/RootResource.java   |     9 +-
 .../test/resource/endpoints/SetupResource.java  |    20 +-
 .../test/resource/endpoints/SubResource.java    |    37 +
 .../test/resource/endpoints/SystemResource.java |    51 +-
 .../test/resource/endpoints/TokenResource.java  |    15 +-
 .../test/resource/endpoints/UrlResource.java    |    11 +-
 .../endpoints/mgmt/ApplicationResource.java     |    27 +-
 .../endpoints/mgmt/ApplicationsResource.java    |     4 +-
 .../endpoints/mgmt/AuthorizeResource.java       |     7 +-
 .../endpoints/mgmt/ConfirmResource.java         |    12 +-
 .../endpoints/mgmt/CredentialsResource.java     |     7 +-
 .../resource/endpoints/mgmt/FeedResource.java   |     5 +-
 .../resource/endpoints/mgmt/OrgResource.java    |    68 +-
 .../endpoints/mgmt/OrganizationResource.java    |    15 +-
 .../endpoints/mgmt/PasswordResource.java        |     8 -
 .../endpoints/mgmt/ReactivateResource.java      |    10 +-
 .../resource/endpoints/mgmt/ResetResource.java  |    10 +-
 .../resource/endpoints/mgmt/TokenResource.java  |     7 +-
 .../resource/endpoints/mgmt/UserResource.java   |    20 +-
 .../resource/endpoints/mgmt/UsersResource.java  |     6 -
 stack/rest/src/test/resources/log4j.properties  |    36 +-
 .../rest/src/test/resources/logging.properties  |    13 +-
 stack/services/pom.xml                          |    51 +-
 .../security/providers/AbstractProvider.java    |    16 +-
 .../security/providers/FacebookProvider.java    |     7 +-
 .../security/providers/FoursquareProvider.java  |    38 +-
 .../providers/PingIdentityProvider.java         |    38 +-
 .../usergrid/services/roles/RolesService.java   |    12 -
 .../usergrid/management/OrganizationIT.java     |    18 +-
 stack/test-utils/pom.xml                        |     2 +-
 .../org/apache/usergrid/tools/ExportAdmins.java |    17 +-
 website/README.md                               |     3 +-
 website/Rules                                   |    52 +
 website/build.sh                                |     1 +
 website/content/bootstrap/bootstrap.min.css     |     9 +
 website/content/community/index.html            |    22 +-
 website/content/css/bootflat-extensions.css     |   356 +
 website/content/css/bootflat-square.css         |    69 +
 website/content/css/bootflat.css                |  1560 +
 website/content/css/font-awesome.min.css        |   405 +
 website/content/css/usergrid-site.css           |  1553 +
 website/content/favicon.ico                     |   Bin 0 -> 3989 bytes
 website/content/font/FontAwesome.otf            |   Bin 0 -> 61896 bytes
 .../content/font/fontawesome-webfont-eot.eot    |   Bin 0 -> 37405 bytes
 .../content/font/fontawesome-webfont-svg.svg    |   399 +
 .../content/font/fontawesome-webfont-ttf.ttf    |   Bin 0 -> 79076 bytes
 .../content/font/fontawesome-webfont-woff.woff  |   Bin 0 -> 43572 bytes
 website/content/img/alberto.jpg                 |   Bin 0 -> 16137 bytes
 website/content/img/alex.png                    |   Bin 0 -> 40842 bytes
 website/content/img/apache_usergrid_favicon.png |   Bin 0 -> 10735 bytes
 .../content/img/apache_usergrid_logo_white.png  |   Bin 0 -> 26418 bytes
 .../img/apache_usergrid_logo_white_small.png    |   Bin 0 -> 11905 bytes
 website/content/img/check_flat/default.png      |   Bin 0 -> 25851 bytes
 website/content/img/dave.jpg                    |   Bin 0 -> 14005 bytes
 website/content/img/ed.jpg                      |   Bin 0 -> 20460 bytes
 website/content/img/egg-logo.png                |   Bin 0 -> 9938 bytes
 website/content/img/github.png                  |   Bin 0 -> 8936 bytes
 website/content/img/grey.png                    |   Bin 0 -> 37896 bytes
 website/content/img/intellij.png                |   Bin 0 -> 9199 bytes
 website/content/img/jeff.jpg                    |   Bin 0 -> 13857 bytes
 website/content/img/michael_r.jpg               |   Bin 0 -> 10244 bytes
 website/content/img/mike_d.JPG                  |   Bin 0 -> 36443 bytes
 website/content/img/nate.jpg                    |   Bin 0 -> 4291 bytes
 website/content/img/rod.jpg                     |   Bin 0 -> 40313 bytes
 website/content/img/scott.jpg                   |   Bin 0 -> 8555 bytes
 website/content/img/shawn.jpg                   |   Bin 0 -> 69304 bytes
 website/content/img/stliu.jpg                   |   Bin 0 -> 51303 bytes
 website/content/img/strong.jpg                  |   Bin 0 -> 7434 bytes
 website/content/img/structure101.png            |   Bin 0 -> 6475 bytes
 website/content/img/sungju.jpg                  |   Bin 0 -> 11440 bytes
 website/content/img/tim.jpg                     |   Bin 0 -> 7611 bytes
 website/content/img/todd.jpg                    |   Bin 0 -> 18142 bytes
 website/content/img/usergrid-logo.pdf           |   398 +
 website/content/img/usergrid.png                |   Bin 0 -> 21994 bytes
 website/content/img/usergrid_160.png            |   Bin 0 -> 2126 bytes
 website/content/img/usergrid_200.png            |   Bin 0 -> 6397 bytes
 website/content/img/usergrid_300.png            |   Bin 0 -> 16330 bytes
 .../content/img/usergrid_300_transparent.png    |   Bin 0 -> 16308 bytes
 website/content/img/usergrid_400.png            |   Bin 0 -> 8746 bytes
 website/content/img/usergrid_800.png            |   Bin 0 -> 14452 bytes
 website/content/img/usergrid_card.png           |   Bin 0 -> 23295 bytes
 website/content/img/usergrid_logo.png           |   Bin 0 -> 118086 bytes
 website/content/img/usergrid_logo_205_50.png    |   Bin 0 -> 7058 bytes
 website/content/img/usergrid_logo_260_50.png    |   Bin 0 -> 8682 bytes
 website/content/img/usergrid_logo_720.png       |   Bin 0 -> 27610 bytes
 website/content/img/usergrid_logo_720p.png      |   Bin 0 -> 27608 bytes
 website/content/img/usergrid_logo_900_200.png   |   Bin 0 -> 12273 bytes
 website/content/img/usergrid_logo_white.png     |   Bin 0 -> 16900 bytes
 website/content/img/usergrid_profile_128.png    |   Bin 0 -> 6689 bytes
 website/content/img/usergrid_profile_256.png    |   Bin 0 -> 10470 bytes
 .../content/img/usergrid_profile_256_white.png  |   Bin 0 -> 10724 bytes
 .../img/usergrid_profile_512_margins.png        |   Bin 0 -> 19112 bytes
 .../content/img/usergrid_profile_64_white.png   |   Bin 0 -> 4839 bytes
 .../content/img/usergrid_profile_background.png |   Bin 0 -> 6710 bytes
 website/content/img/usergrid_screencast_bg.png  |   Bin 0 -> 20478 bytes
 website/content/img/usergrid_small_100.png      |   Bin 0 -> 6681 bytes
 website/content/img/usergrid_wiki.png           |   Bin 0 -> 7135 bytes
 website/content/img/yourkit.jpeg                |   Bin 0 -> 7763 bytes
 website/content/js/bootstrap.min.js             |     8 +
 website/content/js/head.js                      |   708 +
 website/content/js/html5shiv.js                 |     8 +
 website/content/js/jquery-1.10.1.min.js         |     6 +
 website/content/js/jquery.icheck.js             |   397 +
 website/content/js/respond.min.js               |     6 +
 website/content/js/usergrid-site.js             |    50 +
 website/content/static/github-btn.html          |     2 +
 website/crash.log                               |   143 +
 website/layouts/community.html                  |     1 +
 website/layouts/docs.html                       |     1 +
 website/lib/default.rb                          |    43 +
 website/lib/helpers_.rb                         |     0
 website/lib/pandoc.template                     |     4 +
 website/nanoc.yaml                              |    77 +
 website/run.sh                                  |     1 +
 website/tmp/checksums                           |     4 +-
 website/tmp/compiled_content                    | 87099 +----------------
 website/tmp/dependencies                        |   Bin 2372 -> 2397 bytes
 website/tmp/rule_memory                         |   Bin 0 -> 5163 bytes
 website/utilities/map-markers.rb                |    62 +
 website/utilities/markers.txt                   |   440 +
 website/utilities/snapshot-apigee.rb            |    71 +
 website/utilities/usergrid.csv                  |   290 +
 477 files changed, 117021 insertions(+), 90476 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/e17dab4c/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/usergrid/blob/e17dab4c/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
----------------------------------------------------------------------
diff --cc 
stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
index aad7610,f1e6ad6..1bd5c7d
--- 
a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
+++ 
b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
@@@ -527,16 -525,11 +526,12 @@@ public class CpRelationManager implemen
           *
           */
  
-         final EntityIndex ei = managerCache.getEntityIndex( applicationScope 
);
-         final EntityIndexBatch batch = ei.createBatch();
- 
-         // remove item from collection index
-         SearchEdge indexScope = createCollectionSearchEdge( 
cpHeadEntity.getId(), collectionName );
  
-         batch.deindex( indexScope, memberEntity );
+         //TODO: this should not happen here, needs to go to  SQS
+         //indexProducer.put(batch).subscribe();
+         indexService.queueEntityDelete(applicationScope,memberEntity.getId());
  
-         managerCache.getIndexProducer().put( 
batch.build()).toBlocking().lastOrDefault(null); // this should throw an 
exception
 +
          // special handling for roles collection of a group
          if ( headEntity.getType().equals( Group.ENTITY_TYPE ) ) {
  

http://git-wip-us.apache.org/repos/asf/usergrid/blob/e17dab4c/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/EventBuilderImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/usergrid/blob/e17dab4c/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateIdFilter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/usergrid/blob/e17dab4c/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsIndexProducerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/usergrid/blob/e17dab4c/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/IndexRefreshCommandImpl.java
----------------------------------------------------------------------
diff --cc 
stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/IndexRefreshCommandImpl.java
index 6b8b024,087eefe..04f8652
--- 
a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/IndexRefreshCommandImpl.java
+++ 
b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/IndexRefreshCommandImpl.java
@@@ -67,7 -67,7 +67,7 @@@ public class IndexRefreshCommandImpl im
                                      final EsProvider esProvider,
                                      final IndexProducer producer,
                                      final IndexFig indexFig,
--                                    final MetricsFactory metricsFactory,
++                     l               final MetricsFactory metricsFactory,
                                      final IndexCache indexCache ) {
  
  

http://git-wip-us.apache.org/repos/asf/usergrid/blob/e17dab4c/stack/rest/src/main/java/org/apache/usergrid/rest/system/ApplicationsResource.java
----------------------------------------------------------------------
diff --cc 
stack/rest/src/main/java/org/apache/usergrid/rest/system/ApplicationsResource.java
index 0000000,82bc4c8..55887c7
mode 000000,100644..100644
--- 
a/stack/rest/src/main/java/org/apache/usergrid/rest/system/ApplicationsResource.java
+++ 
b/stack/rest/src/main/java/org/apache/usergrid/rest/system/ApplicationsResource.java
@@@ -1,0 -1,168 +1,178 @@@
+ /*
+  *
+  *  * Licensed to the Apache Software Foundation (ASF) under one or more
+  *  *  contributor license agreements.  The ASF licenses this file to You
+  *  * under the Apache License, Version 2.0 (the "License"); you may not
+  *  * use this file except in compliance with the License.
+  *  * You may obtain a copy of the License at
+  *  *
+  *  *     http://www.apache.org/licenses/LICENSE-2.0
+  *  *
+  *  * Unless required by applicable law or agreed to in writing, software
+  *  * distributed under the License is distributed on an "AS IS" BASIS,
+  *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  *  * See the License for the specific language governing permissions and
+  *  * limitations under the License.  For additional information regarding
+  *  * copyright in this work, please see the NOTICE file in the top level
+  *  * directory of this distribution.
+  *
+  */
+ package org.apache.usergrid.rest.system;
+ 
+ import com.fasterxml.jackson.jaxrs.json.annotation.JSONP;
+ import org.apache.usergrid.corepersistence.service.StatusService;
+ import org.apache.usergrid.persistence.EntityManager;
+ import org.apache.usergrid.persistence.model.util.UUIDGenerator;
+ import org.apache.usergrid.rest.AbstractContextResource;
+ import org.apache.usergrid.rest.ApiResponse;
+ import org.apache.usergrid.rest.security.annotations.RequireSystemAccess;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ import org.springframework.context.annotation.Scope;
+ import org.springframework.stereotype.Component;
+ 
+ import javax.ws.rs.*;
+ import javax.ws.rs.core.Context;
+ import javax.ws.rs.core.MediaType;
+ import javax.ws.rs.core.UriInfo;
+ import java.util.HashMap;
+ import java.util.LinkedHashMap;
+ import java.util.Map;
+ import java.util.UUID;
+ import java.util.concurrent.atomic.AtomicInteger;
+ 
+ /**
+  * Classy class class.
+  */
+ @Component
+ @Scope( "singleton" )
+ @Produces( {
+     MediaType.APPLICATION_JSON, "application/javascript", 
"application/x-javascript", "text/ecmascript",
+     "application/ecmascript", "text/jscript"
+ } )
+ public class ApplicationsResource extends AbstractContextResource {
+ 
+     private static final Logger logger = 
LoggerFactory.getLogger(ApplicationsResource.class);
+ 
+ 
+     public ApplicationsResource() {
+         logger.info( "ApplicationsResource initialized" );
+     }
+ 
+     @RequireSystemAccess
+     @DELETE
+     @JSONP
+     @Path( "{applicationId}" )
+     public ApiResponse clearApplication(
+         @Context UriInfo ui,
+         @PathParam("applicationId") UUID applicationId,
+         @QueryParam( "confirmApplicationName" ) String confirmApplicationName,
+         @QueryParam( "limit" ) int limit,
+         @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback 
)
+ 
+         throws Exception {
+ 
+         if(confirmApplicationName == null){
+             throw new IllegalArgumentException("please make add a QueryString 
for confirmApplicationName");
+         }
+ 
+         final UUID jobId = UUIDGenerator.newTimeUUID();
+ 
+         final EntityManager em =  emf.getEntityManager(applicationId);
+         final String name =  em.getApplication().getApplicationName();
+         if(!name.toLowerCase().equals(confirmApplicationName.toLowerCase())){
+             throw new IllegalArgumentException(
+                 "confirmApplicationName: " + confirmApplicationName + " does 
not equal " + name);
+         }
+         final StatusService statusService = 
injector.getInstance(StatusService.class);
+ 
+         final ApiResponse response = createApiResponse();
+ 
+         response.setAction( "clear application" );
+ 
+         logger.info("clearing up application");
+ 
+         final Thread delete = new Thread() {
+ 
+             @Override
+             public void run() {
+                 final AtomicInteger itemsDeleted = new AtomicInteger(0);
+                 try {
+                     management.deleteAllEntities(applicationId, limit)
+                         .map(id -> itemsDeleted.incrementAndGet())
+                         .doOnNext(count -> {
+                             if( count % 100 == 0 ){
+                                 Map<String,Object> map = new 
LinkedHashMap<>();
+                                 map.put("count",itemsDeleted.intValue());
+                                 final StatusService statusService = 
injector.getInstance(StatusService.class);
 -                                statusService.setStatus(applicationId, jobId, 
StatusService.Status.INPROGRESS,map).subscribe();
++                                statusService.setStatus(applicationId, jobId, 
StatusService.Status.INPROGRESS,map)
++                                    .subscribe();//do not want to throw this 
exception
+                             }
+                         })
 -                        .doOnCompleted(() ->{
 -                            Map<String,Object> map = new LinkedHashMap<>();
 -                            map.put("count",itemsDeleted.intValue());
++                        .doOnCompleted(() -> {
++                            Map<String, Object> map = new LinkedHashMap<>();
++                            map.put("count", itemsDeleted.intValue());
+                             final StatusService statusService = 
injector.getInstance(StatusService.class);
 -                            statusService.setStatus(applicationId,jobId, 
StatusService.Status.COMPLETE,map).subscribe();
++                            statusService.setStatus(applicationId, jobId, 
StatusService.Status.COMPLETE, map)
++                                .toBlocking().lastOrDefault(null);//want to 
rethrow this exception
+                         })
 -                        .subscribe();
++                        .toBlocking().lastOrDefault(null);//expecting 
exception to be caught if job fails
+ 
+                 } catch ( Exception e ) {
+                     Map<String,Object> map = new LinkedHashMap<>();
+                     map.put("exception",e);
 -                    statusService.setStatus(applicationId,jobId, 
StatusService.Status.FAILED,map).subscribe();
++                    try {
++                        statusService.setStatus(applicationId, jobId, 
StatusService.Status.FAILED, map).toBlocking().lastOrDefault(null);//leave as 
subscribe if fails retry
++                    }catch (Exception subE){
++                        logger.error("failed to update status "+jobId,subE);
++                    }
+                     logger.error( "Failed to delete appid:"+applicationId + " 
jobid:"+jobId+" count:"+itemsDeleted, e );
+                 }
+             }
+         };
+ 
+         delete.setName("Delete for app : " + applicationId + " job: " + 
jobId);
+         delete.setDaemon(true);
+         delete.start();
+ 
 -        statusService.setStatus(applicationId,jobId, 
StatusService.Status.STARTED,new LinkedHashMap<>()).subscribe();
 -
++        try {
++            //should throw exception if can't start
++            statusService.setStatus(applicationId, jobId, 
StatusService.Status.STARTED, new 
LinkedHashMap<>()).toBlocking().lastOrDefault(null);
++        }catch (Exception e){
++            logger.error("failed to set status for " + jobId, e);
++        }
+         Map<String,Object> data = new HashMap<>();
+         data.put("jobId",jobId);
+         data.put("status",StatusService.Status.STARTED);
+         response.setData(data);
+         response.setSuccess();
+         return response;
+     }
+ 
+     @RequireSystemAccess
+     @GET
+     @Path( "{applicationId}/job/{jobId}" )
+     public ApiResponse getStatus(
+         @Context UriInfo ui,
+         @PathParam("applicationId") UUID applicationId,
+         @PathParam("jobId") UUID jobId,
+         @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback 
) throws Exception{
+ 
+         final StatusService statusService = 
injector.getInstance(StatusService.class);
+ 
+         final ApiResponse response = createApiResponse();
+ 
+         response.setAction( "clear application" );
+ 
+         StatusService.JobStatus jobStatus = 
statusService.getStatus(applicationId, jobId).toBlocking().lastOrDefault(null);
+ 
+         Map<String,Object> data = new HashMap<>();
+         data.put("jobId",jobId);
+         data.put( "status", jobStatus.getStatus().toString() );
+         data.put( "metadata", jobStatus.getData() );
+         response.setData(data);
+         response.setSuccess();
+         return response;
+     }
+ 
+ }

Reply via email to