You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/03/06 20:21:16 UTC

[01/50] [abbrv] git commit: Fixing parse errors

Repository: incubator-usergrid
Updated Branches:
  refs/heads/two-dot-o 325dc57a9 -> 0765eee12
  refs/pull/60/head cb606aa7b -> a88249412
  refs/pull/60/merge f827d16bf -> bb64d93dd (forced update)


Fixing parse errors

When trying to run your example I encountered these two errors immediately:

PHP Parse error:  syntax error, unexpected '[' in /lib/vendor/Apigee/Usergrid/Collection.php on line 285
PHP Parse error:  syntax error, unexpected '}' in /lib/vendor/Apigee/Usergrid/Collection.php on line 290

Which are caused a missing semi-colon on line 289 and attempting to create an array with [] instead of the constructor function array() on line 285.

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

Branch: refs/pull/60/merge
Commit: d72910d33e4e8e2f0e454b13da6d27148cc3fe66
Parents: f368246
Author: Ben Brooks <be...@benbrooks.net>
Authored: Fri Feb 28 14:10:03 2014 -0800
Committer: Ben Brooks <be...@benbrooks.net>
Committed: Fri Feb 28 14:10:03 2014 -0800

----------------------------------------------------------------------
 sdks/php/lib/vendor/Apigee/Usergrid/Collection.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d72910d3/sdks/php/lib/vendor/Apigee/Usergrid/Collection.php
----------------------------------------------------------------------
diff --git a/sdks/php/lib/vendor/Apigee/Usergrid/Collection.php b/sdks/php/lib/vendor/Apigee/Usergrid/Collection.php
index 9b49d38..6942cfb 100644
--- a/sdks/php/lib/vendor/Apigee/Usergrid/Collection.php
+++ b/sdks/php/lib/vendor/Apigee/Usergrid/Collection.php
@@ -282,11 +282,11 @@ class Collection {
     $data->previous = $this->previous;
     $data->next = $this->next;
     $data->cursor = $this->cursor;
-    $data->list=[];
+    $data->list = array();
     $this->reset_entity_pointer();
     while ($this->has_next_entity()) {
         $entity = $this->get_next_entity();
-        array_push($data->list, $entity->get_json())
+        array_push($data->list, $entity->get_json());
     }
     return json_encode($data);
   }


[06/50] [abbrv] git commit: Move SimpleService test class to correct package (not sure why this was not breaking everybody's build).

Posted by sn...@apache.org.
Move SimpleService test class to correct package (not sure why this was not breaking everybody's build).


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

Branch: refs/pull/60/merge
Commit: 0607083134c13eb0ae883cb520b8532e06548be8
Parents: 530a350
Author: Dave Johnson <sn...@gmail.com>
Authored: Sat Mar 1 14:39:25 2014 -0500
Committer: Dave Johnson <sn...@gmail.com>
Committed: Sat Mar 1 14:39:25 2014 -0500

----------------------------------------------------------------------
 .../usergrid/services/ServiceFactoryIT.java     |  2 +-
 .../usergrid/services/simple/SimpleService.java | 33 ++++++++++++++++++++
 .../java/org/usergrid/simple/SimpleService.java | 33 --------------------
 3 files changed, 34 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/06070831/stack/services/src/test/java/org/apache/usergrid/services/ServiceFactoryIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/ServiceFactoryIT.java b/stack/services/src/test/java/org/apache/usergrid/services/ServiceFactoryIT.java
index 9781050..0ea0538 100644
--- a/stack/services/src/test/java/org/apache/usergrid/services/ServiceFactoryIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/services/ServiceFactoryIT.java
@@ -25,7 +25,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.usergrid.cassandra.Concurrent;
 
-import org.usergrid.simple.SimpleService;
+import org.apache.usergrid.services.simple.SimpleService;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/06070831/stack/services/src/test/java/org/apache/usergrid/services/simple/SimpleService.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/simple/SimpleService.java b/stack/services/src/test/java/org/apache/usergrid/services/simple/SimpleService.java
new file mode 100644
index 0000000..630898f
--- /dev/null
+++ b/stack/services/src/test/java/org/apache/usergrid/services/simple/SimpleService.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.usergrid.services.simple;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.usergrid.services.AbstractCollectionService;
+
+
+public class SimpleService extends AbstractCollectionService {
+
+    private static final Logger logger = LoggerFactory.getLogger( SimpleService.class );
+
+
+    public SimpleService() {
+        super();
+        logger.info( "/simple" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/06070831/stack/services/src/test/java/org/usergrid/simple/SimpleService.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/usergrid/simple/SimpleService.java b/stack/services/src/test/java/org/usergrid/simple/SimpleService.java
deleted file mode 100644
index a132bc3..0000000
--- a/stack/services/src/test/java/org/usergrid/simple/SimpleService.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * 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.
- */
-package org.usergrid.simple;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.usergrid.services.AbstractCollectionService;
-
-
-public class SimpleService extends AbstractCollectionService {
-
-    private static final Logger logger = LoggerFactory.getLogger( SimpleService.class );
-
-
-    public SimpleService() {
-        super();
-        logger.info( "/simple" );
-    }
-}


[32/50] [abbrv] git commit: Merge pull request #68 from usergrid/applimitfix

Posted by sn...@apache.org.
Merge pull request #68 from usergrid/applimitfix

Removed 10 app limit

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

Branch: refs/pull/60/head
Commit: 754aa1f525aebac624fa12068da8b988d11b347e
Parents: 2891b54 65064ba
Author: Dave Johnson <da...@rollerweblogger.org>
Authored: Mon Mar 3 21:27:45 2014 -0500
Committer: Dave Johnson <da...@rollerweblogger.org>
Committed: Mon Mar 3 21:27:45 2014 -0500

----------------------------------------------------------------------
 stack/pom.xml                                   |  2 +-
 .../applications/ApplicationsIT.java            | 84 ++++++++++++++++++++
 .../cassandra/ManagementServiceImpl.java        | 27 ++++---
 3 files changed, 101 insertions(+), 12 deletions(-)
----------------------------------------------------------------------



[39/50] [abbrv] Made blanket changes to remove ExportInfo to support serialization of export information.

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a7504dee/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
index 48b756b..686b5c6 100644
--- a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
@@ -27,18 +27,14 @@ import org.apache.usergrid.cassandra.CassandraResource;
 import org.apache.usergrid.cassandra.ClearShiroSubject;
 import org.apache.usergrid.cassandra.Concurrent;
 import org.apache.usergrid.count.SimpleBatcher;
-import org.apache.usergrid.management.ExportInfo;
 import org.apache.usergrid.management.OrganizationInfo;
 import org.apache.usergrid.management.UserInfo;
 import org.apache.usergrid.management.export.ExportJob;
 import org.apache.usergrid.management.export.ExportService;
 import org.apache.usergrid.management.export.S3Export;
-import org.apache.usergrid.management.export.S3ExportImpl;
 import org.apache.usergrid.persistence.CredentialsInfo;
 import org.apache.usergrid.persistence.Entity;
 import org.apache.usergrid.persistence.EntityManager;
-import org.apache.usergrid.persistence.EntityManagerFactory;
-import org.apache.usergrid.persistence.entities.Export;
 import org.apache.usergrid.persistence.entities.JobData;
 import org.apache.usergrid.persistence.entities.User;
 import org.apache.usergrid.security.AuthPrincipalType;
@@ -57,10 +53,12 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 
+
 /** @author zznate */
 @Concurrent()
 public class ManagementServiceIT {
@@ -743,94 +741,94 @@ public class ManagementServiceIT {
 
         assertEquals( userId, authedUser.getUuid() );
     }
-
-
-    //Tests to make sure we can call the job with mock data and it runs.
-    @Test //Connections won't save when run with maven, but on local builds it will.
-    public void testConnectionsOnCollectionExport() throws Exception {
-
-        File f = null;
-        int indexCon = 0;
-
-
-        try {
-            f = new File( "testFileConnections.json" );
-            f.delete();
-        }
-        catch ( Exception e ) {
-            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
-        }
-
-
-        S3Export s3Export = new MockS3ExportImpl();
-        s3Export.setFilename( "testFileConnections.json" );
-
-        ExportService exportService = setup.getExportService();
-        HashMap<String, Object> payload = payloadBuilder();
-
-        ExportInfo exportInfo = new ExportInfo( payload );
-        exportInfo.setOrganizationId( organization.getUuid() );
-        exportInfo.setApplicationId( applicationId );
-        exportInfo.setCollection( "users" );
-
-        EntityManager em = setup.getEmf().getEntityManager( applicationId );
-        //intialize user object to be posted
-        Map<String, Object> userProperties = null;
-        Entity[] entity;
-        entity = new Entity[2];
-        //creates entities
-        for ( int i = 0; i < 2; i++ ) {
-            userProperties = new LinkedHashMap<String, Object>();
-            userProperties.put( "username", "meatIsGreat" + i );
-            userProperties.put( "email", "grey" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
-
-            entity[i] = em.create( "users", userProperties );
-        }
-        //creates connections
-        em.createConnection( em.getRef( entity[0].getUuid() ), "Vibrations", em.getRef( entity[1].getUuid() ) );
-        em.createConnection( em.getRef( entity[1].getUuid() ), "Vibrations", em.getRef( entity[0].getUuid() ) );
-
-        UUID exportUUID = exportService.schedule( exportInfo );
-        exportService.setS3Export( s3Export );
-
-        //create and initialize jobData returned in JobExecution.
-        JobData jobData = new JobData();
-        jobData.setProperty( "jobName", "exportJob" );
-        jobData.setProperty( "exportInfo", exportInfo );
-        jobData.setProperty( "exportId", exportUUID );
-
-        JobExecution jobExecution = mock( JobExecution.class );
-        when( jobExecution.getJobData() ).thenReturn( jobData );
-
-        exportService.doExport( exportInfo, jobExecution );
-
-        JSONParser parser = new JSONParser();
-
-        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-        //assertEquals(2, a.size() );
-
-        for(indexCon  = 0; indexCon < a.size(); indexCon++) {
-            JSONObject jObj = ( JSONObject ) a.get( indexCon );
-            JSONObject data = ( JSONObject ) jObj.get( "Metadata" );
-            String uuid = (String) data.get( "uuid" );
-            if ( entity[0].getUuid().toString().equals( uuid )) {
-                break;
-            }
-
-        }
-
-        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( indexCon );
-        org.json.simple.JSONObject objConnections = ( org.json.simple.JSONObject ) objEnt.get( "connections" );
-
-        assertNotNull( objConnections );
-
-        org.json.simple.JSONArray objVibrations = ( org.json.simple.JSONArray ) objConnections.get( "Vibrations" );
-
-        assertNotNull( objVibrations );
-
-        f.delete();
-    }
-
+//
+//
+//    //Tests to make sure we can call the job with mock data and it runs.
+//    @Test //Connections won't save when run with maven, but on local builds it will.
+//    public void testConnectionsOnCollectionExport() throws Exception {
+//
+//        File f = null;
+//        int indexCon = 0;
+//
+//
+//        try {
+//            f = new File( "testFileConnections.json" );
+//            f.delete();
+//        }
+//        catch ( Exception e ) {
+//            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
+//        }
+//
+//
+//        S3Export s3Export = new MockS3ExportImpl();
+//        s3Export.setFilename( "testFileConnections.json" );
+//
+//        ExportService exportService = setup.getExportService();
+//        HashMap<String, Object> payload = payloadBuilder();
+//
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+//        exportInfo.setCollection( "users" );
+//
+//        EntityManager em = setup.getEmf().getEntityManager( applicationId );
+//        //intialize user object to be posted
+//        Map<String, Object> userProperties = null;
+//        Entity[] entity;
+//        entity = new Entity[2];
+//        //creates entities
+//        for ( int i = 0; i < 2; i++ ) {
+//            userProperties = new LinkedHashMap<String, Object>();
+//            userProperties.put( "username", "meatIsGreat" + i );
+//            userProperties.put( "email", "grey" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+//
+//            entity[i] = em.create( "users", userProperties );
+//        }
+//        //creates connections
+//        em.createConnection( em.getRef( entity[0].getUuid() ), "Vibrations", em.getRef( entity[1].getUuid() ) );
+//        em.createConnection( em.getRef( entity[1].getUuid() ), "Vibrations", em.getRef( entity[0].getUuid() ) );
+//
+//        UUID exportUUID = exportService.schedule( exportInfo );
+//        exportService.setS3Export( s3Export );
+//
+//        //create and initialize jobData returned in JobExecution.
+//        JobData jobData = new JobData();
+//        jobData.setProperty( "jobName", "exportJob" );
+//        jobData.setProperty( "exportInfo", exportInfo );
+//        jobData.setProperty( "exportId", exportUUID );
+//
+//        JobExecution jobExecution = mock( JobExecution.class );
+//        when( jobExecution.getJobData() ).thenReturn( jobData );
+//
+//        exportService.doExport( exportInfo, jobExecution );
+//
+//        JSONParser parser = new JSONParser();
+//
+//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+//        //assertEquals(2, a.size() );
+//
+//        for(indexCon  = 0; indexCon < a.size(); indexCon++) {
+//            JSONObject jObj = ( JSONObject ) a.get( indexCon );
+//            JSONObject data = ( JSONObject ) jObj.get( "Metadata" );
+//            String uuid = (String) data.get( "uuid" );
+//            if ( entity[0].getUuid().toString().equals( uuid )) {
+//                break;
+//            }
+//
+//        }
+//
+//        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( indexCon );
+//        org.json.simple.JSONObject objConnections = ( org.json.simple.JSONObject ) objEnt.get( "connections" );
+//
+//        assertNotNull( objConnections );
+//
+//        org.json.simple.JSONArray objVibrations = ( org.json.simple.JSONArray ) objConnections.get( "Vibrations" );
+//
+//        assertNotNull( objVibrations );
+//
+//        f.delete();
+//    }
+//
     @Ignore //Connections won't save when run with maven, but on local builds it will.
     public void testConnectionsOnApplicationEndpoint() throws Exception {
 
@@ -851,9 +849,11 @@ public class ManagementServiceIT {
         ExportService exportService = setup.getExportService();
         HashMap<String, Object> payload = payloadBuilder();
 
-        ExportInfo exportInfo = new ExportInfo( payload );
-        exportInfo.setOrganizationId( organization.getUuid() );
-        exportInfo.setApplicationId( applicationId );
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+        payload.put("organizationId",organization.getUuid());
+        payload.put("applicationId",applicationId);
 
         EntityManager em = setup.getEmf().getEntityManager( applicationId );
         //intialize user object to be posted
@@ -872,19 +872,19 @@ public class ManagementServiceIT {
         em.createConnection( em.getRef( entity[0].getUuid() ), "Vibrations", em.getRef( entity[1].getUuid() ) );
         em.createConnection( em.getRef( entity[1].getUuid() ), "Vibrations", em.getRef( entity[0].getUuid() ) );
 
-        UUID exportUUID = exportService.schedule( exportInfo );
+        UUID exportUUID = exportService.schedule( payload );
         exportService.setS3Export( s3Export );
 
         //create and initialize jobData returned in JobExecution.
         JobData jobData = new JobData();
         jobData.setProperty( "jobName", "exportJob" );
-        jobData.setProperty( "exportInfo", exportInfo );
+        jobData.setProperty( "exportInfo", payload );
         jobData.setProperty( "exportId", exportUUID );
 
         JobExecution jobExecution = mock( JobExecution.class );
         when( jobExecution.getJobData() ).thenReturn( jobData );
 
-        exportService.doExport( exportInfo, jobExecution );
+        exportService.doExport( jobExecution );
 
         JSONParser parser = new JSONParser();
 
@@ -916,368 +916,370 @@ public class ManagementServiceIT {
 
         f.delete();
     }
-
-//need to add tests for the other endpoint as well.
-    @Test
-    public void testValidityOfCollectionExport() throws Exception {
-
-        File f = null;
-
-        try {
-            f = new File( "fileValidity.json" );
-            f.delete();
-        }
-        catch ( Exception e ) {
-            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
-        }
-
-        S3Export s3Export = new MockS3ExportImpl();
-        s3Export.setFilename( "fileValidity.json" );
-        ExportService exportService = setup.getExportService();
-        HashMap<String, Object> payload = payloadBuilder();
-
-        ExportInfo exportInfo = new ExportInfo( payload );
-        exportInfo.setOrganizationId( organization.getUuid() );
-        exportInfo.setApplicationId( applicationId );
-        exportInfo.setCollection( "users" );
-
-        UUID exportUUID = exportService.schedule( exportInfo );
-        exportService.setS3Export( s3Export );
-
-        JobData jobData = new JobData();
-        jobData.setProperty( "jobName", "exportJob" );
-        jobData.setProperty( "exportInfo", exportInfo );
-        jobData.setProperty( "exportId", exportUUID );
-
-        JobExecution jobExecution = mock( JobExecution.class );
-        when( jobExecution.getJobData() ).thenReturn( jobData );
-
-        exportService.doExport( exportInfo, jobExecution );
-
-        JSONParser parser = new JSONParser();
-
-        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-
-        for ( int i = 0; i < a.size(); i++ ) {
-            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
-            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
-            assertNotNull( entityData );
-        }
-        f.delete();
-    }
-
-    @Test
-    public void testValidityOfApplicationExport() throws Exception {
-
-        File f = null;
-
-        try {
-            f = new File( "testValidityOfApplicationExport.json" );
-            f.delete();
-        }
-        catch ( Exception e ) {
-            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
-        }
-
-        S3Export s3Export = new MockS3ExportImpl();
-        s3Export.setFilename( "testValidityOfApplicationExport.json" );
-        ExportService exportService = setup.getExportService();
-        HashMap<String, Object> payload = payloadBuilder();
-
-        ExportInfo exportInfo = new ExportInfo( payload );
-        exportInfo.setOrganizationId( organization.getUuid() );
-        exportInfo.setApplicationId( applicationId );
-
-        UUID exportUUID = exportService.schedule( exportInfo );
-        exportService.setS3Export( s3Export );
-
-        JobData jobData = new JobData();
-        jobData.setProperty( "jobName", "exportJob" );
-        jobData.setProperty( "exportInfo", exportInfo );
-        jobData.setProperty( "exportId", exportUUID );
-
-        JobExecution jobExecution = mock( JobExecution.class );
-        when( jobExecution.getJobData() ).thenReturn( jobData );
-
-        exportService.doExport( exportInfo, jobExecution );
-
-        JSONParser parser = new JSONParser();
-
-        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-
-        for ( int i = 0; i < a.size(); i++ ) {
-            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
-            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
-            assertNotNull( entityData );
-        }
-        f.delete();
-    }
-
-    @Test
-    public void testExportOneOrgCollectionEndpoint() throws Exception {
-
-        File f = null;
-
-
-        try {
-            f = new File( "exportOneOrg.json" );
-            f.delete();
-        }
-        catch ( Exception e ) {
-            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
-        }
-        setup.getMgmtSvc()
-             .createOwnerAndOrganization( "noExport", "junkUserName", "junkRealName", "ugExport@usergrid.com",
-                     "123456789" );
-
-        S3Export s3Export = new MockS3ExportImpl();
-        s3Export.setFilename("exportOneOrg.json");
-        ExportService exportService = setup.getExportService();
-        HashMap<String, Object> payload = payloadBuilder();
-
-        ExportInfo exportInfo = new ExportInfo( payload );
-        exportInfo.setOrganizationId( organization.getUuid() );
-        exportInfo.setApplicationId( applicationId );
-        exportInfo.setCollection( "roles" );
-
-        UUID exportUUID = exportService.schedule( exportInfo );
-        exportService.setS3Export( s3Export );
-
-        JobData jobData = new JobData();
-        jobData.setProperty( "jobName", "exportJob" );
-        jobData.setProperty( "exportInfo", exportInfo );
-        jobData.setProperty( "exportId", exportUUID );
-
-        JobExecution jobExecution = mock( JobExecution.class );
-        when( jobExecution.getJobData() ).thenReturn( jobData );
-
-        exportService.doExport( exportInfo, jobExecution );
-
-        JSONParser parser = new JSONParser();
-
-        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-
-        assertEquals( 3 , a.size() );
-        for ( int i = 0; i < a.size(); i++ ) {
-            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
-            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
-            String entityName = ( String ) entityData.get( "name" );
-            // assertNotEquals( "NotEqual","junkRealName",entityName );
-            assertFalse( "junkRealName".equals( entityName ) );
-        }
-        f.delete();
-    }
-
-
-    @Test
-    public void testExportOneAppOnCollectionEndpoint() throws Exception {
-
-        File f = null;
-        String orgName = "ed-organization";
-        String appName = "testAppCollectionTestNotExported";
-
-        try {
-            f = new File( "exportOneApp.json" );
-            f.delete();
-        }
-        catch ( Exception e ) {
-            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
-        }
-
-        UUID appId = setup.getEmf().createApplication( orgName, appName );
-
-
-        EntityManager em = setup.getEmf().getEntityManager( appId );
-        //intialize user object to be posted
-        Map<String, Object> userProperties = null;
-        Entity[] entity;
-        entity = new Entity[1];
-        //creates entities
-        for ( int i = 0; i < 1; i++ ) {
-            userProperties = new LinkedHashMap<String, Object>();
-            userProperties.put( "username", "junkRealName");
-            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
-            entity[i] = em.create( "user", userProperties );
-        }
-
-        S3Export s3Export = new MockS3ExportImpl();
-        s3Export.setFilename( "exportOneApp.json" );
-        ExportService exportService = setup.getExportService();
-        HashMap<String, Object> payload = payloadBuilder();
-
-        ExportInfo exportInfo = new ExportInfo( payload );
-        exportInfo.setOrganizationId( organization.getUuid() );
-        exportInfo.setApplicationId( applicationId );
-        exportInfo.setCollection( "roles" ); // <- this line determines if it is a collection back up or a application backup.
-
-        UUID exportUUID = exportService.schedule( exportInfo );
-        exportService.setS3Export( s3Export );
-
-        JobData jobData = new JobData();
-        jobData.setProperty( "jobName", "exportJob" );
-        jobData.setProperty( "exportInfo", exportInfo );
-        jobData.setProperty( "exportId", exportUUID );
-
-        JobExecution jobExecution = mock( JobExecution.class );
-        when( jobExecution.getJobData() ).thenReturn( jobData );
-
-        exportService.doExport( exportInfo, jobExecution );
-
-        JSONParser parser = new JSONParser();
-
-        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-
-        assertEquals( 3 , a.size() );
-        for ( int i = 0; i < a.size(); i++ ) {
-            org.json.simple.JSONObject data = ( org.json.simple.JSONObject ) a.get( i );
-            org.json.simple.JSONObject entityData = ( JSONObject ) data.get( "Metadata" );
-            String entityName = ( String ) entityData.get( "name" );
-            assertFalse( "junkRealName".equals( entityName ) );
-        }
-        f.delete();
-    }
-
-    @Test
-    public void testExportOneAppOnApplicationEndpoint() throws Exception {
-
-        File f = null;
-        String orgName = "ed-organization";
-        String appName = "testAppNotExported";
-
-        try {
-            f = new File( "exportOneApp.json" );
-            f.delete();
-        }
-        catch ( Exception e ) {
-            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
-        }
-
-        UUID appId = setup.getEmf().createApplication( orgName, appName );
-
-
-        EntityManager em = setup.getEmf().getEntityManager( appId );
-        //intialize user object to be posted
-        Map<String, Object> userProperties = null;
-        Entity[] entity;
-        entity = new Entity[1];
-        //creates entities
-        for ( int i = 0; i < 1; i++ ) {
-            userProperties = new LinkedHashMap<String, Object>();
-            userProperties.put( "username", "junkRealName");
-            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
-            entity[i] = em.create( "users", userProperties );
-        }
-
-        S3Export s3Export = new MockS3ExportImpl();
-        s3Export.setFilename( "exportOneApp.json" );
-        ExportService exportService = setup.getExportService();
-        HashMap<String, Object> payload = payloadBuilder();
-
-        ExportInfo exportInfo = new ExportInfo( payload );
-        exportInfo.setOrganizationId( organization.getUuid() );
-        exportInfo.setApplicationId( applicationId );
-
-        UUID exportUUID = exportService.schedule( exportInfo );
-        exportService.setS3Export( s3Export );
-
-        JobData jobData = new JobData();
-        jobData.setProperty( "jobName", "exportJob" );
-        jobData.setProperty( "exportInfo", exportInfo );
-        jobData.setProperty( "exportId", exportUUID );
-
-        JobExecution jobExecution = mock( JobExecution.class );
-        when( jobExecution.getJobData() ).thenReturn( jobData );
-
-        exportService.doExport( exportInfo, jobExecution );
-
-        JSONParser parser = new JSONParser();
-
-        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-
-        //assertEquals( 3 , a.size() );
-        for ( int i = 0; i < a.size(); i++ ) {
-            org.json.simple.JSONObject data = ( org.json.simple.JSONObject ) a.get( i );
-            org.json.simple.JSONObject entityData = ( JSONObject ) data.get( "Metadata" );
-            String entityName = ( String ) entityData.get( "name" );
-            assertFalse( "junkRealName".equals( entityName ) );
-        }
-        f.delete();
-    }
-
-    @Test
-    public void testExportOneCollection() throws Exception {
-
-        File f = null;
-        int entitiesToCreate = 10000;
-
-        try {
-            f = new File( "exportOneCollection.json" );
-            f.delete();
-        }
-        catch ( Exception e ) {
-            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
-        }
-
-        EntityManager em = setup.getEmf().getEntityManager( applicationId);
-        em.createApplicationCollection( "baconators" );
-        //intialize user object to be posted
-        Map<String, Object> userProperties = null;
-        Entity[] entity;
-        entity = new Entity[entitiesToCreate];
-        //creates entities
-        for ( int i = 0; i < entitiesToCreate; i++ ) {
-            userProperties = new LinkedHashMap<String, Object>();
-            userProperties.put( "username", "billybob" + i );
-            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
-            entity[i] = em.create( "baconators", userProperties );
-        }
-
-        S3Export s3Export = new MockS3ExportImpl();
-        s3Export.setFilename( "exportOneCollection.json" );
-        ExportService exportService = setup.getExportService();
-        HashMap<String, Object> payload = payloadBuilder();
-
-        ExportInfo exportInfo = new ExportInfo( payload );
-        exportInfo.setOrganizationId( organization.getUuid() );
-        exportInfo.setApplicationId( applicationId );
-        exportInfo.setCollection( "baconators" );
-
-        UUID exportUUID = exportService.schedule( exportInfo );
-        exportService.setS3Export( s3Export );
-
-        JobData jobData = new JobData();
-        jobData.setProperty( "jobName", "exportJob" );
-        jobData.setProperty( "exportInfo", exportInfo );
-        jobData.setProperty( "exportId", exportUUID );
-
-        JobExecution jobExecution = mock( JobExecution.class );
-        when( jobExecution.getJobData() ).thenReturn( jobData );
-
-        exportService.doExport( exportInfo, jobExecution );
-
-        JSONParser parser = new JSONParser();
-
-        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-
-        assertEquals( entitiesToCreate , a.size() );
-        f.delete();
-    }
-
-
-    //only handles the DoJob Code , different tests for DoExport
+//
+////need to add tests for the other endpoint as well.
+//    @Test
+//    public void testValidityOfCollectionExport() throws Exception {
+//
+//        File f = null;
+//
+//        try {
+//            f = new File( "fileValidity.json" );
+//            f.delete();
+//        }
+//        catch ( Exception e ) {
+//            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
+//        }
+//
+//        S3Export s3Export = new MockS3ExportImpl();
+//        s3Export.setFilename( "fileValidity.json" );
+//        ExportService exportService = setup.getExportService();
+//        HashMap<String, Object> payload = payloadBuilder();
+//
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+//        exportInfo.setCollection( "users" );
+//
+//        UUID exportUUID = exportService.schedule( exportInfo );
+//        exportService.setS3Export( s3Export );
+//
+//        JobData jobData = new JobData();
+//        jobData.setProperty( "jobName", "exportJob" );
+//        jobData.setProperty( "exportInfo", exportInfo );
+//        jobData.setProperty( "exportId", exportUUID );
+//
+//        JobExecution jobExecution = mock( JobExecution.class );
+//        when( jobExecution.getJobData() ).thenReturn( jobData );
+//
+//        exportService.doExport( exportInfo, jobExecution );
+//
+//        JSONParser parser = new JSONParser();
+//
+//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+//
+//        for ( int i = 0; i < a.size(); i++ ) {
+//            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
+//            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
+//            assertNotNull( entityData );
+//        }
+//        f.delete();
+//    }
+//
+//    @Test
+//    public void testValidityOfApplicationExport() throws Exception {
+//
+//        File f = null;
+//
+//        try {
+//            f = new File( "testValidityOfApplicationExport.json" );
+//            f.delete();
+//        }
+//        catch ( Exception e ) {
+//            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
+//        }
+//
+//        S3Export s3Export = new MockS3ExportImpl();
+//        s3Export.setFilename( "testValidityOfApplicationExport.json" );
+//        ExportService exportService = setup.getExportService();
+//        HashMap<String, Object> payload = payloadBuilder();
+//
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+//
+//        UUID exportUUID = exportService.schedule( exportInfo );
+//        exportService.setS3Export( s3Export );
+//
+//        JobData jobData = new JobData();
+//        jobData.setProperty( "jobName", "exportJob" );
+//        jobData.setProperty( "exportInfo", exportInfo );
+//        jobData.setProperty( "exportId", exportUUID );
+//
+//        JobExecution jobExecution = mock( JobExecution.class );
+//        when( jobExecution.getJobData() ).thenReturn( jobData );
+//
+//        exportService.doExport( exportInfo, jobExecution );
+//
+//        JSONParser parser = new JSONParser();
+//
+//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+//
+//        for ( int i = 0; i < a.size(); i++ ) {
+//            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
+//            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
+//            assertNotNull( entityData );
+//        }
+//        f.delete();
+//    }
+//
+//    @Test
+//    public void testExportOneOrgCollectionEndpoint() throws Exception {
+//
+//        File f = null;
+//
+//
+//        try {
+//            f = new File( "exportOneOrg.json" );
+//            f.delete();
+//        }
+//        catch ( Exception e ) {
+//            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
+//        }
+//        setup.getMgmtSvc()
+//             .createOwnerAndOrganization( "noExport", "junkUserName", "junkRealName", "ugExport@usergrid.com",
+//                     "123456789" );
+//
+//        S3Export s3Export = new MockS3ExportImpl();
+//        s3Export.setFilename("exportOneOrg.json");
+//        ExportService exportService = setup.getExportService();
+//        HashMap<String, Object> payload = payloadBuilder();
+//
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+//        exportInfo.setCollection( "roles" );
+//
+//        UUID exportUUID = exportService.schedule( exportInfo );
+//        exportService.setS3Export( s3Export );
+//
+//        JobData jobData = new JobData();
+//        jobData.setProperty( "jobName", "exportJob" );
+//        jobData.setProperty( "exportInfo", exportInfo );
+//        jobData.setProperty( "exportId", exportUUID );
+//
+//        JobExecution jobExecution = mock( JobExecution.class );
+//        when( jobExecution.getJobData() ).thenReturn( jobData );
+//
+//        exportService.doExport( exportInfo, jobExecution );
+//
+//        JSONParser parser = new JSONParser();
+//
+//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+//
+//        assertEquals( 3 , a.size() );
+//        for ( int i = 0; i < a.size(); i++ ) {
+//            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
+//            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
+//            String entityName = ( String ) entityData.get( "name" );
+//            // assertNotEquals( "NotEqual","junkRealName",entityName );
+//            assertFalse( "junkRealName".equals( entityName ) );
+//        }
+//        f.delete();
+//    }
+//
+//
+//    @Test
+//    public void testExportOneAppOnCollectionEndpoint() throws Exception {
+//
+//        File f = null;
+//        String orgName = "ed-organization";
+//        String appName = "testAppCollectionTestNotExported";
+//
+//        try {
+//            f = new File( "exportOneApp.json" );
+//            f.delete();
+//        }
+//        catch ( Exception e ) {
+//            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
+//        }
+//
+//        UUID appId = setup.getEmf().createApplication( orgName, appName );
+//
+//
+//        EntityManager em = setup.getEmf().getEntityManager( appId );
+//        //intialize user object to be posted
+//        Map<String, Object> userProperties = null;
+//        Entity[] entity;
+//        entity = new Entity[1];
+//        //creates entities
+//        for ( int i = 0; i < 1; i++ ) {
+//            userProperties = new LinkedHashMap<String, Object>();
+//            userProperties.put( "username", "junkRealName");
+//            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+//            entity[i] = em.create( "user", userProperties );
+//        }
+//
+//        S3Export s3Export = new MockS3ExportImpl();
+//        s3Export.setFilename( "exportOneApp.json" );
+//        ExportService exportService = setup.getExportService();
+//        HashMap<String, Object> payload = payloadBuilder();
+//
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+//        exportInfo.setCollection( "roles" ); // <- this line determines if it is a collection back up or a application backup.
+//
+//        UUID exportUUID = exportService.schedule( exportInfo );
+//        exportService.setS3Export( s3Export );
+//
+//        JobData jobData = new JobData();
+//        jobData.setProperty( "jobName", "exportJob" );
+//        jobData.setProperty( "exportInfo", exportInfo );
+//        jobData.setProperty( "exportId", exportUUID );
+//
+//        JobExecution jobExecution = mock( JobExecution.class );
+//        when( jobExecution.getJobData() ).thenReturn( jobData );
+//
+//        exportService.doExport( exportInfo, jobExecution );
+//
+//        JSONParser parser = new JSONParser();
+//
+//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+//
+//        assertEquals( 3 , a.size() );
+//        for ( int i = 0; i < a.size(); i++ ) {
+//            org.json.simple.JSONObject data = ( org.json.simple.JSONObject ) a.get( i );
+//            org.json.simple.JSONObject entityData = ( JSONObject ) data.get( "Metadata" );
+//            String entityName = ( String ) entityData.get( "name" );
+//            assertFalse( "junkRealName".equals( entityName ) );
+//        }
+//        f.delete();
+//    }
+//
+//    @Test
+//    public void testExportOneAppOnApplicationEndpoint() throws Exception {
+//
+//        File f = null;
+//        String orgName = "ed-organization";
+//        String appName = "testAppNotExported";
+//
+//        try {
+//            f = new File( "exportOneApp.json" );
+//            f.delete();
+//        }
+//        catch ( Exception e ) {
+//            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
+//        }
+//
+//        UUID appId = setup.getEmf().createApplication( orgName, appName );
+//
+//
+//        EntityManager em = setup.getEmf().getEntityManager( appId );
+//        //intialize user object to be posted
+//        Map<String, Object> userProperties = null;
+//        Entity[] entity;
+//        entity = new Entity[1];
+//        //creates entities
+//        for ( int i = 0; i < 1; i++ ) {
+//            userProperties = new LinkedHashMap<String, Object>();
+//            userProperties.put( "username", "junkRealName");
+//            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+//            entity[i] = em.create( "users", userProperties );
+//        }
+//
+//        S3Export s3Export = new MockS3ExportImpl();
+//        s3Export.setFilename( "exportOneApp.json" );
+//        ExportService exportService = setup.getExportService();
+//        HashMap<String, Object> payload = payloadBuilder();
+//
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+//
+//        UUID exportUUID = exportService.schedule( exportInfo );
+//        exportService.setS3Export( s3Export );
+//
+//        JobData jobData = new JobData();
+//        jobData.setProperty( "jobName", "exportJob" );
+//        jobData.setProperty( "exportInfo", exportInfo );
+//        jobData.setProperty( "exportId", exportUUID );
+//
+//        JobExecution jobExecution = mock( JobExecution.class );
+//        when( jobExecution.getJobData() ).thenReturn( jobData );
+//
+//        exportService.doExport( exportInfo, jobExecution );
+//
+//        JSONParser parser = new JSONParser();
+//
+//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+//
+//        //assertEquals( 3 , a.size() );
+//        for ( int i = 0; i < a.size(); i++ ) {
+//            org.json.simple.JSONObject data = ( org.json.simple.JSONObject ) a.get( i );
+//            org.json.simple.JSONObject entityData = ( JSONObject ) data.get( "Metadata" );
+//            String entityName = ( String ) entityData.get( "name" );
+//            assertFalse( "junkRealName".equals( entityName ) );
+//        }
+//        f.delete();
+//    }
+//
+//    @Test
+//    public void testExportOneCollection() throws Exception {
+//
+//        File f = null;
+//        int entitiesToCreate = 10000;
+//
+//        try {
+//            f = new File( "exportOneCollection.json" );
+//            f.delete();
+//        }
+//        catch ( Exception e ) {
+//            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
+//        }
+//
+//        EntityManager em = setup.getEmf().getEntityManager( applicationId);
+//        em.createApplicationCollection( "baconators" );
+//        //intialize user object to be posted
+//        Map<String, Object> userProperties = null;
+//        Entity[] entity;
+//        entity = new Entity[entitiesToCreate];
+//        //creates entities
+//        for ( int i = 0; i < entitiesToCreate; i++ ) {
+//            userProperties = new LinkedHashMap<String, Object>();
+//            userProperties.put( "username", "billybob" + i );
+//            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+//            entity[i] = em.create( "baconators", userProperties );
+//        }
+//
+//        S3Export s3Export = new MockS3ExportImpl();
+//        s3Export.setFilename( "exportOneCollection.json" );
+//        ExportService exportService = setup.getExportService();
+//        HashMap<String, Object> payload = payloadBuilder();
+//
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+//        exportInfo.setCollection( "baconators" );
+//
+//        UUID exportUUID = exportService.schedule( exportInfo );
+//        exportService.setS3Export( s3Export );
+//
+//        JobData jobData = new JobData();
+//        jobData.setProperty( "jobName", "exportJob" );
+//        jobData.setProperty( "exportInfo", exportInfo );
+//        jobData.setProperty( "exportId", exportUUID );
+//
+//        JobExecution jobExecution = mock( JobExecution.class );
+//        when( jobExecution.getJobData() ).thenReturn( jobData );
+//
+//        exportService.doExport( exportInfo, jobExecution );
+//
+//        JSONParser parser = new JSONParser();
+//
+//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+//
+//        assertEquals( entitiesToCreate , a.size() );
+//        f.delete();
+//    }
+//
+//
+//    //only handles the DoJob Code , different tests for DoExport
     @Test
     public void testExportDoJob() throws Exception {
 
         HashMap<String, Object> payload = payloadBuilder();
 
-        ExportInfo exportInfo = new ExportInfo( payload );
-        exportInfo.setOrganizationId( organization.getUuid() );
-        exportInfo.setApplicationId( applicationId );
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+        payload.put( "organizationId",organization.getUuid() );
+        payload.put( "applicationId",applicationId);
 
 
         JobData jobData = new JobData();
         jobData.setProperty( "jobName", "exportJob" );
-        jobData.setProperty( "exportInfo", exportInfo ); //this needs to be populated with properties of export info
+        jobData.setProperty( "exportInfo", payload ); //this needs to be populated with properties of export info
 
         JobExecution jobExecution = mock( JobExecution.class );
 
@@ -1294,133 +1296,133 @@ public class ManagementServiceIT {
         }
         assert ( true );
     }
-
-    @Test
-    public void testExportDoExportOnApplicationEndpoint() throws Exception {
-
-        EntityManagerFactory emf = setup.getEmf();
-        EntityManager em = emf.getEntityManager( applicationId );
-        HashMap<String, Object> payload = payloadBuilder();
-        ExportService eS = setup.getExportService();
-
-        JobExecution jobExecution = mock( JobExecution.class );
-
-        ExportInfo exportInfo = new ExportInfo( payload );
-        exportInfo.setOrganizationId( organization.getUuid() );
-        exportInfo.setApplicationId( applicationId );
-
-        UUID entityExportUUID = eS.schedule( exportInfo );
-
-
-        JobData jobData = new JobData();
-        jobData.setProperty( "jobName", "exportJob" );
-        jobData.setProperty( "exportInfo", exportInfo );
-        jobData.setProperty( "exportId", entityExportUUID );
-
-        when( jobExecution.getJobData() ).thenReturn( jobData );
-
-        //Exportem.get(entityExport);
-        Export exportEntity = ( Export ) em.get( entityExportUUID );
-        assertNotNull( exportEntity );
-        String derp = exportEntity.getState().name();
-        assertEquals( "SCHEDULED", exportEntity.getState().name() );
-        try {
-            eS.doExport( exportInfo, jobExecution );
-        }
-        catch ( Exception e ) {
-            //throw e;
-            assert(false);
-        }
-        exportEntity = ( Export ) em.get( entityExportUUID );
-        assertNotNull( exportEntity );
-        assertEquals( "FINISHED", exportEntity.getState().name() );
-    }
-
-    //tests that with empty job data, the export still runs.
-    @Test
-    public void testExportEmptyJobData() throws Exception {
-
-        JobData jobData = new JobData();
-
-        JobExecution jobExecution = mock( JobExecution.class );
-
-        when( jobExecution.getJobData() ).thenReturn( jobData );
-
-        ExportJob job = new ExportJob();
-        S3Export s3Export = mock( S3Export.class );
-        setup.getExportService().setS3Export( s3Export );
-        job.setExportService( setup.getExportService() );
-        try {
-            job.doJob( jobExecution );
-        }
-        catch ( Exception e ) {
-            assert ( false );
-        }
-        assert ( true );
-    }
-
-
-    @Test
-    public void testNullJobExecution() {
-
-        JobData jobData = new JobData();
-
-        JobExecution jobExecution = mock( JobExecution.class );
-
-        when( jobExecution.getJobData() ).thenReturn( jobData );
-
-        ExportJob job = new ExportJob();
-        S3Export s3Export = mock( S3Export.class );
-        setup.getExportService().setS3Export( s3Export );
-        job.setExportService( setup.getExportService() );
-        try {
-            job.doJob( jobExecution );
-        }
-        catch ( Exception e ) {
-            assert ( false );
-        }
-        assert ( true );
-    }
-
-
-    @Ignore //For this test please input your s3 credentials into payload builder.
-    public void testIntegration100EntitiesOn() throws Exception {
-
-        S3Export s3Export = new S3ExportImpl();
-        ExportService exportService = setup.getExportService();
-        HashMap<String, Object> payload = payloadBuilder();
-
-        ExportInfo exportInfo = new ExportInfo( payload );
-        exportInfo.setApplicationId( applicationId );
-
-        EntityManager em = setup.getEmf().getEntityManager( applicationId );
-        //intialize user object to be posted
-        Map<String, Object> userProperties = null;
-        Entity[] entity;
-        entity = new Entity[100];
-        //creates entities
-        for ( int i = 0; i < 100; i++ ) {
-            userProperties = new LinkedHashMap<String, Object>();
-            userProperties.put( "username", "billybob" + i );
-            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
-
-            entity[i] = em.create( "user", userProperties );
-        }
-
-        UUID exportUUID = exportService.schedule( exportInfo );
-        exportService.setS3Export( s3Export );
-
-        //create and initialize jobData returned in JobExecution.
-        JobData jobData = new JobData();
-        jobData.setProperty( "jobName", "exportJob" );
-        jobData.setProperty( "exportInfo", exportInfo );
-        jobData.setProperty( "exportId", exportUUID );
-
-        JobExecution jobExecution = mock( JobExecution.class );
-        when( jobExecution.getJobData() ).thenReturn( jobData );
-
-        exportService.doExport( exportInfo, jobExecution );
-    }
+//
+//    @Test
+//    public void testExportDoExportOnApplicationEndpoint() throws Exception {
+//
+//        EntityManagerFactory emf = setup.getEmf();
+//        EntityManager em = emf.getEntityManager( applicationId );
+//        HashMap<String, Object> payload = payloadBuilder();
+//        ExportService eS = setup.getExportService();
+//
+//        JobExecution jobExecution = mock( JobExecution.class );
+//
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+//
+//        UUID entityExportUUID = eS.schedule( exportInfo );
+//
+//
+//        JobData jobData = new JobData();
+//        jobData.setProperty( "jobName", "exportJob" );
+//        jobData.setProperty( "exportInfo", exportInfo );
+//        jobData.setProperty( "exportId", entityExportUUID );
+//
+//        when( jobExecution.getJobData() ).thenReturn( jobData );
+//
+//        //Exportem.get(entityExport);
+//        Export exportEntity = ( Export ) em.get( entityExportUUID );
+//        assertNotNull( exportEntity );
+//        String derp = exportEntity.getState().name();
+//        assertEquals( "SCHEDULED", exportEntity.getState().name() );
+//        try {
+//            eS.doExport( exportInfo, jobExecution );
+//        }
+//        catch ( Exception e ) {
+//            //throw e;
+//            assert(false);
+//        }
+//        exportEntity = ( Export ) em.get( entityExportUUID );
+//        assertNotNull( exportEntity );
+//        assertEquals( "FINISHED", exportEntity.getState().name() );
+//    }
+//
+//    //tests that with empty job data, the export still runs.
+//    @Test
+//    public void testExportEmptyJobData() throws Exception {
+//
+//        JobData jobData = new JobData();
+//
+//        JobExecution jobExecution = mock( JobExecution.class );
+//
+//        when( jobExecution.getJobData() ).thenReturn( jobData );
+//
+//        ExportJob job = new ExportJob();
+//        S3Export s3Export = mock( S3Export.class );
+//        setup.getExportService().setS3Export( s3Export );
+//        job.setExportService( setup.getExportService() );
+//        try {
+//            job.doJob( jobExecution );
+//        }
+//        catch ( Exception e ) {
+//            assert ( false );
+//        }
+//        assert ( true );
+//    }
+//
+//
+//    @Test
+//    public void testNullJobExecution() {
+//
+//        JobData jobData = new JobData();
+//
+//        JobExecution jobExecution = mock( JobExecution.class );
+//
+//        when( jobExecution.getJobData() ).thenReturn( jobData );
+//
+//        ExportJob job = new ExportJob();
+//        S3Export s3Export = mock( S3Export.class );
+//        setup.getExportService().setS3Export( s3Export );
+//        job.setExportService( setup.getExportService() );
+//        try {
+//            job.doJob( jobExecution );
+//        }
+//        catch ( Exception e ) {
+//            assert ( false );
+//        }
+//        assert ( true );
+//    }
+//
+//
+//    @Ignore //For this test please input your s3 credentials into payload builder.
+//    public void testIntegration100EntitiesOn() throws Exception {
+//
+//        S3Export s3Export = new S3ExportImpl();
+//        ExportService exportService = setup.getExportService();
+//        HashMap<String, Object> payload = payloadBuilder();
+//
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setApplicationId( applicationId );
+//
+//        EntityManager em = setup.getEmf().getEntityManager( applicationId );
+//        //intialize user object to be posted
+//        Map<String, Object> userProperties = null;
+//        Entity[] entity;
+//        entity = new Entity[100];
+//        //creates entities
+//        for ( int i = 0; i < 100; i++ ) {
+//            userProperties = new LinkedHashMap<String, Object>();
+//            userProperties.put( "username", "billybob" + i );
+//            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+//
+//            entity[i] = em.create( "user", userProperties );
+//        }
+//
+//        UUID exportUUID = exportService.schedule( exportInfo );
+//        exportService.setS3Export( s3Export );
+//
+//        //create and initialize jobData returned in JobExecution.
+//        JobData jobData = new JobData();
+//        jobData.setProperty( "jobName", "exportJob" );
+//        jobData.setProperty( "exportInfo", exportInfo );
+//        jobData.setProperty( "exportId", exportUUID );
+//
+//        JobExecution jobExecution = mock( JobExecution.class );
+//        when( jobExecution.getJobData() ).thenReturn( jobData );
+//
+//        exportService.doExport( exportInfo, jobExecution );
+//    }
 
 
     /*Creates fake payload for testing purposes.*/

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a7504dee/stack/services/src/test/java/org/apache/usergrid/management/cassandra/MockS3ExportImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/MockS3ExportImpl.java b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/MockS3ExportImpl.java
index 6419719..ccf5fb9 100644
--- a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/MockS3ExportImpl.java
+++ b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/MockS3ExportImpl.java
@@ -7,11 +7,11 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.Map;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.usergrid.management.ExportInfo;
 import org.apache.usergrid.management.export.S3Export;
 
 
@@ -21,7 +21,7 @@ import org.apache.usergrid.management.export.S3Export;
 public class MockS3ExportImpl implements S3Export {
     public static String filename;
     @Override
-    public void copyToS3( final InputStream inputStream, final ExportInfo exportInfo, String filename ) {
+    public void copyToS3( final InputStream inputStream, final Map<String,Object> exportInfo, String filename ) {
         Logger logger = LoggerFactory.getLogger( MockS3ExportImpl.class );
         int read = 0;
         byte[] bytes = new byte[1024];


[03/50] [abbrv] git commit: Add RAT exclusions for tmp directories and Netbeans files.

Posted by sn...@apache.org.
Add RAT exclusions for tmp directories and Netbeans files.


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

Branch: refs/pull/60/merge
Commit: 530a350089626e04574680199ae2cd5017192fb7
Parents: f368246
Author: Dave Johnson <sn...@gmail.com>
Authored: Sat Mar 1 14:38:29 2014 -0500
Committer: Dave Johnson <sn...@gmail.com>
Committed: Sat Mar 1 14:38:29 2014 -0500

----------------------------------------------------------------------
 stack/pom.xml | 34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/530a3500/stack/pom.xml
----------------------------------------------------------------------
diff --git a/stack/pom.xml b/stack/pom.xml
index 6d833d2..bdf2137 100644
--- a/stack/pom.xml
+++ b/stack/pom.xml
@@ -1765,27 +1765,37 @@
             </executions>
             <configuration>
                 <excludes>
-                    <exclude>.idea/**</exclude>
-                    <exclude>.git/**</exclude>
-                    <exclude>m2/**</exclude>
-                    <exclude>.gitignore</exclude>
+
+                    <exclude>**/README.md</exclude>
+                    <exclude>**/CHANGES.txt</exclude>
+
+                    <!-- git and IDE project files -->
+                    <exclude>**/.git/**</exclude>
+                    <exclude>**/.gitignore</exclude>
+                    <exclude>**..idea/**</exclude>
+                    <exclude>**/*.iml</exclude>
+                    <exclude>**/nbactions.xml</exclude>
+                    <exclude>**/nb-configuration.xml</exclude>
                     <exclude>**/.classpath/**</exclude>
                     <exclude>**/.project</exclude>
-                    <exclude>**/*.iml</exclude>
                     <exclude>**/.settings/**</exclude>
-                    <exclude>**/*.asc</exclude>
+
+                    <!-- temporary build files -->
                     <exclude>**/logs/**</exclude>
                     <exclude>**/docs/**</exclude>
-                    <exclude>CHANGES.txt</exclude>
-                    <exclude>cloudbees.xml</exclude>
-                    <exclude>README.md</exclude>
-                    <exclude>**/src/test/resources/**</exclude>
-                    <exclude>**dependency-reduced-pom.xml</exclude>
-                    <exclude>**/src/test/resources/*.txt</exclude>
+                    <exclude>**/tmp/**</exclude>
                     <exclude>**/target/**</exclude>
                     <exclude>**/antlr3/**</exclude>
                     <exclude>**/META-INF/**</exclude>
+                    <exclude>**/dependency-reduced-pom.xml</exclude>
                     <exclude>**/QueryFilter.tokens</exclude>
+
+                    <!-- other -->
+                    <exclude>**/m2/**</exclude>
+                    <exclude>**/*.asc</exclude>
+                    <exclude>**/src/test/resources/**</exclude>
+                    <exclude>**/cloudbees.xml</exclude>
+
                 </excludes>
             </configuration>
 


[09/50] [abbrv] git commit: Added additional error checking for Export Service. Revised test to contain smaller entities written for test.

Posted by sn...@apache.org.
Added additional error checking for Export Service.
Revised test to contain smaller entities written for test.


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

Branch: refs/pull/60/merge
Commit: c17cf34635f6103798afcd397d10942b282421fd
Parents: 027a754
Author: grey <gr...@apigee.com>
Authored: Sun Mar 2 10:21:15 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Sun Mar 2 10:21:15 2014 -0800

----------------------------------------------------------------------
 .../management/export/ExportServiceImpl.java    | 28 ++++++++++++++++++--
 .../cassandra/ManagementServiceIT.java          | 10 +++----
 2 files changed, 31 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c17cf346/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
index 7f28bc7..649c197 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
@@ -60,7 +60,7 @@ public class ExportServiceImpl implements ExportService {
     private ManagementService managementService;
 
     //Maximum amount of entities retrieved in a single go.
-    public static final int MAX_ENTITY_FETCH = 100;
+    public static final int MAX_ENTITY_FETCH = 100000;
 
     //Amount of time that has passed before sending another heart beat in millis
     public static final int TIMESTAMP_DELTA = 5000;
@@ -133,13 +133,24 @@ public class ExportServiceImpl implements ExportService {
     public String getState( final UUID appId, final UUID uuid ) throws Exception {
 
         //get application entity manager
+        if(appId == null) {
+            logger.error( "Application context cannot be found." );
+            return "Application context cannot be found.";
+        }
+
+        if(uuid == null) {
+            logger.error( "UUID passed in cannot be null." );
+            return "UUID passed in cannot be null";
+        }
+
         EntityManager rootEm = emf.getEntityManager( appId );
 
         //retrieve the export entity.
         Export export = rootEm.get( uuid, Export.class );
 
         if ( export == null ) {
-            return null;
+            logger.error( "no entity with that uuid was found" );
+            return "No Such Element found";
         }
         return export.getState().toString();
     }
@@ -148,8 +159,16 @@ public class ExportServiceImpl implements ExportService {
     @Override
     public void doExport( final ExportInfo config, final JobExecution jobExecution ) throws Exception {
 
+        if (config  == null) {
+            logger.error( "Export Information passed through is null" );
+            return;
+        }
         //get the entity manager for the application, and the entity that this Export corresponds to.
         UUID exportId = ( UUID ) jobExecution.getJobData().getProperty( EXPORT_ID );
+        if(config.getApplicationId() == null) {
+            logger.error( "Export Information application uuid is null" );
+            return;
+        }
         EntityManager em = emf.getEntityManager( config.getApplicationId() );
         Export export = em.get( exportId, Export.class );
 
@@ -160,6 +179,10 @@ public class ExportServiceImpl implements ExportService {
         if ( config.getCollection() == null ) {
             //exports all the applications for a given organization.
             Map<UUID, String> organizations = getOrgs();
+            if(organizations == null){
+                logger.error( "No organizations could be found" );
+                return;
+            }
             for ( Map.Entry<UUID, String> organization : organizations.entrySet() ) {
                 try {
                     exportApplicationsForOrg( organization, config, jobExecution );
@@ -208,6 +231,7 @@ public class ExportServiceImpl implements ExportService {
 
             if ( info == null ) {
                 logger.error( "Organization info is null!" );
+                return null;
             }
 
             organizationNames = new HashMap<UUID, String>();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c17cf346/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
index 990c26b..2ea5513 100644
--- a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
@@ -746,7 +746,7 @@ public class ManagementServiceIT {
 
 
     //Tests to make sure we can call the job with mock data and it runs.
-    @Ignore //Connections won't save when run with maven, but on local builds it will.
+    @Test //Connections won't save when run with maven, but on local builds it will.
     public void testFileConnections() throws Exception {
 
         File f = null;
@@ -754,7 +754,7 @@ public class ManagementServiceIT {
 
         try {
             f = new File( "testFileConnections.json" );
-            //f.delete();
+            f.delete();
         }
         catch ( Exception e ) {
             //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
@@ -776,9 +776,9 @@ public class ManagementServiceIT {
         //intialize user object to be posted
         Map<String, Object> userProperties = null;
         Entity[] entity;
-        entity = new Entity[10];
+        entity = new Entity[2];
         //creates entities
-        for ( int i = 0; i < 10; i++ ) {
+        for ( int i = 0; i < 2; i++ ) {
             userProperties = new LinkedHashMap<String, Object>();
             userProperties.put( "username", "billybob" + i );
             userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
@@ -806,7 +806,7 @@ public class ManagementServiceIT {
         JSONParser parser = new JSONParser();
 
         org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-        //assertEquals(13, a.size() );
+        assertEquals(2, a.size() );
 
         org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( 0 );
         org.json.simple.JSONObject objConnections = ( org.json.simple.JSONObject ) objEnt.get( "connections" );


[22/50] [abbrv] git commit: createCollection was executing its callback with an inconsistent arity

Posted by sn...@apache.org.
createCollection was executing its callback with an inconsistent arity


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

Branch: refs/pull/60/merge
Commit: c6f1aa182964a0a3322bc1b2a646c36d0f34e3f5
Parents: 7f50cae
Author: ryan bridges <rb...@apigee.com>
Authored: Mon Mar 3 15:21:10 2014 -0500
Committer: ryan bridges <rb...@apigee.com>
Committed: Mon Mar 3 15:21:10 2014 -0500

----------------------------------------------------------------------
 sdks/html5-javascript/usergrid.js | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c6f1aa18/sdks/html5-javascript/usergrid.js
----------------------------------------------------------------------
diff --git a/sdks/html5-javascript/usergrid.js b/sdks/html5-javascript/usergrid.js
index 6658d69..d67cdde 100644
--- a/sdks/html5-javascript/usergrid.js
+++ b/sdks/html5-javascript/usergrid.js
@@ -767,8 +767,8 @@ function doCallback(callback, params, context) {
    */
     Usergrid.Client.prototype.createCollection = function(options, callback) {
         options.client = this;
-        var collection = new Usergrid.Collection(options, function(err, data) {
-            doCallback(callback, [ err, collection, data ]);
+        var collection = new Usergrid.Collection(options, function(err, response, collection) {
+            doCallback(callback, [ err, collection, response ], collection);
         });
     };
     /*
@@ -3061,4 +3061,4 @@ Usergrid.Asset.prototype.download = function(callback) {
         return UsergridError;
     };
     return global[name];
-})(this);
\ No newline at end of file
+})(this);


[35/50] [abbrv] git commit: Added test to avoid collisions in management service, but didn’t seem to work for a certain test. Currently ignored. Made errors clearer in for rest endpoints. Added map code to try to fix Tomcat runtime error, but didn’t fix

Posted by sn...@apache.org.
Added test to avoid collisions in management service, but didn’t seem to work for a certain test. Currently ignored.
Made errors clearer in for rest endpoints.
Added map code to try to fix Tomcat runtime error, but didn’t fix the issue.
Added exportJob as a beanie.


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

Branch: refs/pull/60/merge
Commit: 338ed4c69773fff1cbfe9d9770acfba95349e089
Parents: e965147
Author: grey <gr...@apigee.com>
Authored: Tue Mar 4 17:13:37 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Tue Mar 4 17:13:37 2014 -0800

----------------------------------------------------------------------
 .../applications/ApplicationResource.java       |   5 +-
 .../rest/management/ManagementResourceIT.java   | 101 ++++++++++++++++++-
 .../usergrid/management/export/ExportJob.java   |   4 +-
 .../resources/usergrid-services-context.xml     |   2 +
 .../cassandra/ManagementServiceIT.java          |  23 +++--
 5 files changed, 118 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/338ed4c6/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
index 91be7f9..9f4fa4a 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
@@ -239,10 +239,11 @@ public class ApplicationResource extends AbstractContextResource {
         catch ( Exception e ) {
             //TODO:throw descriptive error message and or include on in the response
             //TODO:fix below, it doesn't work if there is an exception. Make it look like the OauthResponse.
-            return Response.status( SC_INTERNAL_SERVER_ERROR ).build();
+            return Response.status( SC_INTERNAL_SERVER_ERROR ).type( JSONPUtils.jsonMediaType( callback ) )
+                                       .entity( ServiceResource.wrapWithCallback( e.getMessage(), callback ) ).build();
         }
 
-        return Response.status( SC_ACCEPTED ).entity( uuidRet ).build();
+        return Response.status( SC_ACCEPTED ).entity( jobUUID ).build();
     }
 
     @POST

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/338ed4c6/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
index a67a157..0056759 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
@@ -594,9 +594,31 @@ public class ManagementResourceIT extends AbstractRestIT {
         assertEquals( Status.OK, responseStatus );
     }
 
+    @Test
+    public void exportApplicationUUIDRetTest() throws Exception {
+        Status responseStatus = Status.ACCEPTED;
+        String uuid;
+        UUID jobUUID = null;
+        JsonNode node = null;
+
+
+        HashMap<String, Object> payload = payloadBuilder();
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+
+        assertEquals( Status.ACCEPTED, responseStatus );
+        assertNotNull( node.get( "jobUUID" ) );
+    }
 
     @Test
-    public void exportUUIDRetTest() throws Exception {
+    public void exportCollectionUUIDRetTest() throws Exception {
         Status responseStatus = Status.ACCEPTED;
         String uuid;
         UUID jobUUID = null;
@@ -622,7 +644,34 @@ public class ManagementResourceIT extends AbstractRestIT {
     /*Make a test with an invalid uuid and a wrong uuid.*/
     //all tests should be moved to OrganizationResourceIT ( *not* Organizations there is a difference)
     @Test
-    public void exportGetJobStatTest() throws Exception {
+    public void exportGetApplicationJobStatTest() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = payloadBuilder();
+
+        node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+                         .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                         .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
+        String uuid = String.valueOf( node.get( "jobUUID" ) );
+        uuid = uuid.replaceAll( "\"", "" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + uuid )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+
+
+        assertEquals( Status.OK, responseStatus );
+        assertEquals( "SCHEDULED", node.asText() );//TODO: do tests for other states in service tier
+    }
+
+    @Test
+    public void exportGetCollectionJobStatTest() throws Exception {
         JsonNode node = null;
         Status responseStatus = Status.OK;
 
@@ -667,7 +716,7 @@ public class ManagementResourceIT extends AbstractRestIT {
     }
 
     @Test
-    public void exportPostNullPointer() throws Exception {
+    public void exportPostApplicationNullPointer() throws Exception {
         JsonNode node = null;
         Status responseStatus = Status.OK;
 
@@ -695,9 +744,37 @@ public class ManagementResourceIT extends AbstractRestIT {
         assertEquals( Status.BAD_REQUEST, responseStatus );
     }
 
+    @Test
+    public void exportPostCollectionNullPointer() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = new HashMap<String, Object>();
+        Map<String, Object> properties = new HashMap<String, Object>();
+        Map<String, Object> storage_info = new HashMap<String, Object>();
+        //TODO: always put dummy values here and ignore this test.
+        //TODO: add a ret for when s3 values are invalid.
+        storage_info.put( "bucket_location", "insert bucket name here" );
+
+
+        properties.put( "storage_provider", "s3" );
+        properties.put( "storage_info", storage_info );
+
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+    }
+
 
     @Test
-    public void exportGetUnauthorized() throws Exception {
+    public void exportGetCollectionUnauthorized() throws Exception {
         JsonNode node = null;
         Status responseStatus = Status.OK;
         UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
@@ -712,6 +789,22 @@ public class ManagementResourceIT extends AbstractRestIT {
         assertEquals( Status.UNAUTHORIZED, responseStatus );
     }
 
+    @Test
+    public void exportGetApplicationUnauthorized() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + fake )
+                             .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
+                             .get( JsonNode.class );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.UNAUTHORIZED, responseStatus );
+    }
+
 
     /*Creates fake payload for testing purposes.*/
     public HashMap<String, Object> payloadBuilder() {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/338ed4c6/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java
index c89be43..3ce5151 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java
@@ -1,6 +1,7 @@
 package org.apache.usergrid.management.export;
 
 
+import java.util.Map;
 import java.util.UUID;
 
 import org.slf4j.Logger;
@@ -45,7 +46,8 @@ public class ExportJob extends OnlyOnceJob {
             logger.error( "jobData cannot be null" );
             return;
         }
-        config = ( ExportInfo ) jobData.getProperty( "exportInfo" );
+        Map<String, Object> temp = jobData.getProperties();
+        config = ( ExportInfo ) temp.get("exportInfo");
         if ( config == null ) {
             logger.error( "Export information cannot be null" );
             return;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/338ed4c6/stack/services/src/main/resources/usergrid-services-context.xml
----------------------------------------------------------------------
diff --git a/stack/services/src/main/resources/usergrid-services-context.xml b/stack/services/src/main/resources/usergrid-services-context.xml
index ead98e1..0e06255 100644
--- a/stack/services/src/main/resources/usergrid-services-context.xml
+++ b/stack/services/src/main/resources/usergrid-services-context.xml
@@ -71,6 +71,8 @@
     <property name="sch" ref="schedulerService"/>
   </bean>
 
+  <bean id="exportJob" class="org.apache.usergrid.management.export.ExportJob" />
+
   <bean id="s3Export" class="org.apache.usergrid.management.export.S3ExportImpl" />
 
 </beans>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/338ed4c6/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
index 4fbb3d6..48b756b 100644
--- a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
@@ -750,7 +750,7 @@ public class ManagementServiceIT {
     public void testConnectionsOnCollectionExport() throws Exception {
 
         File f = null;
-        int index = 0;
+        int indexCon = 0;
 
 
         try {
@@ -809,8 +809,8 @@ public class ManagementServiceIT {
         org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
         //assertEquals(2, a.size() );
 
-        for(index  = 0; index < a.size(); index++) {
-            JSONObject jObj = ( JSONObject ) a.get( index );
+        for(indexCon  = 0; indexCon < a.size(); indexCon++) {
+            JSONObject jObj = ( JSONObject ) a.get( indexCon );
             JSONObject data = ( JSONObject ) jObj.get( "Metadata" );
             String uuid = (String) data.get( "uuid" );
             if ( entity[0].getUuid().toString().equals( uuid )) {
@@ -819,7 +819,7 @@ public class ManagementServiceIT {
 
         }
 
-        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( index );
+        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( indexCon );
         org.json.simple.JSONObject objConnections = ( org.json.simple.JSONObject ) objEnt.get( "connections" );
 
         assertNotNull( objConnections );
@@ -831,12 +831,10 @@ public class ManagementServiceIT {
         f.delete();
     }
 
-    @Test //Connections won't save when run with maven, but on local builds it will.
+    @Ignore //Connections won't save when run with maven, but on local builds it will.
     public void testConnectionsOnApplicationEndpoint() throws Exception {
 
         File f = null;
-        int index = 0;
-
 
         try {
             f = new File( "testConnectionsOnApplicationEndpoint.json" );
@@ -891,9 +889,10 @@ public class ManagementServiceIT {
         JSONParser parser = new JSONParser();
 
         org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+        int indexApp = 0;
 
-        for(index  = 0; index < a.size(); index++) {
-            JSONObject jObj = ( JSONObject ) a.get( index );
+        for(indexApp  = 0; indexApp < a.size(); indexApp++) {
+            JSONObject jObj = ( JSONObject ) a.get( indexApp );
             JSONObject data = ( JSONObject ) jObj.get( "Metadata" );
             String uuid = (String) data.get( "uuid" );
             if ( entity[0].getUuid().toString().equals( uuid )) {
@@ -901,8 +900,12 @@ public class ManagementServiceIT {
             }
 
         }
+        if(indexApp >= a.size()) {
+            //what? How does this condition even get reached due to the above forloop
+            assert(false);
+        }
 
-        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( index );
+        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( indexApp );
         org.json.simple.JSONObject objConnections = ( org.json.simple.JSONObject ) objEnt.get( "connections" );
 
         assertNotNull( objConnections );


[27/50] [abbrv] git commit: Moved path from required info. It is no longer being used.

Posted by sn...@apache.org.
Moved path from required info. It is no longer being used.


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

Branch: refs/pull/60/merge
Commit: a09dc39d86ba6c26e656348baa070ac2cb79edde
Parents: 95f8773
Author: grey <gr...@apigee.com>
Authored: Mon Mar 3 15:26:47 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Mon Mar 3 15:26:47 2014 -0800

----------------------------------------------------------------------
 .../src/main/java/org/apache/usergrid/management/ExportInfo.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a09dc39d/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java b/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java
index d3d0097..4347aac 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java
@@ -26,7 +26,7 @@ public class ExportInfo extends TypedEntity {
 
 
     public ExportInfo( Map<String, Object> exportData ) {
-        path = ( String ) exportData.get( "path" );
+        //path = ( String ) exportData.get( "path" );
         properties = ( Map ) exportData.get( "properties" );
         storage_provider = ( String ) properties.get( "storage_provider" );
         storage_info = ( Map ) properties.get( "storage_info" );


[20/50] [abbrv] git commit: Merge pull request #66 from shawnfeldman/master

Posted by sn...@apache.org.
Merge pull request #66 from shawnfeldman/master

portal: fix module errors

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

Branch: refs/pull/60/head
Commit: 7f50caeb666b6a78c3365fc6ed9ce0eba12f11f3
Parents: 2474350 f015836
Author: Dave Johnson <da...@rollerweblogger.org>
Authored: Mon Mar 3 11:28:20 2014 -0500
Committer: Dave Johnson <da...@rollerweblogger.org>
Committed: Mon Mar 3 11:28:20 2014 -0500

----------------------------------------------------------------------
 portal/config.js                    | 12 ------------
 portal/index-debug.html             |  4 ++--
 portal/index.html                   |  4 ++--
 portal/js/app.js                    |  4 +---
 portal/js/libs/usergrid-libs.min.js |  2 +-
 portal/js/usergrid-dev.min.js       |  9 ++++-----
 portal/js/usergrid.min.js           |  8 ++++----
 7 files changed, 14 insertions(+), 29 deletions(-)
----------------------------------------------------------------------



[04/50] [abbrv] git commit: Add RAT exclusions for tmp directories and Netbeans files.

Posted by sn...@apache.org.
Add RAT exclusions for tmp directories and Netbeans files.


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

Branch: refs/pull/60/head
Commit: 530a350089626e04574680199ae2cd5017192fb7
Parents: f368246
Author: Dave Johnson <sn...@gmail.com>
Authored: Sat Mar 1 14:38:29 2014 -0500
Committer: Dave Johnson <sn...@gmail.com>
Committed: Sat Mar 1 14:38:29 2014 -0500

----------------------------------------------------------------------
 stack/pom.xml | 34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/530a3500/stack/pom.xml
----------------------------------------------------------------------
diff --git a/stack/pom.xml b/stack/pom.xml
index 6d833d2..bdf2137 100644
--- a/stack/pom.xml
+++ b/stack/pom.xml
@@ -1765,27 +1765,37 @@
             </executions>
             <configuration>
                 <excludes>
-                    <exclude>.idea/**</exclude>
-                    <exclude>.git/**</exclude>
-                    <exclude>m2/**</exclude>
-                    <exclude>.gitignore</exclude>
+
+                    <exclude>**/README.md</exclude>
+                    <exclude>**/CHANGES.txt</exclude>
+
+                    <!-- git and IDE project files -->
+                    <exclude>**/.git/**</exclude>
+                    <exclude>**/.gitignore</exclude>
+                    <exclude>**..idea/**</exclude>
+                    <exclude>**/*.iml</exclude>
+                    <exclude>**/nbactions.xml</exclude>
+                    <exclude>**/nb-configuration.xml</exclude>
                     <exclude>**/.classpath/**</exclude>
                     <exclude>**/.project</exclude>
-                    <exclude>**/*.iml</exclude>
                     <exclude>**/.settings/**</exclude>
-                    <exclude>**/*.asc</exclude>
+
+                    <!-- temporary build files -->
                     <exclude>**/logs/**</exclude>
                     <exclude>**/docs/**</exclude>
-                    <exclude>CHANGES.txt</exclude>
-                    <exclude>cloudbees.xml</exclude>
-                    <exclude>README.md</exclude>
-                    <exclude>**/src/test/resources/**</exclude>
-                    <exclude>**dependency-reduced-pom.xml</exclude>
-                    <exclude>**/src/test/resources/*.txt</exclude>
+                    <exclude>**/tmp/**</exclude>
                     <exclude>**/target/**</exclude>
                     <exclude>**/antlr3/**</exclude>
                     <exclude>**/META-INF/**</exclude>
+                    <exclude>**/dependency-reduced-pom.xml</exclude>
                     <exclude>**/QueryFilter.tokens</exclude>
+
+                    <!-- other -->
+                    <exclude>**/m2/**</exclude>
+                    <exclude>**/*.asc</exclude>
+                    <exclude>**/src/test/resources/**</exclude>
+                    <exclude>**/cloudbees.xml</exclude>
+
                 </excludes>
             </configuration>
 


[42/50] [abbrv] git commit: Fixed collections bug, fixed all tests to prepare for removal of ExportInfo.

Posted by sn...@apache.org.
Fixed collections bug, fixed all tests to prepare for removal of ExportInfo.


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

Branch: refs/pull/60/merge
Commit: 9e716a6f6c28639b77b39c239ded544ff2f4873e
Parents: a02b08c
Author: grey <gr...@apigee.com>
Authored: Wed Mar 5 20:45:34 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Wed Mar 5 20:45:34 2014 -0800

----------------------------------------------------------------------
 .../applications/ApplicationResource.java       |    3 +
 .../rest/management/ManagementResourceIT.java   |  350 +++---
 .../management/export/ExportServiceImpl.java    |    2 +-
 .../cassandra/ManagementServiceIT.java          | 1063 +++++++++---------
 4 files changed, 724 insertions(+), 694 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9e716a6f/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
index d88ef8d..73e550b 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
@@ -225,6 +225,9 @@ public class ApplicationResource extends AbstractContextResource {
         try {
             //parse the json into some useful object (the config params)
             //ExportInfo objEx = new ExportInfo( json );
+            if(json.get( "properties" ) == null){
+                throw new NullPointerException();
+            }
             json.put( "organizationId",organization.getUuid());
             //objEx.setOrganizationId( organization.getUuid() );
             json.put( "applicationId",applicationId);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9e716a6f/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
index 00a8a97..7eb9ed1 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
@@ -614,193 +614,193 @@ public class ManagementResourceIT extends AbstractRestIT {
         assertNotNull( node.get( "jobUUID" ) );
     }
 //
-//    @Test
-//    public void exportCollectionUUIDRetTest() throws Exception {
-//        Status responseStatus = Status.ACCEPTED;
-//        String uuid;
-//        UUID jobUUID = null;
-//        JsonNode node = null;
-//
-//
-//        HashMap<String, Object> payload = payloadBuilder();
-//
-//        try {
-//            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
-//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-//                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
-//        }
-//        catch ( UniformInterfaceException uie ) {
-//            responseStatus = uie.getResponse().getClientResponseStatus();
-//        }
-//
-//        assertEquals( Status.ACCEPTED, responseStatus );
-//        assertNotNull( node.get( "jobUUID" ) );
-//    }
+    @Test
+    public void exportCollectionUUIDRetTest() throws Exception {
+        Status responseStatus = Status.ACCEPTED;
+        String uuid;
+        UUID jobUUID = null;
+        JsonNode node = null;
+
+
+        HashMap<String, Object> payload = payloadBuilder();
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+
+        assertEquals( Status.ACCEPTED, responseStatus );
+        assertNotNull( node.get( "jobUUID" ) );
+    }
 
 
     /*Make a test with an invalid uuid and a wrong uuid.*/
     //all tests should be moved to OrganizationResourceIT ( *not* Organizations there is a difference)
-//    @Test
-//    public void exportGetApplicationJobStatTest() throws Exception {
-//        JsonNode node = null;
-//        Status responseStatus = Status.OK;
-//
-//        HashMap<String, Object> payload = payloadBuilder();
-//
-//        node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
-//                         .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-//                         .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
-//        String uuid = String.valueOf( node.get( "jobUUID" ) );
-//        uuid = uuid.replaceAll( "\"", "" );
-//
-//        try {
-//            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + uuid )
-//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-//                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
-//        }
-//        catch ( UniformInterfaceException uie ) {
-//            responseStatus = uie.getResponse().getClientResponseStatus();
-//        }
-//
-//
-//        assertEquals( Status.OK, responseStatus );
-//        assertEquals( "SCHEDULED", node.asText() );//TODO: do tests for other states in service tier
-//    }
-//
-//    @Test
-//    public void exportGetCollectionJobStatTest() throws Exception {
-//        JsonNode node = null;
-//        Status responseStatus = Status.OK;
-//
-//        HashMap<String, Object> payload = payloadBuilder();
-//
-//        node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
-//                         .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-//                         .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
-//        String uuid = String.valueOf( node.get( "jobUUID" ) );
-//        uuid = uuid.replaceAll( "\"", "" );
-//
-//        try {
-//            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + uuid )
-//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-//                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
-//        }
-//        catch ( UniformInterfaceException uie ) {
-//            responseStatus = uie.getResponse().getClientResponseStatus();
-//        }
-//
-//
-//        assertEquals( Status.OK, responseStatus );
-//        assertEquals( "SCHEDULED", node.asText() );//TODO: do tests for other states in service tier
-//    }
+    @Test
+    public void exportGetApplicationJobStatTest() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = payloadBuilder();
+
+        node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+                         .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                         .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
+        String uuid = String.valueOf( node.get( "jobUUID" ) );
+        uuid = uuid.replaceAll( "\"", "" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + uuid )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+
+
+        assertEquals( Status.OK, responseStatus );
+        assertEquals( "SCHEDULED", node.asText() );//TODO: do tests for other states in service tier
+    }
+
+    @Test
+    public void exportGetCollectionJobStatTest() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = payloadBuilder();
+
+        node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+                         .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                         .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
+        String uuid = String.valueOf( node.get( "jobUUID" ) );
+        uuid = uuid.replaceAll( "\"", "" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + uuid )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+
+
+        assertEquals( Status.OK, responseStatus );
+        assertEquals( "SCHEDULED", node.asText() );//TODO: do tests for other states in service tier
+    }
 
 
 //    //do an unauthorized test for both post and get
-//    @Test
-//    public void exportGetWrongUUID() throws Exception {
-//        JsonNode node = null;
-//        Status responseStatus = Status.OK;
-//        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
-//        try {
-//            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + fake )
-//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-//                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
-//        }
-//        catch ( UniformInterfaceException uie ) {
-//            responseStatus = uie.getResponse().getClientResponseStatus();
-//        }
-//        assertEquals( Status.BAD_REQUEST, responseStatus );
-//    }
-//
-//    @Test
-//    public void exportPostApplicationNullPointer() throws Exception {
-//        JsonNode node = null;
-//        Status responseStatus = Status.OK;
-//
-//        HashMap<String, Object> payload = new HashMap<String, Object>();
-//        Map<String, Object> properties = new HashMap<String, Object>();
-//        Map<String, Object> storage_info = new HashMap<String, Object>();
-//        //TODO: always put dummy values here and ignore this test.
-//        //TODO: add a ret for when s3 values are invalid.
-//        storage_info.put( "bucket_location", "insert bucket name here" );
-//
-//
-//        properties.put( "storage_provider", "s3" );
-//        properties.put( "storage_info", storage_info );
-//
-//        payload.put( "path", "test-organization/test-app" );
-//
-//        try {
-//            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
-//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-//                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
-//        }
-//        catch ( UniformInterfaceException uie ) {
-//            responseStatus = uie.getResponse().getClientResponseStatus();
-//        }
-//        assertEquals( Status.BAD_REQUEST, responseStatus );
-//    }
-//
-//    @Test
-//    public void exportPostCollectionNullPointer() throws Exception {
-//        JsonNode node = null;
-//        Status responseStatus = Status.OK;
-//
-//        HashMap<String, Object> payload = new HashMap<String, Object>();
-//        Map<String, Object> properties = new HashMap<String, Object>();
-//        Map<String, Object> storage_info = new HashMap<String, Object>();
-//        //TODO: always put dummy values here and ignore this test.
-//        //TODO: add a ret for when s3 values are invalid.
-//        storage_info.put( "bucket_location", "insert bucket name here" );
-//
-//
-//        properties.put( "storage_provider", "s3" );
-//        properties.put( "storage_info", storage_info );
+    @Test
+    public void exportGetWrongUUID() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + fake )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+    }
 //
+    @Test
+    public void exportPostApplicationNullPointer() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = new HashMap<String, Object>();
+        Map<String, Object> properties = new HashMap<String, Object>();
+        Map<String, Object> storage_info = new HashMap<String, Object>();
+        //TODO: always put dummy values here and ignore this test.
+        //TODO: add a ret for when s3 values are invalid.
+        storage_info.put( "bucket_location", "insert bucket name here" );
+
+
+        properties.put( "storage_provider", "s3" );
+        properties.put( "storage_info", storage_info );
+
+        payload.put( "path", "test-organization/test-app" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+    }
 //
-//        try {
-//            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
-//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-//                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
-//        }
-//        catch ( UniformInterfaceException uie ) {
-//            responseStatus = uie.getResponse().getClientResponseStatus();
-//        }
-//        assertEquals( Status.BAD_REQUEST, responseStatus );
-//    }
+    @Test
+    public void exportPostCollectionNullPointer() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = new HashMap<String, Object>();
+        Map<String, Object> properties = new HashMap<String, Object>();
+        Map<String, Object> storage_info = new HashMap<String, Object>();
+        //TODO: always put dummy values here and ignore this test.
+        //TODO: add a ret for when s3 values are invalid.
+        storage_info.put( "bucket_location", "insert bucket name here" );
+
+
+        properties.put( "storage_provider", "s3" );
+        properties.put( "storage_info", storage_info );
+
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+    }
 //
 //
-//    @Test
-//    public void exportGetCollectionUnauthorized() throws Exception {
-//        JsonNode node = null;
-//        Status responseStatus = Status.OK;
-//        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
-//        try {
-//            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export/" + fake )
-//                             .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
-//                             .get( JsonNode.class );
-//        }
-//        catch ( UniformInterfaceException uie ) {
-//            responseStatus = uie.getResponse().getClientResponseStatus();
-//        }
-//        assertEquals( Status.UNAUTHORIZED, responseStatus );
-//    }
+    @Test
+    public void exportGetCollectionUnauthorized() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export/" + fake )
+                             .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
+                             .get( JsonNode.class );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.UNAUTHORIZED, responseStatus );
+    }
 //
-//    @Test
-//    public void exportGetApplicationUnauthorized() throws Exception {
-//        JsonNode node = null;
-//        Status responseStatus = Status.OK;
-//        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
-//        try {
-//            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + fake )
-//                             .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
-//                             .get( JsonNode.class );
-//        }
-//        catch ( UniformInterfaceException uie ) {
-//            responseStatus = uie.getResponse().getClientResponseStatus();
-//        }
-//        assertEquals( Status.UNAUTHORIZED, responseStatus );
-//    }
+    @Test
+    public void exportGetApplicationUnauthorized() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + fake )
+                             .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
+                             .get( JsonNode.class );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.UNAUTHORIZED, responseStatus );
+    }
 
 
     /*Creates fake payload for testing purposes.*/

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9e716a6f/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
index 6703df7..4bc307d 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
@@ -388,7 +388,7 @@ public class ExportServiceImpl implements ExportService {
             //could support queries, just need to implement that in the rest endpoint.
             for ( String collectionName : metadata.keySet() ) {
                 //if the collection you are looping through doesn't match the name of the one you want. Don't export it.
-                if ( collectionName.equals( (UUID) config.get("collectionName")) ) {
+                if ( collectionName.equals( (String) config.get("collectionName")) ) {
                     //Query entity manager for the entities in a collection
                     Query query = new Query();
                     query.setLimit( MAX_ENTITY_FETCH );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9e716a6f/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
index b4c07ad..8734dbc 100644
--- a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
@@ -36,6 +36,8 @@ import org.apache.usergrid.management.export.S3ExportImpl;
 import org.apache.usergrid.persistence.CredentialsInfo;
 import org.apache.usergrid.persistence.Entity;
 import org.apache.usergrid.persistence.EntityManager;
+import org.apache.usergrid.persistence.EntityManagerFactory;
+import org.apache.usergrid.persistence.entities.Export;
 import org.apache.usergrid.persistence.entities.JobData;
 import org.apache.usergrid.persistence.entities.User;
 import org.apache.usergrid.security.AuthPrincipalType;
@@ -743,92 +745,95 @@ public class ManagementServiceIT {
     }
 //
 //
-//    //Tests to make sure we can call the job with mock data and it runs.
-//    @Test //Connections won't save when run with maven, but on local builds it will.
-//    public void testConnectionsOnCollectionExport() throws Exception {
-//
-//        File f = null;
-//        int indexCon = 0;
-//
-//
-//        try {
-//            f = new File( "testFileConnections.json" );
-//            f.delete();
-//        }
-//        catch ( Exception e ) {
-//            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
-//        }
-//
-//
-//        S3Export s3Export = new MockS3ExportImpl();
-//        s3Export.setFilename( "testFileConnections.json" );
-//
-//        ExportService exportService = setup.getExportService();
-//        HashMap<String, Object> payload = payloadBuilder();
-//
+    //Tests to make sure we can call the job with mock data and it runs.
+    @Test //Connections won't save when run with maven, but on local builds it will.
+    public void testConnectionsOnCollectionExport() throws Exception {
+
+        File f = null;
+        int indexCon = 0;
+
+
+        try {
+            f = new File( "testFileConnections.json" );
+            f.delete();
+        }
+        catch ( Exception e ) {
+            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
+        }
+
+
+        S3Export s3Export = new MockS3ExportImpl();
+        s3Export.setFilename( "testFileConnections.json" );
+
+        ExportService exportService = setup.getExportService();
+        HashMap<String, Object> payload = payloadBuilder();
+
 //        ExportInfo exportInfo = new ExportInfo( payload );
 //        exportInfo.setOrganizationId( organization.getUuid() );
 //        exportInfo.setApplicationId( applicationId );
 //        exportInfo.setCollection( "users" );
-//
-//        EntityManager em = setup.getEmf().getEntityManager( applicationId );
-//        //intialize user object to be posted
-//        Map<String, Object> userProperties = null;
-//        Entity[] entity;
-//        entity = new Entity[2];
-//        //creates entities
-//        for ( int i = 0; i < 2; i++ ) {
-//            userProperties = new LinkedHashMap<String, Object>();
-//            userProperties.put( "username", "meatIsGreat" + i );
-//            userProperties.put( "email", "grey" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
-//
-//            entity[i] = em.create( "users", userProperties );
-//        }
-//        //creates connections
-//        em.createConnection( em.getRef( entity[0].getUuid() ), "Vibrations", em.getRef( entity[1].getUuid() ) );
-//        em.createConnection( em.getRef( entity[1].getUuid() ), "Vibrations", em.getRef( entity[0].getUuid() ) );
-//
-//        UUID exportUUID = exportService.schedule( exportInfo );
-//        exportService.setS3Export( s3Export );
-//
-//        //create and initialize jobData returned in JobExecution.
-//        JobData jobData = new JobData();
-//        jobData.setProperty( "jobName", "exportJob" );
-//        jobData.setProperty( "exportInfo", exportInfo );
-//        jobData.setProperty( "exportId", exportUUID );
-//
-//        JobExecution jobExecution = mock( JobExecution.class );
-//        when( jobExecution.getJobData() ).thenReturn( jobData );
-//
-//        exportService.doExport( exportInfo, jobExecution );
-//
-//        JSONParser parser = new JSONParser();
-//
-//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-//        //assertEquals(2, a.size() );
-//
-//        for(indexCon  = 0; indexCon < a.size(); indexCon++) {
-//            JSONObject jObj = ( JSONObject ) a.get( indexCon );
-//            JSONObject data = ( JSONObject ) jObj.get( "Metadata" );
-//            String uuid = (String) data.get( "uuid" );
-//            if ( entity[0].getUuid().toString().equals( uuid )) {
-//                break;
-//            }
-//
-//        }
-//
-//        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( indexCon );
-//        org.json.simple.JSONObject objConnections = ( org.json.simple.JSONObject ) objEnt.get( "connections" );
-//
-//        assertNotNull( objConnections );
-//
-//        org.json.simple.JSONArray objVibrations = ( org.json.simple.JSONArray ) objConnections.get( "Vibrations" );
-//
-//        assertNotNull( objVibrations );
-//
-//        f.delete();
-//    }
-//
+        payload.put( "organizationId",organization.getUuid() );
+        payload.put( "applicationId",applicationId );
+        payload.put("collectionName","users");
+
+        EntityManager em = setup.getEmf().getEntityManager( applicationId );
+        //intialize user object to be posted
+        Map<String, Object> userProperties = null;
+        Entity[] entity;
+        entity = new Entity[2];
+        //creates entities
+        for ( int i = 0; i < 2; i++ ) {
+            userProperties = new LinkedHashMap<String, Object>();
+            userProperties.put( "username", "meatIsGreat" + i );
+            userProperties.put( "email", "grey" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+
+            entity[i] = em.create( "users", userProperties );
+        }
+        //creates connections
+        em.createConnection( em.getRef( entity[0].getUuid() ), "Vibrations", em.getRef( entity[1].getUuid() ) );
+        em.createConnection( em.getRef( entity[1].getUuid() ), "Vibrations", em.getRef( entity[0].getUuid() ) );
+
+        UUID exportUUID = exportService.schedule( payload );
+        exportService.setS3Export( s3Export );
+
+        //create and initialize jobData returned in JobExecution.
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", payload );
+        jobData.setProperty( "exportId", exportUUID );
+
+        JobExecution jobExecution = mock( JobExecution.class );
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        exportService.doExport( jobExecution );
+
+        JSONParser parser = new JSONParser();
+
+        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+        //assertEquals(2, a.size() );
+
+        for(indexCon  = 0; indexCon < a.size(); indexCon++) {
+            JSONObject jObj = ( JSONObject ) a.get( indexCon );
+            JSONObject data = ( JSONObject ) jObj.get( "Metadata" );
+            String uuid = (String) data.get( "uuid" );
+            if ( entity[0].getUuid().toString().equals( uuid )) {
+                break;
+            }
+
+        }
+
+        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( indexCon );
+        org.json.simple.JSONObject objConnections = ( org.json.simple.JSONObject ) objEnt.get( "connections" );
+
+        assertNotNull( objConnections );
+
+        org.json.simple.JSONArray objVibrations = ( org.json.simple.JSONArray ) objConnections.get( "Vibrations" );
+
+        assertNotNull( objVibrations );
+
+        f.delete();
+    }
+
     @Ignore //Connections won't save when run with maven, but on local builds it will.
     public void testConnectionsOnApplicationEndpoint() throws Exception {
 
@@ -918,473 +923,495 @@ public class ManagementServiceIT {
     }
 //
 ////need to add tests for the other endpoint as well.
-//    @Test
-//    public void testValidityOfCollectionExport() throws Exception {
-//
-//        File f = null;
-//
-//        try {
-//            f = new File( "fileValidity.json" );
-//            f.delete();
-//        }
-//        catch ( Exception e ) {
-//            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
-//        }
-//
-//        S3Export s3Export = new MockS3ExportImpl();
-//        s3Export.setFilename( "fileValidity.json" );
-//        ExportService exportService = setup.getExportService();
-//        HashMap<String, Object> payload = payloadBuilder();
-//
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-//        exportInfo.setCollection( "users" );
-//
-//        UUID exportUUID = exportService.schedule( exportInfo );
-//        exportService.setS3Export( s3Export );
-//
-//        JobData jobData = new JobData();
-//        jobData.setProperty( "jobName", "exportJob" );
-//        jobData.setProperty( "exportInfo", exportInfo );
-//        jobData.setProperty( "exportId", exportUUID );
-//
-//        JobExecution jobExecution = mock( JobExecution.class );
-//        when( jobExecution.getJobData() ).thenReturn( jobData );
-//
-//        exportService.doExport( exportInfo, jobExecution );
-//
-//        JSONParser parser = new JSONParser();
-//
-//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-//
-//        for ( int i = 0; i < a.size(); i++ ) {
-//            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
-//            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
-//            assertNotNull( entityData );
-//        }
-//        f.delete();
-//    }
-//
-//    @Test
-//    public void testValidityOfApplicationExport() throws Exception {
-//
-//        File f = null;
-//
-//        try {
-//            f = new File( "testValidityOfApplicationExport.json" );
-//            f.delete();
-//        }
-//        catch ( Exception e ) {
-//            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
-//        }
-//
-//        S3Export s3Export = new MockS3ExportImpl();
-//        s3Export.setFilename( "testValidityOfApplicationExport.json" );
-//        ExportService exportService = setup.getExportService();
-//        HashMap<String, Object> payload = payloadBuilder();
-//
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-//
-//        UUID exportUUID = exportService.schedule( exportInfo );
-//        exportService.setS3Export( s3Export );
-//
-//        JobData jobData = new JobData();
-//        jobData.setProperty( "jobName", "exportJob" );
-//        jobData.setProperty( "exportInfo", exportInfo );
-//        jobData.setProperty( "exportId", exportUUID );
-//
-//        JobExecution jobExecution = mock( JobExecution.class );
-//        when( jobExecution.getJobData() ).thenReturn( jobData );
-//
-//        exportService.doExport( exportInfo, jobExecution );
-//
-//        JSONParser parser = new JSONParser();
-//
-//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-//
-//        for ( int i = 0; i < a.size(); i++ ) {
-//            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
-//            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
-//            assertNotNull( entityData );
-//        }
-//        f.delete();
-//    }
-//
-//    @Test
-//    public void testExportOneOrgCollectionEndpoint() throws Exception {
-//
-//        File f = null;
-//
-//
-//        try {
-//            f = new File( "exportOneOrg.json" );
-//            f.delete();
-//        }
-//        catch ( Exception e ) {
-//            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
-//        }
-//        setup.getMgmtSvc()
-//             .createOwnerAndOrganization( "noExport", "junkUserName", "junkRealName", "ugExport@usergrid.com",
-//                     "123456789" );
-//
-//        S3Export s3Export = new MockS3ExportImpl();
-//        s3Export.setFilename("exportOneOrg.json");
-//        ExportService exportService = setup.getExportService();
-//        HashMap<String, Object> payload = payloadBuilder();
-//
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-//        exportInfo.setCollection( "roles" );
-//
-//        UUID exportUUID = exportService.schedule( exportInfo );
-//        exportService.setS3Export( s3Export );
-//
-//        JobData jobData = new JobData();
-//        jobData.setProperty( "jobName", "exportJob" );
-//        jobData.setProperty( "exportInfo", exportInfo );
-//        jobData.setProperty( "exportId", exportUUID );
-//
-//        JobExecution jobExecution = mock( JobExecution.class );
-//        when( jobExecution.getJobData() ).thenReturn( jobData );
-//
-//        exportService.doExport( exportInfo, jobExecution );
-//
-//        JSONParser parser = new JSONParser();
-//
-//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-//
-//        assertEquals( 3 , a.size() );
-//        for ( int i = 0; i < a.size(); i++ ) {
-//            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
-//            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
-//            String entityName = ( String ) entityData.get( "name" );
-//            // assertNotEquals( "NotEqual","junkRealName",entityName );
-//            assertFalse( "junkRealName".equals( entityName ) );
-//        }
-//        f.delete();
-//    }
-//
-//
-//    @Test
-//    public void testExportOneAppOnCollectionEndpoint() throws Exception {
-//
-//        File f = null;
-//        String orgName = "ed-organization";
-//        String appName = "testAppCollectionTestNotExported";
-//
-//        try {
-//            f = new File( "exportOneApp.json" );
-//            f.delete();
-//        }
-//        catch ( Exception e ) {
-//            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
-//        }
-//
-//        UUID appId = setup.getEmf().createApplication( orgName, appName );
-//
-//
-//        EntityManager em = setup.getEmf().getEntityManager( appId );
-//        //intialize user object to be posted
-//        Map<String, Object> userProperties = null;
-//        Entity[] entity;
-//        entity = new Entity[1];
-//        //creates entities
-//        for ( int i = 0; i < 1; i++ ) {
-//            userProperties = new LinkedHashMap<String, Object>();
-//            userProperties.put( "username", "junkRealName");
-//            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
-//            entity[i] = em.create( "user", userProperties );
-//        }
-//
-//        S3Export s3Export = new MockS3ExportImpl();
-//        s3Export.setFilename( "exportOneApp.json" );
-//        ExportService exportService = setup.getExportService();
-//        HashMap<String, Object> payload = payloadBuilder();
-//
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-//        exportInfo.setCollection( "roles" ); // <- this line determines if it is a collection back up or a application backup.
-//
-//        UUID exportUUID = exportService.schedule( exportInfo );
-//        exportService.setS3Export( s3Export );
-//
-//        JobData jobData = new JobData();
-//        jobData.setProperty( "jobName", "exportJob" );
-//        jobData.setProperty( "exportInfo", exportInfo );
-//        jobData.setProperty( "exportId", exportUUID );
-//
-//        JobExecution jobExecution = mock( JobExecution.class );
-//        when( jobExecution.getJobData() ).thenReturn( jobData );
-//
-//        exportService.doExport( exportInfo, jobExecution );
-//
-//        JSONParser parser = new JSONParser();
-//
-//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-//
-//        assertEquals( 3 , a.size() );
-//        for ( int i = 0; i < a.size(); i++ ) {
-//            org.json.simple.JSONObject data = ( org.json.simple.JSONObject ) a.get( i );
-//            org.json.simple.JSONObject entityData = ( JSONObject ) data.get( "Metadata" );
-//            String entityName = ( String ) entityData.get( "name" );
-//            assertFalse( "junkRealName".equals( entityName ) );
-//        }
-//        f.delete();
-//    }
-//
-//    @Test
-//    public void testExportOneAppOnApplicationEndpoint() throws Exception {
-//
-//        File f = null;
-//        String orgName = "ed-organization";
-//        String appName = "testAppNotExported";
-//
-//        try {
-//            f = new File( "exportOneApp.json" );
-//            f.delete();
-//        }
-//        catch ( Exception e ) {
-//            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
-//        }
-//
-//        UUID appId = setup.getEmf().createApplication( orgName, appName );
-//
-//
-//        EntityManager em = setup.getEmf().getEntityManager( appId );
-//        //intialize user object to be posted
-//        Map<String, Object> userProperties = null;
-//        Entity[] entity;
-//        entity = new Entity[1];
-//        //creates entities
-//        for ( int i = 0; i < 1; i++ ) {
-//            userProperties = new LinkedHashMap<String, Object>();
-//            userProperties.put( "username", "junkRealName");
-//            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
-//            entity[i] = em.create( "users", userProperties );
-//        }
-//
-//        S3Export s3Export = new MockS3ExportImpl();
-//        s3Export.setFilename( "exportOneApp.json" );
-//        ExportService exportService = setup.getExportService();
-//        HashMap<String, Object> payload = payloadBuilder();
-//
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-//
-//        UUID exportUUID = exportService.schedule( exportInfo );
-//        exportService.setS3Export( s3Export );
-//
-//        JobData jobData = new JobData();
-//        jobData.setProperty( "jobName", "exportJob" );
-//        jobData.setProperty( "exportInfo", exportInfo );
-//        jobData.setProperty( "exportId", exportUUID );
-//
-//        JobExecution jobExecution = mock( JobExecution.class );
-//        when( jobExecution.getJobData() ).thenReturn( jobData );
-//
-//        exportService.doExport( exportInfo, jobExecution );
-//
-//        JSONParser parser = new JSONParser();
-//
-//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-//
-//        //assertEquals( 3 , a.size() );
-//        for ( int i = 0; i < a.size(); i++ ) {
-//            org.json.simple.JSONObject data = ( org.json.simple.JSONObject ) a.get( i );
-//            org.json.simple.JSONObject entityData = ( JSONObject ) data.get( "Metadata" );
-//            String entityName = ( String ) entityData.get( "name" );
-//            assertFalse( "junkRealName".equals( entityName ) );
-//        }
-//        f.delete();
-//    }
-//
-//    @Test
-//    public void testExportOneCollection() throws Exception {
-//
-//        File f = null;
-//        int entitiesToCreate = 10000;
-//
-//        try {
-//            f = new File( "exportOneCollection.json" );
-//            f.delete();
-//        }
-//        catch ( Exception e ) {
-//            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
-//        }
-//
-//        EntityManager em = setup.getEmf().getEntityManager( applicationId);
-//        em.createApplicationCollection( "baconators" );
-//        //intialize user object to be posted
-//        Map<String, Object> userProperties = null;
-//        Entity[] entity;
-//        entity = new Entity[entitiesToCreate];
-//        //creates entities
-//        for ( int i = 0; i < entitiesToCreate; i++ ) {
-//            userProperties = new LinkedHashMap<String, Object>();
-//            userProperties.put( "username", "billybob" + i );
-//            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
-//            entity[i] = em.create( "baconators", userProperties );
-//        }
-//
-//        S3Export s3Export = new MockS3ExportImpl();
-//        s3Export.setFilename( "exportOneCollection.json" );
-//        ExportService exportService = setup.getExportService();
-//        HashMap<String, Object> payload = payloadBuilder();
-//
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-//        exportInfo.setCollection( "baconators" );
-//
-//        UUID exportUUID = exportService.schedule( exportInfo );
-//        exportService.setS3Export( s3Export );
-//
-//        JobData jobData = new JobData();
-//        jobData.setProperty( "jobName", "exportJob" );
-//        jobData.setProperty( "exportInfo", exportInfo );
-//        jobData.setProperty( "exportId", exportUUID );
-//
-//        JobExecution jobExecution = mock( JobExecution.class );
-//        when( jobExecution.getJobData() ).thenReturn( jobData );
-//
-//        exportService.doExport( exportInfo, jobExecution );
-//
-//        JSONParser parser = new JSONParser();
-//
-//        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-//
-//        assertEquals( entitiesToCreate , a.size() );
-//        f.delete();
-//    }
-//
-//
-//    //only handles the DoJob Code , different tests for DoExport
     @Test
-    public void testExportDoJob() throws Exception {
+    public void testValidityOfCollectionExport() throws Exception {
+
+        File f = null;
+
+        try {
+            f = new File( "fileValidity.json" );
+            f.delete();
+        }
+        catch ( Exception e ) {
+            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
+        }
 
+        S3Export s3Export = new MockS3ExportImpl();
+        s3Export.setFilename( "fileValidity.json" );
+        ExportService exportService = setup.getExportService();
         HashMap<String, Object> payload = payloadBuilder();
 
 //        ExportInfo exportInfo = new ExportInfo( payload );
 //        exportInfo.setOrganizationId( organization.getUuid() );
 //        exportInfo.setApplicationId( applicationId );
+//        exportInfo.setCollection( "users" );
+
         payload.put( "organizationId",organization.getUuid() );
         payload.put( "applicationId",applicationId);
+        payload.put( "collectionName","users");
 
+        UUID exportUUID = exportService.schedule( payload );
+        exportService.setS3Export( s3Export );
 
         JobData jobData = new JobData();
         jobData.setProperty( "jobName", "exportJob" );
-        jobData.setProperty( "exportInfo", payload ); //this needs to be populated with properties of export info
+        jobData.setProperty( "exportInfo", payload );
+        jobData.setProperty( "exportId", exportUUID );
 
         JobExecution jobExecution = mock( JobExecution.class );
-
         when( jobExecution.getJobData() ).thenReturn( jobData );
 
-        ExportJob job = new ExportJob();
-        ExportService eS = mock( ExportService.class );
-        job.setExportService( eS );
+        exportService.doExport( jobExecution );
+
+        JSONParser parser = new JSONParser();
+
+        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+
+        for ( int i = 0; i < a.size(); i++ ) {
+            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
+            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
+            assertNotNull( entityData );
+        }
+        f.delete();
+    }
+//
+    @Test
+    public void testValidityOfApplicationExport() throws Exception {
+
+        File f = null;
+
         try {
-            job.doJob( jobExecution );
+            f = new File( "testValidityOfApplicationExport.json" );
+            f.delete();
         }
         catch ( Exception e ) {
-            assert ( false );
+            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
         }
-        assert ( true );
-    }
-//
-//    @Test
-//    public void testExportDoExportOnApplicationEndpoint() throws Exception {
-//
-//        EntityManagerFactory emf = setup.getEmf();
-//        EntityManager em = emf.getEntityManager( applicationId );
-//        HashMap<String, Object> payload = payloadBuilder();
-//        ExportService eS = setup.getExportService();
-//
-//        JobExecution jobExecution = mock( JobExecution.class );
-//
+
+        S3Export s3Export = new MockS3ExportImpl();
+        s3Export.setFilename( "testValidityOfApplicationExport.json" );
+        ExportService exportService = setup.getExportService();
+        HashMap<String, Object> payload = payloadBuilder();
+
 //        ExportInfo exportInfo = new ExportInfo( payload );
 //        exportInfo.setOrganizationId( organization.getUuid() );
 //        exportInfo.setApplicationId( applicationId );
+
+        payload.put( "organizationId",organization.getUuid() );
+        payload.put( "applicationId",applicationId);
+
+        UUID exportUUID = exportService.schedule( payload );
+        exportService.setS3Export( s3Export );
+
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", payload );
+        jobData.setProperty( "exportId", exportUUID );
+
+        JobExecution jobExecution = mock( JobExecution.class );
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        exportService.doExport( jobExecution );
+
+        JSONParser parser = new JSONParser();
+
+        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+
+        for ( int i = 0; i < a.size(); i++ ) {
+            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
+            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
+            assertNotNull( entityData );
+        }
+        f.delete();
+    }
 //
-//        UUID entityExportUUID = eS.schedule( exportInfo );
-//
-//
-//        JobData jobData = new JobData();
-//        jobData.setProperty( "jobName", "exportJob" );
-//        jobData.setProperty( "exportInfo", exportInfo );
-//        jobData.setProperty( "exportId", entityExportUUID );
-//
-//        when( jobExecution.getJobData() ).thenReturn( jobData );
-//
-//        //Exportem.get(entityExport);
-//        Export exportEntity = ( Export ) em.get( entityExportUUID );
-//        assertNotNull( exportEntity );
-//        String derp = exportEntity.getState().name();
-//        assertEquals( "SCHEDULED", exportEntity.getState().name() );
-//        try {
-//            eS.doExport( exportInfo, jobExecution );
-//        }
-//        catch ( Exception e ) {
-//            //throw e;
-//            assert(false);
-//        }
-//        exportEntity = ( Export ) em.get( entityExportUUID );
-//        assertNotNull( exportEntity );
-//        assertEquals( "FINISHED", exportEntity.getState().name() );
-//    }
-//
-//    //tests that with empty job data, the export still runs.
-//    @Test
-//    public void testExportEmptyJobData() throws Exception {
-//
-//        JobData jobData = new JobData();
-//
-//        JobExecution jobExecution = mock( JobExecution.class );
-//
-//        when( jobExecution.getJobData() ).thenReturn( jobData );
-//
-//        ExportJob job = new ExportJob();
-//        S3Export s3Export = mock( S3Export.class );
-//        setup.getExportService().setS3Export( s3Export );
-//        job.setExportService( setup.getExportService() );
-//        try {
-//            job.doJob( jobExecution );
-//        }
-//        catch ( Exception e ) {
-//            assert ( false );
-//        }
-//        assert ( true );
-//    }
-//
-//
-//    @Test
-//    public void testNullJobExecution() {
+    @Test
+    public void testExportOneOrgCollectionEndpoint() throws Exception {
+
+        File f = null;
+
+
+        try {
+            f = new File( "exportOneOrg.json" );
+            f.delete();
+        }
+        catch ( Exception e ) {
+            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
+        }
+        setup.getMgmtSvc()
+             .createOwnerAndOrganization( "noExport", "junkUserName", "junkRealName", "ugExport@usergrid.com",
+                     "123456789" );
+
+        S3Export s3Export = new MockS3ExportImpl();
+        s3Export.setFilename("exportOneOrg.json");
+        ExportService exportService = setup.getExportService();
+        HashMap<String, Object> payload = payloadBuilder();
+
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+//        exportInfo.setCollection( "roles" );
+
+        payload.put( "organizationId",organization.getUuid() );
+        payload.put( "applicationId",applicationId);
+        payload.put( "collectionName","roles");
+
+        UUID exportUUID = exportService.schedule( payload );
+        exportService.setS3Export( s3Export );
+
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", payload );
+        jobData.setProperty( "exportId", exportUUID );
+
+        JobExecution jobExecution = mock( JobExecution.class );
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        exportService.doExport( jobExecution );
+
+        JSONParser parser = new JSONParser();
+
+        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+
+        assertEquals( 3 , a.size() );
+        for ( int i = 0; i < a.size(); i++ ) {
+            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
+            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
+            String entityName = ( String ) entityData.get( "name" );
+            // assertNotEquals( "NotEqual","junkRealName",entityName );
+            assertFalse( "junkRealName".equals( entityName ) );
+        }
+        f.delete();
+    }
 //
-//        JobData jobData = new JobData();
 //
-//        JobExecution jobExecution = mock( JobExecution.class );
+    @Test
+    public void testExportOneAppOnCollectionEndpoint() throws Exception {
+
+        File f = null;
+        String orgName = "ed-organization";
+        String appName = "testAppCollectionTestNotExported";
+
+        try {
+            f = new File( "exportOneApp.json" );
+            f.delete();
+        }
+        catch ( Exception e ) {
+            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
+        }
+
+        UUID appId = setup.getEmf().createApplication( orgName, appName );
+
+
+        EntityManager em = setup.getEmf().getEntityManager( appId );
+        //intialize user object to be posted
+        Map<String, Object> userProperties = null;
+        Entity[] entity;
+        entity = new Entity[1];
+        //creates entities
+        for ( int i = 0; i < 1; i++ ) {
+            userProperties = new LinkedHashMap<String, Object>();
+            userProperties.put( "username", "junkRealName");
+            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+            entity[i] = em.create( "user", userProperties );
+        }
+
+        S3Export s3Export = new MockS3ExportImpl();
+        s3Export.setFilename( "exportOneApp.json" );
+        ExportService exportService = setup.getExportService();
+        HashMap<String, Object> payload = payloadBuilder();
+
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+//        exportInfo.setCollection( "roles" ); // <- this line determines if it is a collection back up or a application backup.
+
+        payload.put( "organizationId",organization.getUuid() );
+        payload.put( "applicationId",applicationId);
+
+        UUID exportUUID = exportService.schedule( payload );
+        exportService.setS3Export( s3Export );
+
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", payload );
+        jobData.setProperty( "exportId", exportUUID );
+
+        JobExecution jobExecution = mock( JobExecution.class );
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        exportService.doExport( jobExecution );
+
+        JSONParser parser = new JSONParser();
+
+        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+
+        assertEquals( 3 , a.size() );
+        for ( int i = 0; i < a.size(); i++ ) {
+            org.json.simple.JSONObject data = ( org.json.simple.JSONObject ) a.get( i );
+            org.json.simple.JSONObject entityData = ( JSONObject ) data.get( "Metadata" );
+            String entityName = ( String ) entityData.get( "name" );
+            assertFalse( "junkRealName".equals( entityName ) );
+        }
+        f.delete();
+    }
 //
-//        when( jobExecution.getJobData() ).thenReturn( jobData );
+    @Test
+    public void testExportOneAppOnApplicationEndpoint() throws Exception {
+
+        File f = null;
+        String orgName = "ed-organization";
+        String appName = "testAppNotExported";
+
+        try {
+            f = new File( "exportOneApp.json" );
+            f.delete();
+        }
+        catch ( Exception e ) {
+            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
+        }
+
+        UUID appId = setup.getEmf().createApplication( orgName, appName );
+
+
+        EntityManager em = setup.getEmf().getEntityManager( appId );
+        //intialize user object to be posted
+        Map<String, Object> userProperties = null;
+        Entity[] entity;
+        entity = new Entity[1];
+        //creates entities
+        for ( int i = 0; i < 1; i++ ) {
+            userProperties = new LinkedHashMap<String, Object>();
+            userProperties.put( "username", "junkRealName");
+            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+            entity[i] = em.create( "users", userProperties );
+        }
+
+        S3Export s3Export = new MockS3ExportImpl();
+        s3Export.setFilename( "exportOneApp.json" );
+        ExportService exportService = setup.getExportService();
+        HashMap<String, Object> payload = payloadBuilder();
+
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+
+        payload.put( "organizationId",organization.getUuid() );
+        payload.put( "applicationId",applicationId);
+
+        UUID exportUUID = exportService.schedule( payload );
+        exportService.setS3Export( s3Export );
+
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", payload );
+        jobData.setProperty( "exportId", exportUUID );
+
+        JobExecution jobExecution = mock( JobExecution.class );
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        exportService.doExport( jobExecution );
+
+        JSONParser parser = new JSONParser();
+
+        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+
+        //assertEquals( 3 , a.size() );
+        for ( int i = 0; i < a.size(); i++ ) {
+            org.json.simple.JSONObject data = ( org.json.simple.JSONObject ) a.get( i );
+            org.json.simple.JSONObject entityData = ( JSONObject ) data.get( "Metadata" );
+            String entityName = ( String ) entityData.get( "name" );
+            assertFalse( "junkRealName".equals( entityName ) );
+        }
+        f.delete();
+    }
 //
-//        ExportJob job = new ExportJob();
-//        S3Export s3Export = mock( S3Export.class );
-//        setup.getExportService().setS3Export( s3Export );
-//        job.setExportService( setup.getExportService() );
-//        try {
-//            job.doJob( jobExecution );
-//        }
-//        catch ( Exception e ) {
-//            assert ( false );
-//        }
-//        assert ( true );
-//    }
+    @Test
+    public void testExportOneCollection() throws Exception {
+
+        File f = null;
+        int entitiesToCreate = 10000;
+
+        try {
+            f = new File( "exportOneCollection.json" );
+            f.delete();
+        }
+        catch ( Exception e ) {
+            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
+        }
+
+        EntityManager em = setup.getEmf().getEntityManager( applicationId);
+        em.createApplicationCollection( "baconators" );
+        //intialize user object to be posted
+        Map<String, Object> userProperties = null;
+        Entity[] entity;
+        entity = new Entity[entitiesToCreate];
+        //creates entities
+        for ( int i = 0; i < entitiesToCreate; i++ ) {
+            userProperties = new LinkedHashMap<String, Object>();
+            userProperties.put( "username", "billybob" + i );
+            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+            entity[i] = em.create( "baconators", userProperties );
+        }
+
+        S3Export s3Export = new MockS3ExportImpl();
+        s3Export.setFilename( "exportOneCollection.json" );
+        ExportService exportService = setup.getExportService();
+        HashMap<String, Object> payload = payloadBuilder();
+
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+//        exportInfo.setCollection( "baconators" );
+        payload.put( "organizationId",organization.getUuid() );
+        payload.put( "applicationId",applicationId);
+        payload.put( "collectionName","baconators");
+
+        UUID exportUUID = exportService.schedule( payload );
+        exportService.setS3Export( s3Export );
+
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", payload );
+        jobData.setProperty( "exportId", exportUUID );
+
+        JobExecution jobExecution = mock( JobExecution.class );
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        exportService.doExport( jobExecution );
+
+        JSONParser parser = new JSONParser();
+
+        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+
+        assertEquals( entitiesToCreate , a.size() );
+        f.delete();
+    }
 //
 //
+//    //only handles the DoJob Code , different tests for DoExport
+    @Test
+    public void testExportDoJob() throws Exception {
+
+        HashMap<String, Object> payload = payloadBuilder();
+
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+        payload.put( "organizationId",organization.getUuid() );
+        payload.put( "applicationId",applicationId);
+
+
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", payload ); //this needs to be populated with properties of export info
+
+        JobExecution jobExecution = mock( JobExecution.class );
+
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        ExportJob job = new ExportJob();
+        ExportService eS = mock( ExportService.class );
+        job.setExportService( eS );
+        try {
+            job.doJob( jobExecution );
+        }
+        catch ( Exception e ) {
+            assert ( false );
+        }
+        assert ( true );
+    }
+
+    @Test
+    public void testExportDoExportOnApplicationEndpoint() throws Exception {
+
+        EntityManagerFactory emf = setup.getEmf();
+        EntityManager em = emf.getEntityManager( applicationId );
+        HashMap<String, Object> payload = payloadBuilder();
+        ExportService eS = setup.getExportService();
+
+        JobExecution jobExecution = mock( JobExecution.class );
+
+//        ExportInfo exportInfo = new ExportInfo( payload );
+//        exportInfo.setOrganizationId( organization.getUuid() );
+//        exportInfo.setApplicationId( applicationId );
+        payload.put("organizationId",organization.getUuid());
+        payload.put("applicationId",applicationId);
+
+        UUID entityExportUUID = eS.schedule( payload);
+
+
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", payload );
+        jobData.setProperty( "exportId", entityExportUUID );
+
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        //Exportem.get(entityExport);
+        Export exportEntity = ( Export ) em.get( entityExportUUID );
+        assertNotNull( exportEntity );
+        String derp = exportEntity.getState().name();
+        assertEquals( "SCHEDULED", exportEntity.getState().name() );
+        try {
+            eS.doExport( jobExecution );
+        }
+        catch ( Exception e ) {
+            //throw e;
+            assert(false);
+        }
+        exportEntity = ( Export ) em.get( entityExportUUID );
+        assertNotNull( exportEntity );
+        assertEquals( "FINISHED", exportEntity.getState().name() );
+    }
+
+    //tests that with empty job data, the export still runs.
+    @Test
+    public void testExportEmptyJobData() throws Exception {
+
+        JobData jobData = new JobData();
+
+        JobExecution jobExecution = mock( JobExecution.class );
+
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        ExportJob job = new ExportJob();
+        S3Export s3Export = mock( S3Export.class );
+        setup.getExportService().setS3Export( s3Export );
+        job.setExportService( setup.getExportService() );
+        try {
+            job.doJob( jobExecution );
+        }
+        catch ( Exception e ) {
+            assert ( false );
+        }
+        assert ( true );
+    }
+
+
+    @Test
+    public void testNullJobExecution() {
+
+        JobData jobData = new JobData();
+
+        JobExecution jobExecution = mock( JobExecution.class );
+
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        ExportJob job = new ExportJob();
+        S3Export s3Export = mock( S3Export.class );
+        setup.getExportService().setS3Export( s3Export );
+        job.setExportService( setup.getExportService() );
+        try {
+            job.doJob( jobExecution );
+        }
+        catch ( Exception e ) {
+            assert ( false );
+        }
+        assert ( true );
+    }
+
+
     @Ignore //For this test please input your s3 credentials into payload builder.
     public void testIntegration100EntitiesOn() throws Exception {
 


[37/50] [abbrv] git commit: Merge pull request #63 from bbrooks/patch-1

Posted by sn...@apache.org.
Merge pull request #63 from bbrooks/patch-1

Fixing parse errors

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

Branch: refs/pull/60/merge
Commit: 631f02d5a691823a0bc8b806f3be44a5f9a59fbc
Parents: 754aa1f d72910d
Author: Rod Simpson <ro...@rodsimpson.com>
Authored: Tue Mar 4 19:11:53 2014 -0700
Committer: Rod Simpson <ro...@rodsimpson.com>
Committed: Tue Mar 4 19:11:53 2014 -0700

----------------------------------------------------------------------
 sdks/php/lib/vendor/Apigee/Usergrid/Collection.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------



[38/50] [abbrv] git commit: Merge pull request #63 from bbrooks/patch-1

Posted by sn...@apache.org.
Merge pull request #63 from bbrooks/patch-1

Fixing parse errors

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

Branch: refs/pull/60/head
Commit: 631f02d5a691823a0bc8b806f3be44a5f9a59fbc
Parents: 754aa1f d72910d
Author: Rod Simpson <ro...@rodsimpson.com>
Authored: Tue Mar 4 19:11:53 2014 -0700
Committer: Rod Simpson <ro...@rodsimpson.com>
Committed: Tue Mar 4 19:11:53 2014 -0700

----------------------------------------------------------------------
 sdks/php/lib/vendor/Apigee/Usergrid/Collection.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------



[16/50] [abbrv] fix module errors

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/js/usergrid-dev.min.js
----------------------------------------------------------------------
diff --git a/portal/js/usergrid-dev.min.js b/portal/js/usergrid-dev.min.js
index a181769..fbbf56d 100644
--- a/portal/js/usergrid-dev.min.js
+++ b/portal/js/usergrid-dev.min.js
@@ -1,4 +1,4 @@
-/*! apigee-usergrid@2.0.34 2014-02-20 */
+/*! apigee-usergrid@2.0.34 2014-03-03 */
 (function(exports, global) {
     global["true"] = exports;
     "use strict";
@@ -42,8 +42,7 @@
     AppServices.Controllers = angular.module("appservices.controllers", []);
     AppServices.Filters = angular.module("appservices.filters", []);
     AppServices.Directives = angular.module("appservices.directives", []);
-    AppServices.Push = angular.module("appservices.push", []);
-    angular.module("appservices", [ "ngRoute", "ngResource", "ngSanitize", "ui.bootstrap", "appservices.filters", "appservices.services", "appservices.directives", "appservices.constants", "appservices.controllers", "appservices.performance", "appservices.push" ]).config([ "$routeProvider", "$locationProvider", "$sceDelegateProvider", function($routeProvider, $locationProvider, $sceDelegateProvider) {
+    angular.module("appservices", [ "ngRoute", "ngResource", "ngSanitize", "ui.bootstrap", "appservices.filters", "appservices.services", "appservices.directives", "appservices.constants", "appservices.controllers" ]).config([ "$routeProvider", "$locationProvider", "$sceDelegateProvider", function($routeProvider, $locationProvider, $sceDelegateProvider) {
         $routeProvider.when("/org-overview", {
             templateUrl: "org-overview/org-overview.html",
             controller: "OrgOverviewCtrl"
@@ -3164,9 +3163,9 @@
         }
     } ]);
     "use strict";
-    AppServices.Controllers.controller("ForgotPasswordCtrl", [ "ug", "$scope", "$rootScope", "$location", "utility", function(ug, $scope, $rootScope, $location) {
+    AppServices.Controllers.controller("ForgotPasswordCtrl", [ "ug", "$scope", "$rootScope", "$location", "$sce", "utility", function(ug, $scope, $rootScope, $location, $sce) {
         $rootScope.activeUI && $location.path("/");
-        $scope.forgotPWiframeURL = $scope.apiUrl + "/management/users/resetpw";
+        $scope.forgotPWiframeURL = $sce.trustAsResourceUrl($scope.apiUrl + "/management/users/resetpw");
     } ]);
     "use strict";
     AppServices.Controllers.controller("LoginCtrl", [ "ug", "$scope", "$rootScope", "$routeParams", "$location", "utility", function(ug, $scope, $rootScope, $routeParams, $location, utility) {


[15/50] [abbrv] fix module errors

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/js/usergrid.min.js
----------------------------------------------------------------------
diff --git a/portal/js/usergrid.min.js b/portal/js/usergrid.min.js
index 7c3a20e..f94947b 100644
--- a/portal/js/usergrid.min.js
+++ b/portal/js/usergrid.min.js
@@ -1,6 +1,6 @@
-/*! apigee-usergrid@2.0.34 2014-02-20 */
-!function(exports,global){function renderChart(chartsDefaults,chartdata){var newSettings={};$.extend(!0,newSettings,chartsDefaults,chartdata);new Highcharts.Chart(newSettings)}function menuBindClick(scope,lElement,cevent,menuContext){var currentSelection=angular.element(cevent.srcElement).parent(),previousSelection=scope[menuContext];previousSelection!==currentSelection&&(previousSelection&&angular.element(previousSelection).removeClass("active"),scope[menuContext]=currentSelection,scope.$apply(function(){currentSelection.addClass("active")}))}global["true"]=exports;var polyfills=function(window,Object){window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(callback,1e3/60)}}(),Object.defineProperty(Object.prototype,"clone",{enumerable:!1,writable:!0,value:function(){var i,newObj=this instanceof Arra
 y?[]:{};for(i in this)"clone"!==i&&(newObj[i]=this[i]&&"object"==typeof this[i]?this[i].clone():this[i]);return newObj}}),Object.defineProperty(Object.prototype,"stringifyJSON",{enumerable:!1,writable:!0,value:function(){return JSON.stringify(this,null,"	")}})};polyfills(window,Object);var AppServices=AppServices||{};global.AppServices=global.AppServices||AppServices,AppServices.Constants=angular.module("appservices.constants",[]),AppServices.Services=angular.module("appservices.services",[]),AppServices.Controllers=angular.module("appservices.controllers",[]),AppServices.Filters=angular.module("appservices.filters",[]),AppServices.Directives=angular.module("appservices.directives",[]),AppServices.Push=angular.module("appservices.push",[]),angular.module("appservices",["ngRoute","ngResource","ngSanitize","ui.bootstrap","appservices.filters","appservices.services","appservices.directives","appservices.constants","appservices.controllers","appservices.performance","appservices.push"])
 .config(["$routeProvider","$locationProvider","$sceDelegateProvider",function($routeProvider,$locationProvider,$sceDelegateProvider){$routeProvider.when("/org-overview",{templateUrl:"org-overview/org-overview.html",controller:"OrgOverviewCtrl"}).when("/login",{templateUrl:"login/login.html",controller:"LoginCtrl"}).when("/login/loading",{templateUrl:"login/loading.html",controller:"LoginCtrl"}).when("/app-overview/summary",{templateUrl:"app-overview/app-overview.html",controller:"AppOverviewCtrl"}).when("/getting-started/setup",{templateUrl:"app-overview/getting-started.html",controller:"GettingStartedCtrl"}).when("/forgot-password",{templateUrl:"login/forgot-password.html",controller:"ForgotPasswordCtrl"}).when("/register",{templateUrl:"login/register.html",controller:"RegisterCtrl"}).when("/users",{templateUrl:"users/users.html",controller:"UsersCtrl"}).when("/users/profile",{templateUrl:"users/users-profile.html",controller:"UsersProfileCtrl"}).when("/users/groups",{templateUrl:"
 users/users-groups.html",controller:"UsersGroupsCtrl"}).when("/users/activities",{templateUrl:"users/users-activities.html",controller:"UsersActivitiesCtrl"}).when("/users/graph",{templateUrl:"users/users-graph.html",controller:"UsersGraphCtrl"}).when("/users/roles",{templateUrl:"users/users-roles.html",controller:"UsersRolesCtrl"}).when("/groups",{templateUrl:"groups/groups.html",controller:"GroupsCtrl"}).when("/groups/details",{templateUrl:"groups/groups-details.html",controller:"GroupsDetailsCtrl"}).when("/groups/members",{templateUrl:"groups/groups-members.html",controller:"GroupsMembersCtrl"}).when("/groups/activities",{templateUrl:"groups/groups-activities.html",controller:"GroupsActivitiesCtrl"}).when("/groups/roles",{templateUrl:"groups/groups-roles.html",controller:"GroupsRolesCtrl"}).when("/roles",{templateUrl:"roles/roles.html",controller:"RolesCtrl"}).when("/roles/settings",{templateUrl:"roles/roles-settings.html",controller:"RolesSettingsCtrl"}).when("/roles/users",{tem
 plateUrl:"roles/roles-users.html",controller:"RolesUsersCtrl"}).when("/roles/groups",{templateUrl:"roles/roles-groups.html",controller:"RolesGroupsCtrl"}).when("/data",{templateUrl:"data/data.html",controller:"DataCtrl"}).when("/data/entity",{templateUrl:"data/entity.html",controller:"EntityCtrl"}).when("/data/shell",{templateUrl:"data/shell.html",controller:"ShellCtrl"}).when("/profile/organizations",{templateUrl:"profile/organizations.html",controller:"OrgCtrl"}).when("/profile/profile",{templateUrl:"profile/profile.html",controller:"ProfileCtrl"}).when("/profile",{templateUrl:"profile/account.html",controller:"AccountCtrl"}).when("/activities",{templateUrl:"activities/activities.html",controller:"ActivitiesCtrl"}).when("/shell",{templateUrl:"shell/shell.html",controller:"ShellCtrl"}).when("/logout",{templateUrl:"login/logout.html",controller:"LogoutCtrl"}).otherwise({redirectTo:"/org-overview"}),$locationProvider.html5Mode(!1).hashPrefix("!"),$sceDelegateProvider.resourceUrlWhite
 list(["self","http://apigee-internal-prod.jupiter.apigee.net/**","http://apigee-internal-prod.mars.apigee.net/**","https://appservices.apigee.com/**","https://api.usergrid.com/**"])}]),AppServices.Controllers.controller("ActivitiesCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope){$scope.$on("app-activities-received",function(evt,data){$scope.activities=data,$scope.$apply()}),$scope.$on("app-activities-error",function(){$rootScope.$broadcast("alert","error","Application failed to retreive activities data.")}),ug.getActivities()}]),AppServices.Controllers.controller("AppOverviewCtrl",["ug","charts","$scope","$rootScope","$log",function(ug,charts,$scope,$rootScope,$log){var createGradient=function(color1,color2){var perShapeGradient={x1:0,y1:0,x2:0,y2:1};return{linearGradient:perShapeGradient,stops:[[0,color1],[1,color2]]}};$scope.appOverview={},$scope.collections=[],$scope.graph="",$scope.$on("top-collections-received",function(event,collections){va
 r dataDescription={bar1:{labels:["Total"],dataAttr:["title","count"],colors:[createGradient("rgba(36,151,212,0.6)","rgba(119,198,240,0.6)")],borderColor:"#1b97d1"}};$scope.collections=collections;var arr=[];for(var i in collections)collections.hasOwnProperty(i)&&arr.push(collections[i]);$scope.appOverview={},$rootScope.chartTemplate?($scope.appOverview.chart=angular.copy($rootScope.chartTemplate.pareto),$scope.appOverview.chart=charts.convertParetoChart(arr,$scope.appOverview.chart,dataDescription.bar1,"1h","NOW"),$scope.applyScope()):ug.httpGet(null,"js/charts/highcharts.json").then(function(success){$rootScope.chartTemplate=success,$scope.appOverview.chart=angular.copy($rootScope.chartTemplate.pareto),$scope.appOverview.chart=charts.convertParetoChart(arr,$scope.appOverview.chart,dataDescription.bar1,"1h","NOW"),$scope.applyScope()},function(fail){$log.error("Problem getting chart template",fail)})}),$scope.$on("app-initialized",function(){ug.getTopCollections()}),$rootScope.activ
 eUI&&ug.getTopCollections()}]),AppServices.Controllers.controller("GettingStartedCtrl",["ug","$scope","$rootScope","$location","$timeout","$anchorScroll",function(ug,$scope,$rootScope,$location,$timeout,$anchorScroll){$scope.collections=[],$scope.graph="",$scope.clientID="",$scope.clientSecret="";$scope.regenerateCredentialsDialog=function(modalId){$scope.orgAPICredentials={client_id:"regenerating...",client_secret:"regenerating..."},ug.regenerateAppCredentials(),$scope.hideModal(modalId)},$scope.$on("app-creds-updated",function(event,credentials){credentials?($scope.clientID=credentials.client_id,$scope.clientSecret=credentials.client_secret,$scope.$$phase||$scope.$apply()):setTimeout(function(){ug.getAppCredentials()},5e3)}),ug.getAppCredentials(),$scope.contentTitle,$scope.showSDKDetail=function(name){var introContainer=document.getElementById("intro-container");if("nocontent"===name)return introContainer.style.height="0",!0;introContainer.style.opacity=.1,introContainer.style.he
 ight="0";var timeout=0;$scope.contentTitle&&(timeout=500),$timeout(function(){introContainer.style.height="1000px",introContainer.style.opacity=1},timeout),$scope.optionName=name,$scope.contentTitle=name,$scope.sdkLink="http://apigee.com/docs/content/"+name+"-sdk-redirect",$scope.docsLink="http://apigee.com/docs/app-services/content/installing-apigee-sdk-"+name,$scope.getIncludeURL=function(){return"app-overview/doc-includes/"+$scope.optionName+".html"}},$scope.scrollToElement=function(elem){return $location.hash(elem),$anchorScroll(),!1}}]),AppServices.Controllers.controller("ChartCtrl",["$scope","$location",function(){}]),AppServices.Directives.directive("chart",function(){return{restrict:"E",scope:{chartdata:"=chartdata"},template:"<div></div>",replace:!0,controller:function(){},link:function(scope,element,attrs){scope.$watch("chartdata",function(chartdata){if(chartdata){var chartsDefaults={chart:{renderTo:element[0],type:attrs.type||null,height:attrs.height||null,width:attrs.wid
 th||null,reflow:!0,animation:!1,zoomType:"x"}};if("pie"===attrs.type&&(chartsDefaults.chart.margin=[0,0,0,0],chartsDefaults.chart.spacingLeft=0,chartsDefaults.chart.spacingRight=0,chartsDefaults.chart.spacingTop=0,chartsDefaults.chart.spacingBottom=0,attrs.titleimage&&(chartdata.title.text='<img src="'+attrs.titleimage+'">'),attrs.titleicon&&(chartdata.title.text='<i class="pictogram '+attrs.titleiconclass+'">'+attrs.titleicon+"</i>"),attrs.titlecolor&&(chartdata.title.style.color=attrs.titlecolor),attrs.titleimagetop&&(chartdata.title.style.marginTop=attrs.titleimagetop),attrs.titleimageleft&&(chartdata.title.style.marginLeft=attrs.titleimageleft)),"line"===attrs.type&&(chartsDefaults.chart.marginTop=30,chartsDefaults.chart.spacingTop=50),"column"===attrs.type&&(chartsDefaults.chart.marginBottom=80),"area"===attrs.type&&(chartsDefaults.chart.spacingLeft=0,chartsDefaults.chart.spacingRight=0,chartsDefaults.chart.marginLeft=0,chartsDefaults.chart.marginRight=0),Highcharts.setOptions(
 {global:{useUTC:!1},chart:{style:{fontFamily:"marquette-light, Helvetica, Arial, sans-serif"}}}),"line"===attrs.type){var xAxis1=chartdata.xAxis[0];xAxis1.labels.formatter||(xAxis1.labels.formatter=new Function(attrs.xaxislabel)),xAxis1.labels.step||(xAxis1.labels.step=attrs.xaxisstep)}chartdata.tooltip&&"string"==typeof chartdata.tooltip.formatter&&(chartdata.tooltip.formatter=new Function(chartdata.tooltip.formatter)),renderChart(chartsDefaults,chartdata)}},!0)}}}),AppServices.Services.factory("charts",function(){function sortJsonArrayByProperty(objArray,prop){if(arguments.length<2)throw new Error("sortJsonArrayByProp requires 2 arguments");var direct=arguments.length>2?arguments[2]:1;if(objArray&&objArray.constructor===Array){var propPath=prop.constructor===Array?prop:prop.split(".");objArray.sort(function(a,b){for(var p in propPath)a[propPath[p]]&&b[propPath[p]]&&(a=a[propPath[p]],b=b[propPath[p]]);return a=a.match(/^\d+$/)?+a:a,b=b.match(/^\d+$/)?+b:b,b>a?-1*direct:a>b?1*direct
 :0})}}var lineChart,areaChart,paretoChart,pieChart,xaxis,seriesIndex;return{convertLineChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function plotData(counter,dPLength,dataPoints,dataAttrs,detailedView){for(var i=0;dPLength>i;i++)for(var dp=dataPoints[i],localCounter=counter,j=0;j<dataAttrs.length;j++)lineChart.series[localCounter].data.push("undefined"==typeof dp?[i,0]:[i,dp[dataAttrs[j]]]),detailedView||localCounter++}lineChart=chartTemplate,"undefined"==typeof chartData[0]&&(chartData[0]={},chartData[0].datapoints=[]);var label,dataPoints=chartData[0].datapoints,dPLength=dataPoints.length;"YESTERDAY"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Yesterday "):"LAST_WEEK"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Last Week "):(lineChart=chartTemplate,seriesIndex=0,lineChart.series=[],label=""),xaxis=lineChart.xAxis[0],xaxis.categories=[],settings.xaxisformat&&(xaxis.labels.formatter=new Function(set
 tings.xaxisformat)),settings.step&&(xaxis.labels.step=settings.step);for(var i=0;dPLength>i;i++){var dp=dataPoints[i];xaxis.categories.push(dp.timestamp)}if(chartData.length>1)for(var l=0;l<chartData.length;l++)chartData[l].chartGroupName&&(dataPoints=chartData[l].datapoints,lineChart.series[l]={},lineChart.series[l].data=[],lineChart.series[l].name=chartData[l].chartGroupName,lineChart.series[l].yAxis=0,lineChart.series[l].type="line",lineChart.series[l].color=dataDescription.colors[i],lineChart.series[l].dashStyle="solid",lineChart.series[l].yAxis.title.text=dataDescription.yAxisLabels,plotData(l,dPLength,dataPoints,dataDescription.detailDataAttr,!0));else{for(var steadyCounter=0,i=seriesIndex;i<dataDescription.dataAttr.length+(seriesIndex>0?seriesIndex:0);i++){var yAxisIndex=dataDescription.multiAxis?steadyCounter:0;lineChart.series[i]={},lineChart.series[i].data=[],lineChart.series[i].name=label+dataDescription.labels[steadyCounter],lineChart.series[i].yAxis=yAxisIndex,lineChart
 .series[i].type="line",lineChart.series[i].color=dataDescription.colors[i],lineChart.series[i].dashStyle="solid",lineChart.yAxis[yAxisIndex].title.text=dataDescription.yAxisLabels[dataDescription.yAxisLabels>1?steadyCounter:0],steadyCounter++}plotData(seriesIndex,dPLength,dataPoints,dataDescription.dataAttr,!1)}return lineChart},convertAreaChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function plotData(counter,dPLength,dataPoints,dataAttrs,detailedView){for(var i=0;dPLength>i;i++)for(var dp=dataPoints[i],localCounter=counter,j=0;j<dataAttrs.length;j++)areaChart.series[localCounter].data.push("undefined"==typeof dp?0:dp[dataAttrs[j]]),detailedView||localCounter++}areaChart=angular.copy(areaChart),"undefined"==typeof chartData[0]&&(chartData[0]={},chartData[0].datapoints=[]);var label,dataPoints=chartData[0].datapoints,dPLength=dataPoints.length;"YESTERDAY"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Yesterday "):"LAST_WEEK"==
 =currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Last Week "):(areaChart=chartTemplate,seriesIndex=0,areaChart.series=[],label=""),xaxis=areaChart.xAxis[0],xaxis.categories=[],settings.xaxisformat&&(xaxis.labels.formatter=new Function(settings.xaxisformat)),settings.step&&(xaxis.labels.step=settings.step);for(var i=0;dPLength>i;i++){var dp=dataPoints[i];xaxis.categories.push(dp.timestamp)}if(chartData.length>1)for(var l=0;l<chartData.length;l++)chartData[l].chartGroupName&&(dataPoints=chartData[l].datapoints,areaChart.series[l]={},areaChart.series[l].data=[],areaChart.series[l].fillColor=dataDescription.areaColors[l],areaChart.series[l].name=chartData[l].chartGroupName,areaChart.series[l].yAxis=0,areaChart.series[l].type="area",areaChart.series[l].pointInterval=1,areaChart.series[l].color=dataDescription.colors[l],areaChart.series[l].dashStyle="solid",areaChart.series[l].yAxis.title.text=dataDescription.yAxisLabels,plotData(l,dPLength,dataPoints,dataDescription.de
 tailDataAttr,!0));else{for(var steadyCounter=0,i=seriesIndex;i<dataDescription.dataAttr.length+(seriesIndex>0?seriesIndex:0);i++){var yAxisIndex=dataDescription.multiAxis?steadyCounter:0;areaChart.series[i]={},areaChart.series[i].data=[],areaChart.series[i].fillColor=dataDescription.areaColors[i],areaChart.series[i].name=label+dataDescription.labels[steadyCounter],areaChart.series[i].yAxis=yAxisIndex,areaChart.series[i].type="area",areaChart.series[i].pointInterval=1,areaChart.series[i].color=dataDescription.colors[i],areaChart.series[i].dashStyle="solid",areaChart.yAxis[yAxisIndex].title.text=dataDescription.yAxisLabels[dataDescription.yAxisLabels>1?steadyCounter:0],steadyCounter++}plotData(seriesIndex,dPLength,dataPoints,dataDescription.dataAttr,!1)}return areaChart},convertParetoChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function getPreviousData(){for(var i=0;i<chartTemplate.series[0].data.length;i++)allParetoOptions.push(chartTemplate.xAxis.c
 ategories[i])}function createStackedBar(dataDescription,paretoChart){paretoChart.plotOptions={series:{shadow:!1,borderColor:dataDescription.borderColor,borderWidth:1},column:{stacking:"normal",dataLabels:{enabled:!0,color:Highcharts.theme&&Highcharts.theme.dataLabelsColor||"white"}}};var start=dataDescription.dataAttr[1].length,steadyCounter=0;compare&&(paretoChart.legend.enabled=!0);for(var f=seriesIndex;start+seriesIndex>f;f++)paretoChart.series[f]||(paretoChart.series[f]={data:[]}),paretoChart.series[f].data.push(bar[dataDescription.dataAttr[1][steadyCounter]]),paretoChart.series[f].name=""!==label?label+" "+dataDescription.labels[steadyCounter]:dataDescription.labels[steadyCounter],paretoChart.series[f].color=dataDescription.colors[f],paretoChart.series[f].stack=label,steadyCounter++}paretoChart=chartTemplate,"undefined"==typeof chartData&&(chartData=[]);var label,cdLength=chartData.length,compare=!1,allParetoOptions=[],stackedBar=!1;if(seriesIndex=0,"object"==typeof dataDescrip
 tion.dataAttr[1]&&(stackedBar=!0),"YESTERDAY"===currentCompare?(label="Yesterday ",compare=!0,stackedBar&&(seriesIndex=dataDescription.dataAttr[1].length),getPreviousData()):"LAST_WEEK"===currentCompare?(label="Last Week ",compare=!0,stackedBar&&(seriesIndex=dataDescription.dataAttr[1].length),seriesIndex=getPreviousData()):(compare=!1,label="",paretoChart.xAxis.categories=[],paretoChart.series=[],paretoChart.series[0]={},paretoChart.series[0].data=[],paretoChart.legend.enabled=!1),paretoChart.plotOptions.series.borderColor=dataDescription.borderColor,compare&&!stackedBar){paretoChart.series[1]={},paretoChart.series[1].data=[];for(var i=0;i<allParetoOptions.length;i++)paretoChart.series[1].data.push(0);paretoChart.legend.enabled=!0}for(var i=0;cdLength>i;i++){var bar=chartData[i];if(compare){var newLabel=bar[dataDescription.dataAttr[0]],newValue=bar[dataDescription.dataAttr[1]],previousIndex=allParetoOptions.indexOf(newLabel);previousIndex>-1&&("object"==typeof dataDescription.dataA
 ttr[1]?createStackedBar(dataDescription,paretoChart,paretoChart.series.length):(paretoChart.series[1].data[previousIndex]=newValue,paretoChart.series[1].name=""!==label?label+" "+dataDescription.labels[0]:dataDescription.labels[0],paretoChart.series[1].color=dataDescription.colors[1]))}else paretoChart.xAxis.categories.push(bar[dataDescription.dataAttr[0]]),"object"==typeof dataDescription.dataAttr[1]?createStackedBar(dataDescription,paretoChart,paretoChart.series.length):(paretoChart.series[0].data.push(bar[dataDescription.dataAttr[1]]),paretoChart.series[0].name=dataDescription.labels[0],paretoChart.series[0].color=dataDescription.colors[0])}return paretoChart},convertPieChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){var label,cdLength=chartData.length,compare=!1;pieChart=chartTemplate,"YESTERDAY"===currentCompare?(label="Yesterday ",compare=!1):"LAST_WEEK"===currentCompare?(label="Last Week ",compare=!1):(compare=!1,pieChart.series[0].data=[],pieC
 hart.series[0].dataLabels&&"string"==typeof pieChart.series[0].dataLabels.formatter&&(pieChart.series[0].dataLabels.formatter=new Function(pieChart.series[0].dataLabels.formatter))),pieChart.plotOptions.pie.borderColor=dataDescription.borderColor,compare&&(pieChart.series[1].data=[],pieChart.series[1].dataLabels&&"string"==typeof pieChart.series[1].dataLabels.formatter&&(pieChart.series[1].dataLabels.formatter=new Function(pieChart.series[1].dataLabels.formatter)));for(var tempArray=[],i=0;cdLength>i;i++){var pie=chartData[i];tempArray.push({name:pie[dataDescription.dataAttr[0]],y:pie[dataDescription.dataAttr[1]],color:""})}sortJsonArrayByProperty(tempArray,"name");for(var i=0;i<tempArray.length;i++)tempArray[i].color=dataDescription.colors[i];return compare?pieChart.series[1].data=tempArray:pieChart.series[0].data=tempArray,pieChart}}}),$(".sessions-bar").sparkline([3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8
 ,1],{type:"bar",barColor:"#c5c5c5",width:"800px",height:100,barWidth:12,barSpacing:"1px"}),AppServices.Controllers.controller("DataCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope){var init=function(){$scope.verb="GET",$scope.display="",$scope.queryBodyDetail={},$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.entitySelected={},$scope.newCollection={},$rootScope.queryCollection={},$scope.data={},$scope.data.queryPath="",$scope.data.queryBody='{ "name":"value" }',$scope.data.searchString="",$scope.data.queryLimit=""},runQuery=function(verb){$scope.loading=!0;var queryPath=$scope.removeFirstSlash($scope.data.queryPath||""),searchString=$scope.data.searchString||"",queryLimit=$scope.data.queryLimit||"",body=JSON.parse($scope.data.queryBody||"{}");"POST"==verb&&$scope.validateJson(!0)?ug.runDataPOSTQuery(queryPath,body):"PUT"==verb&&$scope.validateJson(!0)?ug.runDataPutQuery(queryPath,searchString,queryLi
 mit,body):"DELETE"==verb?ug.runDataDeleteQuery(queryPath,searchString,queryLimit):ug.runDataQuery(queryPath,searchString,queryLimit)};$scope.$on("top-collections-received",function(event,collectionList){$scope.loading=!1;var ignoredCollections=["events"];ignoredCollections.forEach(function(ignoredCollection){collectionList.hasOwnProperty(ignoredCollection)&&delete collectionList[ignoredCollection]}),$scope.collectionList=collectionList,$scope.queryBoxesSelected=!1,$scope.queryPath||$scope.loadCollection("/"+collectionList[Object.keys(collectionList).sort()[0]].name),$scope.applyScope()}),$scope.$on("error-running-query",function(){$scope.loading=!1,runQuery("GET"),$scope.applyScope()}),$scope.$on("entity-deleted",function(){$scope.deleteLoading=!1,$rootScope.$broadcast("alert","success","Entities deleted sucessfully"),$scope.queryBoxesSelected=!1,$scope.checkNextPrev(),$scope.applyScope()}),$scope.$on("entity-deleted-error",function(){$scope.deleteLoading=!1,runQuery("GET"),$scope.a
 pplyScope()}),$scope.$on("collection-created",function(){$scope.newCollection.name=""}),$scope.$on("query-received",function(event,collection){$scope.loading=!1,$rootScope.queryCollection=collection,ug.getIndexes($scope.data.queryPath),$scope.setDisplayType(),$scope.checkNextPrev(),$scope.applyScope(),$scope.queryBoxesSelected=!1}),$scope.$on("indexes-received",function(event,indexes){}),$scope.$on("app-changed",function(){init()}),$scope.setDisplayType=function(){$scope.display="generic"},$scope.deleteEntitiesDialog=function(modalId){$scope.deleteLoading=!1,$scope.deleteEntities($rootScope.queryCollection,"entity-deleted","error deleting entity"),$scope.hideModal(modalId)},$scope.newCollectionDialog=function(modalId){$scope.newCollection.name?(ug.createCollection($scope.newCollection.name),ug.getTopCollections(),$rootScope.$broadcast("alert","success","Collection created successfully."),$scope.hideModal(modalId)):$rootScope.$broadcast("alert","error","You must specify a collection 
 name.")},$scope.addToPath=function(uuid){$scope.data.queryPath="/"+$rootScope.queryCollection._type+"/"+uuid},$scope.isDeep=function(item){return"[object Object]"===Object.prototype.toString.call(item)},$scope.loadCollection=function(type){$scope.data.queryPath="/"+type.substring(1,type.length),$scope.data.searchString="",$scope.data.queryLimit="",$scope.data.body='{ "name":"value" }',$scope.selectGET(),$scope.applyScope(),$scope.run()},$scope.selectGET=function(){$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="GET"},$scope.selectPOST=function(){$scope.queryBodyDisplay="block",$scope.queryLimitDisplay="none",$scope.queryStringDisplay="none",$scope.verb="POST"},$scope.selectPUT=function(){$scope.queryBodyDisplay="block",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="PUT"},$scope.selectDELETE=function(){$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDispla
 y="block",$scope.verb="DELETE"},$scope.validateJson=function(skipMessage){var queryBody=$scope.data.queryBody;try{queryBody=JSON.parse(queryBody)}catch(e){return $rootScope.$broadcast("alert","error","JSON is not valid"),!1}return queryBody=JSON.stringify(queryBody,null,2),!skipMessage&&$rootScope.$broadcast("alert","success","JSON is valid"),$scope.data.queryBody=queryBody,!0},$scope.saveEntity=function(entity){if(!$scope.validateJson())return!1;var queryBody=entity._json;queryBody=JSON.parse(queryBody),$rootScope.selectedEntity.set(),$rootScope.selectedEntity.set(queryBody),$rootScope.selectedEntity.set("type",entity._data.type),$rootScope.selectedEntity.set("uuid",entity._data.uuid),$rootScope.selectedEntity.save(function(err,data){err?$rootScope.$broadcast("alert","error","error: "+data.error_description):$rootScope.$broadcast("alert","success","entity saved")})},$scope.run=function(){$rootScope.queryCollection="";var verb=$scope.verb;runQuery(verb)},$scope.hasProperty=function(
 prop){var retval=!1;return"undefined"!=typeof $rootScope.queryCollection._list&&angular.forEach($rootScope.queryCollection._list,function(value){retval||value._data[prop]&&(retval=!0)}),retval},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$rootScope.queryCollection.hasPreviousPage()&&($scope.previous_display="default"),$rootScope.queryCollection.hasNextPage()&&($scope.next_display="default")},$scope.selectEntity=function(uuid){$rootScope.selectedEntity=$rootScope.queryCollection.getEntityByUUID(uuid),$scope.addToPath(uuid)},$scope.getJSONView=function(entity){var tempjson=entity.get(),queryBody=JSON.stringify(tempjson,null,2);queryBody=JSON.parse(queryBody),delete queryBody.metadata,delete queryBody.uuid,delete queryBody.created,delete queryBody.modified,delete queryBody.type,$scope.queryBody=JSON.stringify(queryBody,null,2)},$scope.getPrevious=function(){$rootScope.queryCollection.g
 etPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of data"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$rootScope.queryCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of data"),$scope.checkNextPrev(),$scope.applyScope()})},init(),$rootScope.queryCollection=$rootScope.queryCollection||{},$rootScope.selectedEntity={},$rootScope.queryCollection&&$rootScope.queryCollection._type&&($scope.loadCollection($rootScope.queryCollection._type),$scope.setDisplayType()),ug.getTopCollections(),$scope.resetNextPrev()}]),AppServices.Controllers.controller("EntityCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){if(!$rootScope.selectedEntity)return void $location.path("/data");$scope.entityUUID=$rootScope.selectedEntity.get("uuid"),$scope.entityType=$rootScope.selectedEntity.get("type");var tempjson=$rootScope.selectedEntity.get(
 ),queryBody=JSON.stringify(tempjson,null,2);queryBody=JSON.parse(queryBody),delete queryBody.metadata,delete queryBody.uuid,delete queryBody.created,delete queryBody.modified,delete queryBody.type,$scope.queryBody=JSON.stringify(queryBody,null,2),$scope.validateJson=function(){var queryBody=$scope.queryBody;try{queryBody=JSON.parse(queryBody)}catch(e){return $rootScope.$broadcast("alert","error","JSON is not valid"),!1}return queryBody=JSON.stringify(queryBody,null,2),$rootScope.$broadcast("alert","success","JSON is valid"),$scope.queryBody=queryBody,!0},$scope.saveEntity=function(){if(!$scope.validateJson())return!1;var queryBody=$scope.queryBody;queryBody=JSON.parse(queryBody),$rootScope.selectedEntity.set(),$rootScope.selectedEntity.set(queryBody),$rootScope.selectedEntity.set("type",$scope.entityType),$rootScope.selectedEntity.set("uuid",$scope.entityUUID),$rootScope.selectedEntity.save(function(err,data){err?$rootScope.$broadcast("alert","error","error: "+data.error_description
 ):$rootScope.$broadcast("alert","success","entity saved")})}}]),AppServices.Controllers.controller("ShellCtrl",["ug","$scope","$rootScope","$location",function(){}]),AppServices.Directives.directive("balloon",["$window","$timeout",function($window,$timeout){return{restrict:"ECA",scope:"=",template:'<div class="baloon {{direction}}" ng-transclude></div>',replace:!0,transclude:!0,link:function(scope,lElement,attrs){scope.direction=attrs.direction;var runScroll=!0,windowEl=angular.element($window);windowEl.on("scroll",function(){runScroll&&(lElement.addClass("fade-out"),$timeout(function(){lElement.addClass("hide")},1e3),runScroll=!1)})}}}]),AppServices.Directives.directive("bsmodal",["$rootScope",function($rootScope){return{restrict:"ECA",scope:{title:"@title",buttonid:"=buttonid",footertext:"=footertext",closelabel:"=closelabel"},transclude:!0,templateUrl:"dialogs/modal.html",replace:!0,link:function(scope,lElement,attrs,parentCtrl){scope.title=attrs.title,scope.footertext=attrs.foot
 ertext,scope.closelabel=attrs.closelabel,scope.close=attrs.close,scope.extrabutton=attrs.extrabutton,scope.extrabuttonlabel=attrs.extrabuttonlabel,scope.buttonId=attrs.buttonid,scope.closeDelegate=function(attr){scope.$parent[attr](attrs.id,scope)},scope.extraDelegate=function(attr){scope.dialogForm.$valid?(console.log(parentCtrl),scope.$parent[attr](attrs.id)):$rootScope.$broadcast("alert","error","Please check your form input and resubmit.")}}}}]),AppServices.Controllers.controller("AlertCtrl",["$scope","$rootScope","$timeout",function($scope,$rootScope,$timeout){$scope.alertDisplay="none",$scope.alerts=[],$scope.$on("alert",function(event,type,message,permanent){$scope.addAlert(type,message,permanent)}),$scope.$on("clear-alerts",function(){$scope.alerts=[]}),$scope.addAlert=function(type,message,permanent){$scope.alertDisplay="block",$scope.alerts.push({type:type,msg:message}),$scope.applyScope(),permanent||$timeout(function(){$scope.alerts.shift()},5e3)},$scope.closeAlert=functi
 on(index){$scope.alerts.splice(index,1)}}]),AppServices.Directives.directive("alerti",["$rootScope","$timeout",function($rootScope,$timeout){return{restrict:"ECA",scope:{type:"=type",closeable:"@closeable",index:"&index"},template:'<div class="alert" ng-class="type && \'alert-\' + type">    <button ng-show="closeable" type="button" class="close" ng-click="closeAlert(index)">&times;</button>    <i ng-if="type === \'warning\'" class="pictogram pull-left" style="font-size:3em;line-height:0.4">&#128165;</i>    <i ng-if="type === \'info\'" class="pictogram pull-left">&#8505;</i>    <i ng-if="type === \'error\'" class="pictogram pull-left">&#9889;</i>    <i ng-if="type === \'success\'" class="pictogram pull-left">&#128077;</i><div ng-transclude></div></div>',replace:!0,transclude:!0,link:function(scope,lElement,attrs){$timeout(function(){lElement.addClass("fade-out")},4e3),lElement.click(function(){attrs.index&&scope.$parent.closeAlert(attrs.index)}),setTimeout(function(){lElement.addClas
 s("alert-animate")},10)}}}]),AppServices.Directives.directive("appswitcher",["$rootScope",function(){return{restrict:"ECA",scope:"=",templateUrl:"global/appswitcher-template.html",replace:!0,transclude:!0,link:function(){function globalNavDetail(){$("#globalNavDetail > div").removeClass(classNameOpen),$("#globalNavDetailApiPlatform").addClass(classNameOpen)}var classNameOpen="open";$("ul.nav li.dropdownContainingSubmenu").hover(function(){$(this).addClass(classNameOpen)},function(){$(this).removeClass(classNameOpen)}),$("#globalNav > a").mouseover(globalNavDetail),$("#globalNavDetail").mouseover(globalNavDetail),$("#globalNavSubmenuContainer ul li").mouseover(function(){$("#globalNavDetail > div").removeClass(classNameOpen),$("#"+this.getAttribute("data-globalNavDetail")).addClass(classNameOpen)})}}}]),AppServices.Directives.directive("insecureBanner",["$rootScope","ug",function($rootScope,ug){return{restrict:"E",transclude:!0,templateUrl:"global/insecure-banner.html",link:function(
 scope){scope.securityWarning=!1,scope.$on("roles-received",function(evt,roles){scope.securityWarning=!1,roles&&roles._list&&roles._list.forEach(function(roleHolder){var role=roleHolder._data;
-"GUEST"===role.name.toUpperCase()&&roleHolder.getPermissions(function(err){err||roleHolder.permissions&&roleHolder.permissions.forEach(function(permission){permission.path.indexOf("/**")>=0&&(scope.securityWarning=!0,scope.applyScope())})})})});var initialized=!1;scope.$on("app-initialized",function(){!initialized&&ug.getRoles(),initialized=!0}),scope.$on("app-changed",function(){scope.securityWarning=!1,ug.getRoles()})}}}]),AppServices.Constants.constant("configuration",{ITEMS_URL:"global/temp.json"}),AppServices.Controllers.controller("PageCtrl",["ug","utility","$scope","$rootScope","$location","$routeParams","$q","$route","$log",function(ug,utility,$scope,$rootScope,$location,$routeParams,$q,$route){var initScopeVariables=function(){$scope.loadingText="Loading...",$scope.use_sso=!1,$scope.newApp={name:""},$scope.getPerm="",$scope.postPerm="",$scope.putPerm="",$scope.deletePerm="",$scope.usersTypeaheadValues=[],$scope.groupsTypeaheadValues=[],$scope.rolesTypeaheadValues=[],$rootSc
 ope.sdkActive=!1,$rootScope.demoData=!1,$scope.queryStringApplied=!1,$rootScope.autoUpdateTimer=Usergrid.config?Usergrid.config.autoUpdateTimer:61,$rootScope.loaded=$rootScope.activeUI=!1;for(var key in Usergrid.regex)$scope[key]=Usergrid.regex[key];$scope.options=Usergrid.options;var getQuery=function(){for(var m,result={},queryString=location.search.slice(1),re=/([^&=]+)=([^&]*)/g;m=re.exec(queryString);)result[decodeURIComponent(m[1])]=decodeURIComponent(m[2]);return result};$scope.queryString=getQuery()};initScopeVariables(),$rootScope.urls=function(){var BASE_URL="",DATA_URL="",qs=$location.search();switch(!0){case"appservices.apigee.com"===$location.host()&&location.pathname.indexOf("/dit")>=0:BASE_URL="https://accounts.jupiter.apigee.net",DATA_URL="http://apigee-internal-prod.jupiter.apigee.net",$scope.use_sso=!0;break;case"appservices.apigee.com"===$location.host()&&location.pathname.indexOf("/mars")>=0:BASE_URL="https://accounts.mars.apigee.net",DATA_URL="http://apigee-inte
 rnal-prod.mars.apigee.net",$scope.use_sso=!0;break;case"appservices.apigee.com"===$location.host():DATA_URL=Usergrid.overrideUrl;break;case"apigee.com"===$location.host():BASE_URL="https://accounts.apigee.com",DATA_URL="https://api.usergrid.com",$scope.use_sso=!0;break;case"usergrid.dev"===$location.host():DATA_URL="https://api.usergrid.com";break;default:DATA_URL=Usergrid.overrideUrl}return DATA_URL=qs.api_url||DATA_URL,$scope.apiUrl=DATA_URL=DATA_URL.lastIndexOf("/")===DATA_URL.length-1?DATA_URL.substring(0,DATA_URL.length-1):DATA_URL,{DATA_URL:DATA_URL,LOGIN_URL:BASE_URL+"/accounts/sign_in",PROFILE_URL:BASE_URL+"/accounts/my_account",LOGOUT_URL:BASE_URL+"/accounts/sign_out"}},$rootScope.gotoPage=function(path){$location.path(path)};var notRegistration=function(){return"/forgot-password"!==$location.path()&&"/register"!==$location.path()},verifyUser=function(){"/login"!==$location.path().slice(0,"/login".length)&&($rootScope.currentPath=$location.path()),$routeParams.access_token&
 &$routeParams.admin_email&&$routeParams.uuid&&(ug.set("token",$routeParams.access_token),ug.set("email",$routeParams.admin_email),ug.set("uuid",$routeParams.uuid),$location.search("access_token",null),$location.search("admin_email",null),$location.search("uuid",null)),ug.checkAuthentication(!0)};$scope.profile=function(){$scope.use_sso?window.location=$rootScope.urls().PROFILE_URL+"?callback="+encodeURIComponent($location.absUrl()):$location.path("/profile")},$scope.showModal=function(id){$("#"+id).modal("show")},$scope.hideModal=function(id){$("#"+id).modal("hide")},$scope.deleteEntities=function(collection,successBroadcast,errorMessage){collection.resetEntityPointer();for(var entitiesToDelete=[];collection.hasNextEntity();){var entity=collection.getNextEntity(),checked=entity.checked;checked&&entitiesToDelete.push(entity)}for(var count=0,success=!1,i=0;i<entitiesToDelete.length;i++){var entity=entitiesToDelete[i];collection.destroyEntity(entity,function(err){count++,err?($rootScop
 e.$broadcast("alert","error",errorMessage),$rootScope.$broadcast(successBroadcast+"-error",err)):success=!0,count===entitiesToDelete.length&&(success&&$rootScope.$broadcast(successBroadcast),$scope.applyScope())})}},$scope.selectAllEntities=function(list,that,varName,setValue){varName=varName||"master";var val=that[varName];void 0==setValue&&(setValue=!0),setValue&&(that[varName]=val=!val),list.forEach(function(entitiy){entitiy.checked=val})},$scope.createPermission=function(type,entity,path,permissions){"/"!=path.charAt(0)&&(path="/"+path);var ops="",s="";permissions.getPerm&&(ops="get",s=","),permissions.postPerm&&(ops=ops+s+"post",s=","),permissions.putPerm&&(ops=ops+s+"put",s=","),permissions.deletePerm&&(ops=ops+s+"delete",s=",");var permission=ops+":"+path;return permission},$scope.formatDate=function(date){return new Date(date).toUTCString()},$scope.clearCheckbox=function(id){$("#"+id).attr("checked")&&$("#"+id).click()},$scope.removeFirstSlash=function(path){return 0===path.
 indexOf("/")?path.substring(1,path.length):path},$scope.applyScope=function(cb){return cb="function"==typeof cb?cb:function(){},this.$$phase?void cb():this.$apply(cb)},$scope.valueSelected=function(list){return list&&list.some(function(item){return item.checked})},$scope.sendHelp=function(modalId){ug.jsonpRaw("apigeeuihelpemail","",{useremail:$rootScope.userEmail}).then(function(){$rootScope.$broadcast("alert","success","Email sent. Our team will be in touch with you shortly.")},function(){$rootScope.$broadcast("alert","error","Problem Sending Email. Try sending an email to mobile@apigee.com.")}),$scope.hideModal(modalId)},$scope.$on("users-typeahead-received",function(event,users){$scope.usersTypeaheadValues=users,$scope.$$phase||$scope.$apply()}),$scope.$on("groups-typeahead-received",function(event,groups){$scope.groupsTypeaheadValues=groups,$scope.$$phase||$scope.$apply()}),$scope.$on("roles-typeahead-received",function(event,roles){$scope.rolesTypeaheadValues=roles,$scope.$$pha
 se||$scope.$apply()}),$scope.$on("checkAuthentication-success",function(){sessionStorage.setItem("authenticateAttempts",0),$scope.loaded=!0,$rootScope.activeUI=!0,$scope.applyScope(),$scope.queryStringApplied||($scope.queryStringApplied=!0,setTimeout(function(){$scope.queryString.org&&$rootScope.$broadcast("change-org",$scope.queryString.org)},1e3)),$rootScope.$broadcast("app-initialized")}),$scope.$on("checkAuthentication-error",function(args,err,missingData,email){if($scope.loaded=!0,err&&!$scope.use_sso&&notRegistration())ug.logout(),$location.path("/login"),$scope.applyScope();else if(missingData&&notRegistration()){if(!email&&$scope.use_sso)return void(window.location=$rootScope.urls().LOGIN_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]));ug.reAuthenticate(email)}}),$scope.$on("reAuthenticate-success",function(args,err,data,user,organizations,applications){sessionStorage.setItem("authenticateAttempts",0),$rootScope.$broadcast("loginSuccesful",user,organiz
 ations,applications),$rootScope.$emit("loginSuccesful",user,organizations,applications),$rootScope.$broadcast("checkAuthentication-success"),$scope.applyScope(function(){$scope.deferredLogin.resolve(),$location.path("/org-overview")})});var authenticateAttempts=parseInt(sessionStorage.getItem("authenticateAttempts")||0);$scope.$on("reAuthenticate-error",function(){if($scope.use_sso){if(authenticateAttempts++>5)return void $rootScope.$broadcast("alert","error","There is an issue with authentication. Please contact support.");console.error("Failed to login via sso "+authenticateAttempts),sessionStorage.setItem("authenticateAttempts",authenticateAttempts),window.location=$rootScope.urls().LOGIN_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0])}else notRegistration()&&(ug.logout(),$location.path("/login"),$scope.applyScope())}),$scope.$on("loginSuccessful",function(){$rootScope.activeUI=!0}),$scope.$on("app-changed",function(args,oldVal,newVal,preventReload){newVal==
 =oldVal||preventReload||$route.reload()}),$scope.$on("org-changed",function(){ug.getApplications(),$route.reload()}),$scope.$on("app-settings-received",function(){}),$scope.$on("request-times-slow",function(){$rootScope.$broadcast("alert","info","We are experiencing performance issues on our server.  Please click Get Help for support if this continues.")}),$scope.$on("$routeChangeSuccess",function(){verifyUser(),$scope.showDemoBar="/performance"===$location.path().slice(0,"/performance".length),$scope.showDemoBar||($rootScope.demoData=!1)}),$scope.$on("applications-received",function(event,applications){$scope.applications=applications,$scope.hasApplications=Object.keys(applications).length>0}),ug.getAppSettings()}]),AppServices.Directives.directive("pageTitle",["$rootScope","data",function($rootScope,data){return{restrict:"ECA",scope:{},transclude:!0,templateUrl:"global/page-title.html",replace:!0,link:function(scope,lElement,attrs){scope.title=attrs.title,scope.icon=attrs.icon,sco
 pe.showHelp=function(){$("#need-help").modal("show")},scope.sendHelp=function(){data.jsonp_raw("apigeeuihelpemail","",{useremail:$rootScope.userEmail}).then(function(){$rootScope.$broadcast("alert","success","Email sent. Our team will be in touch with you shortly.")},function(){$rootScope.$broadcast("alert","error","Problem Sending Email. Try sending an email to mobile@apigee.com.")}),$("#need-help").modal("hide")}}}}]),AppServices.Services.factory("ug",function(configuration,$rootScope,utility,$q,$http,$resource,$log){function reportError(){}var requestTimes=[],running=!1,currentRequests={},getAccessToken=function(){return sessionStorage.getItem("accessToken")};return{get:function(prop,isObject){return isObject?this.client().getObject(prop):this.client().get(prop)},set:function(prop,value){this.client().set(prop,value)},orgLogin:function(username,password){var self=this;this.client().set("email",username),this.client().set("token",null),this.client().orgLogin(username,password,func
 tion(err,data,user,organizations,applications){err?$rootScope.$broadcast("loginFailed",err,data):self.initializeCurrentUser(function(){$rootScope.$broadcast("loginSuccesful",user,organizations,applications)})})},checkAuthentication:function(force){var ug=this,client=ug.client(),initialize=function(){ug.initializeCurrentUser(function(){$rootScope.userEmail=client.get("email"),$rootScope.organizations=client.getObject("organizations"),$rootScope.applications=client.getObject("applications"),$rootScope.currentOrg=client.get("orgName"),$rootScope.currentApp=client.get("appName");var key,size=0;for(key in $rootScope.applications)$rootScope.applications.hasOwnProperty(key)&&size++;$rootScope.addApplications=10>size,$rootScope.$broadcast("checkAuthentication-success",client.getObject("organizations"),client.getObject("applications"),client.get("orgName"),client.get("appName"),client.get("email"))})},isAuthenticated=function(){var authenticated=null!==client.get("token")&&null!==client.get(
 "organizations");return authenticated&&initialize(),authenticated};if(!isAuthenticated()||force){if(!client.get("token"))return $rootScope.$broadcast("checkAuthentication-error","no token",{},client.get("email"));this.client().reAuthenticateLite(function(err){var missingData=err||!client.get("orgName")||!client.get("appName")||!client.getObject("organizations")||!client.getObject("applications"),email=client.get("email");err||missingData?$rootScope.$broadcast("checkAuthentication-error",err,missingData,email):initialize()})}},reAuthenticate:function(email,eventOveride){var ug=this;this.client().reAuthenticate(email,function(err,data,user,organizations,applications){err||($rootScope.currentUser=user),err||($rootScope.userEmail=user.get("email"),$rootScope.organizations=organizations,$rootScope.applications=applications,$rootScope.currentOrg=ug.get("orgName"),$rootScope.currentApp=ug.get("appName"),$rootScope.currentUser=user._data,$rootScope.currentUser.profileImg=utility.get_gravata
 r($rootScope.currentUser.email)),$rootScope.$broadcast((eventOveride||"reAuthenticate")+"-"+(err?"error":"success"),err,data,user,organizations,applications)})},logoutCallback:function(){$rootScope.$broadcast("userNotAuthenticated")},logout:function(){$rootScope.activeUI=!1,$rootScope.userEmail="user@apigee.com",$rootScope.organizations={noOrg:{name:"No Orgs Found"}},$rootScope.applications={noApp:{name:"No Apps Found"}},$rootScope.currentOrg="No Org Found",$rootScope.currentApp="No App Found",sessionStorage.setItem("accessToken",null),sessionStorage.setItem("userUUID",null),sessionStorage.setItem("userEmail",null),this.client().logout(),this._client=null},client:function(){var options={buildCurl:!0,logging:!0};return Usergrid.options&&Usergrid.options.client&&(options.keys=Usergrid.options.client),this._client=this._client||new Usergrid.Client(options,$rootScope.urls().DATA_URL),this._client},getTopCollections:function(){var options={method:"GET",endpoint:""};this.client().request(
 options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting collections");else{var collections=data.entities[0].metadata.collections;$rootScope.$broadcast("top-collections-received",collections)}})},createCollection:function(collectionName){var collections={};collections[collectionName]={};var metadata={metadata:{collections:collections}},options={method:"PUT",body:metadata,endpoint:""};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error creating collection"):$rootScope.$broadcast("collection-created",collections)})},getApplications:function(){this.client().getApplications(function(err,applications){err?applications&&console.error(applications):$rootScope.$broadcast("applications-received",applications)})},getAdministrators:function(){this.client().getAdministrators(function(err,administrators){err&&$rootScope.$broadcast("alert","error","error getting administrators"),$rootScope.$broadcast("administrators-received",
 administrators)})},createApplication:function(appName){this.client().createApplication(appName,function(err,applications){err?$rootScope.$broadcast("alert","error","error creating application"):($rootScope.$broadcast("applications-created",applications,appName),$rootScope.$broadcast("applications-received",applications))})},createAdministrator:function(adminName){this.client().createAdministrator(adminName,function(err,administrators){err&&$rootScope.$broadcast("alert","error","error creating administrator"),$rootScope.$broadcast("administrators-received",administrators)})},getFeed:function(){var options={method:"GET",endpoint:"management/organizations/"+this.client().get("orgName")+"/feed",mQuery:!0};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting feed");else{var feedData=data.entities,feed=[],i=0;for(i=0;i<feedData.length;i++){var date=new Date(feedData[i].created).toUTCString(),title=feedData[i].title,n=title.indexOf(">
 ");title=title.substring(n+1,title.length),n=title.indexOf(">"),title=title.substring(n+1,title.length),feedData[i].actor&&(title=feedData[i].actor.displayName+" "+title),feed.push({date:date,title:title})}0===i&&feed.push({date:"",title:"No Activities found."}),$rootScope.$broadcast("feed-received",feed)}})},createGroup:function(path,title){var options={path:path,title:title},self=this;this.groupsCollection.addEntity(options,function(err){err?$rootScope.$broadcast("groups-create-error",err):($rootScope.$broadcast("groups-create-success",self.groupsCollection),$rootScope.$broadcast("groups-received",self.groupsCollection))})},createRole:function(name,title){var options={name:name,title:title},self=this;this.rolesCollection.addEntity(options,function(err){err?$rootScope.$broadcast("alert","error","error creating role"):$rootScope.$broadcast("roles-received",self.rolesCollection)})},createUser:function(username,name,email,password){var options={username:username,name:name,email:email,
 password:password},self=this;this.usersCollection.addEntity(options,function(err,data){err?"string"==typeof data?$rootScope.$broadcast("alert","error","error: "+data):$rootScope.$broadcast("alert","error","error creating user. the email address might already exist."):($rootScope.$broadcast("users-create-success",self.usersCollection),$rootScope.$broadcast("users-received",self.usersCollection))})},getCollection:function(type,path,orderBy,query,limit){var options={type:path,qs:{}};query&&(options.qs.ql=query),options.qs.ql=options.qs.ql?options.qs.ql+" order by "+(orderBy||"created desc"):" order by "+(orderBy||"created desc"),limit&&(options.qs.limit=limit),this.client().createCollection(options,function(err,collection,data){err?$rootScope.$broadcast("alert","error","error getting "+collection._type+": "+data.error_description):$rootScope.$broadcast(type+"-received",collection),$rootScope.$$phase||$rootScope.$apply()})},runDataQuery:function(queryPath,searchString,queryLimit){this.g
 etCollection("query",queryPath,null,searchString,queryLimit)},runDataPOSTQuery:function(queryPath,body){var self=this,options={method:"POST",endpoint:queryPath,body:body};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description),$rootScope.$broadcast("error-running-query",data);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},runDataPutQuery:function(queryPath,searchString,queryLimit,body){var self=this,options={method:"PUT",endpoint:queryPath,body:body};searchString&&(options.qs.ql=searchString),queryLimit&&(options.qs.queryLimit=queryLimit),this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},runDataDeleteQuery:function(queryPath,searchString,queryLimit){var self=this,options={m
 ethod:"DELETE",endpoint:queryPath};searchString&&(options.qs.ql=searchString),queryLimit&&(options.qs.queryLimit=queryLimit),this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},getUsers:function(){this.getCollection("users","users","username");var self=this;$rootScope.$on("users-received",function(evt,users){self.usersCollection=users})},getGroups:function(){this.getCollection("groups","groups","title");var self=this;$rootScope.$on("groups-received",function(event,roles){self.groupsCollection=roles})},getRoles:function(){this.getCollection("roles","roles","name");var self=this;$rootScope.$on("roles-received",function(event,roles){self.rolesCollection=roles})},getNotifiers:function(){var query="",limit="100",self=this;this.getCollection("notifiers","notifiers","created",query,limit),$rootScope.$on("notifi
 ers-received",function(event,notifiers){self.notifiersCollection=notifiers})},getNotificationHistory:function(type){var query=null;type&&(query="select * where state = '"+type+"'"),this.getCollection("notifications","notifications","created desc",query);var self=this;$rootScope.$on("notifications-received",function(event,notifications){self.notificationCollection=notifications})},getNotificationReceipts:function(uuid){this.getCollection("receipts","notifications/"+uuid+"/receipts");var self=this;$rootScope.$on("receipts-received",function(event,receipts){self.receiptsCollection=receipts})},getIndexes:function(path){var options={method:"GET",endpoint:path+"/indexes"};this.client().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Problem getting indexes: "+data.error):$rootScope.$broadcast("indexes-received",data.data)})},sendNotification:function(path,body){var options={method:"POST",endpoint:path,body:body};this.client().request(options,function(err,data
 ){err?$rootScope.$broadcast("alert","error","Problem creating notification: "+data.error):$rootScope.$broadcast("send-notification-complete")})},getRolesUsers:function(username){var options={type:"roles/users/"+username,qs:{ql:"order by username"}};this.client().createCollection(options,function(err,users){err?$rootScope.$broadcast("alert","error","error getting users"):$rootScope.$broadcast("users-received",users)})},getTypeAheadData:function(type,searchString,searchBy,orderBy){var search="",qs={limit:100};searchString&&(search="select * where "+searchBy+" = '"+searchString+"'"),orderBy&&(search=search+" order by "+orderBy),search&&(qs.ql=search);var options={method:"GET",endpoint:type,qs:qs};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting "+type);else{var entities=data.entities;$rootScope.$broadcast(type+"-typeahead-received",entities)}})},getUsersTypeAhead:function(searchString){this.getTypeAheadData("users",searchStrin
 g,"username","username")},getGroupsTypeAhead:function(searchString){this.getTypeAheadData("groups",searchString,"path","path")},getRolesTypeAhead:function(searchString){this.getTypeAheadData("roles",searchString,"name","name")},getGroupsForUser:function(user){var options={type:"users/"+user+"/groups"};this.client().createCollection(options,function(err,groups){err?$rootScope.$broadcast("alert","error","error getting groups"):$rootScope.$broadcast("user-groups-received",groups)})},addUserToGroup:function(user,group){var options={type:"users/"+user+"/groups/"+group};this.client().createEntity(options,function(err){err?$rootScope.$broadcast("alert","error","error adding user to group"):$rootScope.$broadcast("user-added-to-group-received")})},addUserToRole:function(user,role){var options={method:"POST",endpoint:"roles/"+role+"/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding user to role"):$rootScope.$broadcast("role-updat
 e-received")})},addGroupToRole:function(group,role){var options={method:"POST",endpoint:"roles/"+role+"/groups/"+group};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding group to role"):$rootScope.$broadcast("role-update-received")})},followUser:function(user){var username=$rootScope.selectedUser.get("uuid"),options={method:"POST",endpoint:"users/"+username+"/following/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error following user"):$rootScope.$broadcast("follow-user-received")})},newPermission:function(permission,type,entity){var options={method:"POST",endpoint:type+"/"+entity+"/permissions",body:{permission:permission}};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding permission"):$rootScope.$broadcast("permission-update-received")})},newUserPermission:function(permission,username){this.newPermission(permission,"users",user
 name)},newGroupPermission:function(permission,path){this.newPermission(permission,"groups",path)},newRolePermission:function(permission,name){this.newPermission(permission,"roles",name)},deletePermission:function(permission,type,entity){var options={method:"DELETE",endpoint:type+"/"+entity+"/permissions",qs:{permission:permission}};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error deleting permission"):$rootScope.$broadcast("permission-update-received")})},deleteUserPermission:function(permission,user){this.deletePermission(permission,"users",user)},deleteGroupPermission:function(permission,group){this.deletePermission(permission,"groups",group)},deleteRolePermission:function(permission,rolename){this.deletePermission(permission,"roles",rolename)},removeUserFromRole:function(user,role){var options={method:"DELETE",endpoint:"roles/"+role+"/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","er
 ror removing user from role"):$rootScope.$broadcast("role-update-received")})},removeUserFromGroup:function(group,role){var options={method:"DELETE",endpoint:"roles/"+role+"/groups/"+group};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error removing role from the group"):$rootScope.$broadcast("role-update-received")})},createAndroidNotifier:function(name,APIkey){var options={method:"POST",endpoint:"notifiers",body:{apiKey:APIkey,name:name,provider:"google"}};this.client().request(options,function(err,data){err?(console.error(data),$rootScope.$broadcast("alert","error","error creating notifier ")):($rootScope.$broadcast("alert","success","New notifier created successfully."),$rootScope.$broadcast("notifier-update"))})},createAppleNotifier:function(file,name,environment,certificatePassword){var provider="apple",formData=new FormData;formData.append("p12Certificate",file),formData.append("name",name),formData.append("provider",provider),formDat
 a.append("environment",environment),formData.append("certificatePassword",certificatePassword||"");var options={method:"POST",endpoint:"notifiers",formData:formData};this.client().request(options,function(err,data){err?(console.error(data),$rootScope.$broadcast("alert","error","error creating notifier.")):($rootScope.$broadcast("alert","success","New notifier created successfully."),$rootScope.$broadcast("notifier-update"))})},deleteNotifier:function(name){var options={method:"DELETE",endpoint:"notifiers/"+name};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error deleting notifier"):$rootScope.$broadcast("notifier-update")})},initializeCurrentUser:function(callback){if(callback=callback||function(){},$rootScope.currentUser&&!$rootScope.currentUser.reset)return callback($rootScope.currentUser),$rootScope.$broadcast("current-user-initialized","");var options={method:"GET",endpoint:"management/users/"+this.client().get("email"),mQuery:!0};this.c
 lient().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Error getting user info"):($rootScope.currentUser=data.data,$rootScope.currentUser.profileImg=utility.get_gravatar($rootScope.currentUser.email),$rootScope.userEmail=$rootScope.currentUser.email,callback($rootScope.currentUser),$rootScope.$broadcast("current-user-initialized",$rootScope.currentUser))})},updateUser:function(user){var body=$rootScope.currentUser;body.username=user.username,body.name=user.name,body.email=user.email;var options={method:"PUT",endpoint:"management/users/"+user.uuid+"/",mQuery:!0,body:body},self=this;this.client().request(options,function(err,data){return self.client().set("email",user.email),self.client().set("username",user.username),err?$rootScope.$broadcast("user-update-error",data):($rootScope.currentUser.reset=!0,void self.initializeCurrentUser(function(){$rootScope.$broadcast("user-update-success",$rootScope.currentUser)}))})},resetUserPassword:function(user){var p
 wdata={};pwdata.oldpassword=user.oldPassword,pwdata.newpassword=user.newPassword,pwdata.username=user.username;var options={method:"PUT",endpoint:"users/"+pwdata.uuid+"/",body:pwdata};this.client().request(options,function(err){return err?$rootScope.$broadcast("alert","error","Error resetting password"):($rootScope.currentUser.oldPassword="",$rootScope.currentUser.newPassword="",void $rootScope.$broadcast("user-reset-password-success",$rootScope.currentUser))})},getOrgCredentials:function(){var options={method:"GET",endpoint:"management/organizations/"+this.client().get("orgName")+"/credentials",mQuery:!0};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error getting credentials"):$rootScope.$broadcast("org-creds-updated",data.credentials)})},regenerateOrgCredentials:function(){var options={method:"POST",endpoint:"management/organizations/"+this.client().get("orgName")+"/credentials",mQuery:!0};this.client().request(optio
 ns,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error regenerating credentials"):($rootScope.$broadcast("alert","success","Regeneration of credentials complete."),$rootScope.$broadcast("org-creds-updated",data.credentials))})},getAppCredentials:function(){var options={method:"GET",endpoint:"credentials"};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error getting credentials"):$rootScope.$broadcast("app-creds-updated",data.credentials)})},regenerateAppCredentials:function(){var options={method:"POST",endpoint:"credentials"};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error regenerating credentials"):($rootScope.$broadcast("alert","success","Regeneration of credentials complete."),$rootScope.$broadcast("app-creds-updated",data.credentials))})},signUpUser:function(orgName,userName,name,email,password){var formData={organiz
 ation:orgName,username:userName,name:name,email:email,password:password},options={method:"POST",endpoint:"management/organizations",body:formData,mQuery:!0},client=this.client();client.request(options,function(err,data){err?$rootScope.$broadcast("register-error",data):$rootScope.$broadcast("register-success",data)})},resendActivationLink:function(id){var options={method:"GET",endpoint:"management/users/"+id+"/reactivate",mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("resend-activate-error",data):$rootScope.$broadcast("resend-activate-success",data)})},getAppSettings:function(){$rootScope.$broadcast("app-settings-received",{})},getActivities:function(){this.client().request({method:"GET",endpoint:"activities",qs:{limit:200}},function(err,data){if(err)return $rootScope.$broadcast("app-activities-error",data);var entities=data.entities;entities.forEach(function(entity){entity.actor.picture?(entity.actor.picture=entity.actor.picture.replace(/^http
 :\/\/www.gravatar/i,"https://secure.gravatar"),entity.actor.picture=~entity.actor.picture.indexOf("http")?entity.actor.picture:"https://apigee.com/usergrid/img/user_profile.png"):entity.actor.picture=window.location.protocol+"//"+window.location.host+window.location.pathname+"img/user_profile.png"}),$rootScope.$broadcast("app-activities-received",data.entities)})},getEntityActivities:function(entity){var endpoint=entity.get("type")+"/"+entity.get("uuid")+"/activities",options={method:"GET",endpoint:endpoint,qs:{limit:200}};this.client().request(options,function(err,data){err&&$rootScope.$broadcast(entity.get("type")+"-activities-error",data),data.entities.forEach(function(entityInstance){entityInstance.createdDate=new Date(entityInstance.created).toUTCString()}),$rootScope.$broadcast(entity.get("type")+"-activities-received",data.entities)})},addUserActivity:function(user,content){var options={actor:{displayName:user.get("username"),uuid:user.get("uuid"),username:user.get("username"
 )},verb:"post",content:content};this.client().createUserActivity(user.get("username"),options,function(err,activity){err?$rootScope.$broadcast("user-activity-add-error",err):$rootScope.$broadcast("user-activity-add-success",activity)})},runShellQuery:function(method,path,payload){var options={verb:method,endpoint:path};payload&&(options.body=payload),this.client().request(options,function(err,data){err?$rootScope.$broadcast("shell-error",data):$rootScope.$broadcast("shell-success",data)})},addOrganization:function(user,orgName){var options={method:"POST",endpoint:"management/users/"+user.uuid+"/organizations",body:{organization:orgName},mQuery:!0},client=this.client();client.request(options,function(err,data){err?$rootScope.$broadcast("user-add-org-error",data):$rootScope.$broadcast("user-add-org-success",$rootScope.organizations)})},leaveOrganization:function(user,org){var options={method:"DELETE",endpoint:"management/users/"+user.uuid+"/organizations/"+org.uuid,mQuery:!0};this.cli
 ent().request(options,function(err,data){err?$rootScope.$broadcast("user-leave-org-error",data):(delete $rootScope.organizations[org.name],$rootScope.$broadcast("user-leave-org-success",$rootScope.organizations))
-})},httpGet:function(id,url){var deferred;return deferred=$q.defer(),$http.get(url||configuration.ITEMS_URL).success(function(data){var result;id?angular.forEach(data,function(obj){obj.id===id&&(result=obj)}):result=data,deferred.resolve(result)}).error(function(data,status,headers,config){$log.error(data,status,headers,config),reportError(data,config),deferred.reject(data)}),deferred.promise},jsonp:function(objectType,criteriaId,params,successCallback){params||(params={}),params.demoApp=$rootScope.demoData,params.access_token=getAccessToken(),params.callback="JSON_CALLBACK";var uri=$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/apm/"+objectType+"/"+criteriaId;return this.jsonpRaw(objectType,criteriaId,params,uri,successCallback)},jsonpSimple:function(objectType,appId,params){var uri=$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/apm/"+objectType+"/"+appId;return this.jsonpRaw(objectType,appId,params,uri)},calculate
 AverageRequestTimes:function(){if(!running){var self=this;running=!0,setTimeout(function(){running=!1;var length=requestTimes.length<10?requestTimes.length:10,sum=requestTimes.slice(0,length).reduce(function(a,b){return a+b}),avg=sum/length;self.averageRequestTimes=avg/1e3,self.averageRequestTimes>5&&$rootScope.$broadcast("request-times-slow",self.averageRequestTimes)},3e3)}},jsonpRaw:function(objectType,appId,params,uri,successCallback){"function"!=typeof successCallback&&(successCallback=null),uri=uri||$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/"+objectType,params||(params={});var start=(new Date).getTime(),self=this;params.access_token=getAccessToken(),params.callback="JSON_CALLBACK";var deferred=$q.defer(),diff=function(){currentRequests[uri]--,requestTimes.splice(0,0,(new Date).getTime()-start),self.calculateAverageRequestTimes()};successCallback&&$rootScope.$broadcast("ajax_loading",objectType);var reqCount=currentRequests[uri]||0;return s
 elf.averageRequestTimes>5&&reqCount>1?(setTimeout(function(){deferred.reject(new Error("query in progress"))},50),deferred):(currentRequests[uri]=(currentRequests[uri]||0)+1,$http.jsonp(uri,{params:params}).success(function(data,status,headers,config){diff(),successCallback&&(successCallback(data,status,headers,config),$rootScope.$broadcast("ajax_finished",objectType)),deferred.resolve(data)}).error(function(data,status,headers,config){diff(),$log.error("ERROR: Could not get jsonp data. "+uri),reportError(data,config),deferred.reject(data)}),deferred.promise)},resource:function(params,isArray){return $resource($rootScope.urls().DATA_URL+"/:orgname/:appname/:username/:endpoint",{},{get:{method:"JSONP",isArray:isArray,params:params},login:{method:"GET",url:$rootScope.urls().DATA_URL+"/management/token",isArray:!1,params:params},save:{url:$rootScope.urls().DATA_URL+"/"+params.orgname+"/"+params.appname,method:"PUT",isArray:!1,params:params}})},httpPost:function(url,callback,payload,hea
 ders){var accessToken=getAccessToken();payload?payload.access_token=accessToken:payload={access_token:accessToken},headers||(headers={Bearer:accessToken}),$http({method:"POST",url:url,data:payload,headers:headers}).success(function(data){callback(data)}).error(function(data,status,headers,config){reportError(data,config),callback(data)})}}}),AppServices.Directives.directive("ngFocus",["$parse",function($parse){return function(scope,element,attr){var fn=$parse(attr.ngFocus);element.bind("focus",function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}]),AppServices.Directives.directive("ngBlur",["$parse",function($parse){return function(scope,element,attr){var fn=$parse(attr.ngBlur);element.bind("blur",function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}]),AppServices.Services.factory("utility",function(){return{keys:function(o){var a=[];for(var propertyName in o)a.push(propertyName);return a},get_gravatar:function(email,size){try{var size=size||50;retu
 rn email.length?"https://secure.gravatar.com/avatar/"+MD5(email)+"?s="+size:"https://apigee.com/usergrid/img/user_profile.png"}catch(e){return"https://apigee.com/usergrid/img/user_profile.png"}},get_qs_params:function(){var queryParams={};if(window.location.search)for(var params=window.location.search.slice(1).split("&"),i=0;i<params.length;i++){var tmp=params[i].split("=");queryParams[tmp[0]]=unescape(tmp[1])}return queryParams},safeApply:function(fn){var phase=this.$root.$$phase;"$apply"==phase||"$digest"==phase?fn&&"function"==typeof fn&&fn():this.$apply(fn)}}}),AppServices.Directives.directive("ugValidate",["$rootScope",function(){return{scope:!0,restrict:"A",require:"ng-model",replace:!0,link:function(scope,element,attrs,ctrl){var validate=function(){var id=element.attr("id"),validator=id+"-validator",title=element.attr("title");if(title=title&&title.length?title:"Please enter data",$("#"+validator).remove(),ctrl.$valid)element.removeClass("has-error"),$("#"+validator).remove()
 ;else{var validatorElem='<div id="'+validator+'"><span  class="validator-error-message">'+title+"</span></div>";$("#"+id).after(validatorElem),element.addClass("has-error")}},firing=!1;element.bind("blur",function(){validate(scope,element,attrs,ctrl)}).bind("input",function(){firing||(firing=!0,setTimeout(function(){validate(scope,element,attrs,ctrl),firing=!1},500))})}}}]),AppServices.Controllers.controller("GroupsActivitiesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.activitiesSelected="active",$rootScope.selectedGroup?($rootScope.selectedGroup.activities=[],void $rootScope.selectedGroup.getActivities(function(err){err||$rootScope.$$phase||$rootScope.$apply()})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope,$location,$route){$scope.groupsCollection={},$rootScope.selectedGroup={},$scope.previous_display="none",$sc
 ope.next_display="none",$scope.hasGroups=!1,$scope.newGroup={path:"",title:""},ug.getGroups(),$scope.currentGroupsPage={},$scope.selectGroupPage=function(route){$scope.currentGroupsPage.template=$route.routes[route].templateUrl,$scope.currentGroupsPage.route=route},$scope.newGroupDialog=function(modalId){$scope.newGroup.path&&$scope.newGroup.title?(ug.createGroup($scope.removeFirstSlash($scope.newGroup.path),$scope.newGroup.title),$scope.hideModal(modalId),$scope.newGroup={path:"",title:""}):$rootScope.$broadcast("alert","error","Missing required information.")},$scope.deleteGroupsDialog=function(modalId){$scope.deleteEntities($scope.groupsCollection,"group-deleted","error deleting group"),$scope.hideModal(modalId),$scope.newGroup={path:"",title:""}},$scope.$on("group-deleted",function(){$rootScope.$broadcast("alert","success","Group deleted successfully.")}),$scope.$on("group-deleted-error",function(){ug.getGroups()}),$scope.$on("groups-create-success",function(){$rootScope.$broadc
 ast("alert","success","Group created successfully.")}),$scope.$on("groups-create-error",function(){$rootScope.$broadcast("alert","error","Error creating group. Make sure you don't have spaces in the path.")}),$scope.$on("groups-received",function(event,groups){$scope.groupBoxesSelected=!1,$scope.groupsCollection=groups,$scope.newGroup.path="",$scope.newGroup.title="",!(groups._list.length>0)||$rootScope.selectedGroup._data&&groups._list.some(function(group){return $rootScope.selectedGroup._data.uuid===group._data.uuid})||$scope.selectGroup(groups._list[0]._data.uuid),$scope.hasGroups=groups._list.length>0,$scope.received=!0,$scope.checkNextPrev(),$scope.applyScope()}),$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.groupsCollection.hasPreviousPage()&&($scope.previous_display="block"),$scope.groupsCollection.hasNextPage()&&($scope.next_display="block")},$scope.selectGroup=function
 (uuid){$rootScope.selectedGroup=$scope.groupsCollection.getEntityByUUID(uuid),$scope.currentGroupsPage.template="groups/groups-details.html",$scope.currentGroupsPage.route="/groups/details",$rootScope.$broadcast("group-selection-changed",$rootScope.selectedGroup)},$scope.getPrevious=function(){$scope.groupsCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.groupsCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.$on("group-deleted",function(){$route.reload(),$scope.master=""})}]),AppServices.Controllers.controller("GroupsDetailsCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){var selectedGroup=$rootScope.selectedGroup.clone();return $scope.detailsSelected="active",$scope.json=se
 lectedGroup._json||selectedGroup._data.stringifyJSON(),$scope.group=selectedGroup._data,$scope.group.path=0!=$scope.group.path.indexOf("/")?"/"+$scope.group.path:$scope.group.path,$scope.group.title=$scope.group.title,$rootScope.selectedGroup?($scope.$on("group-selection-changed",function(evt,selectedGroup){$scope.group.path=0!=selectedGroup._data.path.indexOf("/")?"/"+selectedGroup._data.path:selectedGroup._data.path,$scope.group.title=selectedGroup._data.title,$scope.detailsSelected="active",$scope.json=selectedGroup._json||selectedGroup._data.stringifyJSON()}),void($rootScope.saveSelectedGroup=function(){$rootScope.selectedGroup._data.title=$scope.group.title,$rootScope.selectedGroup._data.path=$scope.removeFirstSlash($scope.group.path),$rootScope.selectedGroup.save(function(err){err?$rootScope.$broadcast("alert","error","error saving group"):$rootScope.$broadcast("alert","success","group saved")})})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsMem
 bersCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.membersSelected="active",$scope.previous_display="none",$scope.next_display="none",$scope.user="",$scope.master="",$scope.hasMembers=!1,ug.getUsersTypeAhead(),$scope.usersTypeaheadValues=[],$scope.$on("users-typeahead-received",function(event,users){$scope.usersTypeaheadValues=users,$scope.applyScope()}),$scope.addGroupToUserDialog=function(modalId){if($scope.user){var path=$rootScope.selectedGroup.get("path");ug.addUserToGroup($scope.user.uuid,path),$scope.user="",$scope.hideModal(modalId)}else $rootScope.$broadcast("alert","error","Please select a user.")},$scope.removeUsersFromGroupDialog=function(modalId){$scope.deleteEntities($scope.groupsCollection.users,"group-update-received","Error removing user from group"),$scope.hideModal(modalId)},$scope.get=function(){if($rootScope.selectedGroup.get){var options={type:"groups/"+$rootScope.selectedGroup.get("path")+"/users"};$scope.g
 roupsCollection.addCollection("users",options,function(err){$scope.groupMembersSelected=!1,err?$rootScope.$broadcast("alert","error","error getting users for group"):($scope.hasMembers=$scope.groupsCollection.users._list.length>0,$scope.checkNextPrev(),$scope.applyScope())})}},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.groupsCollection.users.hasPreviousPage()&&($scope.previous_display="block"),$scope.groupsCollection.users.hasNextPage()&&($scope.next_display="block")},$rootScope.selectedGroup?($scope.get(),$scope.getPrevious=function(){$scope.groupsCollection.users.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of users"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.getNext=function(){$scope.groupsCollection.users.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error gett
 ing next page of users"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.$on("group-update-received",function(){$scope.get()}),void $scope.$on("user-added-to-group-received",function(){$scope.get()})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsRolesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.rolesSelected="active",$scope.roles_previous_display="none",$scope.roles_next_display="none",$scope.name="",$scope.master="",$scope.hasRoles=!1,$scope.hasPermissions=!1,$scope.permissions={},$scope.addGroupToRoleDialog=function(modalId){if($scope.name){var path=$rootScope.selectedGroup.get("path");ug.addGroupToRole(path,$scope.name),$scope.hideModal(modalId),$scope.name=""}else $rootScope.$broadcast("alert","error","You must specify a role name.")},$scope.leaveRoleDialog=function(modalId){for(var path=$rootScope.selectedGroup.get("path"),roles=$scope.groupsCollection.roles._list,i=0
 ;i<roles.length;i++)roles[i].checked&&ug.removeUserFromGroup(path,roles[i]._data.name);$scope.hideModal(modalId)},$scope.addGroupPermissionDialog=function(modalId){if($scope.permissions.path){var permission=$scope.createPermission(null,null,$scope.removeFirstSlash($scope.permissions.path),$scope.permissions),path=$rootScope.selectedGroup.get("path");ug.newGroupPermission(permission,path),$scope.hideModal(modalId),$scope.permissions&&($scope.permissions={})}else $rootScope.$broadcast("alert","error","You must specify a name for the permission.")},$scope.deleteGroupPermissionDialog=function(modalId){for(var path=$rootScope.selectedGroup.get("path"),permissions=$rootScope.selectedGroup.permissions,i=0;i<permissions.length;i++)permissions[i].checked&&ug.deleteGroupPermission(permissions[i].perm,path);$scope.hideModal(modalId)},$scope.resetNextPrev=function(){$scope.roles_previous_display="none",$scope.roles_next_display="none",$scope.permissions_previous_display="none",$scope.permission
 s_next_display="none"},$scope.resetNextPrev(),$scope.checkNextPrevRoles=function(){$scope.resetNextPrev(),$scope.groupsCollection.roles.hasPreviousPage()&&($scope.roles_previous_display="block"),$scope.groupsCollection.roles.hasNextPage()&&($scope.roles_next_display="block")},$scope.checkNextPrevPermissions=function(){$scope.groupsCollection.permissions.hasPreviousPage()&&($scope.permissions_previous_display="block"),$scope.groupsCollection.permissions.hasNextPage()&&($scope.permissions_next_display="block")},$scope.getRoles=function(){var path=$rootScope.selectedGroup.get("path"),options={type:"groups/"+path+"/roles"};$scope.groupsCollection.addCollection("roles",options,function(err){$scope.groupRoleSelected=!1,err?$rootScope.$broadcast("alert","error","error getting roles for group"):($scope.hasRoles=$scope.groupsCollection.roles._list.length>0,$scope.checkNextPrevRoles(),$scope.applyScope())})},$scope.getPermissions=function(){$rootScope.selectedGroup.permissions=[],$rootScope.s
 electedGroup.getPermissions(function(err){$scope.groupPermissionsSelected=!1,$scope.hasPermissions=$scope.selectedGroup.permissions.length,err||$scope.applyScope()})},$scope.getPreviousRoles=function(){$scope.groupsCollection.roles.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of roles"),$scope.checkNextPrevRoles(),$scope.applyScope()})},$scope.getNextRoles=function(){$scope.groupsCollection.roles.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of roles"),$scope.checkNextPrevRoles(),$scope.applyScope()})},$scope.getPreviousPermissions=function(){$scope.groupsCollection.permissions.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of permissions"),$scope.checkNextPrevPermissions(),$scope.applyScope()})},$scope.getNextPermissions=function(){$scope.groupsCollection.permissions.getNextPage(function(err){err&&$rootScope.$broadcast("aler
 t","error","error getting next page of permissions"),$scope.checkNextPrevPermissions(),$scope.applyScope()})},$scope.$on("role-update-received",function(){$scope.getRoles()}),$scope.$on("permission-update-received",function(){$scope.getPermissions()}),$scope.$on("groups-received",function(evt,data){$scope.groupsCollection=data,$scope.getRoles(),$scope.getPermissions()}),$rootScope.selectedGroup?(ug.getRolesTypeAhead(),void ug.getGroups()):void $location.path("/groups")}]),AppServices.Controllers.controller("ForgotPasswordCtrl",["ug","$scope","$rootScope","$location","utility",function(ug,$scope,$rootScope,$location){$rootScope.activeUI&&$location.path("/"),$scope.forgotPWiframeURL=$scope.apiUrl+"/management/users/resetpw"}]),AppServices.Controllers.controller("LoginCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){$scope.loading=!1,$scope.login={},$scope.activation={},$rootScope.gotoForgotPasswordPage=functio
 n(){$location.path("/forgot-password")},$rootScope.gotoSignUp=function(){$location.path("/register")},$scope.login=function(){var username=$scope.login.username,password=$scope.login.password;$scope.loginMessage="",$scope.loading=!0,ug.orgLogin(username,password)},$scope.$on("loginFailed",function(){$scope.loading=!1,$scope.loginMessage="Error: the username / password combination was not valid",$scope.applyScope()}),$scope.logout=function(){ug.logout(),$scope.use_sso?window.location=$rootScope.urls().LOGOUT_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]):($location.path("/login"),$scope.applyScope())},$rootScope.$on("userNotAuthenticated",function(){"/forgot-password"!==$location.path()&&($location.path("/login"),$scope.logout()),$scope.applyScope()}),$scope.$on("loginSuccesful",function(){$scope.loading=!1,$scope.login={},$location.path("/login"===$rootScope.currentPath||"/login/loading"===$rootScope.currentPath||"undefined"==typeof $rootScope.currentPath?"/or
 g-overview":$rootScope.currentPath),$scope.applyScope()}),$scope.resendActivationLink=function(modalId){var id=$scope.activation.id;ug.resendActivationLink(id),$scope.activation={},$scope.hideModal(modalId)},$scope.$on("resend-activate-success",function(){$scope.activationId="",$scope.$apply(),$rootScope.$broadcast("alert","success","Activation link sent successfully.")}),$scope.$on("resend-activate-error",function(){$rootScope.$broadcast("alert","error","Activation link failed to send.")})}]),AppServices.Controllers.controller("LogoutCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){ug.logout(),$scope.use_sso?window.location=$rootScope.urls().LOGOUT_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]):($location.path("/login"),$scope.applyScope())}]),AppServices.Controllers.controller("RegisterCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScop
 e,$routeParams,$location){$rootScope.activeUI&&$location.path("/");var init=function(){$scope.registeredUser={}};init(),$scope.cancel=function(){$location.path("/")},$scope.register=function(){var user=$scope.registeredUser.clone();user.password===user.confirmPassword?ug.signUpUser(user.orgName,user.userName,user.name,user.email,user.password):$rootScope.$broadcast("alert","error","Passwords do not match."+name)},$scope.$on("register-error",function(event,data){$scope.signUpSuccess=!1,$rootScope.$broadcast("alert","error","Error registering: "+(data&&data.error_description?data.error_description:name))}),$scope.$on("register-success",function(){$scope.registeredUser={},$scope.signUpSuccess=!0,init(),$scope.$apply()})}]),AppServices.Directives.directive("menu",["$location","$rootScope","$log",function($location,$rootScope,$log){return{link:function(scope,lElement,attrs){function setActiveElement(ele,locationPath,$rootScope,isParentClick){ele.removeClass("active");var menuItem,parentM
 enuItem,newActiveElement=ele.parent().find('a[href*="#!'+locationPath+'"]');if(0===newActiveElement.length)parentMenuItem=ele;else{menuItem=newActiveElement.parent(),menuItem.hasClass("option")?parentMenuItem=menuItem[0]:1===menuItem.size()?(parentMenuItem=newActiveElement.parent().parent().parent(),parentMenuItem.addClass("active")):(parentMenuItem=menuItem[0],menuItem=menuItem[1]);try{var menuItemCompare=parentMenuItem[0]||parentMenuItem;ele[0]!==menuItemCompare&&isParentClick&&ele.find("ul")[0]&&(ele.find("ul")[0].style.height=0);var subMenuSizer=angular.element(parentMenuItem).find(".nav-list")[0];if(subMenuSizer){var heightChecker,clientHeight=subMenuSizer.getAttribute("data-height"),heightCounter=1;clientHeight||heightChecker?(menuItem.addClass("active"),subMenuSizer.style.height=clientHeight+"px"):heightChecker=setInterval(function(){var tempHeight=subMenuSizer.getAttribute("data-height")||subMenuSizer.clientHeight;heightCounter=subMenuSizer.clientHeight,0===heightCounter&&(h
 eightCounter=1),"string"==typeof tempHeight&&(tempHeight=parseInt(tempHeight,10)),tempHeight>0&&heightCounter===tempHeight&&(subMenuSizer.setAttribute("data-height",tempHeight),menuItem.addClass("active"),subMenuSizer.style.height=tempHeight+"px",clearInterval(heightChecker)),heightCounter=tempHeight},20),$rootScope.menuExecute=!0}else menuItem.addClass("active")}catch(e){$log.error("Problem calculating size of menu",e)}}return{menuitem:menuItem,parentMenuItem:parentMenuItem}}function setupMenuState(){if(menuContext=attrs.menu,parentMenuItems=lElement.find("li.option"),0!==lElement.find("li.option.active").length&&($rootScope[menuContext+"Parent"]=lElement.find("li.option.active")),activeParentElement=$rootScope[menuContext+"Parent"]||null,activeParentElement&&(activeParentElement=angular.element(activeParentElement)),menuItems=lElement.find("li.option li"),locationPath=$location.path(),activeParentElement&&(activeMenuElement=angular.element(activeParentElement),activeMenuElement=ac
 tiveMenuElement.find("li.active"),activeMenuElement.removeClass("active"),activeParentElement.find("a")[0])){subMenuContext=activeParentElement.find("a")[0].href.split("#!")[1];var tempMenuContext=subMenuContext.split("/");subMenuContext="/"+tempMenuContext[1],tempMenuContext.length>2&&(subMenuContext+="/"+tempMenuContext[2])}var activeElements;""!==locationPath&&-1===locationPath.indexOf(subMenuContext)?(activeElements=setActiveElement(activeParentElement,locationPath,scope),$rootScope[menuContext+"Parent"]=activeElements.parentMenuItem,$rootScope[menuContext+"Menu"]=activeElements.menuitem):setActiveElement(activeParentElement,subMenuContext,scope)}var menuContext,parentMenuItems,activeParentElement,menuItems,activeMenuElement,locationPath,subMenuContext,bound=!1;scope.$on("$routeChangeSuccess",function(){setupMenuState(),bound||(bound=!0,parentMenuItems.bind("click",function(cevent){var previousParentSelection=angular.element($rootScope[menuContext+"Parent"]),targetPath=angular.e
 lement(cevent.currentTarget).find("> a")[0].href.split("#!")[1];previousParentSelection.find(".nav > li").removeClass("active");var activeElements=setActiveElement(previousParentSelection,targetPath,scope,!0);$rootScope[menuContext+"Parent"]=activeElements.parentMenuItem,$rootScope[menuContext+"Menu"]=activeElements.menuitem,scope.$broadcast("menu-selection")}),menuItems.bind("click",function(cevent){var previousMenuSelection=$rootScope[menuContext+"Menu"],targetElement=cevent.currentTarget;previousMenuSelection!==targetElement&&(previousMenuSelection?angular.element(previousMenuSelection).removeClass("active"):activeMenuElement.removeClass("active"),scope.$apply(function(){angular.element($rootScope[menuContext]).addClass("active")}),$rootScope[menuContext+"Menu"]=targetElement,angular.element($rootScope[menuContext+"Parent"]).find("a")[0].setAttribute("href",angular.element(cevent.currentTarget).find("a")[0].href))}))})}}}]),AppServices.Directives.directive("timeFilter",["$locatio
 n","$routeParams","$rootScope",function($location,$routeParams,$rootScope){return{restrict:"A",transclude:!0,template:'<li ng-repeat="time in timeFilters" class="filterItem"><a ng-click="changeTimeFilter(time)">{{time.label}}</a></li>',link:function(scope,lElement,attrs){var menuContext=attrs.filter;scope.changeTimeFilter=function(newTime){$rootScope.selectedtimefilter=newTime,$routeParams.timeFilter=newTime.value},lElement.bind("click",function(cevent){menuBindClick(scope,lElement,cevent,menuContext)})}}}]),AppServices.Directives.directive("chartFilter",["$location","$routeParams","$rootScope",function($location,$routeParams,$rootScope){return{restrict:"ACE",scope:"=",template:'<li ng-repeat="chart in chartCriteriaOptions" class="filterItem"><a ng-click="changeChart(chart)">{{chart.chartName}}</a></li>',link:function(scope,lElement,attrs){var menuContext=attrs.filter;scope.changeChart=function(newChart){$rootScope.selectedChartCriteria=newCh

<TRUNCATED>

[19/50] [abbrv] git commit: Merge pull request #66 from shawnfeldman/master

Posted by sn...@apache.org.
Merge pull request #66 from shawnfeldman/master

portal: fix module errors

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

Branch: refs/pull/60/merge
Commit: 7f50caeb666b6a78c3365fc6ed9ce0eba12f11f3
Parents: 2474350 f015836
Author: Dave Johnson <da...@rollerweblogger.org>
Authored: Mon Mar 3 11:28:20 2014 -0500
Committer: Dave Johnson <da...@rollerweblogger.org>
Committed: Mon Mar 3 11:28:20 2014 -0500

----------------------------------------------------------------------
 portal/config.js                    | 12 ------------
 portal/index-debug.html             |  4 ++--
 portal/index.html                   |  4 ++--
 portal/js/app.js                    |  4 +---
 portal/js/libs/usergrid-libs.min.js |  2 +-
 portal/js/usergrid-dev.min.js       |  9 ++++-----
 portal/js/usergrid.min.js           |  8 ++++----
 7 files changed, 14 insertions(+), 29 deletions(-)
----------------------------------------------------------------------



[11/50] [abbrv] fix module errors

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/js/usergrid.min.js
----------------------------------------------------------------------
diff --git a/portal/js/usergrid.min.js b/portal/js/usergrid.min.js
index 7c3a20e..f94947b 100644
--- a/portal/js/usergrid.min.js
+++ b/portal/js/usergrid.min.js
@@ -1,6 +1,6 @@
-/*! apigee-usergrid@2.0.34 2014-02-20 */
-!function(exports,global){function renderChart(chartsDefaults,chartdata){var newSettings={};$.extend(!0,newSettings,chartsDefaults,chartdata);new Highcharts.Chart(newSettings)}function menuBindClick(scope,lElement,cevent,menuContext){var currentSelection=angular.element(cevent.srcElement).parent(),previousSelection=scope[menuContext];previousSelection!==currentSelection&&(previousSelection&&angular.element(previousSelection).removeClass("active"),scope[menuContext]=currentSelection,scope.$apply(function(){currentSelection.addClass("active")}))}global["true"]=exports;var polyfills=function(window,Object){window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(callback,1e3/60)}}(),Object.defineProperty(Object.prototype,"clone",{enumerable:!1,writable:!0,value:function(){var i,newObj=this instanceof Arra
 y?[]:{};for(i in this)"clone"!==i&&(newObj[i]=this[i]&&"object"==typeof this[i]?this[i].clone():this[i]);return newObj}}),Object.defineProperty(Object.prototype,"stringifyJSON",{enumerable:!1,writable:!0,value:function(){return JSON.stringify(this,null,"	")}})};polyfills(window,Object);var AppServices=AppServices||{};global.AppServices=global.AppServices||AppServices,AppServices.Constants=angular.module("appservices.constants",[]),AppServices.Services=angular.module("appservices.services",[]),AppServices.Controllers=angular.module("appservices.controllers",[]),AppServices.Filters=angular.module("appservices.filters",[]),AppServices.Directives=angular.module("appservices.directives",[]),AppServices.Push=angular.module("appservices.push",[]),angular.module("appservices",["ngRoute","ngResource","ngSanitize","ui.bootstrap","appservices.filters","appservices.services","appservices.directives","appservices.constants","appservices.controllers","appservices.performance","appservices.push"])
 .config(["$routeProvider","$locationProvider","$sceDelegateProvider",function($routeProvider,$locationProvider,$sceDelegateProvider){$routeProvider.when("/org-overview",{templateUrl:"org-overview/org-overview.html",controller:"OrgOverviewCtrl"}).when("/login",{templateUrl:"login/login.html",controller:"LoginCtrl"}).when("/login/loading",{templateUrl:"login/loading.html",controller:"LoginCtrl"}).when("/app-overview/summary",{templateUrl:"app-overview/app-overview.html",controller:"AppOverviewCtrl"}).when("/getting-started/setup",{templateUrl:"app-overview/getting-started.html",controller:"GettingStartedCtrl"}).when("/forgot-password",{templateUrl:"login/forgot-password.html",controller:"ForgotPasswordCtrl"}).when("/register",{templateUrl:"login/register.html",controller:"RegisterCtrl"}).when("/users",{templateUrl:"users/users.html",controller:"UsersCtrl"}).when("/users/profile",{templateUrl:"users/users-profile.html",controller:"UsersProfileCtrl"}).when("/users/groups",{templateUrl:"
 users/users-groups.html",controller:"UsersGroupsCtrl"}).when("/users/activities",{templateUrl:"users/users-activities.html",controller:"UsersActivitiesCtrl"}).when("/users/graph",{templateUrl:"users/users-graph.html",controller:"UsersGraphCtrl"}).when("/users/roles",{templateUrl:"users/users-roles.html",controller:"UsersRolesCtrl"}).when("/groups",{templateUrl:"groups/groups.html",controller:"GroupsCtrl"}).when("/groups/details",{templateUrl:"groups/groups-details.html",controller:"GroupsDetailsCtrl"}).when("/groups/members",{templateUrl:"groups/groups-members.html",controller:"GroupsMembersCtrl"}).when("/groups/activities",{templateUrl:"groups/groups-activities.html",controller:"GroupsActivitiesCtrl"}).when("/groups/roles",{templateUrl:"groups/groups-roles.html",controller:"GroupsRolesCtrl"}).when("/roles",{templateUrl:"roles/roles.html",controller:"RolesCtrl"}).when("/roles/settings",{templateUrl:"roles/roles-settings.html",controller:"RolesSettingsCtrl"}).when("/roles/users",{tem
 plateUrl:"roles/roles-users.html",controller:"RolesUsersCtrl"}).when("/roles/groups",{templateUrl:"roles/roles-groups.html",controller:"RolesGroupsCtrl"}).when("/data",{templateUrl:"data/data.html",controller:"DataCtrl"}).when("/data/entity",{templateUrl:"data/entity.html",controller:"EntityCtrl"}).when("/data/shell",{templateUrl:"data/shell.html",controller:"ShellCtrl"}).when("/profile/organizations",{templateUrl:"profile/organizations.html",controller:"OrgCtrl"}).when("/profile/profile",{templateUrl:"profile/profile.html",controller:"ProfileCtrl"}).when("/profile",{templateUrl:"profile/account.html",controller:"AccountCtrl"}).when("/activities",{templateUrl:"activities/activities.html",controller:"ActivitiesCtrl"}).when("/shell",{templateUrl:"shell/shell.html",controller:"ShellCtrl"}).when("/logout",{templateUrl:"login/logout.html",controller:"LogoutCtrl"}).otherwise({redirectTo:"/org-overview"}),$locationProvider.html5Mode(!1).hashPrefix("!"),$sceDelegateProvider.resourceUrlWhite
 list(["self","http://apigee-internal-prod.jupiter.apigee.net/**","http://apigee-internal-prod.mars.apigee.net/**","https://appservices.apigee.com/**","https://api.usergrid.com/**"])}]),AppServices.Controllers.controller("ActivitiesCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope){$scope.$on("app-activities-received",function(evt,data){$scope.activities=data,$scope.$apply()}),$scope.$on("app-activities-error",function(){$rootScope.$broadcast("alert","error","Application failed to retreive activities data.")}),ug.getActivities()}]),AppServices.Controllers.controller("AppOverviewCtrl",["ug","charts","$scope","$rootScope","$log",function(ug,charts,$scope,$rootScope,$log){var createGradient=function(color1,color2){var perShapeGradient={x1:0,y1:0,x2:0,y2:1};return{linearGradient:perShapeGradient,stops:[[0,color1],[1,color2]]}};$scope.appOverview={},$scope.collections=[],$scope.graph="",$scope.$on("top-collections-received",function(event,collections){va
 r dataDescription={bar1:{labels:["Total"],dataAttr:["title","count"],colors:[createGradient("rgba(36,151,212,0.6)","rgba(119,198,240,0.6)")],borderColor:"#1b97d1"}};$scope.collections=collections;var arr=[];for(var i in collections)collections.hasOwnProperty(i)&&arr.push(collections[i]);$scope.appOverview={},$rootScope.chartTemplate?($scope.appOverview.chart=angular.copy($rootScope.chartTemplate.pareto),$scope.appOverview.chart=charts.convertParetoChart(arr,$scope.appOverview.chart,dataDescription.bar1,"1h","NOW"),$scope.applyScope()):ug.httpGet(null,"js/charts/highcharts.json").then(function(success){$rootScope.chartTemplate=success,$scope.appOverview.chart=angular.copy($rootScope.chartTemplate.pareto),$scope.appOverview.chart=charts.convertParetoChart(arr,$scope.appOverview.chart,dataDescription.bar1,"1h","NOW"),$scope.applyScope()},function(fail){$log.error("Problem getting chart template",fail)})}),$scope.$on("app-initialized",function(){ug.getTopCollections()}),$rootScope.activ
 eUI&&ug.getTopCollections()}]),AppServices.Controllers.controller("GettingStartedCtrl",["ug","$scope","$rootScope","$location","$timeout","$anchorScroll",function(ug,$scope,$rootScope,$location,$timeout,$anchorScroll){$scope.collections=[],$scope.graph="",$scope.clientID="",$scope.clientSecret="";$scope.regenerateCredentialsDialog=function(modalId){$scope.orgAPICredentials={client_id:"regenerating...",client_secret:"regenerating..."},ug.regenerateAppCredentials(),$scope.hideModal(modalId)},$scope.$on("app-creds-updated",function(event,credentials){credentials?($scope.clientID=credentials.client_id,$scope.clientSecret=credentials.client_secret,$scope.$$phase||$scope.$apply()):setTimeout(function(){ug.getAppCredentials()},5e3)}),ug.getAppCredentials(),$scope.contentTitle,$scope.showSDKDetail=function(name){var introContainer=document.getElementById("intro-container");if("nocontent"===name)return introContainer.style.height="0",!0;introContainer.style.opacity=.1,introContainer.style.he
 ight="0";var timeout=0;$scope.contentTitle&&(timeout=500),$timeout(function(){introContainer.style.height="1000px",introContainer.style.opacity=1},timeout),$scope.optionName=name,$scope.contentTitle=name,$scope.sdkLink="http://apigee.com/docs/content/"+name+"-sdk-redirect",$scope.docsLink="http://apigee.com/docs/app-services/content/installing-apigee-sdk-"+name,$scope.getIncludeURL=function(){return"app-overview/doc-includes/"+$scope.optionName+".html"}},$scope.scrollToElement=function(elem){return $location.hash(elem),$anchorScroll(),!1}}]),AppServices.Controllers.controller("ChartCtrl",["$scope","$location",function(){}]),AppServices.Directives.directive("chart",function(){return{restrict:"E",scope:{chartdata:"=chartdata"},template:"<div></div>",replace:!0,controller:function(){},link:function(scope,element,attrs){scope.$watch("chartdata",function(chartdata){if(chartdata){var chartsDefaults={chart:{renderTo:element[0],type:attrs.type||null,height:attrs.height||null,width:attrs.wid
 th||null,reflow:!0,animation:!1,zoomType:"x"}};if("pie"===attrs.type&&(chartsDefaults.chart.margin=[0,0,0,0],chartsDefaults.chart.spacingLeft=0,chartsDefaults.chart.spacingRight=0,chartsDefaults.chart.spacingTop=0,chartsDefaults.chart.spacingBottom=0,attrs.titleimage&&(chartdata.title.text='<img src="'+attrs.titleimage+'">'),attrs.titleicon&&(chartdata.title.text='<i class="pictogram '+attrs.titleiconclass+'">'+attrs.titleicon+"</i>"),attrs.titlecolor&&(chartdata.title.style.color=attrs.titlecolor),attrs.titleimagetop&&(chartdata.title.style.marginTop=attrs.titleimagetop),attrs.titleimageleft&&(chartdata.title.style.marginLeft=attrs.titleimageleft)),"line"===attrs.type&&(chartsDefaults.chart.marginTop=30,chartsDefaults.chart.spacingTop=50),"column"===attrs.type&&(chartsDefaults.chart.marginBottom=80),"area"===attrs.type&&(chartsDefaults.chart.spacingLeft=0,chartsDefaults.chart.spacingRight=0,chartsDefaults.chart.marginLeft=0,chartsDefaults.chart.marginRight=0),Highcharts.setOptions(
 {global:{useUTC:!1},chart:{style:{fontFamily:"marquette-light, Helvetica, Arial, sans-serif"}}}),"line"===attrs.type){var xAxis1=chartdata.xAxis[0];xAxis1.labels.formatter||(xAxis1.labels.formatter=new Function(attrs.xaxislabel)),xAxis1.labels.step||(xAxis1.labels.step=attrs.xaxisstep)}chartdata.tooltip&&"string"==typeof chartdata.tooltip.formatter&&(chartdata.tooltip.formatter=new Function(chartdata.tooltip.formatter)),renderChart(chartsDefaults,chartdata)}},!0)}}}),AppServices.Services.factory("charts",function(){function sortJsonArrayByProperty(objArray,prop){if(arguments.length<2)throw new Error("sortJsonArrayByProp requires 2 arguments");var direct=arguments.length>2?arguments[2]:1;if(objArray&&objArray.constructor===Array){var propPath=prop.constructor===Array?prop:prop.split(".");objArray.sort(function(a,b){for(var p in propPath)a[propPath[p]]&&b[propPath[p]]&&(a=a[propPath[p]],b=b[propPath[p]]);return a=a.match(/^\d+$/)?+a:a,b=b.match(/^\d+$/)?+b:b,b>a?-1*direct:a>b?1*direct
 :0})}}var lineChart,areaChart,paretoChart,pieChart,xaxis,seriesIndex;return{convertLineChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function plotData(counter,dPLength,dataPoints,dataAttrs,detailedView){for(var i=0;dPLength>i;i++)for(var dp=dataPoints[i],localCounter=counter,j=0;j<dataAttrs.length;j++)lineChart.series[localCounter].data.push("undefined"==typeof dp?[i,0]:[i,dp[dataAttrs[j]]]),detailedView||localCounter++}lineChart=chartTemplate,"undefined"==typeof chartData[0]&&(chartData[0]={},chartData[0].datapoints=[]);var label,dataPoints=chartData[0].datapoints,dPLength=dataPoints.length;"YESTERDAY"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Yesterday "):"LAST_WEEK"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Last Week "):(lineChart=chartTemplate,seriesIndex=0,lineChart.series=[],label=""),xaxis=lineChart.xAxis[0],xaxis.categories=[],settings.xaxisformat&&(xaxis.labels.formatter=new Function(set
 tings.xaxisformat)),settings.step&&(xaxis.labels.step=settings.step);for(var i=0;dPLength>i;i++){var dp=dataPoints[i];xaxis.categories.push(dp.timestamp)}if(chartData.length>1)for(var l=0;l<chartData.length;l++)chartData[l].chartGroupName&&(dataPoints=chartData[l].datapoints,lineChart.series[l]={},lineChart.series[l].data=[],lineChart.series[l].name=chartData[l].chartGroupName,lineChart.series[l].yAxis=0,lineChart.series[l].type="line",lineChart.series[l].color=dataDescription.colors[i],lineChart.series[l].dashStyle="solid",lineChart.series[l].yAxis.title.text=dataDescription.yAxisLabels,plotData(l,dPLength,dataPoints,dataDescription.detailDataAttr,!0));else{for(var steadyCounter=0,i=seriesIndex;i<dataDescription.dataAttr.length+(seriesIndex>0?seriesIndex:0);i++){var yAxisIndex=dataDescription.multiAxis?steadyCounter:0;lineChart.series[i]={},lineChart.series[i].data=[],lineChart.series[i].name=label+dataDescription.labels[steadyCounter],lineChart.series[i].yAxis=yAxisIndex,lineChart
 .series[i].type="line",lineChart.series[i].color=dataDescription.colors[i],lineChart.series[i].dashStyle="solid",lineChart.yAxis[yAxisIndex].title.text=dataDescription.yAxisLabels[dataDescription.yAxisLabels>1?steadyCounter:0],steadyCounter++}plotData(seriesIndex,dPLength,dataPoints,dataDescription.dataAttr,!1)}return lineChart},convertAreaChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function plotData(counter,dPLength,dataPoints,dataAttrs,detailedView){for(var i=0;dPLength>i;i++)for(var dp=dataPoints[i],localCounter=counter,j=0;j<dataAttrs.length;j++)areaChart.series[localCounter].data.push("undefined"==typeof dp?0:dp[dataAttrs[j]]),detailedView||localCounter++}areaChart=angular.copy(areaChart),"undefined"==typeof chartData[0]&&(chartData[0]={},chartData[0].datapoints=[]);var label,dataPoints=chartData[0].datapoints,dPLength=dataPoints.length;"YESTERDAY"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Yesterday "):"LAST_WEEK"==
 =currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Last Week "):(areaChart=chartTemplate,seriesIndex=0,areaChart.series=[],label=""),xaxis=areaChart.xAxis[0],xaxis.categories=[],settings.xaxisformat&&(xaxis.labels.formatter=new Function(settings.xaxisformat)),settings.step&&(xaxis.labels.step=settings.step);for(var i=0;dPLength>i;i++){var dp=dataPoints[i];xaxis.categories.push(dp.timestamp)}if(chartData.length>1)for(var l=0;l<chartData.length;l++)chartData[l].chartGroupName&&(dataPoints=chartData[l].datapoints,areaChart.series[l]={},areaChart.series[l].data=[],areaChart.series[l].fillColor=dataDescription.areaColors[l],areaChart.series[l].name=chartData[l].chartGroupName,areaChart.series[l].yAxis=0,areaChart.series[l].type="area",areaChart.series[l].pointInterval=1,areaChart.series[l].color=dataDescription.colors[l],areaChart.series[l].dashStyle="solid",areaChart.series[l].yAxis.title.text=dataDescription.yAxisLabels,plotData(l,dPLength,dataPoints,dataDescription.de
 tailDataAttr,!0));else{for(var steadyCounter=0,i=seriesIndex;i<dataDescription.dataAttr.length+(seriesIndex>0?seriesIndex:0);i++){var yAxisIndex=dataDescription.multiAxis?steadyCounter:0;areaChart.series[i]={},areaChart.series[i].data=[],areaChart.series[i].fillColor=dataDescription.areaColors[i],areaChart.series[i].name=label+dataDescription.labels[steadyCounter],areaChart.series[i].yAxis=yAxisIndex,areaChart.series[i].type="area",areaChart.series[i].pointInterval=1,areaChart.series[i].color=dataDescription.colors[i],areaChart.series[i].dashStyle="solid",areaChart.yAxis[yAxisIndex].title.text=dataDescription.yAxisLabels[dataDescription.yAxisLabels>1?steadyCounter:0],steadyCounter++}plotData(seriesIndex,dPLength,dataPoints,dataDescription.dataAttr,!1)}return areaChart},convertParetoChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function getPreviousData(){for(var i=0;i<chartTemplate.series[0].data.length;i++)allParetoOptions.push(chartTemplate.xAxis.c
 ategories[i])}function createStackedBar(dataDescription,paretoChart){paretoChart.plotOptions={series:{shadow:!1,borderColor:dataDescription.borderColor,borderWidth:1},column:{stacking:"normal",dataLabels:{enabled:!0,color:Highcharts.theme&&Highcharts.theme.dataLabelsColor||"white"}}};var start=dataDescription.dataAttr[1].length,steadyCounter=0;compare&&(paretoChart.legend.enabled=!0);for(var f=seriesIndex;start+seriesIndex>f;f++)paretoChart.series[f]||(paretoChart.series[f]={data:[]}),paretoChart.series[f].data.push(bar[dataDescription.dataAttr[1][steadyCounter]]),paretoChart.series[f].name=""!==label?label+" "+dataDescription.labels[steadyCounter]:dataDescription.labels[steadyCounter],paretoChart.series[f].color=dataDescription.colors[f],paretoChart.series[f].stack=label,steadyCounter++}paretoChart=chartTemplate,"undefined"==typeof chartData&&(chartData=[]);var label,cdLength=chartData.length,compare=!1,allParetoOptions=[],stackedBar=!1;if(seriesIndex=0,"object"==typeof dataDescrip
 tion.dataAttr[1]&&(stackedBar=!0),"YESTERDAY"===currentCompare?(label="Yesterday ",compare=!0,stackedBar&&(seriesIndex=dataDescription.dataAttr[1].length),getPreviousData()):"LAST_WEEK"===currentCompare?(label="Last Week ",compare=!0,stackedBar&&(seriesIndex=dataDescription.dataAttr[1].length),seriesIndex=getPreviousData()):(compare=!1,label="",paretoChart.xAxis.categories=[],paretoChart.series=[],paretoChart.series[0]={},paretoChart.series[0].data=[],paretoChart.legend.enabled=!1),paretoChart.plotOptions.series.borderColor=dataDescription.borderColor,compare&&!stackedBar){paretoChart.series[1]={},paretoChart.series[1].data=[];for(var i=0;i<allParetoOptions.length;i++)paretoChart.series[1].data.push(0);paretoChart.legend.enabled=!0}for(var i=0;cdLength>i;i++){var bar=chartData[i];if(compare){var newLabel=bar[dataDescription.dataAttr[0]],newValue=bar[dataDescription.dataAttr[1]],previousIndex=allParetoOptions.indexOf(newLabel);previousIndex>-1&&("object"==typeof dataDescription.dataA
 ttr[1]?createStackedBar(dataDescription,paretoChart,paretoChart.series.length):(paretoChart.series[1].data[previousIndex]=newValue,paretoChart.series[1].name=""!==label?label+" "+dataDescription.labels[0]:dataDescription.labels[0],paretoChart.series[1].color=dataDescription.colors[1]))}else paretoChart.xAxis.categories.push(bar[dataDescription.dataAttr[0]]),"object"==typeof dataDescription.dataAttr[1]?createStackedBar(dataDescription,paretoChart,paretoChart.series.length):(paretoChart.series[0].data.push(bar[dataDescription.dataAttr[1]]),paretoChart.series[0].name=dataDescription.labels[0],paretoChart.series[0].color=dataDescription.colors[0])}return paretoChart},convertPieChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){var label,cdLength=chartData.length,compare=!1;pieChart=chartTemplate,"YESTERDAY"===currentCompare?(label="Yesterday ",compare=!1):"LAST_WEEK"===currentCompare?(label="Last Week ",compare=!1):(compare=!1,pieChart.series[0].data=[],pieC
 hart.series[0].dataLabels&&"string"==typeof pieChart.series[0].dataLabels.formatter&&(pieChart.series[0].dataLabels.formatter=new Function(pieChart.series[0].dataLabels.formatter))),pieChart.plotOptions.pie.borderColor=dataDescription.borderColor,compare&&(pieChart.series[1].data=[],pieChart.series[1].dataLabels&&"string"==typeof pieChart.series[1].dataLabels.formatter&&(pieChart.series[1].dataLabels.formatter=new Function(pieChart.series[1].dataLabels.formatter)));for(var tempArray=[],i=0;cdLength>i;i++){var pie=chartData[i];tempArray.push({name:pie[dataDescription.dataAttr[0]],y:pie[dataDescription.dataAttr[1]],color:""})}sortJsonArrayByProperty(tempArray,"name");for(var i=0;i<tempArray.length;i++)tempArray[i].color=dataDescription.colors[i];return compare?pieChart.series[1].data=tempArray:pieChart.series[0].data=tempArray,pieChart}}}),$(".sessions-bar").sparkline([3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8
 ,1],{type:"bar",barColor:"#c5c5c5",width:"800px",height:100,barWidth:12,barSpacing:"1px"}),AppServices.Controllers.controller("DataCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope){var init=function(){$scope.verb="GET",$scope.display="",$scope.queryBodyDetail={},$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.entitySelected={},$scope.newCollection={},$rootScope.queryCollection={},$scope.data={},$scope.data.queryPath="",$scope.data.queryBody='{ "name":"value" }',$scope.data.searchString="",$scope.data.queryLimit=""},runQuery=function(verb){$scope.loading=!0;var queryPath=$scope.removeFirstSlash($scope.data.queryPath||""),searchString=$scope.data.searchString||"",queryLimit=$scope.data.queryLimit||"",body=JSON.parse($scope.data.queryBody||"{}");"POST"==verb&&$scope.validateJson(!0)?ug.runDataPOSTQuery(queryPath,body):"PUT"==verb&&$scope.validateJson(!0)?ug.runDataPutQuery(queryPath,searchString,queryLi
 mit,body):"DELETE"==verb?ug.runDataDeleteQuery(queryPath,searchString,queryLimit):ug.runDataQuery(queryPath,searchString,queryLimit)};$scope.$on("top-collections-received",function(event,collectionList){$scope.loading=!1;var ignoredCollections=["events"];ignoredCollections.forEach(function(ignoredCollection){collectionList.hasOwnProperty(ignoredCollection)&&delete collectionList[ignoredCollection]}),$scope.collectionList=collectionList,$scope.queryBoxesSelected=!1,$scope.queryPath||$scope.loadCollection("/"+collectionList[Object.keys(collectionList).sort()[0]].name),$scope.applyScope()}),$scope.$on("error-running-query",function(){$scope.loading=!1,runQuery("GET"),$scope.applyScope()}),$scope.$on("entity-deleted",function(){$scope.deleteLoading=!1,$rootScope.$broadcast("alert","success","Entities deleted sucessfully"),$scope.queryBoxesSelected=!1,$scope.checkNextPrev(),$scope.applyScope()}),$scope.$on("entity-deleted-error",function(){$scope.deleteLoading=!1,runQuery("GET"),$scope.a
 pplyScope()}),$scope.$on("collection-created",function(){$scope.newCollection.name=""}),$scope.$on("query-received",function(event,collection){$scope.loading=!1,$rootScope.queryCollection=collection,ug.getIndexes($scope.data.queryPath),$scope.setDisplayType(),$scope.checkNextPrev(),$scope.applyScope(),$scope.queryBoxesSelected=!1}),$scope.$on("indexes-received",function(event,indexes){}),$scope.$on("app-changed",function(){init()}),$scope.setDisplayType=function(){$scope.display="generic"},$scope.deleteEntitiesDialog=function(modalId){$scope.deleteLoading=!1,$scope.deleteEntities($rootScope.queryCollection,"entity-deleted","error deleting entity"),$scope.hideModal(modalId)},$scope.newCollectionDialog=function(modalId){$scope.newCollection.name?(ug.createCollection($scope.newCollection.name),ug.getTopCollections(),$rootScope.$broadcast("alert","success","Collection created successfully."),$scope.hideModal(modalId)):$rootScope.$broadcast("alert","error","You must specify a collection 
 name.")},$scope.addToPath=function(uuid){$scope.data.queryPath="/"+$rootScope.queryCollection._type+"/"+uuid},$scope.isDeep=function(item){return"[object Object]"===Object.prototype.toString.call(item)},$scope.loadCollection=function(type){$scope.data.queryPath="/"+type.substring(1,type.length),$scope.data.searchString="",$scope.data.queryLimit="",$scope.data.body='{ "name":"value" }',$scope.selectGET(),$scope.applyScope(),$scope.run()},$scope.selectGET=function(){$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="GET"},$scope.selectPOST=function(){$scope.queryBodyDisplay="block",$scope.queryLimitDisplay="none",$scope.queryStringDisplay="none",$scope.verb="POST"},$scope.selectPUT=function(){$scope.queryBodyDisplay="block",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="PUT"},$scope.selectDELETE=function(){$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDispla
 y="block",$scope.verb="DELETE"},$scope.validateJson=function(skipMessage){var queryBody=$scope.data.queryBody;try{queryBody=JSON.parse(queryBody)}catch(e){return $rootScope.$broadcast("alert","error","JSON is not valid"),!1}return queryBody=JSON.stringify(queryBody,null,2),!skipMessage&&$rootScope.$broadcast("alert","success","JSON is valid"),$scope.data.queryBody=queryBody,!0},$scope.saveEntity=function(entity){if(!$scope.validateJson())return!1;var queryBody=entity._json;queryBody=JSON.parse(queryBody),$rootScope.selectedEntity.set(),$rootScope.selectedEntity.set(queryBody),$rootScope.selectedEntity.set("type",entity._data.type),$rootScope.selectedEntity.set("uuid",entity._data.uuid),$rootScope.selectedEntity.save(function(err,data){err?$rootScope.$broadcast("alert","error","error: "+data.error_description):$rootScope.$broadcast("alert","success","entity saved")})},$scope.run=function(){$rootScope.queryCollection="";var verb=$scope.verb;runQuery(verb)},$scope.hasProperty=function(
 prop){var retval=!1;return"undefined"!=typeof $rootScope.queryCollection._list&&angular.forEach($rootScope.queryCollection._list,function(value){retval||value._data[prop]&&(retval=!0)}),retval},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$rootScope.queryCollection.hasPreviousPage()&&($scope.previous_display="default"),$rootScope.queryCollection.hasNextPage()&&($scope.next_display="default")},$scope.selectEntity=function(uuid){$rootScope.selectedEntity=$rootScope.queryCollection.getEntityByUUID(uuid),$scope.addToPath(uuid)},$scope.getJSONView=function(entity){var tempjson=entity.get(),queryBody=JSON.stringify(tempjson,null,2);queryBody=JSON.parse(queryBody),delete queryBody.metadata,delete queryBody.uuid,delete queryBody.created,delete queryBody.modified,delete queryBody.type,$scope.queryBody=JSON.stringify(queryBody,null,2)},$scope.getPrevious=function(){$rootScope.queryCollection.g
 etPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of data"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$rootScope.queryCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of data"),$scope.checkNextPrev(),$scope.applyScope()})},init(),$rootScope.queryCollection=$rootScope.queryCollection||{},$rootScope.selectedEntity={},$rootScope.queryCollection&&$rootScope.queryCollection._type&&($scope.loadCollection($rootScope.queryCollection._type),$scope.setDisplayType()),ug.getTopCollections(),$scope.resetNextPrev()}]),AppServices.Controllers.controller("EntityCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){if(!$rootScope.selectedEntity)return void $location.path("/data");$scope.entityUUID=$rootScope.selectedEntity.get("uuid"),$scope.entityType=$rootScope.selectedEntity.get("type");var tempjson=$rootScope.selectedEntity.get(
 ),queryBody=JSON.stringify(tempjson,null,2);queryBody=JSON.parse(queryBody),delete queryBody.metadata,delete queryBody.uuid,delete queryBody.created,delete queryBody.modified,delete queryBody.type,$scope.queryBody=JSON.stringify(queryBody,null,2),$scope.validateJson=function(){var queryBody=$scope.queryBody;try{queryBody=JSON.parse(queryBody)}catch(e){return $rootScope.$broadcast("alert","error","JSON is not valid"),!1}return queryBody=JSON.stringify(queryBody,null,2),$rootScope.$broadcast("alert","success","JSON is valid"),$scope.queryBody=queryBody,!0},$scope.saveEntity=function(){if(!$scope.validateJson())return!1;var queryBody=$scope.queryBody;queryBody=JSON.parse(queryBody),$rootScope.selectedEntity.set(),$rootScope.selectedEntity.set(queryBody),$rootScope.selectedEntity.set("type",$scope.entityType),$rootScope.selectedEntity.set("uuid",$scope.entityUUID),$rootScope.selectedEntity.save(function(err,data){err?$rootScope.$broadcast("alert","error","error: "+data.error_description
 ):$rootScope.$broadcast("alert","success","entity saved")})}}]),AppServices.Controllers.controller("ShellCtrl",["ug","$scope","$rootScope","$location",function(){}]),AppServices.Directives.directive("balloon",["$window","$timeout",function($window,$timeout){return{restrict:"ECA",scope:"=",template:'<div class="baloon {{direction}}" ng-transclude></div>',replace:!0,transclude:!0,link:function(scope,lElement,attrs){scope.direction=attrs.direction;var runScroll=!0,windowEl=angular.element($window);windowEl.on("scroll",function(){runScroll&&(lElement.addClass("fade-out"),$timeout(function(){lElement.addClass("hide")},1e3),runScroll=!1)})}}}]),AppServices.Directives.directive("bsmodal",["$rootScope",function($rootScope){return{restrict:"ECA",scope:{title:"@title",buttonid:"=buttonid",footertext:"=footertext",closelabel:"=closelabel"},transclude:!0,templateUrl:"dialogs/modal.html",replace:!0,link:function(scope,lElement,attrs,parentCtrl){scope.title=attrs.title,scope.footertext=attrs.foot
 ertext,scope.closelabel=attrs.closelabel,scope.close=attrs.close,scope.extrabutton=attrs.extrabutton,scope.extrabuttonlabel=attrs.extrabuttonlabel,scope.buttonId=attrs.buttonid,scope.closeDelegate=function(attr){scope.$parent[attr](attrs.id,scope)},scope.extraDelegate=function(attr){scope.dialogForm.$valid?(console.log(parentCtrl),scope.$parent[attr](attrs.id)):$rootScope.$broadcast("alert","error","Please check your form input and resubmit.")}}}}]),AppServices.Controllers.controller("AlertCtrl",["$scope","$rootScope","$timeout",function($scope,$rootScope,$timeout){$scope.alertDisplay="none",$scope.alerts=[],$scope.$on("alert",function(event,type,message,permanent){$scope.addAlert(type,message,permanent)}),$scope.$on("clear-alerts",function(){$scope.alerts=[]}),$scope.addAlert=function(type,message,permanent){$scope.alertDisplay="block",$scope.alerts.push({type:type,msg:message}),$scope.applyScope(),permanent||$timeout(function(){$scope.alerts.shift()},5e3)},$scope.closeAlert=functi
 on(index){$scope.alerts.splice(index,1)}}]),AppServices.Directives.directive("alerti",["$rootScope","$timeout",function($rootScope,$timeout){return{restrict:"ECA",scope:{type:"=type",closeable:"@closeable",index:"&index"},template:'<div class="alert" ng-class="type && \'alert-\' + type">    <button ng-show="closeable" type="button" class="close" ng-click="closeAlert(index)">&times;</button>    <i ng-if="type === \'warning\'" class="pictogram pull-left" style="font-size:3em;line-height:0.4">&#128165;</i>    <i ng-if="type === \'info\'" class="pictogram pull-left">&#8505;</i>    <i ng-if="type === \'error\'" class="pictogram pull-left">&#9889;</i>    <i ng-if="type === \'success\'" class="pictogram pull-left">&#128077;</i><div ng-transclude></div></div>',replace:!0,transclude:!0,link:function(scope,lElement,attrs){$timeout(function(){lElement.addClass("fade-out")},4e3),lElement.click(function(){attrs.index&&scope.$parent.closeAlert(attrs.index)}),setTimeout(function(){lElement.addClas
 s("alert-animate")},10)}}}]),AppServices.Directives.directive("appswitcher",["$rootScope",function(){return{restrict:"ECA",scope:"=",templateUrl:"global/appswitcher-template.html",replace:!0,transclude:!0,link:function(){function globalNavDetail(){$("#globalNavDetail > div").removeClass(classNameOpen),$("#globalNavDetailApiPlatform").addClass(classNameOpen)}var classNameOpen="open";$("ul.nav li.dropdownContainingSubmenu").hover(function(){$(this).addClass(classNameOpen)},function(){$(this).removeClass(classNameOpen)}),$("#globalNav > a").mouseover(globalNavDetail),$("#globalNavDetail").mouseover(globalNavDetail),$("#globalNavSubmenuContainer ul li").mouseover(function(){$("#globalNavDetail > div").removeClass(classNameOpen),$("#"+this.getAttribute("data-globalNavDetail")).addClass(classNameOpen)})}}}]),AppServices.Directives.directive("insecureBanner",["$rootScope","ug",function($rootScope,ug){return{restrict:"E",transclude:!0,templateUrl:"global/insecure-banner.html",link:function(
 scope){scope.securityWarning=!1,scope.$on("roles-received",function(evt,roles){scope.securityWarning=!1,roles&&roles._list&&roles._list.forEach(function(roleHolder){var role=roleHolder._data;
-"GUEST"===role.name.toUpperCase()&&roleHolder.getPermissions(function(err){err||roleHolder.permissions&&roleHolder.permissions.forEach(function(permission){permission.path.indexOf("/**")>=0&&(scope.securityWarning=!0,scope.applyScope())})})})});var initialized=!1;scope.$on("app-initialized",function(){!initialized&&ug.getRoles(),initialized=!0}),scope.$on("app-changed",function(){scope.securityWarning=!1,ug.getRoles()})}}}]),AppServices.Constants.constant("configuration",{ITEMS_URL:"global/temp.json"}),AppServices.Controllers.controller("PageCtrl",["ug","utility","$scope","$rootScope","$location","$routeParams","$q","$route","$log",function(ug,utility,$scope,$rootScope,$location,$routeParams,$q,$route){var initScopeVariables=function(){$scope.loadingText="Loading...",$scope.use_sso=!1,$scope.newApp={name:""},$scope.getPerm="",$scope.postPerm="",$scope.putPerm="",$scope.deletePerm="",$scope.usersTypeaheadValues=[],$scope.groupsTypeaheadValues=[],$scope.rolesTypeaheadValues=[],$rootSc
 ope.sdkActive=!1,$rootScope.demoData=!1,$scope.queryStringApplied=!1,$rootScope.autoUpdateTimer=Usergrid.config?Usergrid.config.autoUpdateTimer:61,$rootScope.loaded=$rootScope.activeUI=!1;for(var key in Usergrid.regex)$scope[key]=Usergrid.regex[key];$scope.options=Usergrid.options;var getQuery=function(){for(var m,result={},queryString=location.search.slice(1),re=/([^&=]+)=([^&]*)/g;m=re.exec(queryString);)result[decodeURIComponent(m[1])]=decodeURIComponent(m[2]);return result};$scope.queryString=getQuery()};initScopeVariables(),$rootScope.urls=function(){var BASE_URL="",DATA_URL="",qs=$location.search();switch(!0){case"appservices.apigee.com"===$location.host()&&location.pathname.indexOf("/dit")>=0:BASE_URL="https://accounts.jupiter.apigee.net",DATA_URL="http://apigee-internal-prod.jupiter.apigee.net",$scope.use_sso=!0;break;case"appservices.apigee.com"===$location.host()&&location.pathname.indexOf("/mars")>=0:BASE_URL="https://accounts.mars.apigee.net",DATA_URL="http://apigee-inte
 rnal-prod.mars.apigee.net",$scope.use_sso=!0;break;case"appservices.apigee.com"===$location.host():DATA_URL=Usergrid.overrideUrl;break;case"apigee.com"===$location.host():BASE_URL="https://accounts.apigee.com",DATA_URL="https://api.usergrid.com",$scope.use_sso=!0;break;case"usergrid.dev"===$location.host():DATA_URL="https://api.usergrid.com";break;default:DATA_URL=Usergrid.overrideUrl}return DATA_URL=qs.api_url||DATA_URL,$scope.apiUrl=DATA_URL=DATA_URL.lastIndexOf("/")===DATA_URL.length-1?DATA_URL.substring(0,DATA_URL.length-1):DATA_URL,{DATA_URL:DATA_URL,LOGIN_URL:BASE_URL+"/accounts/sign_in",PROFILE_URL:BASE_URL+"/accounts/my_account",LOGOUT_URL:BASE_URL+"/accounts/sign_out"}},$rootScope.gotoPage=function(path){$location.path(path)};var notRegistration=function(){return"/forgot-password"!==$location.path()&&"/register"!==$location.path()},verifyUser=function(){"/login"!==$location.path().slice(0,"/login".length)&&($rootScope.currentPath=$location.path()),$routeParams.access_token&
 &$routeParams.admin_email&&$routeParams.uuid&&(ug.set("token",$routeParams.access_token),ug.set("email",$routeParams.admin_email),ug.set("uuid",$routeParams.uuid),$location.search("access_token",null),$location.search("admin_email",null),$location.search("uuid",null)),ug.checkAuthentication(!0)};$scope.profile=function(){$scope.use_sso?window.location=$rootScope.urls().PROFILE_URL+"?callback="+encodeURIComponent($location.absUrl()):$location.path("/profile")},$scope.showModal=function(id){$("#"+id).modal("show")},$scope.hideModal=function(id){$("#"+id).modal("hide")},$scope.deleteEntities=function(collection,successBroadcast,errorMessage){collection.resetEntityPointer();for(var entitiesToDelete=[];collection.hasNextEntity();){var entity=collection.getNextEntity(),checked=entity.checked;checked&&entitiesToDelete.push(entity)}for(var count=0,success=!1,i=0;i<entitiesToDelete.length;i++){var entity=entitiesToDelete[i];collection.destroyEntity(entity,function(err){count++,err?($rootScop
 e.$broadcast("alert","error",errorMessage),$rootScope.$broadcast(successBroadcast+"-error",err)):success=!0,count===entitiesToDelete.length&&(success&&$rootScope.$broadcast(successBroadcast),$scope.applyScope())})}},$scope.selectAllEntities=function(list,that,varName,setValue){varName=varName||"master";var val=that[varName];void 0==setValue&&(setValue=!0),setValue&&(that[varName]=val=!val),list.forEach(function(entitiy){entitiy.checked=val})},$scope.createPermission=function(type,entity,path,permissions){"/"!=path.charAt(0)&&(path="/"+path);var ops="",s="";permissions.getPerm&&(ops="get",s=","),permissions.postPerm&&(ops=ops+s+"post",s=","),permissions.putPerm&&(ops=ops+s+"put",s=","),permissions.deletePerm&&(ops=ops+s+"delete",s=",");var permission=ops+":"+path;return permission},$scope.formatDate=function(date){return new Date(date).toUTCString()},$scope.clearCheckbox=function(id){$("#"+id).attr("checked")&&$("#"+id).click()},$scope.removeFirstSlash=function(path){return 0===path.
 indexOf("/")?path.substring(1,path.length):path},$scope.applyScope=function(cb){return cb="function"==typeof cb?cb:function(){},this.$$phase?void cb():this.$apply(cb)},$scope.valueSelected=function(list){return list&&list.some(function(item){return item.checked})},$scope.sendHelp=function(modalId){ug.jsonpRaw("apigeeuihelpemail","",{useremail:$rootScope.userEmail}).then(function(){$rootScope.$broadcast("alert","success","Email sent. Our team will be in touch with you shortly.")},function(){$rootScope.$broadcast("alert","error","Problem Sending Email. Try sending an email to mobile@apigee.com.")}),$scope.hideModal(modalId)},$scope.$on("users-typeahead-received",function(event,users){$scope.usersTypeaheadValues=users,$scope.$$phase||$scope.$apply()}),$scope.$on("groups-typeahead-received",function(event,groups){$scope.groupsTypeaheadValues=groups,$scope.$$phase||$scope.$apply()}),$scope.$on("roles-typeahead-received",function(event,roles){$scope.rolesTypeaheadValues=roles,$scope.$$pha
 se||$scope.$apply()}),$scope.$on("checkAuthentication-success",function(){sessionStorage.setItem("authenticateAttempts",0),$scope.loaded=!0,$rootScope.activeUI=!0,$scope.applyScope(),$scope.queryStringApplied||($scope.queryStringApplied=!0,setTimeout(function(){$scope.queryString.org&&$rootScope.$broadcast("change-org",$scope.queryString.org)},1e3)),$rootScope.$broadcast("app-initialized")}),$scope.$on("checkAuthentication-error",function(args,err,missingData,email){if($scope.loaded=!0,err&&!$scope.use_sso&&notRegistration())ug.logout(),$location.path("/login"),$scope.applyScope();else if(missingData&&notRegistration()){if(!email&&$scope.use_sso)return void(window.location=$rootScope.urls().LOGIN_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]));ug.reAuthenticate(email)}}),$scope.$on("reAuthenticate-success",function(args,err,data,user,organizations,applications){sessionStorage.setItem("authenticateAttempts",0),$rootScope.$broadcast("loginSuccesful",user,organiz
 ations,applications),$rootScope.$emit("loginSuccesful",user,organizations,applications),$rootScope.$broadcast("checkAuthentication-success"),$scope.applyScope(function(){$scope.deferredLogin.resolve(),$location.path("/org-overview")})});var authenticateAttempts=parseInt(sessionStorage.getItem("authenticateAttempts")||0);$scope.$on("reAuthenticate-error",function(){if($scope.use_sso){if(authenticateAttempts++>5)return void $rootScope.$broadcast("alert","error","There is an issue with authentication. Please contact support.");console.error("Failed to login via sso "+authenticateAttempts),sessionStorage.setItem("authenticateAttempts",authenticateAttempts),window.location=$rootScope.urls().LOGIN_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0])}else notRegistration()&&(ug.logout(),$location.path("/login"),$scope.applyScope())}),$scope.$on("loginSuccessful",function(){$rootScope.activeUI=!0}),$scope.$on("app-changed",function(args,oldVal,newVal,preventReload){newVal==
 =oldVal||preventReload||$route.reload()}),$scope.$on("org-changed",function(){ug.getApplications(),$route.reload()}),$scope.$on("app-settings-received",function(){}),$scope.$on("request-times-slow",function(){$rootScope.$broadcast("alert","info","We are experiencing performance issues on our server.  Please click Get Help for support if this continues.")}),$scope.$on("$routeChangeSuccess",function(){verifyUser(),$scope.showDemoBar="/performance"===$location.path().slice(0,"/performance".length),$scope.showDemoBar||($rootScope.demoData=!1)}),$scope.$on("applications-received",function(event,applications){$scope.applications=applications,$scope.hasApplications=Object.keys(applications).length>0}),ug.getAppSettings()}]),AppServices.Directives.directive("pageTitle",["$rootScope","data",function($rootScope,data){return{restrict:"ECA",scope:{},transclude:!0,templateUrl:"global/page-title.html",replace:!0,link:function(scope,lElement,attrs){scope.title=attrs.title,scope.icon=attrs.icon,sco
 pe.showHelp=function(){$("#need-help").modal("show")},scope.sendHelp=function(){data.jsonp_raw("apigeeuihelpemail","",{useremail:$rootScope.userEmail}).then(function(){$rootScope.$broadcast("alert","success","Email sent. Our team will be in touch with you shortly.")},function(){$rootScope.$broadcast("alert","error","Problem Sending Email. Try sending an email to mobile@apigee.com.")}),$("#need-help").modal("hide")}}}}]),AppServices.Services.factory("ug",function(configuration,$rootScope,utility,$q,$http,$resource,$log){function reportError(){}var requestTimes=[],running=!1,currentRequests={},getAccessToken=function(){return sessionStorage.getItem("accessToken")};return{get:function(prop,isObject){return isObject?this.client().getObject(prop):this.client().get(prop)},set:function(prop,value){this.client().set(prop,value)},orgLogin:function(username,password){var self=this;this.client().set("email",username),this.client().set("token",null),this.client().orgLogin(username,password,func
 tion(err,data,user,organizations,applications){err?$rootScope.$broadcast("loginFailed",err,data):self.initializeCurrentUser(function(){$rootScope.$broadcast("loginSuccesful",user,organizations,applications)})})},checkAuthentication:function(force){var ug=this,client=ug.client(),initialize=function(){ug.initializeCurrentUser(function(){$rootScope.userEmail=client.get("email"),$rootScope.organizations=client.getObject("organizations"),$rootScope.applications=client.getObject("applications"),$rootScope.currentOrg=client.get("orgName"),$rootScope.currentApp=client.get("appName");var key,size=0;for(key in $rootScope.applications)$rootScope.applications.hasOwnProperty(key)&&size++;$rootScope.addApplications=10>size,$rootScope.$broadcast("checkAuthentication-success",client.getObject("organizations"),client.getObject("applications"),client.get("orgName"),client.get("appName"),client.get("email"))})},isAuthenticated=function(){var authenticated=null!==client.get("token")&&null!==client.get(
 "organizations");return authenticated&&initialize(),authenticated};if(!isAuthenticated()||force){if(!client.get("token"))return $rootScope.$broadcast("checkAuthentication-error","no token",{},client.get("email"));this.client().reAuthenticateLite(function(err){var missingData=err||!client.get("orgName")||!client.get("appName")||!client.getObject("organizations")||!client.getObject("applications"),email=client.get("email");err||missingData?$rootScope.$broadcast("checkAuthentication-error",err,missingData,email):initialize()})}},reAuthenticate:function(email,eventOveride){var ug=this;this.client().reAuthenticate(email,function(err,data,user,organizations,applications){err||($rootScope.currentUser=user),err||($rootScope.userEmail=user.get("email"),$rootScope.organizations=organizations,$rootScope.applications=applications,$rootScope.currentOrg=ug.get("orgName"),$rootScope.currentApp=ug.get("appName"),$rootScope.currentUser=user._data,$rootScope.currentUser.profileImg=utility.get_gravata
 r($rootScope.currentUser.email)),$rootScope.$broadcast((eventOveride||"reAuthenticate")+"-"+(err?"error":"success"),err,data,user,organizations,applications)})},logoutCallback:function(){$rootScope.$broadcast("userNotAuthenticated")},logout:function(){$rootScope.activeUI=!1,$rootScope.userEmail="user@apigee.com",$rootScope.organizations={noOrg:{name:"No Orgs Found"}},$rootScope.applications={noApp:{name:"No Apps Found"}},$rootScope.currentOrg="No Org Found",$rootScope.currentApp="No App Found",sessionStorage.setItem("accessToken",null),sessionStorage.setItem("userUUID",null),sessionStorage.setItem("userEmail",null),this.client().logout(),this._client=null},client:function(){var options={buildCurl:!0,logging:!0};return Usergrid.options&&Usergrid.options.client&&(options.keys=Usergrid.options.client),this._client=this._client||new Usergrid.Client(options,$rootScope.urls().DATA_URL),this._client},getTopCollections:function(){var options={method:"GET",endpoint:""};this.client().request(
 options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting collections");else{var collections=data.entities[0].metadata.collections;$rootScope.$broadcast("top-collections-received",collections)}})},createCollection:function(collectionName){var collections={};collections[collectionName]={};var metadata={metadata:{collections:collections}},options={method:"PUT",body:metadata,endpoint:""};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error creating collection"):$rootScope.$broadcast("collection-created",collections)})},getApplications:function(){this.client().getApplications(function(err,applications){err?applications&&console.error(applications):$rootScope.$broadcast("applications-received",applications)})},getAdministrators:function(){this.client().getAdministrators(function(err,administrators){err&&$rootScope.$broadcast("alert","error","error getting administrators"),$rootScope.$broadcast("administrators-received",
 administrators)})},createApplication:function(appName){this.client().createApplication(appName,function(err,applications){err?$rootScope.$broadcast("alert","error","error creating application"):($rootScope.$broadcast("applications-created",applications,appName),$rootScope.$broadcast("applications-received",applications))})},createAdministrator:function(adminName){this.client().createAdministrator(adminName,function(err,administrators){err&&$rootScope.$broadcast("alert","error","error creating administrator"),$rootScope.$broadcast("administrators-received",administrators)})},getFeed:function(){var options={method:"GET",endpoint:"management/organizations/"+this.client().get("orgName")+"/feed",mQuery:!0};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting feed");else{var feedData=data.entities,feed=[],i=0;for(i=0;i<feedData.length;i++){var date=new Date(feedData[i].created).toUTCString(),title=feedData[i].title,n=title.indexOf(">
 ");title=title.substring(n+1,title.length),n=title.indexOf(">"),title=title.substring(n+1,title.length),feedData[i].actor&&(title=feedData[i].actor.displayName+" "+title),feed.push({date:date,title:title})}0===i&&feed.push({date:"",title:"No Activities found."}),$rootScope.$broadcast("feed-received",feed)}})},createGroup:function(path,title){var options={path:path,title:title},self=this;this.groupsCollection.addEntity(options,function(err){err?$rootScope.$broadcast("groups-create-error",err):($rootScope.$broadcast("groups-create-success",self.groupsCollection),$rootScope.$broadcast("groups-received",self.groupsCollection))})},createRole:function(name,title){var options={name:name,title:title},self=this;this.rolesCollection.addEntity(options,function(err){err?$rootScope.$broadcast("alert","error","error creating role"):$rootScope.$broadcast("roles-received",self.rolesCollection)})},createUser:function(username,name,email,password){var options={username:username,name:name,email:email,
 password:password},self=this;this.usersCollection.addEntity(options,function(err,data){err?"string"==typeof data?$rootScope.$broadcast("alert","error","error: "+data):$rootScope.$broadcast("alert","error","error creating user. the email address might already exist."):($rootScope.$broadcast("users-create-success",self.usersCollection),$rootScope.$broadcast("users-received",self.usersCollection))})},getCollection:function(type,path,orderBy,query,limit){var options={type:path,qs:{}};query&&(options.qs.ql=query),options.qs.ql=options.qs.ql?options.qs.ql+" order by "+(orderBy||"created desc"):" order by "+(orderBy||"created desc"),limit&&(options.qs.limit=limit),this.client().createCollection(options,function(err,collection,data){err?$rootScope.$broadcast("alert","error","error getting "+collection._type+": "+data.error_description):$rootScope.$broadcast(type+"-received",collection),$rootScope.$$phase||$rootScope.$apply()})},runDataQuery:function(queryPath,searchString,queryLimit){this.g
 etCollection("query",queryPath,null,searchString,queryLimit)},runDataPOSTQuery:function(queryPath,body){var self=this,options={method:"POST",endpoint:queryPath,body:body};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description),$rootScope.$broadcast("error-running-query",data);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},runDataPutQuery:function(queryPath,searchString,queryLimit,body){var self=this,options={method:"PUT",endpoint:queryPath,body:body};searchString&&(options.qs.ql=searchString),queryLimit&&(options.qs.queryLimit=queryLimit),this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},runDataDeleteQuery:function(queryPath,searchString,queryLimit){var self=this,options={m
 ethod:"DELETE",endpoint:queryPath};searchString&&(options.qs.ql=searchString),queryLimit&&(options.qs.queryLimit=queryLimit),this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},getUsers:function(){this.getCollection("users","users","username");var self=this;$rootScope.$on("users-received",function(evt,users){self.usersCollection=users})},getGroups:function(){this.getCollection("groups","groups","title");var self=this;$rootScope.$on("groups-received",function(event,roles){self.groupsCollection=roles})},getRoles:function(){this.getCollection("roles","roles","name");var self=this;$rootScope.$on("roles-received",function(event,roles){self.rolesCollection=roles})},getNotifiers:function(){var query="",limit="100",self=this;this.getCollection("notifiers","notifiers","created",query,limit),$rootScope.$on("notifi
 ers-received",function(event,notifiers){self.notifiersCollection=notifiers})},getNotificationHistory:function(type){var query=null;type&&(query="select * where state = '"+type+"'"),this.getCollection("notifications","notifications","created desc",query);var self=this;$rootScope.$on("notifications-received",function(event,notifications){self.notificationCollection=notifications})},getNotificationReceipts:function(uuid){this.getCollection("receipts","notifications/"+uuid+"/receipts");var self=this;$rootScope.$on("receipts-received",function(event,receipts){self.receiptsCollection=receipts})},getIndexes:function(path){var options={method:"GET",endpoint:path+"/indexes"};this.client().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Problem getting indexes: "+data.error):$rootScope.$broadcast("indexes-received",data.data)})},sendNotification:function(path,body){var options={method:"POST",endpoint:path,body:body};this.client().request(options,function(err,data
 ){err?$rootScope.$broadcast("alert","error","Problem creating notification: "+data.error):$rootScope.$broadcast("send-notification-complete")})},getRolesUsers:function(username){var options={type:"roles/users/"+username,qs:{ql:"order by username"}};this.client().createCollection(options,function(err,users){err?$rootScope.$broadcast("alert","error","error getting users"):$rootScope.$broadcast("users-received",users)})},getTypeAheadData:function(type,searchString,searchBy,orderBy){var search="",qs={limit:100};searchString&&(search="select * where "+searchBy+" = '"+searchString+"'"),orderBy&&(search=search+" order by "+orderBy),search&&(qs.ql=search);var options={method:"GET",endpoint:type,qs:qs};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting "+type);else{var entities=data.entities;$rootScope.$broadcast(type+"-typeahead-received",entities)}})},getUsersTypeAhead:function(searchString){this.getTypeAheadData("users",searchStrin
 g,"username","username")},getGroupsTypeAhead:function(searchString){this.getTypeAheadData("groups",searchString,"path","path")},getRolesTypeAhead:function(searchString){this.getTypeAheadData("roles",searchString,"name","name")},getGroupsForUser:function(user){var options={type:"users/"+user+"/groups"};this.client().createCollection(options,function(err,groups){err?$rootScope.$broadcast("alert","error","error getting groups"):$rootScope.$broadcast("user-groups-received",groups)})},addUserToGroup:function(user,group){var options={type:"users/"+user+"/groups/"+group};this.client().createEntity(options,function(err){err?$rootScope.$broadcast("alert","error","error adding user to group"):$rootScope.$broadcast("user-added-to-group-received")})},addUserToRole:function(user,role){var options={method:"POST",endpoint:"roles/"+role+"/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding user to role"):$rootScope.$broadcast("role-updat
 e-received")})},addGroupToRole:function(group,role){var options={method:"POST",endpoint:"roles/"+role+"/groups/"+group};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding group to role"):$rootScope.$broadcast("role-update-received")})},followUser:function(user){var username=$rootScope.selectedUser.get("uuid"),options={method:"POST",endpoint:"users/"+username+"/following/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error following user"):$rootScope.$broadcast("follow-user-received")})},newPermission:function(permission,type,entity){var options={method:"POST",endpoint:type+"/"+entity+"/permissions",body:{permission:permission}};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding permission"):$rootScope.$broadcast("permission-update-received")})},newUserPermission:function(permission,username){this.newPermission(permission,"users",user
 name)},newGroupPermission:function(permission,path){this.newPermission(permission,"groups",path)},newRolePermission:function(permission,name){this.newPermission(permission,"roles",name)},deletePermission:function(permission,type,entity){var options={method:"DELETE",endpoint:type+"/"+entity+"/permissions",qs:{permission:permission}};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error deleting permission"):$rootScope.$broadcast("permission-update-received")})},deleteUserPermission:function(permission,user){this.deletePermission(permission,"users",user)},deleteGroupPermission:function(permission,group){this.deletePermission(permission,"groups",group)},deleteRolePermission:function(permission,rolename){this.deletePermission(permission,"roles",rolename)},removeUserFromRole:function(user,role){var options={method:"DELETE",endpoint:"roles/"+role+"/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","er
 ror removing user from role"):$rootScope.$broadcast("role-update-received")})},removeUserFromGroup:function(group,role){var options={method:"DELETE",endpoint:"roles/"+role+"/groups/"+group};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error removing role from the group"):$rootScope.$broadcast("role-update-received")})},createAndroidNotifier:function(name,APIkey){var options={method:"POST",endpoint:"notifiers",body:{apiKey:APIkey,name:name,provider:"google"}};this.client().request(options,function(err,data){err?(console.error(data),$rootScope.$broadcast("alert","error","error creating notifier ")):($rootScope.$broadcast("alert","success","New notifier created successfully."),$rootScope.$broadcast("notifier-update"))})},createAppleNotifier:function(file,name,environment,certificatePassword){var provider="apple",formData=new FormData;formData.append("p12Certificate",file),formData.append("name",name),formData.append("provider",provider),formDat
 a.append("environment",environment),formData.append("certificatePassword",certificatePassword||"");var options={method:"POST",endpoint:"notifiers",formData:formData};this.client().request(options,function(err,data){err?(console.error(data),$rootScope.$broadcast("alert","error","error creating notifier.")):($rootScope.$broadcast("alert","success","New notifier created successfully."),$rootScope.$broadcast("notifier-update"))})},deleteNotifier:function(name){var options={method:"DELETE",endpoint:"notifiers/"+name};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error deleting notifier"):$rootScope.$broadcast("notifier-update")})},initializeCurrentUser:function(callback){if(callback=callback||function(){},$rootScope.currentUser&&!$rootScope.currentUser.reset)return callback($rootScope.currentUser),$rootScope.$broadcast("current-user-initialized","");var options={method:"GET",endpoint:"management/users/"+this.client().get("email"),mQuery:!0};this.c
 lient().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Error getting user info"):($rootScope.currentUser=data.data,$rootScope.currentUser.profileImg=utility.get_gravatar($rootScope.currentUser.email),$rootScope.userEmail=$rootScope.currentUser.email,callback($rootScope.currentUser),$rootScope.$broadcast("current-user-initialized",$rootScope.currentUser))})},updateUser:function(user){var body=$rootScope.currentUser;body.username=user.username,body.name=user.name,body.email=user.email;var options={method:"PUT",endpoint:"management/users/"+user.uuid+"/",mQuery:!0,body:body},self=this;this.client().request(options,function(err,data){return self.client().set("email",user.email),self.client().set("username",user.username),err?$rootScope.$broadcast("user-update-error",data):($rootScope.currentUser.reset=!0,void self.initializeCurrentUser(function(){$rootScope.$broadcast("user-update-success",$rootScope.currentUser)}))})},resetUserPassword:function(user){var p
 wdata={};pwdata.oldpassword=user.oldPassword,pwdata.newpassword=user.newPassword,pwdata.username=user.username;var options={method:"PUT",endpoint:"users/"+pwdata.uuid+"/",body:pwdata};this.client().request(options,function(err){return err?$rootScope.$broadcast("alert","error","Error resetting password"):($rootScope.currentUser.oldPassword="",$rootScope.currentUser.newPassword="",void $rootScope.$broadcast("user-reset-password-success",$rootScope.currentUser))})},getOrgCredentials:function(){var options={method:"GET",endpoint:"management/organizations/"+this.client().get("orgName")+"/credentials",mQuery:!0};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error getting credentials"):$rootScope.$broadcast("org-creds-updated",data.credentials)})},regenerateOrgCredentials:function(){var options={method:"POST",endpoint:"management/organizations/"+this.client().get("orgName")+"/credentials",mQuery:!0};this.client().request(optio
 ns,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error regenerating credentials"):($rootScope.$broadcast("alert","success","Regeneration of credentials complete."),$rootScope.$broadcast("org-creds-updated",data.credentials))})},getAppCredentials:function(){var options={method:"GET",endpoint:"credentials"};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error getting credentials"):$rootScope.$broadcast("app-creds-updated",data.credentials)})},regenerateAppCredentials:function(){var options={method:"POST",endpoint:"credentials"};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error regenerating credentials"):($rootScope.$broadcast("alert","success","Regeneration of credentials complete."),$rootScope.$broadcast("app-creds-updated",data.credentials))})},signUpUser:function(orgName,userName,name,email,password){var formData={organiz
 ation:orgName,username:userName,name:name,email:email,password:password},options={method:"POST",endpoint:"management/organizations",body:formData,mQuery:!0},client=this.client();client.request(options,function(err,data){err?$rootScope.$broadcast("register-error",data):$rootScope.$broadcast("register-success",data)})},resendActivationLink:function(id){var options={method:"GET",endpoint:"management/users/"+id+"/reactivate",mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("resend-activate-error",data):$rootScope.$broadcast("resend-activate-success",data)})},getAppSettings:function(){$rootScope.$broadcast("app-settings-received",{})},getActivities:function(){this.client().request({method:"GET",endpoint:"activities",qs:{limit:200}},function(err,data){if(err)return $rootScope.$broadcast("app-activities-error",data);var entities=data.entities;entities.forEach(function(entity){entity.actor.picture?(entity.actor.picture=entity.actor.picture.replace(/^http
 :\/\/www.gravatar/i,"https://secure.gravatar"),entity.actor.picture=~entity.actor.picture.indexOf("http")?entity.actor.picture:"https://apigee.com/usergrid/img/user_profile.png"):entity.actor.picture=window.location.protocol+"//"+window.location.host+window.location.pathname+"img/user_profile.png"}),$rootScope.$broadcast("app-activities-received",data.entities)})},getEntityActivities:function(entity){var endpoint=entity.get("type")+"/"+entity.get("uuid")+"/activities",options={method:"GET",endpoint:endpoint,qs:{limit:200}};this.client().request(options,function(err,data){err&&$rootScope.$broadcast(entity.get("type")+"-activities-error",data),data.entities.forEach(function(entityInstance){entityInstance.createdDate=new Date(entityInstance.created).toUTCString()}),$rootScope.$broadcast(entity.get("type")+"-activities-received",data.entities)})},addUserActivity:function(user,content){var options={actor:{displayName:user.get("username"),uuid:user.get("uuid"),username:user.get("username"
 )},verb:"post",content:content};this.client().createUserActivity(user.get("username"),options,function(err,activity){err?$rootScope.$broadcast("user-activity-add-error",err):$rootScope.$broadcast("user-activity-add-success",activity)})},runShellQuery:function(method,path,payload){var options={verb:method,endpoint:path};payload&&(options.body=payload),this.client().request(options,function(err,data){err?$rootScope.$broadcast("shell-error",data):$rootScope.$broadcast("shell-success",data)})},addOrganization:function(user,orgName){var options={method:"POST",endpoint:"management/users/"+user.uuid+"/organizations",body:{organization:orgName},mQuery:!0},client=this.client();client.request(options,function(err,data){err?$rootScope.$broadcast("user-add-org-error",data):$rootScope.$broadcast("user-add-org-success",$rootScope.organizations)})},leaveOrganization:function(user,org){var options={method:"DELETE",endpoint:"management/users/"+user.uuid+"/organizations/"+org.uuid,mQuery:!0};this.cli
 ent().request(options,function(err,data){err?$rootScope.$broadcast("user-leave-org-error",data):(delete $rootScope.organizations[org.name],$rootScope.$broadcast("user-leave-org-success",$rootScope.organizations))
-})},httpGet:function(id,url){var deferred;return deferred=$q.defer(),$http.get(url||configuration.ITEMS_URL).success(function(data){var result;id?angular.forEach(data,function(obj){obj.id===id&&(result=obj)}):result=data,deferred.resolve(result)}).error(function(data,status,headers,config){$log.error(data,status,headers,config),reportError(data,config),deferred.reject(data)}),deferred.promise},jsonp:function(objectType,criteriaId,params,successCallback){params||(params={}),params.demoApp=$rootScope.demoData,params.access_token=getAccessToken(),params.callback="JSON_CALLBACK";var uri=$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/apm/"+objectType+"/"+criteriaId;return this.jsonpRaw(objectType,criteriaId,params,uri,successCallback)},jsonpSimple:function(objectType,appId,params){var uri=$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/apm/"+objectType+"/"+appId;return this.jsonpRaw(objectType,appId,params,uri)},calculate
 AverageRequestTimes:function(){if(!running){var self=this;running=!0,setTimeout(function(){running=!1;var length=requestTimes.length<10?requestTimes.length:10,sum=requestTimes.slice(0,length).reduce(function(a,b){return a+b}),avg=sum/length;self.averageRequestTimes=avg/1e3,self.averageRequestTimes>5&&$rootScope.$broadcast("request-times-slow",self.averageRequestTimes)},3e3)}},jsonpRaw:function(objectType,appId,params,uri,successCallback){"function"!=typeof successCallback&&(successCallback=null),uri=uri||$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/"+objectType,params||(params={});var start=(new Date).getTime(),self=this;params.access_token=getAccessToken(),params.callback="JSON_CALLBACK";var deferred=$q.defer(),diff=function(){currentRequests[uri]--,requestTimes.splice(0,0,(new Date).getTime()-start),self.calculateAverageRequestTimes()};successCallback&&$rootScope.$broadcast("ajax_loading",objectType);var reqCount=currentRequests[uri]||0;return s
 elf.averageRequestTimes>5&&reqCount>1?(setTimeout(function(){deferred.reject(new Error("query in progress"))},50),deferred):(currentRequests[uri]=(currentRequests[uri]||0)+1,$http.jsonp(uri,{params:params}).success(function(data,status,headers,config){diff(),successCallback&&(successCallback(data,status,headers,config),$rootScope.$broadcast("ajax_finished",objectType)),deferred.resolve(data)}).error(function(data,status,headers,config){diff(),$log.error("ERROR: Could not get jsonp data. "+uri),reportError(data,config),deferred.reject(data)}),deferred.promise)},resource:function(params,isArray){return $resource($rootScope.urls().DATA_URL+"/:orgname/:appname/:username/:endpoint",{},{get:{method:"JSONP",isArray:isArray,params:params},login:{method:"GET",url:$rootScope.urls().DATA_URL+"/management/token",isArray:!1,params:params},save:{url:$rootScope.urls().DATA_URL+"/"+params.orgname+"/"+params.appname,method:"PUT",isArray:!1,params:params}})},httpPost:function(url,callback,payload,hea
 ders){var accessToken=getAccessToken();payload?payload.access_token=accessToken:payload={access_token:accessToken},headers||(headers={Bearer:accessToken}),$http({method:"POST",url:url,data:payload,headers:headers}).success(function(data){callback(data)}).error(function(data,status,headers,config){reportError(data,config),callback(data)})}}}),AppServices.Directives.directive("ngFocus",["$parse",function($parse){return function(scope,element,attr){var fn=$parse(attr.ngFocus);element.bind("focus",function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}]),AppServices.Directives.directive("ngBlur",["$parse",function($parse){return function(scope,element,attr){var fn=$parse(attr.ngBlur);element.bind("blur",function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}]),AppServices.Services.factory("utility",function(){return{keys:function(o){var a=[];for(var propertyName in o)a.push(propertyName);return a},get_gravatar:function(email,size){try{var size=size||50;retu
 rn email.length?"https://secure.gravatar.com/avatar/"+MD5(email)+"?s="+size:"https://apigee.com/usergrid/img/user_profile.png"}catch(e){return"https://apigee.com/usergrid/img/user_profile.png"}},get_qs_params:function(){var queryParams={};if(window.location.search)for(var params=window.location.search.slice(1).split("&"),i=0;i<params.length;i++){var tmp=params[i].split("=");queryParams[tmp[0]]=unescape(tmp[1])}return queryParams},safeApply:function(fn){var phase=this.$root.$$phase;"$apply"==phase||"$digest"==phase?fn&&"function"==typeof fn&&fn():this.$apply(fn)}}}),AppServices.Directives.directive("ugValidate",["$rootScope",function(){return{scope:!0,restrict:"A",require:"ng-model",replace:!0,link:function(scope,element,attrs,ctrl){var validate=function(){var id=element.attr("id"),validator=id+"-validator",title=element.attr("title");if(title=title&&title.length?title:"Please enter data",$("#"+validator).remove(),ctrl.$valid)element.removeClass("has-error"),$("#"+validator).remove()
 ;else{var validatorElem='<div id="'+validator+'"><span  class="validator-error-message">'+title+"</span></div>";$("#"+id).after(validatorElem),element.addClass("has-error")}},firing=!1;element.bind("blur",function(){validate(scope,element,attrs,ctrl)}).bind("input",function(){firing||(firing=!0,setTimeout(function(){validate(scope,element,attrs,ctrl),firing=!1},500))})}}}]),AppServices.Controllers.controller("GroupsActivitiesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.activitiesSelected="active",$rootScope.selectedGroup?($rootScope.selectedGroup.activities=[],void $rootScope.selectedGroup.getActivities(function(err){err||$rootScope.$$phase||$rootScope.$apply()})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope,$location,$route){$scope.groupsCollection={},$rootScope.selectedGroup={},$scope.previous_display="none",$sc
 ope.next_display="none",$scope.hasGroups=!1,$scope.newGroup={path:"",title:""},ug.getGroups(),$scope.currentGroupsPage={},$scope.selectGroupPage=function(route){$scope.currentGroupsPage.template=$route.routes[route].templateUrl,$scope.currentGroupsPage.route=route},$scope.newGroupDialog=function(modalId){$scope.newGroup.path&&$scope.newGroup.title?(ug.createGroup($scope.removeFirstSlash($scope.newGroup.path),$scope.newGroup.title),$scope.hideModal(modalId),$scope.newGroup={path:"",title:""}):$rootScope.$broadcast("alert","error","Missing required information.")},$scope.deleteGroupsDialog=function(modalId){$scope.deleteEntities($scope.groupsCollection,"group-deleted","error deleting group"),$scope.hideModal(modalId),$scope.newGroup={path:"",title:""}},$scope.$on("group-deleted",function(){$rootScope.$broadcast("alert","success","Group deleted successfully.")}),$scope.$on("group-deleted-error",function(){ug.getGroups()}),$scope.$on("groups-create-success",function(){$rootScope.$broadc
 ast("alert","success","Group created successfully.")}),$scope.$on("groups-create-error",function(){$rootScope.$broadcast("alert","error","Error creating group. Make sure you don't have spaces in the path.")}),$scope.$on("groups-received",function(event,groups){$scope.groupBoxesSelected=!1,$scope.groupsCollection=groups,$scope.newGroup.path="",$scope.newGroup.title="",!(groups._list.length>0)||$rootScope.selectedGroup._data&&groups._list.some(function(group){return $rootScope.selectedGroup._data.uuid===group._data.uuid})||$scope.selectGroup(groups._list[0]._data.uuid),$scope.hasGroups=groups._list.length>0,$scope.received=!0,$scope.checkNextPrev(),$scope.applyScope()}),$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.groupsCollection.hasPreviousPage()&&($scope.previous_display="block"),$scope.groupsCollection.hasNextPage()&&($scope.next_display="block")},$scope.selectGroup=function
 (uuid){$rootScope.selectedGroup=$scope.groupsCollection.getEntityByUUID(uuid),$scope.currentGroupsPage.template="groups/groups-details.html",$scope.currentGroupsPage.route="/groups/details",$rootScope.$broadcast("group-selection-changed",$rootScope.selectedGroup)},$scope.getPrevious=function(){$scope.groupsCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.groupsCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.$on("group-deleted",function(){$route.reload(),$scope.master=""})}]),AppServices.Controllers.controller("GroupsDetailsCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){var selectedGroup=$rootScope.selectedGroup.clone();return $scope.detailsSelected="active",$scope.json=se
 lectedGroup._json||selectedGroup._data.stringifyJSON(),$scope.group=selectedGroup._data,$scope.group.path=0!=$scope.group.path.indexOf("/")?"/"+$scope.group.path:$scope.group.path,$scope.group.title=$scope.group.title,$rootScope.selectedGroup?($scope.$on("group-selection-changed",function(evt,selectedGroup){$scope.group.path=0!=selectedGroup._data.path.indexOf("/")?"/"+selectedGroup._data.path:selectedGroup._data.path,$scope.group.title=selectedGroup._data.title,$scope.detailsSelected="active",$scope.json=selectedGroup._json||selectedGroup._data.stringifyJSON()}),void($rootScope.saveSelectedGroup=function(){$rootScope.selectedGroup._data.title=$scope.group.title,$rootScope.selectedGroup._data.path=$scope.removeFirstSlash($scope.group.path),$rootScope.selectedGroup.save(function(err){err?$rootScope.$broadcast("alert","error","error saving group"):$rootScope.$broadcast("alert","success","group saved")})})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsMem
 bersCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.membersSelected="active",$scope.previous_display="none",$scope.next_display="none",$scope.user="",$scope.master="",$scope.hasMembers=!1,ug.getUsersTypeAhead(),$scope.usersTypeaheadValues=[],$scope.$on("users-typeahead-received",function(event,users){$scope.usersTypeaheadValues=users,$scope.applyScope()}),$scope.addGroupToUserDialog=function(modalId){if($scope.user){var path=$rootScope.selectedGroup.get("path");ug.addUserToGroup($scope.user.uuid,path),$scope.user="",$scope.hideModal(modalId)}else $rootScope.$broadcast("alert","error","Please select a user.")},$scope.removeUsersFromGroupDialog=function(modalId){$scope.deleteEntities($scope.groupsCollection.users,"group-update-received","Error removing user from group"),$scope.hideModal(modalId)},$scope.get=function(){if($rootScope.selectedGroup.get){var options={type:"groups/"+$rootScope.selectedGroup.get("path")+"/users"};$scope.g
 roupsCollection.addCollection("users",options,function(err){$scope.groupMembersSelected=!1,err?$rootScope.$broadcast("alert","error","error getting users for group"):($scope.hasMembers=$scope.groupsCollection.users._list.length>0,$scope.checkNextPrev(),$scope.applyScope())})}},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.groupsCollection.users.hasPreviousPage()&&($scope.previous_display="block"),$scope.groupsCollection.users.hasNextPage()&&($scope.next_display="block")},$rootScope.selectedGroup?($scope.get(),$scope.getPrevious=function(){$scope.groupsCollection.users.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of users"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.getNext=function(){$scope.groupsCollection.users.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error gett
 ing next page of users"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.$on("group-update-received",function(){$scope.get()}),void $scope.$on("user-added-to-group-received",function(){$scope.get()})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsRolesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.rolesSelected="active",$scope.roles_previous_display="none",$scope.roles_next_display="none",$scope.name="",$scope.master="",$scope.hasRoles=!1,$scope.hasPermissions=!1,$scope.permissions={},$scope.addGroupToRoleDialog=function(modalId){if($scope.name){var path=$rootScope.selectedGroup.get("path");ug.addGroupToRole(path,$scope.name),$scope.hideModal(modalId),$scope.name=""}else $rootScope.$broadcast("alert","error","You must specify a role name.")},$scope.leaveRoleDialog=function(modalId){for(var path=$rootScope.selectedGroup.get("path"),roles=$scope.groupsCollection.roles._list,i=0
 ;i<roles.length;i++)roles[i].checked&&ug.removeUserFromGroup(path,roles[i]._data.name);$scope.hideModal(modalId)},$scope.addGroupPermissionDialog=function(modalId){if($scope.permissions.path){var permission=$scope.createPermission(null,null,$scope.removeFirstSlash($scope.permissions.path),$scope.permissions),path=$rootScope.selectedGroup.get("path");ug.newGroupPermission(permission,path),$scope.hideModal(modalId),$scope.permissions&&($scope.permissions={})}else $rootScope.$broadcast("alert","error","You must specify a name for the permission.")},$scope.deleteGroupPermissionDialog=function(modalId){for(var path=$rootScope.selectedGroup.get("path"),permissions=$rootScope.selectedGroup.permissions,i=0;i<permissions.length;i++)permissions[i].checked&&ug.deleteGroupPermission(permissions[i].perm,path);$scope.hideModal(modalId)},$scope.resetNextPrev=function(){$scope.roles_previous_display="none",$scope.roles_next_display="none",$scope.permissions_previous_display="none",$scope.permission
 s_next_display="none"},$scope.resetNextPrev(),$scope.checkNextPrevRoles=function(){$scope.resetNextPrev(),$scope.groupsCollection.roles.hasPreviousPage()&&($scope.roles_previous_display="block"),$scope.groupsCollection.roles.hasNextPage()&&($scope.roles_next_display="block")},$scope.checkNextPrevPermissions=function(){$scope.groupsCollection.permissions.hasPreviousPage()&&($scope.permissions_previous_display="block"),$scope.groupsCollection.permissions.hasNextPage()&&($scope.permissions_next_display="block")},$scope.getRoles=function(){var path=$rootScope.selectedGroup.get("path"),options={type:"groups/"+path+"/roles"};$scope.groupsCollection.addCollection("roles",options,function(err){$scope.groupRoleSelected=!1,err?$rootScope.$broadcast("alert","error","error getting roles for group"):($scope.hasRoles=$scope.groupsCollection.roles._list.length>0,$scope.checkNextPrevRoles(),$scope.applyScope())})},$scope.getPermissions=function(){$rootScope.selectedGroup.permissions=[],$rootScope.s
 electedGroup.getPermissions(function(err){$scope.groupPermissionsSelected=!1,$scope.hasPermissions=$scope.selectedGroup.permissions.length,err||$scope.applyScope()})},$scope.getPreviousRoles=function(){$scope.groupsCollection.roles.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of roles"),$scope.checkNextPrevRoles(),$scope.applyScope()})},$scope.getNextRoles=function(){$scope.groupsCollection.roles.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of roles"),$scope.checkNextPrevRoles(),$scope.applyScope()})},$scope.getPreviousPermissions=function(){$scope.groupsCollection.permissions.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of permissions"),$scope.checkNextPrevPermissions(),$scope.applyScope()})},$scope.getNextPermissions=function(){$scope.groupsCollection.permissions.getNextPage(function(err){err&&$rootScope.$broadcast("aler
 t","error","error getting next page of permissions"),$scope.checkNextPrevPermissions(),$scope.applyScope()})},$scope.$on("role-update-received",function(){$scope.getRoles()}),$scope.$on("permission-update-received",function(){$scope.getPermissions()}),$scope.$on("groups-received",function(evt,data){$scope.groupsCollection=data,$scope.getRoles(),$scope.getPermissions()}),$rootScope.selectedGroup?(ug.getRolesTypeAhead(),void ug.getGroups()):void $location.path("/groups")}]),AppServices.Controllers.controller("ForgotPasswordCtrl",["ug","$scope","$rootScope","$location","utility",function(ug,$scope,$rootScope,$location){$rootScope.activeUI&&$location.path("/"),$scope.forgotPWiframeURL=$scope.apiUrl+"/management/users/resetpw"}]),AppServices.Controllers.controller("LoginCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){$scope.loading=!1,$scope.login={},$scope.activation={},$rootScope.gotoForgotPasswordPage=functio
 n(){$location.path("/forgot-password")},$rootScope.gotoSignUp=function(){$location.path("/register")},$scope.login=function(){var username=$scope.login.username,password=$scope.login.password;$scope.loginMessage="",$scope.loading=!0,ug.orgLogin(username,password)},$scope.$on("loginFailed",function(){$scope.loading=!1,$scope.loginMessage="Error: the username / password combination was not valid",$scope.applyScope()}),$scope.logout=function(){ug.logout(),$scope.use_sso?window.location=$rootScope.urls().LOGOUT_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]):($location.path("/login"),$scope.applyScope())},$rootScope.$on("userNotAuthenticated",function(){"/forgot-password"!==$location.path()&&($location.path("/login"),$scope.logout()),$scope.applyScope()}),$scope.$on("loginSuccesful",function(){$scope.loading=!1,$scope.login={},$location.path("/login"===$rootScope.currentPath||"/login/loading"===$rootScope.currentPath||"undefined"==typeof $rootScope.currentPath?"/or
 g-overview":$rootScope.currentPath),$scope.applyScope()}),$scope.resendActivationLink=function(modalId){var id=$scope.activation.id;ug.resendActivationLink(id),$scope.activation={},$scope.hideModal(modalId)},$scope.$on("resend-activate-success",function(){$scope.activationId="",$scope.$apply(),$rootScope.$broadcast("alert","success","Activation link sent successfully.")}),$scope.$on("resend-activate-error",function(){$rootScope.$broadcast("alert","error","Activation link failed to send.")})}]),AppServices.Controllers.controller("LogoutCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){ug.logout(),$scope.use_sso?window.location=$rootScope.urls().LOGOUT_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]):($location.path("/login"),$scope.applyScope())}]),AppServices.Controllers.controller("RegisterCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScop
 e,$routeParams,$location){$rootScope.activeUI&&$location.path("/");var init=function(){$scope.registeredUser={}};init(),$scope.cancel=function(){$location.path("/")},$scope.register=function(){var user=$scope.registeredUser.clone();user.password===user.confirmPassword?ug.signUpUser(user.orgName,user.userName,user.name,user.email,user.password):$rootScope.$broadcast("alert","error","Passwords do not match."+name)},$scope.$on("register-error",function(event,data){$scope.signUpSuccess=!1,$rootScope.$broadcast("alert","error","Error registering: "+(data&&data.error_description?data.error_description:name))}),$scope.$on("register-success",function(){$scope.registeredUser={},$scope.signUpSuccess=!0,init(),$scope.$apply()})}]),AppServices.Directives.directive("menu",["$location","$rootScope","$log",function($location,$rootScope,$log){return{link:function(scope,lElement,attrs){function setActiveElement(ele,locationPath,$rootScope,isParentClick){ele.removeClass("active");var menuItem,parentM
 enuItem,newActiveElement=ele.parent().find('a[href*="#!'+locationPath+'"]');if(0===newActiveElement.length)parentMenuItem=ele;else{menuItem=newActiveElement.parent(),menuItem.hasClass("option")?parentMenuItem=menuItem[0]:1===menuItem.size()?(parentMenuItem=newActiveElement.parent().parent().parent(),parentMenuItem.addClass("active")):(parentMenuItem=menuItem[0],menuItem=menuItem[1]);try{var menuItemCompare=parentMenuItem[0]||parentMenuItem;ele[0]!==menuItemCompare&&isParentClick&&ele.find("ul")[0]&&(ele.find("ul")[0].style.height=0);var subMenuSizer=angular.element(parentMenuItem).find(".nav-list")[0];if(subMenuSizer){var heightChecker,clientHeight=subMenuSizer.getAttribute("data-height"),heightCounter=1;clientHeight||heightChecker?(menuItem.addClass("active"),subMenuSizer.style.height=clientHeight+"px"):heightChecker=setInterval(function(){var tempHeight=subMenuSizer.getAttribute("data-height")||subMenuSizer.clientHeight;heightCounter=subMenuSizer.clientHeight,0===heightCounter&&(h
 eightCounter=1),"string"==typeof tempHeight&&(tempHeight=parseInt(tempHeight,10)),tempHeight>0&&heightCounter===tempHeight&&(subMenuSizer.setAttribute("data-height",tempHeight),menuItem.addClass("active"),subMenuSizer.style.height=tempHeight+"px",clearInterval(heightChecker)),heightCounter=tempHeight},20),$rootScope.menuExecute=!0}else menuItem.addClass("active")}catch(e){$log.error("Problem calculating size of menu",e)}}return{menuitem:menuItem,parentMenuItem:parentMenuItem}}function setupMenuState(){if(menuContext=attrs.menu,parentMenuItems=lElement.find("li.option"),0!==lElement.find("li.option.active").length&&($rootScope[menuContext+"Parent"]=lElement.find("li.option.active")),activeParentElement=$rootScope[menuContext+"Parent"]||null,activeParentElement&&(activeParentElement=angular.element(activeParentElement)),menuItems=lElement.find("li.option li"),locationPath=$location.path(),activeParentElement&&(activeMenuElement=angular.element(activeParentElement),activeMenuElement=ac
 tiveMenuElement.find("li.active"),activeMenuElement.removeClass("active"),activeParentElement.find("a")[0])){subMenuContext=activeParentElement.find("a")[0].href.split("#!")[1];var tempMenuContext=subMenuContext.split("/");subMenuContext="/"+tempMenuContext[1],tempMenuContext.length>2&&(subMenuContext+="/"+tempMenuContext[2])}var activeElements;""!==locationPath&&-1===locationPath.indexOf(subMenuContext)?(activeElements=setActiveElement(activeParentElement,locationPath,scope),$rootScope[menuContext+"Parent"]=activeElements.parentMenuItem,$rootScope[menuContext+"Menu"]=activeElements.menuitem):setActiveElement(activeParentElement,subMenuContext,scope)}var menuContext,parentMenuItems,activeParentElement,menuItems,activeMenuElement,locationPath,subMenuContext,bound=!1;scope.$on("$routeChangeSuccess",function(){setupMenuState(),bound||(bound=!0,parentMenuItems.bind("click",function(cevent){var previousParentSelection=angular.element($rootScope[menuContext+"Parent"]),targetPath=angular.e
 lement(cevent.currentTarget).find("> a")[0].href.split("#!")[1];previousParentSelection.find(".nav > li").removeClass("active");var activeElements=setActiveElement(previousParentSelection,targetPath,scope,!0);$rootScope[menuContext+"Parent"]=activeElements.parentMenuItem,$rootScope[menuContext+"Menu"]=activeElements.menuitem,scope.$broadcast("menu-selection")}),menuItems.bind("click",function(cevent){var previousMenuSelection=$rootScope[menuContext+"Menu"],targetElement=cevent.currentTarget;previousMenuSelection!==targetElement&&(previousMenuSelection?angular.element(previousMenuSelection).removeClass("active"):activeMenuElement.removeClass("active"),scope.$apply(function(){angular.element($rootScope[menuContext]).addClass("active")}),$rootScope[menuContext+"Menu"]=targetElement,angular.element($rootScope[menuContext+"Parent"]).find("a")[0].setAttribute("href",angular.element(cevent.currentTarget).find("a")[0].href))}))})}}}]),AppServices.Directives.directive("timeFilter",["$locatio
 n","$routeParams","$rootScope",function($location,$routeParams,$rootScope){return{restrict:"A",transclude:!0,template:'<li ng-repeat="time in timeFilters" class="filterItem"><a ng-click="changeTimeFilter(time)">{{time.label}}</a></li>',link:function(scope,lElement,attrs){var menuContext=attrs.filter;scope.changeTimeFilter=function(newTime){$rootScope.selectedtimefilter=newTime,$routeParams.timeFilter=newTime.value},lElement.bind("click",function(cevent){menuBindClick(scope,lElement,cevent,menuContext)})}}}]),AppServices.Directives.directive("chartFilter",["$location","$routeParams","$rootScope",function($location,$routeParams,$rootScope){return{restrict:"ACE",scope:"=",template:'<li ng-repeat="chart in chartCriteriaOptions" class="filterItem"><a ng-click="changeChart(chart)">{{chart.chartName}}</a></li>',link:function(scope,lElement,attrs){var menuContext=attrs.filter;scope.changeChart=function(newChart){$rootScope.selectedChartCriteria=newCh

<TRUNCATED>

[25/50] [abbrv] git commit: updating dist artifacts

Posted by sn...@apache.org.
updating dist artifacts


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

Branch: refs/pull/60/head
Commit: 406541d3c18e0d0a5772a61f8b19d2bbe51eb1da
Parents: c6f1aa1
Author: ryan bridges <rb...@apigee.com>
Authored: Mon Mar 3 16:54:16 2014 -0500
Committer: ryan bridges <rb...@apigee.com>
Committed: Mon Mar 3 16:54:16 2014 -0500

----------------------------------------------------------------------
 sdks/html5-javascript/usergrid.js     | 4 ++--
 sdks/html5-javascript/usergrid.min.js | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/406541d3/sdks/html5-javascript/usergrid.js
----------------------------------------------------------------------
diff --git a/sdks/html5-javascript/usergrid.js b/sdks/html5-javascript/usergrid.js
index d67cdde..f40e7d3 100644
--- a/sdks/html5-javascript/usergrid.js
+++ b/sdks/html5-javascript/usergrid.js
@@ -1,4 +1,4 @@
-/*! usergrid@0.0.0 2014-02-14 */
+/*! usergrid@0.0.0 2014-03-03 */
 var UsergridEventable = function() {
     throw Error("'UsergridEventable' is not intended to be invoked directly");
 };
@@ -768,7 +768,7 @@ function doCallback(callback, params, context) {
     Usergrid.Client.prototype.createCollection = function(options, callback) {
         options.client = this;
         var collection = new Usergrid.Collection(options, function(err, response, collection) {
-            doCallback(callback, [ err, collection, response ], collection);
+            doCallback(callback, [ err, collection, response ]);
         });
     };
     /*

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/406541d3/sdks/html5-javascript/usergrid.min.js
----------------------------------------------------------------------
diff --git a/sdks/html5-javascript/usergrid.min.js b/sdks/html5-javascript/usergrid.min.js
index e14bb04..cb194f3 100644
--- a/sdks/html5-javascript/usergrid.min.js
+++ b/sdks/html5-javascript/usergrid.min.js
@@ -1,3 +1,3 @@
-/*! usergrid@0.0.0 2014-02-14 */
+/*! usergrid@0.0.0 2014-03-03 */
 function extend(subClass,superClass){var F=function(){};return F.prototype=superClass.prototype,subClass.prototype=new F,subClass.prototype.constructor=subClass,subClass.superclass=superClass.prototype,superClass.prototype.constructor==Object.prototype.constructor&&(superClass.prototype.constructor=superClass),subClass}function NOOP(){}function isValidUrl(url){if(!url)return!1;var doc,base,anchor,isValid=!1;try{doc=document.implementation.createHTMLDocument(""),base=doc.createElement("base"),base.href=base||window.lo,doc.head.appendChild(base),anchor=doc.createElement("a"),anchor.href=url,doc.body.appendChild(anchor),isValid=!(""===anchor.href)}catch(e){console.error(e)}finally{return doc.head.removeChild(base),doc.body.removeChild(anchor),base=null,anchor=null,doc=null,isValid}}function isUUID(uuid){return uuid?uuidValueRegex.test(uuid):!1}function encodeParams(params){var queryString;return params&&Object.keys(params)&&(queryString=[].slice.call(arguments).reduce(function(a,b){ret
 urn a.concat(b instanceof Array?b:[b])},[]).filter(function(c){return"object"==typeof c}).reduce(function(p,c){return c instanceof Array?p.push(c):p=p.concat(Object.keys(c).map(function(key){return[key,c[key]]})),p},[]).reduce(function(p,c){return 2===c.length?p.push(c):p=p.concat(c),p},[]).reduce(function(p,c){return c[1]instanceof Array?c[1].forEach(function(v){p.push([c[0],v])}):p.push(c),p},[]).map(function(c){return c[1]=encodeURIComponent(c[1]),c.join("=")}).join("&")),queryString}function isFunction(f){return f&&null!==f&&"function"==typeof f}function doCallback(callback,params,context){var returnValue;return isFunction(callback)&&(params||(params=[]),context||(context=this),params.push(context),returnValue=callback.apply(context,params)),returnValue}var UsergridEventable=function(){throw Error("'UsergridEventable' is not intended to be invoked directly")};UsergridEventable.prototype={bind:function(event,fn){this._events=this._events||{},this._events[event]=this._events[event
 ]||[],this._events[event].push(fn)},unbind:function(event,fn){this._events=this._events||{},event in this._events!=!1&&this._events[event].splice(this._events[event].indexOf(fn),1)},trigger:function(event){if(this._events=this._events||{},event in this._events!=!1)for(var i=0;i<this._events[event].length;i++)this._events[event][i].apply(this,Array.prototype.slice.call(arguments,1))}},UsergridEventable.mixin=function(destObject){for(var props=["bind","unbind","trigger"],i=0;i<props.length;i++)props[i]in destObject.prototype&&(console.warn("overwriting '"+props[i]+"' on '"+destObject.name+"'."),console.warn("the previous version can be found at '_"+props[i]+"' on '"+destObject.name+"'."),destObject.prototype["_"+props[i]]=destObject.prototype[props[i]]),destObject.prototype[props[i]]=UsergridEventable.prototype[props[i]]},function(){function Logger(name){this.logEnabled=!0,this.init(name,!0)}var name="Logger",global=this,overwrittenName=global[name];return Logger.METHODS=["log","error
 ","warn","info","debug","assert","clear","count","dir","dirxml","exception","group","groupCollapsed","groupEnd","profile","profileEnd","table","time","timeEnd","trace"],Logger.prototype.init=function(name,logEnabled){this.name=name||"UNKNOWN",this.logEnabled=logEnabled||!0;var addMethod=function(method){this[method]=this.createLogMethod(method)}.bind(this);Logger.METHODS.forEach(addMethod)},Logger.prototype.createLogMethod=function(method){return Logger.prototype.log.bind(this,method)},Logger.prototype.prefix=function(method,args){var prepend="["+method.toUpperCase()+"]["+name+"]:	";return-1!==["log","error","warn","info"].indexOf(method)&&("string"==typeof args[0]?args[0]=prepend+args[0]:args.unshift(prepend)),args},Logger.prototype.log=function(){var args=[].slice.call(arguments);method=args.shift(),-1===Logger.METHODS.indexOf(method)&&(method="log"),this.logEnabled&&console&&console[method]&&(args=this.prefix(method,args),console[method].apply(console,args))},Logger.prototype.set
 LogEnabled=function(logEnabled){this.logEnabled=logEnabled||!0},Logger.mixin=function(destObject){destObject.__logger=new Logger(destObject.name||"UNKNOWN");var addMethod=function(method){method in destObject.prototype&&(console.warn("overwriting '"+method+"' on '"+destObject.name+"'."),console.warn("the previous version can be found at '_"+method+"' on '"+destObject.name+"'."),destObject.prototype["_"+method]=destObject.prototype[method]),destObject.prototype[method]=destObject.__logger.createLogMethod(method)};Logger.METHODS.forEach(addMethod)},global[name]=Logger,global[name].noConflict=function(){return overwrittenName&&(global[name]=overwrittenName),Logger},global[name]}(),function(global){function Promise(){this.complete=!1,this.error=null,this.result=null,this.callbacks=[]}var name="Promise",overwrittenName=global[name];return Promise.prototype.create=function(){return new Promise},Promise.prototype.then=function(callback,context){var f=function(){return callback.apply(contex
 t,arguments)};this.complete?f(this.error,this.result):this.callbacks.push(f)},Promise.prototype.done=function(error,result){if(this.complete=!0,this.error=error,this.result=result,this.callbacks){for(var i=0;i<this.callbacks.length;i++)this.callbacks[i](error,result);this.callbacks.length=0}},Promise.join=function(promises){function notifier(i){return function(error,result){completed+=1,errors[i]=error,results[i]=result,completed===total&&p.done(errors,results)}}for(var p=new Promise,total=promises.length,completed=0,errors=[],results=[],i=0;total>i;i++)promises[i]().then(notifier(i));return p},Promise.chain=function(promises,error,result){var p=new Promise;return null===promises||0===promises.length?p.done(error,result):promises[0](error,result).then(function(res,err){promises.splice(0,1),promises?Promise.chain(promises,res,err).then(function(r,e){p.done(r,e)}):p.done(res,err)}),p},global[name]=Promise,global[name].noConflict=function(){return overwrittenName&&(global[name]=overwri
 ttenName),Promise},global[name]}(this),function(){function partial(){var args=Array.prototype.slice.call(arguments),fn=args.shift();return fn.bind(this,args)}function Ajax(){function encode(data){var result="";if("string"==typeof data)result=data;else{var e=encodeURIComponent;for(var i in data)data.hasOwnProperty(i)&&(result+="&"+e(i)+"="+e(data[i]))}return result}function request(m,u,d){var timeout,p=new Promise;return self.logger.time(m+" "+u),function(xhr){xhr.onreadystatechange=function(){4^this.readyState||(self.logger.timeEnd(m+" "+u),clearTimeout(timeout),p.done(null,this))},xhr.onerror=function(response){clearTimeout(timeout),p.done(response,null)},xhr.oncomplete=function(){clearTimeout(timeout),self.logger.timeEnd(m+" "+u),self.info("%s request to %s returned %s",m,u,this.status)},xhr.open(m,u),d&&("object"==typeof d&&(d=JSON.stringify(d)),xhr.setRequestHeader("Content-Type","application/json"),xhr.setRequestHeader("Accept","application/json")),timeout=setTimeout(function()
 {xhr.abort(),p.done("API Call timed out.",null)},3e4),xhr.send(encode(d))}(new XMLHttpRequest),p}this.logger=new global.Logger(name);var self=this;this.request=request,this.get=partial(request,"GET"),this.post=partial(request,"POST"),this.put=partial(request,"PUT"),this.delete=partial(request,"DELETE")}var exports,name="Ajax",global=this,overwrittenName=global[name];return global[name]=new Ajax,global[name].noConflict=function(){return overwrittenName&&(global[name]=overwrittenName),exports},global[name]}(),window.console=window.console||{},window.console.log=window.console.log||function(){};var uuidValueRegex=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;!function(global){function Usergrid(){this.logger=new Logger(name)}var name="Usergrid",overwrittenName=global[name];Usergrid.isValidEndpoint=function(){return!0};var VALID_REQUEST_METHODS=["GET","POST","PUT","DELETE"];return Usergrid.Request=function(method,endpoint,query_params,data,callback){var 
 p=new Promise;if(this.logger=new global.Logger("Usergrid.Request"),this.logger.time("process request "+method+" "+endpoint),this.endpoint=endpoint+"?"+encodeParams(query_params),this.method=method.toUpperCase(),this.data="object"==typeof data?JSON.stringify(data):data,-1===VALID_REQUEST_METHODS.indexOf(this.method))throw new UsergridInvalidHTTPMethodError("invalid request method '"+this.method+"'");if(!isValidUrl(this.endpoint))throw this.logger.error(endpoint,this.endpoint,/^https:\/\//.test(endpoint)),new UsergridInvalidURIError("The provided endpoint is not valid: "+this.endpoint);var request=function(){return Ajax.request(this.method,this.endpoint,this.data)}.bind(this),response=function(err,request){return new Usergrid.Response(err,request)}.bind(this),oncomplete=function(err,response){p.done(err,response),this.logger.info("REQUEST",err,response),doCallback(callback,[err,response]),this.logger.timeEnd("process request "+method+" "+endpoint)}.bind(this);return Promise.chain([req
 uest,response]).then(oncomplete),p},Usergrid.Response=function(err,response){var p=new Promise,data=null;try{data=JSON.parse(response.responseText)}catch(e){data={}}switch(Object.keys(data).forEach(function(key){Object.defineProperty(this,key,{value:data[key],enumerable:!0})}.bind(this)),Object.defineProperty(this,"logger",{enumerable:!1,configurable:!1,writable:!1,value:new global.Logger(name)}),Object.defineProperty(this,"success",{enumerable:!1,configurable:!1,writable:!0,value:!0}),Object.defineProperty(this,"err",{enumerable:!1,configurable:!1,writable:!0,value:err}),Object.defineProperty(this,"status",{enumerable:!1,configurable:!1,writable:!0,value:parseInt(response.status)}),Object.defineProperty(this,"statusGroup",{enumerable:!1,configurable:!1,writable:!0,value:this.status-this.status%100}),this.statusGroup){case 200:this.success=!0;break;case 400:case 500:case 300:case 100:default:this.success=!1}return this.success?p.done(null,this):p.done(UsergridError.fromResponse(data
 ),this),p},Usergrid.Response.prototype.getEntities=function(){var entities=[];return this.success&&(entities=this.data?this.data.entities:this.entities),entities},Usergrid.Response.prototype.getEntity=function(){var entities=this.getEntities();return entities[0]},Usergrid.VERSION=Usergrid.USERGRID_SDK_VERSION="0.10.08",global[name]=Usergrid,global[name].noConflict=function(){return overwrittenName&&(global[name]=overwrittenName),Usergrid},global[name]}(this),function(){var exports,name="Client",global=this,overwrittenName=global[name];return Usergrid.Client=function(options){this.URI=options.URI||"https://api.usergrid.com",options.orgName&&this.set("orgName",options.orgName),options.appName&&this.set("appName",options.appName),this.buildCurl=options.buildCurl||!1,this.logging=options.logging||!1,this._callTimeout=options.callTimeout||3e4,this._callTimeoutCallback=options.callTimeoutCallback||null,this.logoutCallback=options.logoutCallback||null},Usergrid.Client.prototype.request=fun
 ction(options,callback){var uri,method=options.method||"GET",endpoint=options.endpoint,body=options.body||{},qs=options.qs||{},mQuery=options.mQuery||!1,orgName=this.get("orgName"),appName=this.get("appName"),logoutCallback=function(){return"function"==typeof this.logoutCallback?this.logoutCallback(!0,"no_org_or_app_name_specified"):void 0}.bind(this);if(!mQuery&&!orgName&&!appName)return logoutCallback();uri=mQuery?this.URI+"/"+endpoint:this.URI+"/"+orgName+"/"+appName+"/"+endpoint,this.getToken()&&(qs.access_token=this.getToken());new Usergrid.Request(method,uri,qs,body,function(err,response){return-1!==["auth_expired_session_token","auth_missing_credentials","auth_unverified_oath","expired_token","unauthorized","auth_invalid"].indexOf(response.error)?logoutCallback():void doCallback(callback,[err,response])})},Usergrid.Client.prototype.buildAssetURL=function(uuid){var self=this,qs={},assetURL=this.URI+"/"+this.orgName+"/"+this.appName+"/assets/"+uuid+"/data";self.getToken()&&(qs.
 access_token=self.getToken());var encoded_params=encodeParams(qs);return encoded_params&&(assetURL+="?"+encoded_params),assetURL},Usergrid.Client.prototype.createGroup=function(options,callback){var getOnExist=options.getOnExist||!1;options={path:options.path,client:this,data:options};var group=new Usergrid.Group(options);group.fetch(function(err,data){var okToSave=err&&-1!==["service_resource_not_found","no_name_specified","null_pointer"].indexOf(err.name)||!err&&getOnExist;okToSave?group.save(function(err,data){doCallback(callback,[err,group,data])}):doCallback(callback,[null,group,data])})},Usergrid.Client.prototype.createEntity=function(options,callback){var getOnExist=options.getOnExist||!1;delete options.getOnExist;var entity_data={client:this,data:options},entity=new Usergrid.Entity(entity_data);entity.fetch(function(err,data){var common_errors=["service_resource_not_found","no_name_specified","null_pointer"],okToSave=!err&&getOnExist||err&&err.name&&-1!==common_errors.indexO
 f(err.name);okToSave?(entity.set(entity_data.data),entity.save(function(err,data){doCallback(callback,[err,entity,data])})):doCallback(callback,[null,entity,data])})},Usergrid.Client.prototype.getEntity=function(options,callback){var options={client:this,data:options},entity=new Usergrid.Entity(options);entity.fetch(function(err,data){doCallback(callback,[err,entity,data])})},Usergrid.Client.prototype.restoreEntity=function(serializedObject){var data=JSON.parse(serializedObject),options={client:this,data:data},entity=new Usergrid.Entity(options);return entity},Usergrid.Client.prototype.createCollection=function(options,callback){options.client=this;var collection=new Usergrid.Collection(options,function(err,data){doCallback(callback,[err,collection,data])})},Usergrid.Client.prototype.restoreCollection=function(serializedObject){var data=JSON.parse(serializedObject);data.client=this;var collection=new Usergrid.Collection(data);return collection},Usergrid.Client.prototype.getFeedForUs
 er=function(username,callback){var options={method:"GET",endpoint:"users/"+username+"/feed"};this.request(options,function(err,data){err?doCallback(callback,[err]):doCallback(callback,[err,data,data.getEntities()])})},Usergrid.Client.prototype.createUserActivity=function(user,options,callback){options.type="users/"+user+"/activities";var options={client:this,data:options},entity=new Usergrid.Entity(options);entity.save(function(err){doCallback(callback,[err,entity])})},Usergrid.Client.prototype.createUserActivityWithEntity=function(user,content,callback){var username=user.get("username"),options={actor:{displayName:username,uuid:user.get("uuid"),username:username,email:user.get("email"),picture:user.get("picture"),image:{duration:0,height:80,url:user.get("picture"),width:80}},verb:"post",content:content};this.createUserActivity(username,options,callback)},Usergrid.Client.prototype.calcTimeDiff=function(){var seconds=0,time=this._end-this._start;try{seconds=(time/10/60).toFixed(2)}ca
 tch(e){return 0}return seconds},Usergrid.Client.prototype.setToken=function(token){this.set("token",token)},Usergrid.Client.prototype.getToken=function(){return this.get("token")},Usergrid.Client.prototype.setObject=function(key,value){value&&(value=JSON.stringify(value)),this.set(key,value)},Usergrid.Client.prototype.set=function(key,value){var keyStore="apigee_"+key;this[key]=value,"undefined"!=typeof Storage&&(value?localStorage.setItem(keyStore,value):localStorage.removeItem(keyStore))},Usergrid.Client.prototype.getObject=function(key){return JSON.parse(this.get(key))},Usergrid.Client.prototype.get=function(key){var keyStore="apigee_"+key,value=null;return this[key]?value=this[key]:"undefined"!=typeof Storage&&(value=localStorage.getItem(keyStore)),value},Usergrid.Client.prototype.signup=function(username,password,email,name,callback){var options={type:"users",username:username,password:password,email:email,name:name};this.createEntity(options,callback)},Usergrid.Client.prototyp
 e.login=function(username,password,callback){var self=this,options={method:"POST",endpoint:"token",body:{username:username,password:password,grant_type:"password"}};self.request(options,function(err,data){var user={};if(err)self.logging&&console.log("error trying to log user in");else{var options={client:self,data:data.user};user=new Usergrid.Entity(options),self.setToken(data.access_token)}doCallback(callback,[err,data,user])})},Usergrid.Client.prototype.reAuthenticateLite=function(callback){var self=this,options={method:"GET",endpoint:"management/me",mQuery:!0};this.request(options,function(err,response){err&&self.logging?console.log("error trying to re-authenticate user"):self.setToken(response.data.access_token),doCallback(callback,[err])})},Usergrid.Client.prototype.reAuthenticate=function(email,callback){var self=this,options={method:"GET",endpoint:"management/users/"+email,mQuery:!0};this.request(options,function(err,response){var data,organizations={},applications={},user={}
 ;if(err&&self.logging)console.log("error trying to full authenticate user");else{data=response.data,self.setToken(data.token),self.set("email",data.email),localStorage.setItem("accessToken",data.token),localStorage.setItem("userUUID",data.uuid),localStorage.setItem("userEmail",data.email);var userData={username:data.username,email:data.email,name:data.name,uuid:data.uuid},options={client:self,data:userData};user=new Usergrid.Entity(options),organizations=data.organizations;var org="";try{var existingOrg=self.get("orgName");org=organizations[existingOrg]?organizations[existingOrg]:organizations[Object.keys(organizations)[0]],self.set("orgName",org.name)}catch(e){err=!0,self.logging&&console.log("error selecting org")}applications=self.parseApplicationsArray(org),self.selectFirstApp(applications),self.setObject("organizations",organizations),self.setObject("applications",applications)}doCallback(callback,[err,data,user,organizations,applications],self)})},Usergrid.Client.prototype.log
 inFacebook=function(facebookToken,callback){var self=this,options={method:"GET",endpoint:"auth/facebook",qs:{fb_access_token:facebookToken}};this.request(options,function(err,data){var user={};if(err&&self.logging)console.log("error trying to log user in");else{var options={client:self,data:data.user};user=new Usergrid.Entity(options),self.setToken(data.access_token)}doCallback(callback,[err,data,user],self)})},Usergrid.Client.prototype.getLoggedInUser=function(callback){if(this.getToken()){var self=this,options={method:"GET",endpoint:"users/me"};this.request(options,function(err,data){if(err)self.logging&&console.log("error trying to log user in"),doCallback(callback,[err,data,null],self);else{var options={client:self,data:data.entities[0]},user=new Usergrid.Entity(options);doCallback(callback,[null,data,user],self)}})}else callback(!0,null,null)},Usergrid.Client.prototype.isLoggedIn=function(){var token=this.getToken();return"undefined"!=typeof token&&null!==token},Usergrid.Client
 .prototype.logout=function(){this.setToken()},Usergrid.Client.prototype.buildCurlCall=function(options){var curl=["curl"],method=(options.method||"GET").toUpperCase(),body=options.body,uri=options.uri;return curl.push("-X"),curl.push(["POST","PUT","DELETE"].indexOf(method)>=0?method:"GET"),curl.push(uri),"object"==typeof body&&Object.keys(body).length>0&&-1!==["POST","PUT"].indexOf(method)&&(curl.push("-d"),curl.push("'"+JSON.stringify(body)+"'")),curl=curl.join(" "),console.log(curl),curl},Usergrid.Client.prototype.getDisplayImage=function(email,picture,size){size=size||50;var image="https://apigee.com/usergrid/images/user_profile.png";try{picture?image=picture:email.length&&(image="https://secure.gravatar.com/avatar/"+MD5(email)+"?s="+size+encodeURI("&d=https://apigee.com/usergrid/images/user_profile.png"))}catch(e){}finally{return image}},global[name]=Usergrid.Client,global[name].noConflict=function(){return overwrittenName&&(global[name]=overwrittenName),exports},global[name]}()
 ;var ENTITY_SYSTEM_PROPERTIES=["metadata","created","modified","oldpassword","newpassword","type","activated","uuid"];Usergrid.Entity=function(options){options&&(this._data=options.data||{},this._client=options.client||{})},Usergrid.Entity.isEntity=function(obj){return obj&&obj instanceof Usergrid.Entity},Usergrid.Entity.isPersistedEntity=function(obj){return isEntity(obj)&&isUUID(obj.get("uuid"))},Usergrid.Entity.prototype.serialize=function(){return JSON.stringify(this._data)},Usergrid.Entity.prototype.get=function(key){var value;if(0===arguments.length?value=this._data:arguments.length>1&&(key=[].slice.call(arguments).reduce(function(p,c){return c instanceof Array?p=p.concat(c):p.push(c),p},[])),key instanceof Array){var self=this;value=key.map(function(k){return self.get(k)})}else"undefined"!=typeof key&&(value=this._data[key]);return value},Usergrid.Entity.prototype.set=function(key,value){if("object"==typeof key)for(var field in key)this._data[field]=key[field];else"string"==t
 ypeof key?null===value?delete this._data[key]:this._data[key]=value:this._data={}},Usergrid.Entity.prototype.getEndpoint=function(){var name,type=this.get("type"),nameProperties=["uuid","name"];if(void 0===type)throw new UsergridError("cannot fetch entity, no entity type specified","no_type_specified");("users"===type||"user"===type)&&nameProperties.unshift("username");var names=this.get(nameProperties).filter(function(x){return null!=x&&"undefined"!=typeof x});return 0===names.length?type:(name=names.shift(),[type,name].join("/"))},Usergrid.Entity.prototype.save=function(callback){var self=this,type=this.get("type"),method="POST",entityId=this.get("uuid"),data={},entityData=this.get(),password=this.get("password"),oldpassword=this.get("oldpassword"),newpassword=this.get("newpassword"),options={method:method,endpoint:type};entityId&&(options.method="PUT",options.endpoint+="/"+entityId),Object.keys(entityData).filter(function(key){return-1===ENTITY_SYSTEM_PROPERTIES.indexOf(key)}).fo
 rEach(function(key){data[key]=entityData[key]}),options.body=data,this._client.request(options,function(err,response){var entity=response.getEntity();if(entity&&(self.set(entity),self.set("type",/^\//.test(response.path)?response.path.substring(1):response.path)),self.set("password",null),self.set("oldpassword",null),self.set("newpassword",null),err&&self._client.logging)console.log("could not save entity"),doCallback(callback,[err,response,self]);else if(/^users?/.test(self.get("type"))&&oldpassword&&newpassword){var options={method:"PUT",endpoint:type+"/"+self.get("uuid")+"/password",body:{uuid:self.get("uuid"),username:self.get("username"),password:password,oldpassword:oldpassword,newpassword:newpassword}};self._client.request(options,function(err,data){err&&self._client.logging&&console.log("could not update user"),self.set({password:null,oldpassword:null,newpassword:null}),doCallback(callback,[err,data,self])})}else doCallback(callback,[err,response,self])})},Usergrid.Entity.pr
 ototype.fetch=function(callback){var endpoint,self=this;endpoint=this.getEndpoint();var options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,response){var entity=response.getEntity();entity&&self.set(entity),doCallback(callback,[err,entity,self])})},Usergrid.Entity.prototype.destroy=function(callback){var self=this,endpoint=this.getEndpoint(),options={method:"DELETE",endpoint:endpoint};this._client.request(options,function(err,data){err||self.set(null),doCallback(callback,[err,data])})},Usergrid.Entity.prototype.connect=function(connection,entity,callback){var error,self=this,connecteeType=entity.get("type"),connectee=this.getEntityId(entity);if(!connectee)return void("function"==typeof callback&&(error="Error trying to delete object - no uuid specified.",self._client.logging&&console.log(error),doCallback(callback,[!0,error],self)));var connectorType=this.get("type"),connector=this.getEntityId(this);if(!connector)return void("function"==typeof callback
 &&(error="Error in connect - no uuid specified.",self._client.logging&&console.log(error),doCallback(callback,[!0,error],self)));var endpoint=connectorType+"/"+connector+"/"+connection+"/"+connecteeType+"/"+connectee,options={method:"POST",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("entity could not be connected"),doCallback(callback,[err,data],self)})},Usergrid.Entity.prototype.getEntityId=function(entity){var id=!1;return isUUID(entity.get("uuid"))?id=entity.get("uuid"):"users"===this.get("type")?id=entity.get("username"):entity.get("name")&&(id=entity.get("name")),id},Usergrid.Entity.prototype.getConnections=function(connection,callback){var self=this,connectorType=this.get("type"),connector=this.getEntityId(this);if(connector){var endpoint=connectorType+"/"+connector+"/"+connection+"/",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("enti
 ty could not be connected"),self[connection]={};for(var length=data&&data.entities?data.entities.length:0,i=0;length>i;i++)"user"===data.entities[i].type?self[connection][data.entities[i].username]=data.entities[i]:self[connection][data.entities[i].name]=data.entities[i];doCallback(callback,[err,data,data.entities],self)})}else if("function"==typeof callback){var error="Error in getConnections - no uuid specified.";self._client.logging&&console.log(error),doCallback(callback,[!0,error],self)}},Usergrid.Entity.prototype.getGroups=function(callback){var self=this,endpoint="users/"+this.get("uuid")+"/groups",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("entity could not be connected"),self.groups=data.entities,doCallback(callback,[err,data,data.entities],self)})},Usergrid.Entity.prototype.getActivities=function(callback){var self=this,endpoint=this.get("type")+"/"+this.get("uuid")+"/activities",options={
 method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("entity could not be connected");for(var entity in data.entities)data.entities[entity].createdDate=new Date(data.entities[entity].created).toUTCString();self.activities=data.entities,doCallback(callback,[err,data,data.entities],self)})},Usergrid.Entity.prototype.getFollowing=function(callback){var self=this,endpoint="users/"+this.get("uuid")+"/following",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("could not get user following");for(var entity in data.entities){data.entities[entity].createdDate=new Date(data.entities[entity].created).toUTCString();var image=self._client.getDisplayImage(data.entities[entity].email,data.entities[entity].picture);data.entities[entity]._portal_image_icon=image}self.following=data.entities,doCallback(callback,[err,data,data.entities],self)})},Usergrid.Ent
 ity.prototype.getFollowers=function(callback){var self=this,endpoint="users/"+this.get("uuid")+"/followers",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("could not get user followers");for(var entity in data.entities){data.entities[entity].createdDate=new Date(data.entities[entity].created).toUTCString();var image=self._client.getDisplayImage(data.entities[entity].email,data.entities[entity].picture);data.entities[entity]._portal_image_icon=image}self.followers=data.entities,doCallback(callback,[err,data,data.entities],self)})},Usergrid.Entity.prototype.getRoles=function(callback){var self=this,endpoint=this.get("type")+"/"+this.get("uuid")+"/roles",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("could not get user roles"),self.roles=data.entities,doCallback(callback,[err,data,data.entities],self)})},Usergrid.Entity.proto
 type.getPermissions=function(callback){var self=this,endpoint=this.get("type")+"/"+this.get("uuid")+"/permissions",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("could not get user permissions");var permissions=[];if(data.data){var perms=data.data,count=0;for(var i in perms){count++;var perm=perms[i],parts=perm.split(":"),ops_part="",path_part=parts[0];parts.length>1&&(ops_part=parts[0],path_part=parts[1]),ops_part.replace("*","get,post,put,delete");var ops=ops_part.split(","),ops_object={};ops_object.get="no",ops_object.post="no",ops_object.put="no",ops_object.delete="no";for(var j in ops)ops_object[ops[j]]="yes";permissions.push({operations:ops_object,path:path_part,perm:perm})}}self.permissions=permissions,doCallback(callback,[err,data,data.entities],self)})},Usergrid.Entity.prototype.disconnect=function(connection,entity,callback){var error,self=this,connecteeType=entity.get("type"),connectee=this.
 getEntityId(entity);if(!connectee)return void("function"==typeof callback&&(error="Error trying to delete object - no uuid specified.",self._client.logging&&console.log(error),doCallback(callback,[!0,error],self)));var connectorType=this.get("type"),connector=this.getEntityId(this);if(!connector)return void("function"==typeof callback&&(error="Error in connect - no uuid specified.",self._client.logging&&console.log(error),doCallback(callback,[!0,error],self)));var endpoint=connectorType+"/"+connector+"/"+connection+"/"+connecteeType+"/"+connectee,options={method:"DELETE",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("entity could not be disconnected"),doCallback(callback,[err,data],self)})},Usergrid.Collection=function(options,callback){if(options&&(this._client=options.client,this._type=options.type,this.qs=options.qs||{},this._list=options.list||[],this._iterator=options.iterator||-1,this._previous=options.previous||[],th
 is._next=options.next||null,this._cursor=options.cursor||null,options.list))for(var count=options.list.length,i=0;count>i;i++){var entity=this._client.restoreEntity(options.list[i]);this._list[i]=entity}callback&&this.fetch(callback)},Usergrid.isCollection=function(obj){return obj&&obj instanceof Usergrid.Collection},Usergrid.Collection.prototype.serialize=function(){var data={};data.type=this._type,data.qs=this.qs,data.iterator=this._iterator,data.previous=this._previous,data.next=this._next,data.cursor=this._cursor,this.resetEntityPointer();var i=0;for(data.list=[];this.hasNextEntity();){var entity=this.getNextEntity();data.list[i]=entity.serialize(),i++}return data=JSON.stringify(data)},Usergrid.Collection.prototype.addCollection=function(collectionName,options,callback){self=this,options.client=this._client;var collection=new Usergrid.Collection(options,function(err){if("function"==typeof callback){for(collection.resetEntityPointer();collection.hasNextEntity();){var user=collect
 ion.getNextEntity(),image=(user.get("email"),self._client.getDisplayImage(user.get("email"),user.get("picture")));user._portal_image_icon=image}self[collectionName]=collection,doCallback(callback,[err,collection],self)}})},Usergrid.Collection.prototype.fetch=function(callback){var self=this,qs=this.qs;this._cursor?qs.cursor=this._cursor:delete qs.cursor;var options={method:"GET",endpoint:this._type,qs:this.qs};this._client.request(options,function(err,data){if(err&&self._client.logging)console.log("error getting collection");else{var cursor=data.cursor||null;if(self.saveCursor(cursor),data.entities){self.resetEntityPointer();var count=data.entities.length;self._list=[];for(var i=0;count>i;i++){var uuid=data.entities[i].uuid;if(uuid){var entityData=data.entities[i]||{};self._baseType=data.entities[i].type,entityData.type=self._type;var entityOptions={type:self._type,client:self._client,uuid:uuid,data:entityData},ent=new Usergrid.Entity(entityOptions);ent._json=JSON.stringify(entityDa
 ta,null,2);var ct=self._list.length;self._list[ct]=ent}}}}doCallback(callback,[err,data],self)})},Usergrid.Collection.prototype.addEntity=function(options,callback){var self=this;
 options.type=this._type,this._client.createEntity(options,function(err,entity){if(!err){var count=self._list.length;self._list[count]=entity}doCallback(callback,[err,entity],self)})},Usergrid.Collection.prototype.addExistingEntity=function(entity){var count=this._list.length;this._list[count]=entity},Usergrid.Collection.prototype.destroyEntity=function(entity,callback){var self=this;entity.destroy(function(err,data){err?(self._client.logging&&console.log("could not destroy entity"),doCallback(callback,[err,data],self)):self.fetch(callback)}),this.removeEntity(entity)},Usergrid.Collection.prototype.removeEntity=function(entity){var uuid=entity.get("uuid");for(var key in this._list){var listItem=this._list[key];if(listItem.get("uuid")===uuid)return this._list.splice(key,1)}return!1},Usergrid.Collection.prototype.getEntityByUUID=function(uuid,callback){for(var key in this._list){var listItem=this._list[key];if(listItem.get("uuid")===uuid)return callback(null,listItem)}var options={data
 :{type:this._type,uuid:uuid},client:this._client},entity=new Usergrid.Entity(options);entity.fetch(callback)},Usergrid.Collection.prototype.getFirstEntity=function(){var count=this._list.length;return count>0?this._list[0]:null},Usergrid.Collection.prototype.getLastEntity=function(){var count=this._list.length;return count>0?this._list[count-1]:null},Usergrid.Collection.prototype.hasNextEntity=function(){var next=this._iterator+1,hasNextElement=next>=0&&next<this._list.length;return hasNextElement?!0:!1},Usergrid.Collection.prototype.getNextEntity=function(){this._iterator++;var hasNextElement=this._iterator>=0&&this._iterator<=this._list.length;return hasNextElement?this._list[this._iterator]:!1},Usergrid.Collection.prototype.hasPrevEntity=function(){var previous=this._iterator-1,hasPreviousElement=previous>=0&&previous<this._list.length;return hasPreviousElement?!0:!1},Usergrid.Collection.prototype.getPrevEntity=function(){this._iterator--;var hasPreviousElement=this._iterator>=0&
 &this._iterator<=this._list.length;return hasPreviousElement?this._list[this._iterator]:!1},Usergrid.Collection.prototype.resetEntityPointer=function(){this._iterator=-1},Usergrid.Collection.prototype.saveCursor=function(cursor){this._next!==cursor&&(this._next=cursor)},Usergrid.Collection.prototype.resetPaging=function(){this._previous=[],this._next=null,this._cursor=null},Usergrid.Collection.prototype.hasNextPage=function(){return this._next},Usergrid.Collection.prototype.getNextPage=function(callback){this.hasNextPage()&&(this._previous.push(this._cursor),this._cursor=this._next,this._list=[],this.fetch(callback))},Usergrid.Collection.prototype.hasPreviousPage=function(){return this._previous.length>0},Usergrid.Collection.prototype.getPreviousPage=function(callback){this.hasPreviousPage()&&(this._next=null,this._cursor=this._previous.pop(),this._list=[],this.fetch(callback))},Usergrid.Group=function(options){this._path=options.path,this._list=[],this._client=options.client,this._
 data=options.data||{},this._data.type="groups"},Usergrid.Group.prototype=new Usergrid.Entity,Usergrid.Group.prototype.fetch=function(callback){var self=this,groupEndpoint="groups/"+this._path,memberEndpoint="groups/"+this._path+"/users",groupOptions={method:"GET",endpoint:groupEndpoint},memberOptions={method:"GET",endpoint:memberEndpoint};this._client.request(groupOptions,function(err,data){if(err)self._client.logging&&console.log("error getting group"),doCallback(callback,[err,data],self);else if(data.entities&&data.entities.length){var groupData=data.entities[0];self._data=groupData||{},self._client.request(memberOptions,function(err,data){if(err&&self._client.logging)console.log("error getting group users");else if(data.entities){var count=data.entities.length;self._list=[];for(var i=0;count>i;i++){var uuid=data.entities[i].uuid;if(uuid){var entityData=data.entities[i]||{},entityOptions={type:entityData.type,client:self._client,uuid:uuid,data:entityData},entity=new Usergrid.Entit
 y(entityOptions);self._list.push(entity)}}}doCallback(callback,[err,data,self._list],self)})}})},Usergrid.Group.prototype.members=function(callback){doCallback(callback,[null,this._list],this)},Usergrid.Group.prototype.add=function(options,callback){var self=this,options={method:"POST",endpoint:"groups/"+this._path+"/users/"+options.user.get("username")};this._client.request(options,function(error,data){error?doCallback(callback,[error,data,data.entities],self):self.fetch(callback)})},Usergrid.Group.prototype.remove=function(options,callback){var self=this,options={method:"DELETE",endpoint:"groups/"+this._path+"/users/"+options.user.get("username")};this._client.request(options,function(error,data){error?doCallback(callback,[error,data],self):self.fetch(callback)})},Usergrid.Group.prototype.feed=function(callback){var self=this,endpoint="groups/"+this._path+"/feed",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self.logging&&console.log
 ("error trying to log user in"),doCallback(callback,[err,data,data.entities],self)})},Usergrid.Group.prototype.createGroupActivity=function(options,callback){var user=options.user;options={client:this._client,data:{actor:{displayName:user.get("username"),uuid:user.get("uuid"),username:user.get("username"),email:user.get("email"),picture:user.get("picture"),image:{duration:0,height:80,url:user.get("picture"),width:80}},verb:"post",content:options.content,type:"groups/"+this._path+"/activities"}};var entity=new Usergrid.Entity(options);entity.save(function(err){doCallback(callback,[err,entity])})},Usergrid.Counter=function(options,callback){var self=this;this._client=options.client,this._data=options.data||{},this._data.category=options.category||"UNKNOWN",this._data.timestamp=options.timestamp||0,this._data.type="events",this._data.counters=options.counters||{},doCallback(callback,[!1,self],self)};var COUNTER_RESOLUTIONS=["all","minute","five_minutes","half_hour","hour","six_day","da
 y","week","month"];Usergrid.Counter.prototype=new Usergrid.Entity,Usergrid.Counter.prototype.fetch=function(callback){this.getData({},callback)},Usergrid.Counter.prototype.increment=function(options,callback){var self=this,name=options.name,value=options.value;return name?isNaN(value)?doCallback(callback,[!0,"'value' for increment, decrement must be a number"],self):(self._data.counters[name]=parseInt(value)||1,self.save(callback)):doCallback(callback,[!0,"'name' for increment, decrement must be a number"],self)},Usergrid.Counter.prototype.decrement=function(options,callback){var self=this,name=options.name,value=options.value;self.increment({name:name,value:-(parseInt(value)||1)},callback)},Usergrid.Counter.prototype.reset=function(options,callback){var self=this,name=options.name;self.increment({name:name,value:0},callback)},Usergrid.Counter.prototype.getData=function(options,callback){var start_time,end_time,start=options.start||0,end=options.end||Date.now(),resolution=(options.r
 esolution||"all").toLowerCase(),counters=options.counters||Object.keys(this._data.counters),res=(resolution||"all").toLowerCase();if(-1===COUNTER_RESOLUTIONS.indexOf(res)&&(res="all"),start)switch(typeof start){case"undefined":start_time=0;break;case"number":start_time=start;break;case"string":start_time=isNaN(start)?Date.parse(start):parseInt(start);break;default:start_time=Date.parse(start.toString())}if(end)switch(typeof end){case"undefined":end_time=Date.now();break;case"number":end_time=end;break;case"string":end_time=isNaN(end)?Date.parse(end):parseInt(end);break;default:end_time=Date.parse(end.toString())}var self=this,params=Object.keys(counters).map(function(counter){return["counter",encodeURIComponent(counters[counter])].join("=")});params.push("resolution="+res),params.push("start_time="+String(start_time)),params.push("end_time="+String(end_time));var endpoint="counters?"+params.join("&");this._client.request({endpoint:endpoint},function(err,data){return data.counters&&d
 ata.counters.length&&data.counters.forEach(function(counter){self._data.counters[counter.name]=counter.value||counter.values}),doCallback(callback,[err,data],self)})},Usergrid.Folder=function(options,callback){var self=this;console.log("FOLDER OPTIONS",options),self._client=options.client,self._data=options.data||{},self._data.type="folders";var missingData=["name","owner","path"].some(function(required){return!(required in self._data)});return missingData?doCallback(callback,[!0,new Usergrid.Error("Invalid asset data: 'name', 'owner', and 'path' are required properties.")],self):void self.save(function(err,data){err?doCallback(callback,[!0,new Usergrid.Error(data)],self):(data&&data.entities&&data.entities.length&&self.set(data.entities[0]),doCallback(callback,[!1,self],self))})},Usergrid.Folder.prototype=new Usergrid.Entity,Usergrid.Folder.prototype.fetch=function(callback){var self=this;Usergrid.Entity.prototype.fetch.call(self,function(err,data){console.log("self",self.get()),co
 nsole.log("data",data),err?doCallback(callback,[!0,new UsergridError(data)],self):self.getAssets(function(err,data){err?doCallback(callback,[!0,new UsergridError(data)],self):doCallback(callback,[null,self],self)})})},Usergrid.Folder.prototype.addAsset=function(options,callback){var self=this;if("asset"in options){var asset=null;switch(typeof options.asset){case"object":asset=options.asset,asset instanceof Usergrid.Entity||(asset=new Usergrid.Asset(asset));break;case"string":isUUID(options.asset)&&(asset=new Usergrid.Asset({client:self._client,data:{uuid:options.asset,type:"assets"}}))}asset&&asset instanceof Usergrid.Entity&&asset.fetch(function(err,data){if(err)doCallback(callback,[err,new UsergridError(data)],self);else{var endpoint=["folders",self.get("uuid"),"assets",asset.get("uuid")].join("/"),options={method:"POST",endpoint:endpoint};self._client.request(options,callback)}})}else doCallback(callback,[!0,{error_description:"No asset specified"}],self)},Usergrid.Folder.prototy
 pe.removeAsset=function(options,callback){var self=this;if("asset"in options){var asset=null;switch(typeof options.asset){case"object":asset=options.asset;break;case"string":isUUID(options.asset)&&(asset=new Usergrid.Asset({client:self._client,data:{uuid:options.asset,type:"assets"}}))}if(asset&&null!==asset){var endpoint=["folders",self.get("uuid"),"assets",asset.get("uuid")].join("/");self._client.request({method:"DELETE",endpoint:endpoint},callback)}}else doCallback(callback,[!0,{error_description:"No asset specified"}],self)},Usergrid.Folder.prototype.getAssets=function(callback){return this.getConnections("assets",callback)},XMLHttpRequest.prototype.sendAsBinary||(XMLHttpRequest.prototype.sendAsBinary=function(sData){for(var nBytes=sData.length,ui8Data=new Uint8Array(nBytes),nIdx=0;nBytes>nIdx;nIdx++)ui8Data[nIdx]=255&sData.charCodeAt(nIdx);this.send(ui8Data)}),Usergrid.Asset=function(options,callback){var self=this;self._client=options.client,self._data=options.data||{},self._
 data.type="assets";var missingData=["name","owner","path"].some(function(required){return!(required in self._data)});return missingData?doCallback(callback,[!0,new Usergrid.Error("Invalid asset data: 'name', 'owner', and 'path' are required properties.")],self):void self.save(function(err,data){err?doCallback(callback,[!0,new Usergrid.Error(data)],self):(data&&data.entities&&data.entities.length&&self.set(data.entities[0]),doCallback(callback,[!1,self],self))})},Usergrid.Asset.prototype=new Usergrid.Entity,Usergrid.Asset.prototype.addToFolder=function(options,callback){var self=this;if("folder"in options&&isUUID(options.folder)){Usergrid.Folder({uuid:options.folder},function(err,folder){if(err)return callback.call(self,err,folder);var endpoint=["folders",folder.get("uuid"),"assets",self.get("uuid")].join("/"),options={method:"POST",endpoint:endpoint};this._client.request(options,callback)})}else doCallback(callback,[!0,new UsergridError("folder not specified")],self)},Usergrid.Asset
 .prototype.upload=function(data,callback){if(!(window.File&&window.FileReader&&window.FileList&&window.Blob))return doCallback(callback,[!0,new UsergridError("The File APIs are not fully supported by your browser.")],self);var self=this,endpoint=[this._client.URI,this._client.orgName,this._client.appName,"assets",self.get("uuid"),"data"].join("/"),xhr=new XMLHttpRequest;xhr.open("POST",endpoint,!0),xhr.onerror=function(){doCallback(callback,[!0,new UsergridError("The File APIs are not fully supported by your browser.")],self)},xhr.onload=function(){xhr.status>=300?doCallback(callback,[!0,new UsergridError(JSON.parse(xhr.responseText))],self):doCallback(callback,[null,self],self)};var fr=new FileReader;fr.onload=function(){var binary=fr.result;xhr.overrideMimeType("application/octet-stream"),setTimeout(function(){xhr.sendAsBinary(binary)},1e3)},fr.readAsBinaryString(data)},Usergrid.Asset.prototype.download=function(callback){var self=this,endpoint=[this._client.URI,this._client.orgNa
 me,this._client.appName,"assets",self.get("uuid"),"data"].join("/"),xhr=new XMLHttpRequest;xhr.open("GET",endpoint,!0),xhr.responseType="blob",xhr.onload=function(){var blob=xhr.response;doCallback(callback,[!1,blob],self)},xhr.onerror=function(err){callback(!0,err),doCallback(callback,[!0,new UsergridError(err)],self)},xhr.send()},function(global){function UsergridError(message,name,timestamp,duration,exception){this.message=message,this.name=name,this.timestamp=timestamp||Date.now(),this.duration=duration||0,this.exception=exception}function UsergridHTTPResponseError(message,name,timestamp,duration,exception){this.message=message,this.name=name,this.timestamp=timestamp||Date.now(),this.duration=duration||0,this.exception=exception}function UsergridInvalidHTTPMethodError(message,name,timestamp,duration,exception){this.message=message,this.name=name,this.timestamp=timestamp||Date.now(),this.duration=duration||0,this.exception=exception}function UsergridInvalidURIError(message,name,t
 imestamp,duration,exception){this.message=message,this.name=name,this.timestamp=timestamp||Date.now(),this.duration=duration||0,this.exception=exception}function UsergridKeystoreDatabaseUpgradeNeededError(message,name,timestamp,duration,exception){this.message=message,this.name=name,this.timestamp=timestamp||Date.now(),this.duration=duration||0,this.exception=exception}var short,name="UsergridError",_name=global[name],_short=short&&void 0!==short?global[short]:void 0;return UsergridError.prototype=new Error,UsergridError.prototype.constructor=UsergridError,UsergridError.fromResponse=function(response){return response&&"undefined"!=typeof response?new UsergridError(response.error_description,response.error,response.timestamp,response.duration,response.exception):new UsergridError},UsergridError.createSubClass=function(name){return name in global&&global[name]?global[name]:(global[name]=function(){},global[name].name=name,global[name].prototype=new UsergridError,global[name])},Usergri
 dHTTPResponseError.prototype=new UsergridError,UsergridInvalidHTTPMethodError.prototype=new UsergridError,UsergridInvalidURIError.prototype=new UsergridError,UsergridKeystoreDatabaseUpgradeNeededError.prototype=new UsergridError,global.UsergridHTTPResponseError=UsergridHTTPResponseError,global.UsergridInvalidHTTPMethodError=UsergridInvalidHTTPMethodError,global.UsergridInvalidURIError=UsergridInvalidURIError,global.UsergridKeystoreDatabaseUpgradeNeededError=UsergridKeystoreDatabaseUpgradeNeededError,global[name]=UsergridError,void 0!==short&&(global[short]=UsergridError),global[name].noConflict=function(){return _name&&(global[name]=_name),void 0!==short&&(global[short]=_short),UsergridError},global[name]}(this);
\ No newline at end of file


[23/50] [abbrv] git commit: createCollection was executing its callback with an inconsistent arity

Posted by sn...@apache.org.
createCollection was executing its callback with an inconsistent arity


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

Branch: refs/pull/60/head
Commit: c6f1aa182964a0a3322bc1b2a646c36d0f34e3f5
Parents: 7f50cae
Author: ryan bridges <rb...@apigee.com>
Authored: Mon Mar 3 15:21:10 2014 -0500
Committer: ryan bridges <rb...@apigee.com>
Committed: Mon Mar 3 15:21:10 2014 -0500

----------------------------------------------------------------------
 sdks/html5-javascript/usergrid.js | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c6f1aa18/sdks/html5-javascript/usergrid.js
----------------------------------------------------------------------
diff --git a/sdks/html5-javascript/usergrid.js b/sdks/html5-javascript/usergrid.js
index 6658d69..d67cdde 100644
--- a/sdks/html5-javascript/usergrid.js
+++ b/sdks/html5-javascript/usergrid.js
@@ -767,8 +767,8 @@ function doCallback(callback, params, context) {
    */
     Usergrid.Client.prototype.createCollection = function(options, callback) {
         options.client = this;
-        var collection = new Usergrid.Collection(options, function(err, data) {
-            doCallback(callback, [ err, collection, data ]);
+        var collection = new Usergrid.Collection(options, function(err, response, collection) {
+            doCallback(callback, [ err, collection, response ], collection);
         });
     };
     /*
@@ -3061,4 +3061,4 @@ Usergrid.Asset.prototype.download = function(callback) {
         return UsergridError;
     };
     return global[name];
-})(this);
\ No newline at end of file
+})(this);


[50/50] [abbrv] git commit: Merge a8824941262dc05bad2b93fe593b90ad0d021415 into 631f02d5a691823a0bc8b806f3be44a5f9a59fbc

Posted by sn...@apache.org.
Merge a8824941262dc05bad2b93fe593b90ad0d021415 into 631f02d5a691823a0bc8b806f3be44a5f9a59fbc


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

Branch: refs/pull/60/merge
Commit: bb64d93dd12515edbf7e6732d88c18513503ba0c
Parents: 631f02d a882494
Author: GERey <gr...@apigee.com>
Authored: Thu Mar 6 19:05:02 2014 +0000
Committer: GERey <gr...@apigee.com>
Committed: Thu Mar 6 19:05:02 2014 +0000

----------------------------------------------------------------------
 .../org/apache/usergrid/persistence/Query.java  |   5 +-
 .../usergrid/persistence/entities/Export.java   | 141 ++++
 .../rest/management/ManagementResource.java     |  15 +-
 .../applications/ApplicationResource.java       | 181 ++++-
 .../rest/management/ManagementResourceIT.java   | 497 ++++++++++++-
 .../usergrid/management/export/ExportJob.java   |  65 ++
 .../management/export/ExportService.java        |  32 +
 .../management/export/ExportServiceImpl.java    | 592 ++++++++++++++++
 .../usergrid/management/export/S3Export.java    |  19 +
 .../management/export/S3ExportImpl.java         |  93 +++
 .../resources/usergrid-services-context.xml     |  10 +
 .../org/apache/usergrid/ServiceITSetup.java     |   3 +
 .../org/apache/usergrid/ServiceITSetupImpl.java |   6 +
 .../cassandra/ManagementServiceIT.java          | 707 ++++++++++++++++++-
 .../management/cassandra/MockS3ExportImpl.java  |  56 ++
 15 files changed, 2402 insertions(+), 20 deletions(-)
----------------------------------------------------------------------



[21/50] [abbrv] git commit: Added 10k entities collection test. Fixed existing connection tests.

Posted by sn...@apache.org.
Added 10k entities collection test.
Fixed existing connection tests.


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

Branch: refs/pull/60/merge
Commit: 0d4f3df764998d4fe6b200ff86832a5a61811868
Parents: c899c3d
Author: grey <gr...@apigee.com>
Authored: Mon Mar 3 11:56:25 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Mon Mar 3 11:56:25 2014 -0800

----------------------------------------------------------------------
 .../cassandra/ManagementServiceIT.java          | 43 +++++++++++++++-----
 1 file changed, 33 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/0d4f3df7/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
index fce3147..4fbb3d6 100644
--- a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
@@ -750,6 +750,7 @@ public class ManagementServiceIT {
     public void testConnectionsOnCollectionExport() throws Exception {
 
         File f = null;
+        int index = 0;
 
 
         try {
@@ -780,10 +781,10 @@ public class ManagementServiceIT {
         //creates entities
         for ( int i = 0; i < 2; i++ ) {
             userProperties = new LinkedHashMap<String, Object>();
-            userProperties.put( "username", "billybob" + i );
-            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+            userProperties.put( "username", "meatIsGreat" + i );
+            userProperties.put( "email", "grey" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
 
-            entity[i] = em.create( "user", userProperties );
+            entity[i] = em.create( "users", userProperties );
         }
         //creates connections
         em.createConnection( em.getRef( entity[0].getUuid() ), "Vibrations", em.getRef( entity[1].getUuid() ) );
@@ -806,9 +807,19 @@ public class ManagementServiceIT {
         JSONParser parser = new JSONParser();
 
         org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
-        assertEquals(2, a.size() );
+        //assertEquals(2, a.size() );
+
+        for(index  = 0; index < a.size(); index++) {
+            JSONObject jObj = ( JSONObject ) a.get( index );
+            JSONObject data = ( JSONObject ) jObj.get( "Metadata" );
+            String uuid = (String) data.get( "uuid" );
+            if ( entity[0].getUuid().toString().equals( uuid )) {
+                break;
+            }
 
-        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( 0 );
+        }
+
+        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( index );
         org.json.simple.JSONObject objConnections = ( org.json.simple.JSONObject ) objEnt.get( "connections" );
 
         assertNotNull( objConnections );
@@ -824,6 +835,7 @@ public class ManagementServiceIT {
     public void testConnectionsOnApplicationEndpoint() throws Exception {
 
         File f = null;
+        int index = 0;
 
 
         try {
@@ -880,7 +892,17 @@ public class ManagementServiceIT {
 
         org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
 
-        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( 0 );
+        for(index  = 0; index < a.size(); index++) {
+            JSONObject jObj = ( JSONObject ) a.get( index );
+            JSONObject data = ( JSONObject ) jObj.get( "Metadata" );
+            String uuid = (String) data.get( "uuid" );
+            if ( entity[0].getUuid().toString().equals( uuid )) {
+                break;
+            }
+
+        }
+
+        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( index );
         org.json.simple.JSONObject objConnections = ( org.json.simple.JSONObject ) objEnt.get( "connections" );
 
         assertNotNull( objConnections );
@@ -1049,7 +1071,7 @@ public class ManagementServiceIT {
 
         File f = null;
         String orgName = "ed-organization";
-        String appName = "testAppNotExported";
+        String appName = "testAppCollectionTestNotExported";
 
         try {
             f = new File( "exportOneApp.json" );
@@ -1183,6 +1205,7 @@ public class ManagementServiceIT {
     public void testExportOneCollection() throws Exception {
 
         File f = null;
+        int entitiesToCreate = 10000;
 
         try {
             f = new File( "exportOneCollection.json" );
@@ -1197,9 +1220,9 @@ public class ManagementServiceIT {
         //intialize user object to be posted
         Map<String, Object> userProperties = null;
         Entity[] entity;
-        entity = new Entity[10];
+        entity = new Entity[entitiesToCreate];
         //creates entities
-        for ( int i = 0; i < 10; i++ ) {
+        for ( int i = 0; i < entitiesToCreate; i++ ) {
             userProperties = new LinkedHashMap<String, Object>();
             userProperties.put( "username", "billybob" + i );
             userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
@@ -1233,7 +1256,7 @@ public class ManagementServiceIT {
 
         org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
 
-        assertEquals( 10 , a.size() );
+        assertEquals( entitiesToCreate , a.size() );
         f.delete();
     }
 


[07/50] [abbrv] git commit: Merge pull request #64 from usergrid/rat-fix

Posted by sn...@apache.org.
Merge pull request #64 from usergrid/rat-fix

Fix for build breakage caused by RAT

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

Branch: refs/pull/60/head
Commit: 2474350bb1fd7e0c30d67790c42983e1504c04d5
Parents: f368246 0607083
Author: Rod Simpson <ro...@rodsimpson.com>
Authored: Sat Mar 1 13:05:09 2014 -0700
Committer: Rod Simpson <ro...@rodsimpson.com>
Committed: Sat Mar 1 13:05:09 2014 -0700

----------------------------------------------------------------------
 stack/pom.xml                                   | 34 +++++++++++++-------
 .../usergrid/services/ServiceFactoryIT.java     |  2 +-
 .../usergrid/services/simple/SimpleService.java | 33 +++++++++++++++++++
 .../java/org/usergrid/simple/SimpleService.java | 33 -------------------
 4 files changed, 56 insertions(+), 46 deletions(-)
----------------------------------------------------------------------



[28/50] [abbrv] git commit: Merge pull request #67 from r3b/DPS-131

Posted by sn...@apache.org.
Merge pull request #67 from r3b/DPS-131

Dps 131

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

Branch: refs/pull/60/merge
Commit: 2891b5483696b4414ce301e4c202f0ef253b021c
Parents: 7f50cae 406541d
Author: Rod Simpson <ro...@rodsimpson.com>
Authored: Mon Mar 3 16:37:45 2014 -0700
Committer: Rod Simpson <ro...@rodsimpson.com>
Committed: Mon Mar 3 16:37:45 2014 -0700

----------------------------------------------------------------------
 sdks/html5-javascript/usergrid.js     | 8 ++++----
 sdks/html5-javascript/usergrid.min.js | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------



[36/50] [abbrv] git commit: Fixed all tests, and code. Tomcat issue still persists.

Posted by sn...@apache.org.
Fixed all tests, and code. Tomcat issue still persists.


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

Branch: refs/pull/60/merge
Commit: 8e22ba1c4a58a47c01e8c952a718a312f5469cbd
Parents: 338ed4c
Author: grey <gr...@apigee.com>
Authored: Tue Mar 4 17:26:02 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Tue Mar 4 17:26:02 2014 -0800

----------------------------------------------------------------------
 .../management/organizations/applications/ApplicationResource.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/8e22ba1c/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
index 9f4fa4a..1d1daf2 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
@@ -243,7 +243,7 @@ public class ApplicationResource extends AbstractContextResource {
                                        .entity( ServiceResource.wrapWithCallback( e.getMessage(), callback ) ).build();
         }
 
-        return Response.status( SC_ACCEPTED ).entity( jobUUID ).build();
+        return Response.status( SC_ACCEPTED ).entity( uuidRet ).build();
     }
 
     @POST


[41/50] [abbrv] git commit: Fixed s3 cloud exporting functionality. Fixed and retested integration test to make sure.

Posted by sn...@apache.org.
Fixed s3 cloud exporting functionality.
Fixed and retested integration test to make sure.


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

Branch: refs/pull/60/merge
Commit: a02b08c7fe8c498c2968df7e27b3cc6fec6efdbd
Parents: a7504de
Author: grey <gr...@apigee.com>
Authored: Wed Mar 5 11:59:03 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Wed Mar 5 11:59:03 2014 -0800

----------------------------------------------------------------------
 .../rest/management/ManagementResourceIT.java   | 11 +--
 .../management/export/S3ExportImpl.java         | 10 ++-
 .../cassandra/ManagementServiceIT.java          | 80 ++++++++++----------
 3 files changed, 52 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a02b08c7/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
index a914237..00a8a97 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
@@ -552,7 +552,7 @@ public class ManagementResourceIT extends AbstractRestIT {
 //        assertEquals( Status.OK, responseStatus );
 //    }
 
-
+//is this test still valid knowing that the sch. won't run in intelliJ?
     @Ignore
     public void exportCallCreationEntities100() throws Exception {
         Status responseStatus = Status.OK;
@@ -562,16 +562,12 @@ public class ManagementResourceIT extends AbstractRestIT {
         Map<String, Object> properties = new HashMap<String, Object>();
         Map<String, Object> storage_info = new HashMap<String, Object>();
         //TODO: make sure to put a valid admin token here.
-        storage_info.put( "admin_token", adminToken() );
         //TODO: always put dummy values here and ignore this test.
-        storage_info.put( "s3_key", "insert key here" );
-        storage_info.put( "s3_accessId", "insert access id here" );
-        storage_info.put( "bucket_location", "insert bucket name here" );
+
 
         properties.put( "storage_provider", "s3" );
         properties.put( "storage_info", storage_info );
 
-        payload.put( "path", "test-organization/test-app/user" );
         payload.put( "properties", properties );
 
         for ( int i = 0; i < 100; i++ ) {
@@ -583,7 +579,8 @@ public class ManagementResourceIT extends AbstractRestIT {
         }
 
         try {
-            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" ).queryParam(
+                    "access_token", adminToken() )
                              .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
                              .post( JsonNode.class, payload );
         }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a02b08c7/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java
index 4cf9272..7439acf 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java
@@ -34,9 +34,13 @@ public class S3ExportImpl implements S3Export {
 
         Logger logger = LoggerFactory.getLogger( ExportServiceImpl.class );
         /*won't need any of the properties as I have the export info*/
-        String bucketName = ( String ) exportInfo.get( "bucket_location" );
-        String accessId = ( String ) exportInfo.get( "s3_accessId" );
-        String secretKey = ( String ) exportInfo.get( "s3_key" );
+        Map<String,Object> properties = ( Map<String, Object> ) exportInfo.get( "properties" );
+
+        Map<String, Object> storage_info = (Map<String,Object>)properties.get( "storage_info" );
+
+        String bucketName = ( String ) storage_info.get( "bucket_location" );
+        String accessId = ( String ) storage_info.get( "s3_accessId" );
+        String secretKey = ( String ) storage_info.get( "s3_key" );
 
         Properties overrides = new Properties();
         overrides.setProperty( "s3" + ".identity", accessId );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a02b08c7/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
index 686b5c6..b4c07ad 100644
--- a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
@@ -32,6 +32,7 @@ import org.apache.usergrid.management.UserInfo;
 import org.apache.usergrid.management.export.ExportJob;
 import org.apache.usergrid.management.export.ExportService;
 import org.apache.usergrid.management.export.S3Export;
+import org.apache.usergrid.management.export.S3ExportImpl;
 import org.apache.usergrid.persistence.CredentialsInfo;
 import org.apache.usergrid.persistence.Entity;
 import org.apache.usergrid.persistence.EntityManager;
@@ -53,7 +54,6 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -1385,44 +1385,46 @@ public class ManagementServiceIT {
 //    }
 //
 //
-//    @Ignore //For this test please input your s3 credentials into payload builder.
-//    public void testIntegration100EntitiesOn() throws Exception {
-//
-//        S3Export s3Export = new S3ExportImpl();
-//        ExportService exportService = setup.getExportService();
-//        HashMap<String, Object> payload = payloadBuilder();
-//
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setApplicationId( applicationId );
-//
-//        EntityManager em = setup.getEmf().getEntityManager( applicationId );
-//        //intialize user object to be posted
-//        Map<String, Object> userProperties = null;
-//        Entity[] entity;
-//        entity = new Entity[100];
-//        //creates entities
-//        for ( int i = 0; i < 100; i++ ) {
-//            userProperties = new LinkedHashMap<String, Object>();
-//            userProperties.put( "username", "billybob" + i );
-//            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
-//
-//            entity[i] = em.create( "user", userProperties );
-//        }
-//
-//        UUID exportUUID = exportService.schedule( exportInfo );
-//        exportService.setS3Export( s3Export );
-//
-//        //create and initialize jobData returned in JobExecution.
-//        JobData jobData = new JobData();
-//        jobData.setProperty( "jobName", "exportJob" );
-//        jobData.setProperty( "exportInfo", exportInfo );
-//        jobData.setProperty( "exportId", exportUUID );
-//
-//        JobExecution jobExecution = mock( JobExecution.class );
-//        when( jobExecution.getJobData() ).thenReturn( jobData );
-//
-//        exportService.doExport( exportInfo, jobExecution );
-//    }
+    @Ignore //For this test please input your s3 credentials into payload builder.
+    public void testIntegration100EntitiesOn() throws Exception {
+
+        S3Export s3Export = new S3ExportImpl();
+        ExportService exportService = setup.getExportService();
+        HashMap<String, Object> payload = payloadBuilder();
+
+       // ExportInfo exportInfo = new ExportInfo( payload );
+        //exportInfo.setApplicationId( applicationId );
+
+        payload.put("applicationId",applicationId);
+
+        EntityManager em = setup.getEmf().getEntityManager( applicationId );
+        //intialize user object to be posted
+        Map<String, Object> userProperties = null;
+        Entity[] entity;
+        entity = new Entity[100];
+        //creates entities
+        for ( int i = 0; i < 100; i++ ) {
+            userProperties = new LinkedHashMap<String, Object>();
+            userProperties.put( "username", "billybob" + i );
+            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+
+            entity[i] = em.create( "user", userProperties );
+        }
+
+        UUID exportUUID = exportService.schedule( payload );
+        exportService.setS3Export( s3Export );
+
+        //create and initialize jobData returned in JobExecution.
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", payload );
+        jobData.setProperty( "exportId", exportUUID );
+
+        JobExecution jobExecution = mock( JobExecution.class );
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        exportService.doExport( jobExecution );
+    }
 
 
     /*Creates fake payload for testing purposes.*/


[43/50] [abbrv] git commit: Added error checking to rest endpoint, with test cases for each exception thrown. Renamed returned entity from export job “Export Entity”

Posted by sn...@apache.org.
Added error checking to rest endpoint, with test cases for each exception thrown.
Renamed returned entity from export job “Export Entity”


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

Branch: refs/pull/60/merge
Commit: dde48e2843de8a2c763f438257ed6f8c4b8b9da8
Parents: 9e716a6
Author: grey <gr...@apigee.com>
Authored: Thu Mar 6 09:46:11 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Thu Mar 6 09:46:11 2014 -0800

----------------------------------------------------------------------
 .../applications/ApplicationResource.java       |  78 +++++--
 .../rest/management/ManagementResourceIT.java   | 212 ++++++++++++++++++-
 .../management/export/S3ExportImpl.java         |   2 +-
 3 files changed, 265 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/dde48e28/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
index 73e550b..bf44877 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
@@ -221,20 +221,48 @@ public class ApplicationResource extends AbstractContextResource {
         OAuthResponse response = null;
         UUID jobUUID = null;
         Map<String, String> uuidRet = new HashMap<String, String>();
+
+        Map<String,Object> properties;
+        Map<String, Object> storage_info;
+
 //TODO: do input verification here! make sure json map has all correct values.
         try {
             //parse the json into some useful object (the config params)
             //ExportInfo objEx = new ExportInfo( json );
-            if(json.get( "properties" ) == null){
-                throw new NullPointerException();
+            if((properties = ( Map<String, Object> )  json.get( "properties" )) == null){
+                throw new NullPointerException("Could not find 'properties'");
+            }
+            storage_info = ( Map<String, Object> ) properties.get( "storage_info" );
+            String storage_provider = ( String ) properties.get( "storage_provider" );
+            if(storage_provider == null) {
+                throw new NullPointerException( "Could not find field 'storage_provider'" );
             }
+            if(storage_info == null) {
+                throw new NullPointerException( "Could not find field 'storage_info'" );
+            }
+
+
+            String bucketName = ( String ) storage_info.get( "bucket_location" );
+            String accessId = ( String ) storage_info.get( "s3_access_id" );
+            String secretKey = ( String ) storage_info.get( "s3_key" );
+
+            if(bucketName == null) {
+                throw new NullPointerException( "Could not find field 'bucketName'" );
+            }
+            if(accessId == null) {
+                throw new NullPointerException( "Could not find field 's3_access_id'" );
+            }
+            if(secretKey == null) {
+                throw new NullPointerException( "Could not find field 's3_key'" );
+            }
+
             json.put( "organizationId",organization.getUuid());
             //objEx.setOrganizationId( organization.getUuid() );
             json.put( "applicationId",applicationId);
             //objEx.setApplicationId( applicationId );
 
             jobUUID = exportService.schedule( json );
-            uuidRet.put( "jobUUID", jobUUID.toString() );
+            uuidRet.put( "Export Entity", jobUUID.toString() );
         }
         catch ( NullPointerException e ) {
             return Response.status( SC_BAD_REQUEST ).type( JSONPUtils.jsonMediaType( callback ) )
@@ -264,23 +292,43 @@ public class ApplicationResource extends AbstractContextResource {
         String colExport = collection_name;
         Map<String, String> uuidRet = new HashMap<String, String>();
 
+        Map<String,Object> properties;
+        Map<String, Object> storage_info;
+
         try {
             //checkJsonExportProperties(json);
-            if(json.get( "properties" ) == null){
-                throw new NullPointerException();
+            if((properties = ( Map<String, Object> )  json.get( "properties" )) == null){
+                throw new NullPointerException("Could not find 'properties'");
+            }
+            storage_info = ( Map<String, Object> ) properties.get( "storage_info" );
+            String storage_provider = ( String ) properties.get( "storage_provider" );
+            if(storage_provider == null) {
+                throw new NullPointerException( "Could not find field 'storage_provider'" );
+            }
+            if(storage_info == null) {
+                throw new NullPointerException( "Could not find field 'storage_info'" );
+            }
+
+
+            String bucketName = ( String ) storage_info.get( "bucket_location" );
+            String accessId = ( String ) storage_info.get( "s3_access_id" );
+            String secretKey = ( String ) storage_info.get( "s3_key" );
+
+            if(bucketName == null) {
+                throw new NullPointerException( "Could not find field 'bucketName'" );
+            }
+            if(accessId == null) {
+                throw new NullPointerException( "Could not find field 's3_access_id'" );
+            }
+            if(secretKey == null) {
+                throw new NullPointerException( "Could not find field 's3_key'" );
             }
-            //if(json.get( "properties."))
-            //parse the json into some useful object (the config params)
-//            ExportInfo objEx = new ExportInfo( json );
-//            objEx.setOrganizationId( organization.getUuid() );
-//            objEx.setApplicationId( applicationId );
-//            objEx.setCollection( colExport );
             json.put( "organizationId",organization.getUuid() );
             json.put( "applicationId", applicationId);
             json.put( "collectionName", colExport);
 
             jobUUID = exportService.schedule( json );
-            uuidRet.put( "jobUUID", jobUUID.toString() );
+            uuidRet.put( "Export Entity", jobUUID.toString() );
         }
         catch ( NullPointerException e ) {
             return Response.status( SC_BAD_REQUEST ).type( JSONPUtils.jsonMediaType( callback ) )
@@ -302,13 +350,13 @@ public class ApplicationResource extends AbstractContextResource {
 
     @GET
     @RequireOrganizationAccess
-    @Path("export/{jobUUID: [A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}}")
-    public Response exportGetJson( @Context UriInfo ui, @PathParam("jobUUID") UUID jobUUIDStr,
+    @Path("export/{exportEntity: [A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}}")
+    public Response exportGetJson( @Context UriInfo ui, @PathParam("exportEntity") UUID exportEntityUUIDStr,
                                    @QueryParam("callback") @DefaultValue("") String callback ) throws Exception {
 
         Export entity;
         try {
-            entity = smf.getServiceManager( applicationId ).getEntityManager().get( jobUUIDStr, Export.class );
+            entity = smf.getServiceManager( applicationId ).getEntityManager().get( exportEntityUUIDStr, Export.class );
         }
         catch ( Exception e ) { //this might not be a bad request and needs better error checking
             return Response.status( SC_BAD_REQUEST ).type( JSONPUtils.jsonMediaType( callback ) )

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/dde48e28/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
index 7eb9ed1..0c8e99a 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
@@ -611,7 +611,7 @@ public class ManagementResourceIT extends AbstractRestIT {
         }
 
         assertEquals( Status.ACCEPTED, responseStatus );
-        assertNotNull( node.get( "jobUUID" ) );
+        assertNotNull( node.get( "Export Entity" ) );
     }
 //
     @Test
@@ -634,7 +634,7 @@ public class ManagementResourceIT extends AbstractRestIT {
         }
 
         assertEquals( Status.ACCEPTED, responseStatus );
-        assertNotNull( node.get( "jobUUID" ) );
+        assertNotNull( node.get( "Export Entity" ) );
     }
 
 
@@ -650,7 +650,7 @@ public class ManagementResourceIT extends AbstractRestIT {
         node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
                          .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
                          .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
-        String uuid = String.valueOf( node.get( "jobUUID" ) );
+        String uuid = String.valueOf( node.get( "Export Entity" ) );
         uuid = uuid.replaceAll( "\"", "" );
 
         try {
@@ -677,7 +677,7 @@ public class ManagementResourceIT extends AbstractRestIT {
         node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
                          .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
                          .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
-        String uuid = String.valueOf( node.get( "jobUUID" ) );
+        String uuid = String.valueOf( node.get( "Export Entity" ) );
         uuid = uuid.replaceAll( "\"", "" );
 
         try {
@@ -713,7 +713,7 @@ public class ManagementResourceIT extends AbstractRestIT {
     }
 //
     @Test
-    public void exportPostApplicationNullPointer() throws Exception {
+    public void exportPostApplicationNullPointerProperties() throws Exception {
         JsonNode node = null;
         Status responseStatus = Status.OK;
 
@@ -728,7 +728,6 @@ public class ManagementResourceIT extends AbstractRestIT {
         properties.put( "storage_provider", "s3" );
         properties.put( "storage_info", storage_info );
 
-        payload.put( "path", "test-organization/test-app" );
 
         try {
             node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
@@ -802,6 +801,201 @@ public class ManagementResourceIT extends AbstractRestIT {
         assertEquals( Status.UNAUTHORIZED, responseStatus );
     }
 
+    @Test
+    public void exportPostApplicationNullPointerStorageInfo() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = payloadBuilder();
+        HashMap<String, Object> properties = ( HashMap<String, Object> ) payload.get("properties");
+        //remove storage_info field
+        properties.remove( "storage_info" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+    }
+
+    @Test
+    public void exportPostCollectionNullPointerStorageInfo() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = payloadBuilder();
+        HashMap<String, Object> properties = ( HashMap<String, Object> ) payload.get("properties");
+        //remove storage_info field
+        properties.remove( "storage_info" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+    }
+
+    @Test
+    public void exportPostApplicationNullPointerStorageProvider() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = payloadBuilder();
+        HashMap<String, Object> properties = ( HashMap<String, Object> ) payload.get("properties");
+        //remove storage_info field
+        properties.remove( "storage_provider" );
+
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+    }
+
+    @Test
+    public void exportPostCollectionNullPointerStorageProvider() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = payloadBuilder();
+        HashMap<String, Object> properties = ( HashMap<String, Object> ) payload.get("properties");
+        //remove storage_info field
+        properties.remove( "storage_provider" );
+
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+    }
+
+    @Test
+    public void exportPostApplicationNullPointerStorageVerification() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = payloadBuilder();
+        HashMap<String, Object> properties = ( HashMap<String, Object> ) payload.get("properties");
+        HashMap<String, Object> storage_info = ( HashMap<String, Object> ) properties.get("storage_info");
+        //remove storage_key field
+        storage_info.remove( "s3_key" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+
+        payload = payloadBuilder();
+        properties = ( HashMap<String, Object> ) payload.get("properties");
+        storage_info = ( HashMap<String, Object> ) properties.get("storage_info");
+        //remove storage_key field
+        storage_info.remove( "s3_access_id" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+
+        payload = payloadBuilder();
+        properties = ( HashMap<String, Object> ) payload.get("properties");
+        storage_info = ( HashMap<String, Object> ) properties.get("storage_info");
+        //remove storage_key field
+        storage_info.remove( "bucket_location" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+
+    }
+
+    @Test
+    public void exportPostCollectionNullPointerStorageVerification() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = payloadBuilder();
+        HashMap<String, Object> properties = ( HashMap<String, Object> ) payload.get("properties");
+        HashMap<String, Object> storage_info = ( HashMap<String, Object> ) properties.get("storage_info");
+        //remove storage_key field
+        storage_info.remove( "s3_key" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+
+        payload = payloadBuilder();
+        properties = ( HashMap<String, Object> ) payload.get("properties");
+        storage_info = ( HashMap<String, Object> ) properties.get("storage_info");
+        //remove storage_key field
+        storage_info.remove( "s3_access_id" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+
+        payload = payloadBuilder();
+        properties = ( HashMap<String, Object> ) payload.get("properties");
+        storage_info = ( HashMap<String, Object> ) properties.get("storage_info");
+        storage_info.remove( "bucket_location" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+
+    }
+
 
     /*Creates fake payload for testing purposes.*/
     public HashMap<String, Object> payloadBuilder() {
@@ -811,14 +1005,10 @@ public class ManagementResourceIT extends AbstractRestIT {
         //TODO: always put dummy values here and ignore this test.
         //TODO: add a ret for when s3 values are invalid.
         storage_info.put( "s3_key", "insert key here" );
-        storage_info.put( "s3_accessId", "insert access id here" );
+        storage_info.put( "s3_access_id", "insert access id here" );
         storage_info.put( "bucket_location", "insert bucket name here" );
-
-
         properties.put( "storage_provider", "s3" );
         properties.put( "storage_info", storage_info );
-
-        payload.put( "path", "test-organization/test-app" );
         payload.put( "properties", properties );
         return payload;
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/dde48e28/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java
index 7439acf..fd3f376 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java
@@ -39,7 +39,7 @@ public class S3ExportImpl implements S3Export {
         Map<String, Object> storage_info = (Map<String,Object>)properties.get( "storage_info" );
 
         String bucketName = ( String ) storage_info.get( "bucket_location" );
-        String accessId = ( String ) storage_info.get( "s3_accessId" );
+        String accessId = ( String ) storage_info.get( "s3_access_id" );
         String secretKey = ( String ) storage_info.get( "s3_key" );
 
         Properties overrides = new Properties();


[34/50] [abbrv] git commit: Removed OAuthResponse to simplify code. Created test for new error checking in ExportInfo.

Posted by sn...@apache.org.
Removed OAuthResponse to simplify code.
Created test for new error checking in ExportInfo.


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

Branch: refs/pull/60/merge
Commit: e965147bfdd87e9411be361a7d63978948cbb8d1
Parents: a09dc39
Author: grey <gr...@apigee.com>
Authored: Mon Mar 3 20:10:10 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Mon Mar 3 20:10:10 2014 -0800

----------------------------------------------------------------------
 .../applications/ApplicationResource.java       | 30 +++++---------------
 .../rest/management/ManagementResourceIT.java   | 29 +++++++++++++++++++
 .../apache/usergrid/management/ExportInfo.java  | 15 ++++++----
 3 files changed, 46 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e965147b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
index 7f7c6e4..91be7f9 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
@@ -233,12 +233,8 @@ public class ApplicationResource extends AbstractContextResource {
             uuidRet.put( "jobUUID", jobUUID.toString() );
         }
         catch ( NullPointerException e ) {
-            OAuthResponse errorMsg =
-                    OAuthResponse.errorResponse( SC_BAD_REQUEST ).setErrorDescription( e.getMessage() )
-                                 .buildJSONMessage();
-
-            return Response.status( errorMsg.getResponseStatus() ).type( JSONPUtils.jsonMediaType( callback ) )
-                           .entity( ServiceResource.wrapWithCallback( errorMsg.getBody(), callback ) ).build();
+            return Response.status( SC_BAD_REQUEST ).type( JSONPUtils.jsonMediaType( callback ) )
+                           .entity( ServiceResource.wrapWithCallback( e.getMessage(), callback ) ).build();
         }
         catch ( Exception e ) {
             //TODO:throw descriptive error message and or include on in the response
@@ -274,12 +270,8 @@ public class ApplicationResource extends AbstractContextResource {
             uuidRet.put( "jobUUID", jobUUID.toString() );
         }
         catch ( NullPointerException e ) {
-            OAuthResponse errorMsg =
-                    OAuthResponse.errorResponse( SC_BAD_REQUEST ).setErrorDescription( e.getMessage())
-                                 .buildJSONMessage();
-
-            return Response.status( errorMsg.getResponseStatus() ).type( JSONPUtils.jsonMediaType( callback ) )
-                           .entity( ServiceResource.wrapWithCallback( errorMsg.getBody(), callback ) ).build();
+            return Response.status( SC_BAD_REQUEST ).type( JSONPUtils.jsonMediaType( callback ) )
+                           .entity( ServiceResource.wrapWithCallback( e.getMessage(), callback ) ).build();
         }
         catch ( Exception e ) {
             //TODO:throw descriptive error message and or include on in the response
@@ -305,18 +297,10 @@ public class ApplicationResource extends AbstractContextResource {
         try {
             entity = smf.getServiceManager( applicationId ).getEntityManager().get( jobUUIDStr, Export.class );
         }
-        catch ( Exception e ) {
-            //this might be due to other reasons, but gotta look up what service manager does.
-
-            OAuthResponse errorMsg =
-                    OAuthResponse.errorResponse( SC_BAD_REQUEST ).setErrorDescription( e.getMessage())
-                                 .buildJSONMessage();
-
-            return Response.status( errorMsg.getResponseStatus() ).type( JSONPUtils.jsonMediaType( callback ) )
-                           .entity( ServiceResource.wrapWithCallback( errorMsg.getBody(), callback ) ).build();
-           // return Response.status( SC_BAD_REQUEST ).build();
+        catch ( Exception e ) { //this might not be a bad request and needs better error checking
+            return Response.status( SC_BAD_REQUEST ).type( JSONPUtils.jsonMediaType( callback ) )
+                           .entity( ServiceResource.wrapWithCallback( e.getMessage(), callback ) ).build();
         }
-        //validate this user owns it
 
         if ( entity == null ) {
             return Response.status( SC_BAD_REQUEST ).build();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e965147b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
index a81d9fb..a67a157 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
@@ -666,6 +666,35 @@ public class ManagementResourceIT extends AbstractRestIT {
         assertEquals( Status.BAD_REQUEST, responseStatus );
     }
 
+    @Test
+    public void exportPostNullPointer() throws Exception {
+        JsonNode node = null;
+        Status responseStatus = Status.OK;
+
+        HashMap<String, Object> payload = new HashMap<String, Object>();
+        Map<String, Object> properties = new HashMap<String, Object>();
+        Map<String, Object> storage_info = new HashMap<String, Object>();
+        //TODO: always put dummy values here and ignore this test.
+        //TODO: add a ret for when s3 values are invalid.
+        storage_info.put( "bucket_location", "insert bucket name here" );
+
+
+        properties.put( "storage_provider", "s3" );
+        properties.put( "storage_info", storage_info );
+
+        payload.put( "path", "test-organization/test-app" );
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+        assertEquals( Status.BAD_REQUEST, responseStatus );
+    }
+
 
     @Test
     public void exportGetUnauthorized() throws Exception {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/e965147b/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java b/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java
index 4347aac..fecf700 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java
@@ -25,8 +25,13 @@ public class ExportInfo extends TypedEntity {
     private UUID organizationId;
 
 
-    public ExportInfo( Map<String, Object> exportData ) {
-        //path = ( String ) exportData.get( "path" );
+    public ExportInfo( Map<String, Object> exportData )  {
+        if(exportData == null) {
+            throw new NullPointerException(  );
+        }
+        if(exportData.get( "properties" ) == null) {
+            throw new NullPointerException(  );
+        }
         properties = ( Map ) exportData.get( "properties" );
         storage_provider = ( String ) properties.get( "storage_provider" );
         storage_info = ( Map ) properties.get( "storage_info" );
@@ -43,9 +48,9 @@ public class ExportInfo extends TypedEntity {
 
     public UUID getOrganizationId() { return organizationId; }
 
-    public String getPath() {
-        return path;
-    }
+   // public String getPath() {
+   //     return path;
+    //}
 
 
     //Wouldn't get exposed.


[14/50] [abbrv] git commit: fix module errors

Posted by sn...@apache.org.
fix module errors


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

Branch: refs/pull/60/merge
Commit: f0158369c59585d02d2a821aa69321707aab0e5f
Parents: 2474350
Author: Shawn Feldman <sh...@gmail.com>
Authored: Mon Mar 3 09:09:50 2014 -0700
Committer: Shawn Feldman <sh...@gmail.com>
Committed: Mon Mar 3 09:09:50 2014 -0700

----------------------------------------------------------------------
 portal/config.js                    | 12 ------------
 portal/index-debug.html             |  4 ++--
 portal/index.html                   |  4 ++--
 portal/js/app.js                    |  4 +---
 portal/js/libs/usergrid-libs.min.js |  2 +-
 portal/js/usergrid-dev.min.js       |  9 ++++-----
 portal/js/usergrid.min.js           |  8 ++++----
 7 files changed, 14 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/config.js
----------------------------------------------------------------------
diff --git a/portal/config.js b/portal/config.js
index a78d776..c2f31d1 100644
--- a/portal/config.js
+++ b/portal/config.js
@@ -2,7 +2,6 @@ var Usergrid = Usergrid || {};
 
 Usergrid.showNotifcations = true;
 
-
 // used only if hostname does not match a real server name
 Usergrid.overrideUrl = 'https://api.usergrid.com/';
 
@@ -74,17 +73,6 @@ Usergrid.regex = {
   stateRegexDescription: "Sorry only alphabetical characters or spaces are allowed. Must be between 2-100 characters.",
   collectionNameRegexDescription: "Collection name only allows : a-z A-Z 0-9. Must be between 3-25 characters."
 };
-
-//Performance
-Usergrid.options.scriptReferences.dev.push('bower_components/apigee.performance.ui/dist/js/usergrid-perf-dev.min.js');
-Usergrid.options.scriptReferences.main.push('bower_components/apigee.performance.ui/dist/js/usergrid-perf.min.js');
-Usergrid.options.cssRefs.push({id:'perf-css',src:'bower_components/apigee.performance.ui/dist/css/performance.min.css'});
-//End Performance
-//Push
-Usergrid.options.scriptReferences.dev.push('bower_components/apigee.push.ui/dist/js/usergrid-push-dev.min.js');
-Usergrid.options.scriptReferences.main.push('bower_components/apigee.push.ui/dist/js/usergrid-push.min.js');
-Usergrid.options.cssRefs.push({id:'push-css',src:'bower_components/apigee.push.ui/dist/css/push.min.css'});
-//End Push
 try{
   if(module && module.exports){
     module.exports = Usergrid;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/index-debug.html
----------------------------------------------------------------------
diff --git a/portal/index-debug.html b/portal/index-debug.html
index 39395f7..8aea400 100644
--- a/portal/index-debug.html
+++ b/portal/index-debug.html
@@ -14,7 +14,7 @@
   <!--styles for jquery ui calendar component-->
   <link id="libScript" rel="stylesheet" type="text/css" href="2.0.34/js/libs/jqueryui/jquery-ui-1.8.9.custom.css">
   <link id="libScript" rel="stylesheet" type="text/css" href="2.0.34/js/libs/jqueryui/jquery-ui-timepicker.css">
-<link href="2.0.34/bower_components/apigee.performance.ui/dist/css/performance.min.css" rel="stylesheet" id="perf-css"><link href="2.0.34/bower_components/apigee.push.ui/dist/css/push.min.css" rel="stylesheet" id="push-css"></head>
+</head>
 <body ng-controller="PageCtrl">
 <!-- Google Tag Manager -->
 <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-N52333" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
@@ -124,5 +124,5 @@
 <script src="config.js"></script>
 <script id="main-script" src="2.0.34/js/usergrid-dev.min.js"></script>
 
-<script src="2.0.34/bower_components/apigee.performance.ui/dist/js/usergrid-perf-dev.min.js"></script><script src="2.0.34/bower_components/apigee.push.ui/dist/js/usergrid-push-dev.min.js"></script></body>
+</body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/index.html
----------------------------------------------------------------------
diff --git a/portal/index.html b/portal/index.html
index 4e36ada..2285ff5 100644
--- a/portal/index.html
+++ b/portal/index.html
@@ -14,7 +14,7 @@
   <!--styles for jquery ui calendar component-->
   <link id="libScript" rel="stylesheet" type="text/css" href="2.0.34/js/libs/jqueryui/jquery-ui-1.8.9.custom.css">
   <link id="libScript" rel="stylesheet" type="text/css" href="2.0.34/js/libs/jqueryui/jquery-ui-timepicker.css">
-<link href="2.0.34/bower_components/apigee.performance.ui/dist/css/performance.min.css" rel="stylesheet" id="perf-css"><link href="2.0.34/bower_components/apigee.push.ui/dist/css/push.min.css" rel="stylesheet" id="push-css"></head>
+</head>
 <body ng-controller="PageCtrl">
 <!-- Google Tag Manager -->
 <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-N52333" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
@@ -124,5 +124,5 @@
 <script src="config.js"></script>
 <script id="main-script" src="2.0.34/js/usergrid.min.js"></script>
 
-<script src="2.0.34/bower_components/apigee.performance.ui/dist/js/usergrid-perf.min.js"></script><script src="2.0.34/bower_components/apigee.push.ui/dist/js/usergrid-push.min.js"></script></body>
+</body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/js/app.js
----------------------------------------------------------------------
diff --git a/portal/js/app.js b/portal/js/app.js
index b097f12..9ed6816 100644
--- a/portal/js/app.js
+++ b/portal/js/app.js
@@ -51,7 +51,6 @@ AppServices.Services = angular.module('appservices.services', []);
 AppServices.Controllers = angular.module('appservices.controllers', []);
 AppServices.Filters = angular.module('appservices.filters', []);
 AppServices.Directives = angular.module('appservices.directives', []);
-AppServices.Push = angular.module('appservices.push', []);
 
 angular.module('appservices',
     [ 'ngRoute',
@@ -63,8 +62,7 @@ angular.module('appservices',
       'appservices.directives',
       'appservices.constants',
       'appservices.controllers',
-      'appservices.performance',
-      'appservices.push'
+
     ]).config(['$routeProvider', '$locationProvider','$sceDelegateProvider',
         function ($routeProvider,$locationProvider,$sceDelegateProvider) {
             $routeProvider


[24/50] [abbrv] git commit: updating dist artifacts

Posted by sn...@apache.org.
updating dist artifacts


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

Branch: refs/pull/60/merge
Commit: 406541d3c18e0d0a5772a61f8b19d2bbe51eb1da
Parents: c6f1aa1
Author: ryan bridges <rb...@apigee.com>
Authored: Mon Mar 3 16:54:16 2014 -0500
Committer: ryan bridges <rb...@apigee.com>
Committed: Mon Mar 3 16:54:16 2014 -0500

----------------------------------------------------------------------
 sdks/html5-javascript/usergrid.js     | 4 ++--
 sdks/html5-javascript/usergrid.min.js | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/406541d3/sdks/html5-javascript/usergrid.js
----------------------------------------------------------------------
diff --git a/sdks/html5-javascript/usergrid.js b/sdks/html5-javascript/usergrid.js
index d67cdde..f40e7d3 100644
--- a/sdks/html5-javascript/usergrid.js
+++ b/sdks/html5-javascript/usergrid.js
@@ -1,4 +1,4 @@
-/*! usergrid@0.0.0 2014-02-14 */
+/*! usergrid@0.0.0 2014-03-03 */
 var UsergridEventable = function() {
     throw Error("'UsergridEventable' is not intended to be invoked directly");
 };
@@ -768,7 +768,7 @@ function doCallback(callback, params, context) {
     Usergrid.Client.prototype.createCollection = function(options, callback) {
         options.client = this;
         var collection = new Usergrid.Collection(options, function(err, response, collection) {
-            doCallback(callback, [ err, collection, response ], collection);
+            doCallback(callback, [ err, collection, response ]);
         });
     };
     /*

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/406541d3/sdks/html5-javascript/usergrid.min.js
----------------------------------------------------------------------
diff --git a/sdks/html5-javascript/usergrid.min.js b/sdks/html5-javascript/usergrid.min.js
index e14bb04..cb194f3 100644
--- a/sdks/html5-javascript/usergrid.min.js
+++ b/sdks/html5-javascript/usergrid.min.js
@@ -1,3 +1,3 @@
-/*! usergrid@0.0.0 2014-02-14 */
+/*! usergrid@0.0.0 2014-03-03 */
 function extend(subClass,superClass){var F=function(){};return F.prototype=superClass.prototype,subClass.prototype=new F,subClass.prototype.constructor=subClass,subClass.superclass=superClass.prototype,superClass.prototype.constructor==Object.prototype.constructor&&(superClass.prototype.constructor=superClass),subClass}function NOOP(){}function isValidUrl(url){if(!url)return!1;var doc,base,anchor,isValid=!1;try{doc=document.implementation.createHTMLDocument(""),base=doc.createElement("base"),base.href=base||window.lo,doc.head.appendChild(base),anchor=doc.createElement("a"),anchor.href=url,doc.body.appendChild(anchor),isValid=!(""===anchor.href)}catch(e){console.error(e)}finally{return doc.head.removeChild(base),doc.body.removeChild(anchor),base=null,anchor=null,doc=null,isValid}}function isUUID(uuid){return uuid?uuidValueRegex.test(uuid):!1}function encodeParams(params){var queryString;return params&&Object.keys(params)&&(queryString=[].slice.call(arguments).reduce(function(a,b){ret
 urn a.concat(b instanceof Array?b:[b])},[]).filter(function(c){return"object"==typeof c}).reduce(function(p,c){return c instanceof Array?p.push(c):p=p.concat(Object.keys(c).map(function(key){return[key,c[key]]})),p},[]).reduce(function(p,c){return 2===c.length?p.push(c):p=p.concat(c),p},[]).reduce(function(p,c){return c[1]instanceof Array?c[1].forEach(function(v){p.push([c[0],v])}):p.push(c),p},[]).map(function(c){return c[1]=encodeURIComponent(c[1]),c.join("=")}).join("&")),queryString}function isFunction(f){return f&&null!==f&&"function"==typeof f}function doCallback(callback,params,context){var returnValue;return isFunction(callback)&&(params||(params=[]),context||(context=this),params.push(context),returnValue=callback.apply(context,params)),returnValue}var UsergridEventable=function(){throw Error("'UsergridEventable' is not intended to be invoked directly")};UsergridEventable.prototype={bind:function(event,fn){this._events=this._events||{},this._events[event]=this._events[event
 ]||[],this._events[event].push(fn)},unbind:function(event,fn){this._events=this._events||{},event in this._events!=!1&&this._events[event].splice(this._events[event].indexOf(fn),1)},trigger:function(event){if(this._events=this._events||{},event in this._events!=!1)for(var i=0;i<this._events[event].length;i++)this._events[event][i].apply(this,Array.prototype.slice.call(arguments,1))}},UsergridEventable.mixin=function(destObject){for(var props=["bind","unbind","trigger"],i=0;i<props.length;i++)props[i]in destObject.prototype&&(console.warn("overwriting '"+props[i]+"' on '"+destObject.name+"'."),console.warn("the previous version can be found at '_"+props[i]+"' on '"+destObject.name+"'."),destObject.prototype["_"+props[i]]=destObject.prototype[props[i]]),destObject.prototype[props[i]]=UsergridEventable.prototype[props[i]]},function(){function Logger(name){this.logEnabled=!0,this.init(name,!0)}var name="Logger",global=this,overwrittenName=global[name];return Logger.METHODS=["log","error
 ","warn","info","debug","assert","clear","count","dir","dirxml","exception","group","groupCollapsed","groupEnd","profile","profileEnd","table","time","timeEnd","trace"],Logger.prototype.init=function(name,logEnabled){this.name=name||"UNKNOWN",this.logEnabled=logEnabled||!0;var addMethod=function(method){this[method]=this.createLogMethod(method)}.bind(this);Logger.METHODS.forEach(addMethod)},Logger.prototype.createLogMethod=function(method){return Logger.prototype.log.bind(this,method)},Logger.prototype.prefix=function(method,args){var prepend="["+method.toUpperCase()+"]["+name+"]:	";return-1!==["log","error","warn","info"].indexOf(method)&&("string"==typeof args[0]?args[0]=prepend+args[0]:args.unshift(prepend)),args},Logger.prototype.log=function(){var args=[].slice.call(arguments);method=args.shift(),-1===Logger.METHODS.indexOf(method)&&(method="log"),this.logEnabled&&console&&console[method]&&(args=this.prefix(method,args),console[method].apply(console,args))},Logger.prototype.set
 LogEnabled=function(logEnabled){this.logEnabled=logEnabled||!0},Logger.mixin=function(destObject){destObject.__logger=new Logger(destObject.name||"UNKNOWN");var addMethod=function(method){method in destObject.prototype&&(console.warn("overwriting '"+method+"' on '"+destObject.name+"'."),console.warn("the previous version can be found at '_"+method+"' on '"+destObject.name+"'."),destObject.prototype["_"+method]=destObject.prototype[method]),destObject.prototype[method]=destObject.__logger.createLogMethod(method)};Logger.METHODS.forEach(addMethod)},global[name]=Logger,global[name].noConflict=function(){return overwrittenName&&(global[name]=overwrittenName),Logger},global[name]}(),function(global){function Promise(){this.complete=!1,this.error=null,this.result=null,this.callbacks=[]}var name="Promise",overwrittenName=global[name];return Promise.prototype.create=function(){return new Promise},Promise.prototype.then=function(callback,context){var f=function(){return callback.apply(contex
 t,arguments)};this.complete?f(this.error,this.result):this.callbacks.push(f)},Promise.prototype.done=function(error,result){if(this.complete=!0,this.error=error,this.result=result,this.callbacks){for(var i=0;i<this.callbacks.length;i++)this.callbacks[i](error,result);this.callbacks.length=0}},Promise.join=function(promises){function notifier(i){return function(error,result){completed+=1,errors[i]=error,results[i]=result,completed===total&&p.done(errors,results)}}for(var p=new Promise,total=promises.length,completed=0,errors=[],results=[],i=0;total>i;i++)promises[i]().then(notifier(i));return p},Promise.chain=function(promises,error,result){var p=new Promise;return null===promises||0===promises.length?p.done(error,result):promises[0](error,result).then(function(res,err){promises.splice(0,1),promises?Promise.chain(promises,res,err).then(function(r,e){p.done(r,e)}):p.done(res,err)}),p},global[name]=Promise,global[name].noConflict=function(){return overwrittenName&&(global[name]=overwri
 ttenName),Promise},global[name]}(this),function(){function partial(){var args=Array.prototype.slice.call(arguments),fn=args.shift();return fn.bind(this,args)}function Ajax(){function encode(data){var result="";if("string"==typeof data)result=data;else{var e=encodeURIComponent;for(var i in data)data.hasOwnProperty(i)&&(result+="&"+e(i)+"="+e(data[i]))}return result}function request(m,u,d){var timeout,p=new Promise;return self.logger.time(m+" "+u),function(xhr){xhr.onreadystatechange=function(){4^this.readyState||(self.logger.timeEnd(m+" "+u),clearTimeout(timeout),p.done(null,this))},xhr.onerror=function(response){clearTimeout(timeout),p.done(response,null)},xhr.oncomplete=function(){clearTimeout(timeout),self.logger.timeEnd(m+" "+u),self.info("%s request to %s returned %s",m,u,this.status)},xhr.open(m,u),d&&("object"==typeof d&&(d=JSON.stringify(d)),xhr.setRequestHeader("Content-Type","application/json"),xhr.setRequestHeader("Accept","application/json")),timeout=setTimeout(function()
 {xhr.abort(),p.done("API Call timed out.",null)},3e4),xhr.send(encode(d))}(new XMLHttpRequest),p}this.logger=new global.Logger(name);var self=this;this.request=request,this.get=partial(request,"GET"),this.post=partial(request,"POST"),this.put=partial(request,"PUT"),this.delete=partial(request,"DELETE")}var exports,name="Ajax",global=this,overwrittenName=global[name];return global[name]=new Ajax,global[name].noConflict=function(){return overwrittenName&&(global[name]=overwrittenName),exports},global[name]}(),window.console=window.console||{},window.console.log=window.console.log||function(){};var uuidValueRegex=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;!function(global){function Usergrid(){this.logger=new Logger(name)}var name="Usergrid",overwrittenName=global[name];Usergrid.isValidEndpoint=function(){return!0};var VALID_REQUEST_METHODS=["GET","POST","PUT","DELETE"];return Usergrid.Request=function(method,endpoint,query_params,data,callback){var 
 p=new Promise;if(this.logger=new global.Logger("Usergrid.Request"),this.logger.time("process request "+method+" "+endpoint),this.endpoint=endpoint+"?"+encodeParams(query_params),this.method=method.toUpperCase(),this.data="object"==typeof data?JSON.stringify(data):data,-1===VALID_REQUEST_METHODS.indexOf(this.method))throw new UsergridInvalidHTTPMethodError("invalid request method '"+this.method+"'");if(!isValidUrl(this.endpoint))throw this.logger.error(endpoint,this.endpoint,/^https:\/\//.test(endpoint)),new UsergridInvalidURIError("The provided endpoint is not valid: "+this.endpoint);var request=function(){return Ajax.request(this.method,this.endpoint,this.data)}.bind(this),response=function(err,request){return new Usergrid.Response(err,request)}.bind(this),oncomplete=function(err,response){p.done(err,response),this.logger.info("REQUEST",err,response),doCallback(callback,[err,response]),this.logger.timeEnd("process request "+method+" "+endpoint)}.bind(this);return Promise.chain([req
 uest,response]).then(oncomplete),p},Usergrid.Response=function(err,response){var p=new Promise,data=null;try{data=JSON.parse(response.responseText)}catch(e){data={}}switch(Object.keys(data).forEach(function(key){Object.defineProperty(this,key,{value:data[key],enumerable:!0})}.bind(this)),Object.defineProperty(this,"logger",{enumerable:!1,configurable:!1,writable:!1,value:new global.Logger(name)}),Object.defineProperty(this,"success",{enumerable:!1,configurable:!1,writable:!0,value:!0}),Object.defineProperty(this,"err",{enumerable:!1,configurable:!1,writable:!0,value:err}),Object.defineProperty(this,"status",{enumerable:!1,configurable:!1,writable:!0,value:parseInt(response.status)}),Object.defineProperty(this,"statusGroup",{enumerable:!1,configurable:!1,writable:!0,value:this.status-this.status%100}),this.statusGroup){case 200:this.success=!0;break;case 400:case 500:case 300:case 100:default:this.success=!1}return this.success?p.done(null,this):p.done(UsergridError.fromResponse(data
 ),this),p},Usergrid.Response.prototype.getEntities=function(){var entities=[];return this.success&&(entities=this.data?this.data.entities:this.entities),entities},Usergrid.Response.prototype.getEntity=function(){var entities=this.getEntities();return entities[0]},Usergrid.VERSION=Usergrid.USERGRID_SDK_VERSION="0.10.08",global[name]=Usergrid,global[name].noConflict=function(){return overwrittenName&&(global[name]=overwrittenName),Usergrid},global[name]}(this),function(){var exports,name="Client",global=this,overwrittenName=global[name];return Usergrid.Client=function(options){this.URI=options.URI||"https://api.usergrid.com",options.orgName&&this.set("orgName",options.orgName),options.appName&&this.set("appName",options.appName),this.buildCurl=options.buildCurl||!1,this.logging=options.logging||!1,this._callTimeout=options.callTimeout||3e4,this._callTimeoutCallback=options.callTimeoutCallback||null,this.logoutCallback=options.logoutCallback||null},Usergrid.Client.prototype.request=fun
 ction(options,callback){var uri,method=options.method||"GET",endpoint=options.endpoint,body=options.body||{},qs=options.qs||{},mQuery=options.mQuery||!1,orgName=this.get("orgName"),appName=this.get("appName"),logoutCallback=function(){return"function"==typeof this.logoutCallback?this.logoutCallback(!0,"no_org_or_app_name_specified"):void 0}.bind(this);if(!mQuery&&!orgName&&!appName)return logoutCallback();uri=mQuery?this.URI+"/"+endpoint:this.URI+"/"+orgName+"/"+appName+"/"+endpoint,this.getToken()&&(qs.access_token=this.getToken());new Usergrid.Request(method,uri,qs,body,function(err,response){return-1!==["auth_expired_session_token","auth_missing_credentials","auth_unverified_oath","expired_token","unauthorized","auth_invalid"].indexOf(response.error)?logoutCallback():void doCallback(callback,[err,response])})},Usergrid.Client.prototype.buildAssetURL=function(uuid){var self=this,qs={},assetURL=this.URI+"/"+this.orgName+"/"+this.appName+"/assets/"+uuid+"/data";self.getToken()&&(qs.
 access_token=self.getToken());var encoded_params=encodeParams(qs);return encoded_params&&(assetURL+="?"+encoded_params),assetURL},Usergrid.Client.prototype.createGroup=function(options,callback){var getOnExist=options.getOnExist||!1;options={path:options.path,client:this,data:options};var group=new Usergrid.Group(options);group.fetch(function(err,data){var okToSave=err&&-1!==["service_resource_not_found","no_name_specified","null_pointer"].indexOf(err.name)||!err&&getOnExist;okToSave?group.save(function(err,data){doCallback(callback,[err,group,data])}):doCallback(callback,[null,group,data])})},Usergrid.Client.prototype.createEntity=function(options,callback){var getOnExist=options.getOnExist||!1;delete options.getOnExist;var entity_data={client:this,data:options},entity=new Usergrid.Entity(entity_data);entity.fetch(function(err,data){var common_errors=["service_resource_not_found","no_name_specified","null_pointer"],okToSave=!err&&getOnExist||err&&err.name&&-1!==common_errors.indexO
 f(err.name);okToSave?(entity.set(entity_data.data),entity.save(function(err,data){doCallback(callback,[err,entity,data])})):doCallback(callback,[null,entity,data])})},Usergrid.Client.prototype.getEntity=function(options,callback){var options={client:this,data:options},entity=new Usergrid.Entity(options);entity.fetch(function(err,data){doCallback(callback,[err,entity,data])})},Usergrid.Client.prototype.restoreEntity=function(serializedObject){var data=JSON.parse(serializedObject),options={client:this,data:data},entity=new Usergrid.Entity(options);return entity},Usergrid.Client.prototype.createCollection=function(options,callback){options.client=this;var collection=new Usergrid.Collection(options,function(err,data){doCallback(callback,[err,collection,data])})},Usergrid.Client.prototype.restoreCollection=function(serializedObject){var data=JSON.parse(serializedObject);data.client=this;var collection=new Usergrid.Collection(data);return collection},Usergrid.Client.prototype.getFeedForUs
 er=function(username,callback){var options={method:"GET",endpoint:"users/"+username+"/feed"};this.request(options,function(err,data){err?doCallback(callback,[err]):doCallback(callback,[err,data,data.getEntities()])})},Usergrid.Client.prototype.createUserActivity=function(user,options,callback){options.type="users/"+user+"/activities";var options={client:this,data:options},entity=new Usergrid.Entity(options);entity.save(function(err){doCallback(callback,[err,entity])})},Usergrid.Client.prototype.createUserActivityWithEntity=function(user,content,callback){var username=user.get("username"),options={actor:{displayName:username,uuid:user.get("uuid"),username:username,email:user.get("email"),picture:user.get("picture"),image:{duration:0,height:80,url:user.get("picture"),width:80}},verb:"post",content:content};this.createUserActivity(username,options,callback)},Usergrid.Client.prototype.calcTimeDiff=function(){var seconds=0,time=this._end-this._start;try{seconds=(time/10/60).toFixed(2)}ca
 tch(e){return 0}return seconds},Usergrid.Client.prototype.setToken=function(token){this.set("token",token)},Usergrid.Client.prototype.getToken=function(){return this.get("token")},Usergrid.Client.prototype.setObject=function(key,value){value&&(value=JSON.stringify(value)),this.set(key,value)},Usergrid.Client.prototype.set=function(key,value){var keyStore="apigee_"+key;this[key]=value,"undefined"!=typeof Storage&&(value?localStorage.setItem(keyStore,value):localStorage.removeItem(keyStore))},Usergrid.Client.prototype.getObject=function(key){return JSON.parse(this.get(key))},Usergrid.Client.prototype.get=function(key){var keyStore="apigee_"+key,value=null;return this[key]?value=this[key]:"undefined"!=typeof Storage&&(value=localStorage.getItem(keyStore)),value},Usergrid.Client.prototype.signup=function(username,password,email,name,callback){var options={type:"users",username:username,password:password,email:email,name:name};this.createEntity(options,callback)},Usergrid.Client.prototyp
 e.login=function(username,password,callback){var self=this,options={method:"POST",endpoint:"token",body:{username:username,password:password,grant_type:"password"}};self.request(options,function(err,data){var user={};if(err)self.logging&&console.log("error trying to log user in");else{var options={client:self,data:data.user};user=new Usergrid.Entity(options),self.setToken(data.access_token)}doCallback(callback,[err,data,user])})},Usergrid.Client.prototype.reAuthenticateLite=function(callback){var self=this,options={method:"GET",endpoint:"management/me",mQuery:!0};this.request(options,function(err,response){err&&self.logging?console.log("error trying to re-authenticate user"):self.setToken(response.data.access_token),doCallback(callback,[err])})},Usergrid.Client.prototype.reAuthenticate=function(email,callback){var self=this,options={method:"GET",endpoint:"management/users/"+email,mQuery:!0};this.request(options,function(err,response){var data,organizations={},applications={},user={}
 ;if(err&&self.logging)console.log("error trying to full authenticate user");else{data=response.data,self.setToken(data.token),self.set("email",data.email),localStorage.setItem("accessToken",data.token),localStorage.setItem("userUUID",data.uuid),localStorage.setItem("userEmail",data.email);var userData={username:data.username,email:data.email,name:data.name,uuid:data.uuid},options={client:self,data:userData};user=new Usergrid.Entity(options),organizations=data.organizations;var org="";try{var existingOrg=self.get("orgName");org=organizations[existingOrg]?organizations[existingOrg]:organizations[Object.keys(organizations)[0]],self.set("orgName",org.name)}catch(e){err=!0,self.logging&&console.log("error selecting org")}applications=self.parseApplicationsArray(org),self.selectFirstApp(applications),self.setObject("organizations",organizations),self.setObject("applications",applications)}doCallback(callback,[err,data,user,organizations,applications],self)})},Usergrid.Client.prototype.log
 inFacebook=function(facebookToken,callback){var self=this,options={method:"GET",endpoint:"auth/facebook",qs:{fb_access_token:facebookToken}};this.request(options,function(err,data){var user={};if(err&&self.logging)console.log("error trying to log user in");else{var options={client:self,data:data.user};user=new Usergrid.Entity(options),self.setToken(data.access_token)}doCallback(callback,[err,data,user],self)})},Usergrid.Client.prototype.getLoggedInUser=function(callback){if(this.getToken()){var self=this,options={method:"GET",endpoint:"users/me"};this.request(options,function(err,data){if(err)self.logging&&console.log("error trying to log user in"),doCallback(callback,[err,data,null],self);else{var options={client:self,data:data.entities[0]},user=new Usergrid.Entity(options);doCallback(callback,[null,data,user],self)}})}else callback(!0,null,null)},Usergrid.Client.prototype.isLoggedIn=function(){var token=this.getToken();return"undefined"!=typeof token&&null!==token},Usergrid.Client
 .prototype.logout=function(){this.setToken()},Usergrid.Client.prototype.buildCurlCall=function(options){var curl=["curl"],method=(options.method||"GET").toUpperCase(),body=options.body,uri=options.uri;return curl.push("-X"),curl.push(["POST","PUT","DELETE"].indexOf(method)>=0?method:"GET"),curl.push(uri),"object"==typeof body&&Object.keys(body).length>0&&-1!==["POST","PUT"].indexOf(method)&&(curl.push("-d"),curl.push("'"+JSON.stringify(body)+"'")),curl=curl.join(" "),console.log(curl),curl},Usergrid.Client.prototype.getDisplayImage=function(email,picture,size){size=size||50;var image="https://apigee.com/usergrid/images/user_profile.png";try{picture?image=picture:email.length&&(image="https://secure.gravatar.com/avatar/"+MD5(email)+"?s="+size+encodeURI("&d=https://apigee.com/usergrid/images/user_profile.png"))}catch(e){}finally{return image}},global[name]=Usergrid.Client,global[name].noConflict=function(){return overwrittenName&&(global[name]=overwrittenName),exports},global[name]}()
 ;var ENTITY_SYSTEM_PROPERTIES=["metadata","created","modified","oldpassword","newpassword","type","activated","uuid"];Usergrid.Entity=function(options){options&&(this._data=options.data||{},this._client=options.client||{})},Usergrid.Entity.isEntity=function(obj){return obj&&obj instanceof Usergrid.Entity},Usergrid.Entity.isPersistedEntity=function(obj){return isEntity(obj)&&isUUID(obj.get("uuid"))},Usergrid.Entity.prototype.serialize=function(){return JSON.stringify(this._data)},Usergrid.Entity.prototype.get=function(key){var value;if(0===arguments.length?value=this._data:arguments.length>1&&(key=[].slice.call(arguments).reduce(function(p,c){return c instanceof Array?p=p.concat(c):p.push(c),p},[])),key instanceof Array){var self=this;value=key.map(function(k){return self.get(k)})}else"undefined"!=typeof key&&(value=this._data[key]);return value},Usergrid.Entity.prototype.set=function(key,value){if("object"==typeof key)for(var field in key)this._data[field]=key[field];else"string"==t
 ypeof key?null===value?delete this._data[key]:this._data[key]=value:this._data={}},Usergrid.Entity.prototype.getEndpoint=function(){var name,type=this.get("type"),nameProperties=["uuid","name"];if(void 0===type)throw new UsergridError("cannot fetch entity, no entity type specified","no_type_specified");("users"===type||"user"===type)&&nameProperties.unshift("username");var names=this.get(nameProperties).filter(function(x){return null!=x&&"undefined"!=typeof x});return 0===names.length?type:(name=names.shift(),[type,name].join("/"))},Usergrid.Entity.prototype.save=function(callback){var self=this,type=this.get("type"),method="POST",entityId=this.get("uuid"),data={},entityData=this.get(),password=this.get("password"),oldpassword=this.get("oldpassword"),newpassword=this.get("newpassword"),options={method:method,endpoint:type};entityId&&(options.method="PUT",options.endpoint+="/"+entityId),Object.keys(entityData).filter(function(key){return-1===ENTITY_SYSTEM_PROPERTIES.indexOf(key)}).fo
 rEach(function(key){data[key]=entityData[key]}),options.body=data,this._client.request(options,function(err,response){var entity=response.getEntity();if(entity&&(self.set(entity),self.set("type",/^\//.test(response.path)?response.path.substring(1):response.path)),self.set("password",null),self.set("oldpassword",null),self.set("newpassword",null),err&&self._client.logging)console.log("could not save entity"),doCallback(callback,[err,response,self]);else if(/^users?/.test(self.get("type"))&&oldpassword&&newpassword){var options={method:"PUT",endpoint:type+"/"+self.get("uuid")+"/password",body:{uuid:self.get("uuid"),username:self.get("username"),password:password,oldpassword:oldpassword,newpassword:newpassword}};self._client.request(options,function(err,data){err&&self._client.logging&&console.log("could not update user"),self.set({password:null,oldpassword:null,newpassword:null}),doCallback(callback,[err,data,self])})}else doCallback(callback,[err,response,self])})},Usergrid.Entity.pr
 ototype.fetch=function(callback){var endpoint,self=this;endpoint=this.getEndpoint();var options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,response){var entity=response.getEntity();entity&&self.set(entity),doCallback(callback,[err,entity,self])})},Usergrid.Entity.prototype.destroy=function(callback){var self=this,endpoint=this.getEndpoint(),options={method:"DELETE",endpoint:endpoint};this._client.request(options,function(err,data){err||self.set(null),doCallback(callback,[err,data])})},Usergrid.Entity.prototype.connect=function(connection,entity,callback){var error,self=this,connecteeType=entity.get("type"),connectee=this.getEntityId(entity);if(!connectee)return void("function"==typeof callback&&(error="Error trying to delete object - no uuid specified.",self._client.logging&&console.log(error),doCallback(callback,[!0,error],self)));var connectorType=this.get("type"),connector=this.getEntityId(this);if(!connector)return void("function"==typeof callback
 &&(error="Error in connect - no uuid specified.",self._client.logging&&console.log(error),doCallback(callback,[!0,error],self)));var endpoint=connectorType+"/"+connector+"/"+connection+"/"+connecteeType+"/"+connectee,options={method:"POST",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("entity could not be connected"),doCallback(callback,[err,data],self)})},Usergrid.Entity.prototype.getEntityId=function(entity){var id=!1;return isUUID(entity.get("uuid"))?id=entity.get("uuid"):"users"===this.get("type")?id=entity.get("username"):entity.get("name")&&(id=entity.get("name")),id},Usergrid.Entity.prototype.getConnections=function(connection,callback){var self=this,connectorType=this.get("type"),connector=this.getEntityId(this);if(connector){var endpoint=connectorType+"/"+connector+"/"+connection+"/",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("enti
 ty could not be connected"),self[connection]={};for(var length=data&&data.entities?data.entities.length:0,i=0;length>i;i++)"user"===data.entities[i].type?self[connection][data.entities[i].username]=data.entities[i]:self[connection][data.entities[i].name]=data.entities[i];doCallback(callback,[err,data,data.entities],self)})}else if("function"==typeof callback){var error="Error in getConnections - no uuid specified.";self._client.logging&&console.log(error),doCallback(callback,[!0,error],self)}},Usergrid.Entity.prototype.getGroups=function(callback){var self=this,endpoint="users/"+this.get("uuid")+"/groups",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("entity could not be connected"),self.groups=data.entities,doCallback(callback,[err,data,data.entities],self)})},Usergrid.Entity.prototype.getActivities=function(callback){var self=this,endpoint=this.get("type")+"/"+this.get("uuid")+"/activities",options={
 method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("entity could not be connected");for(var entity in data.entities)data.entities[entity].createdDate=new Date(data.entities[entity].created).toUTCString();self.activities=data.entities,doCallback(callback,[err,data,data.entities],self)})},Usergrid.Entity.prototype.getFollowing=function(callback){var self=this,endpoint="users/"+this.get("uuid")+"/following",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("could not get user following");for(var entity in data.entities){data.entities[entity].createdDate=new Date(data.entities[entity].created).toUTCString();var image=self._client.getDisplayImage(data.entities[entity].email,data.entities[entity].picture);data.entities[entity]._portal_image_icon=image}self.following=data.entities,doCallback(callback,[err,data,data.entities],self)})},Usergrid.Ent
 ity.prototype.getFollowers=function(callback){var self=this,endpoint="users/"+this.get("uuid")+"/followers",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("could not get user followers");for(var entity in data.entities){data.entities[entity].createdDate=new Date(data.entities[entity].created).toUTCString();var image=self._client.getDisplayImage(data.entities[entity].email,data.entities[entity].picture);data.entities[entity]._portal_image_icon=image}self.followers=data.entities,doCallback(callback,[err,data,data.entities],self)})},Usergrid.Entity.prototype.getRoles=function(callback){var self=this,endpoint=this.get("type")+"/"+this.get("uuid")+"/roles",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("could not get user roles"),self.roles=data.entities,doCallback(callback,[err,data,data.entities],self)})},Usergrid.Entity.proto
 type.getPermissions=function(callback){var self=this,endpoint=this.get("type")+"/"+this.get("uuid")+"/permissions",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("could not get user permissions");var permissions=[];if(data.data){var perms=data.data,count=0;for(var i in perms){count++;var perm=perms[i],parts=perm.split(":"),ops_part="",path_part=parts[0];parts.length>1&&(ops_part=parts[0],path_part=parts[1]),ops_part.replace("*","get,post,put,delete");var ops=ops_part.split(","),ops_object={};ops_object.get="no",ops_object.post="no",ops_object.put="no",ops_object.delete="no";for(var j in ops)ops_object[ops[j]]="yes";permissions.push({operations:ops_object,path:path_part,perm:perm})}}self.permissions=permissions,doCallback(callback,[err,data,data.entities],self)})},Usergrid.Entity.prototype.disconnect=function(connection,entity,callback){var error,self=this,connecteeType=entity.get("type"),connectee=this.
 getEntityId(entity);if(!connectee)return void("function"==typeof callback&&(error="Error trying to delete object - no uuid specified.",self._client.logging&&console.log(error),doCallback(callback,[!0,error],self)));var connectorType=this.get("type"),connector=this.getEntityId(this);if(!connector)return void("function"==typeof callback&&(error="Error in connect - no uuid specified.",self._client.logging&&console.log(error),doCallback(callback,[!0,error],self)));var endpoint=connectorType+"/"+connector+"/"+connection+"/"+connecteeType+"/"+connectee,options={method:"DELETE",endpoint:endpoint};this._client.request(options,function(err,data){err&&self._client.logging&&console.log("entity could not be disconnected"),doCallback(callback,[err,data],self)})},Usergrid.Collection=function(options,callback){if(options&&(this._client=options.client,this._type=options.type,this.qs=options.qs||{},this._list=options.list||[],this._iterator=options.iterator||-1,this._previous=options.previous||[],th
 is._next=options.next||null,this._cursor=options.cursor||null,options.list))for(var count=options.list.length,i=0;count>i;i++){var entity=this._client.restoreEntity(options.list[i]);this._list[i]=entity}callback&&this.fetch(callback)},Usergrid.isCollection=function(obj){return obj&&obj instanceof Usergrid.Collection},Usergrid.Collection.prototype.serialize=function(){var data={};data.type=this._type,data.qs=this.qs,data.iterator=this._iterator,data.previous=this._previous,data.next=this._next,data.cursor=this._cursor,this.resetEntityPointer();var i=0;for(data.list=[];this.hasNextEntity();){var entity=this.getNextEntity();data.list[i]=entity.serialize(),i++}return data=JSON.stringify(data)},Usergrid.Collection.prototype.addCollection=function(collectionName,options,callback){self=this,options.client=this._client;var collection=new Usergrid.Collection(options,function(err){if("function"==typeof callback){for(collection.resetEntityPointer();collection.hasNextEntity();){var user=collect
 ion.getNextEntity(),image=(user.get("email"),self._client.getDisplayImage(user.get("email"),user.get("picture")));user._portal_image_icon=image}self[collectionName]=collection,doCallback(callback,[err,collection],self)}})},Usergrid.Collection.prototype.fetch=function(callback){var self=this,qs=this.qs;this._cursor?qs.cursor=this._cursor:delete qs.cursor;var options={method:"GET",endpoint:this._type,qs:this.qs};this._client.request(options,function(err,data){if(err&&self._client.logging)console.log("error getting collection");else{var cursor=data.cursor||null;if(self.saveCursor(cursor),data.entities){self.resetEntityPointer();var count=data.entities.length;self._list=[];for(var i=0;count>i;i++){var uuid=data.entities[i].uuid;if(uuid){var entityData=data.entities[i]||{};self._baseType=data.entities[i].type,entityData.type=self._type;var entityOptions={type:self._type,client:self._client,uuid:uuid,data:entityData},ent=new Usergrid.Entity(entityOptions);ent._json=JSON.stringify(entityDa
 ta,null,2);var ct=self._list.length;self._list[ct]=ent}}}}doCallback(callback,[err,data],self)})},Usergrid.Collection.prototype.addEntity=function(options,callback){var self=this;
 options.type=this._type,this._client.createEntity(options,function(err,entity){if(!err){var count=self._list.length;self._list[count]=entity}doCallback(callback,[err,entity],self)})},Usergrid.Collection.prototype.addExistingEntity=function(entity){var count=this._list.length;this._list[count]=entity},Usergrid.Collection.prototype.destroyEntity=function(entity,callback){var self=this;entity.destroy(function(err,data){err?(self._client.logging&&console.log("could not destroy entity"),doCallback(callback,[err,data],self)):self.fetch(callback)}),this.removeEntity(entity)},Usergrid.Collection.prototype.removeEntity=function(entity){var uuid=entity.get("uuid");for(var key in this._list){var listItem=this._list[key];if(listItem.get("uuid")===uuid)return this._list.splice(key,1)}return!1},Usergrid.Collection.prototype.getEntityByUUID=function(uuid,callback){for(var key in this._list){var listItem=this._list[key];if(listItem.get("uuid")===uuid)return callback(null,listItem)}var options={data
 :{type:this._type,uuid:uuid},client:this._client},entity=new Usergrid.Entity(options);entity.fetch(callback)},Usergrid.Collection.prototype.getFirstEntity=function(){var count=this._list.length;return count>0?this._list[0]:null},Usergrid.Collection.prototype.getLastEntity=function(){var count=this._list.length;return count>0?this._list[count-1]:null},Usergrid.Collection.prototype.hasNextEntity=function(){var next=this._iterator+1,hasNextElement=next>=0&&next<this._list.length;return hasNextElement?!0:!1},Usergrid.Collection.prototype.getNextEntity=function(){this._iterator++;var hasNextElement=this._iterator>=0&&this._iterator<=this._list.length;return hasNextElement?this._list[this._iterator]:!1},Usergrid.Collection.prototype.hasPrevEntity=function(){var previous=this._iterator-1,hasPreviousElement=previous>=0&&previous<this._list.length;return hasPreviousElement?!0:!1},Usergrid.Collection.prototype.getPrevEntity=function(){this._iterator--;var hasPreviousElement=this._iterator>=0&
 &this._iterator<=this._list.length;return hasPreviousElement?this._list[this._iterator]:!1},Usergrid.Collection.prototype.resetEntityPointer=function(){this._iterator=-1},Usergrid.Collection.prototype.saveCursor=function(cursor){this._next!==cursor&&(this._next=cursor)},Usergrid.Collection.prototype.resetPaging=function(){this._previous=[],this._next=null,this._cursor=null},Usergrid.Collection.prototype.hasNextPage=function(){return this._next},Usergrid.Collection.prototype.getNextPage=function(callback){this.hasNextPage()&&(this._previous.push(this._cursor),this._cursor=this._next,this._list=[],this.fetch(callback))},Usergrid.Collection.prototype.hasPreviousPage=function(){return this._previous.length>0},Usergrid.Collection.prototype.getPreviousPage=function(callback){this.hasPreviousPage()&&(this._next=null,this._cursor=this._previous.pop(),this._list=[],this.fetch(callback))},Usergrid.Group=function(options){this._path=options.path,this._list=[],this._client=options.client,this._
 data=options.data||{},this._data.type="groups"},Usergrid.Group.prototype=new Usergrid.Entity,Usergrid.Group.prototype.fetch=function(callback){var self=this,groupEndpoint="groups/"+this._path,memberEndpoint="groups/"+this._path+"/users",groupOptions={method:"GET",endpoint:groupEndpoint},memberOptions={method:"GET",endpoint:memberEndpoint};this._client.request(groupOptions,function(err,data){if(err)self._client.logging&&console.log("error getting group"),doCallback(callback,[err,data],self);else if(data.entities&&data.entities.length){var groupData=data.entities[0];self._data=groupData||{},self._client.request(memberOptions,function(err,data){if(err&&self._client.logging)console.log("error getting group users");else if(data.entities){var count=data.entities.length;self._list=[];for(var i=0;count>i;i++){var uuid=data.entities[i].uuid;if(uuid){var entityData=data.entities[i]||{},entityOptions={type:entityData.type,client:self._client,uuid:uuid,data:entityData},entity=new Usergrid.Entit
 y(entityOptions);self._list.push(entity)}}}doCallback(callback,[err,data,self._list],self)})}})},Usergrid.Group.prototype.members=function(callback){doCallback(callback,[null,this._list],this)},Usergrid.Group.prototype.add=function(options,callback){var self=this,options={method:"POST",endpoint:"groups/"+this._path+"/users/"+options.user.get("username")};this._client.request(options,function(error,data){error?doCallback(callback,[error,data,data.entities],self):self.fetch(callback)})},Usergrid.Group.prototype.remove=function(options,callback){var self=this,options={method:"DELETE",endpoint:"groups/"+this._path+"/users/"+options.user.get("username")};this._client.request(options,function(error,data){error?doCallback(callback,[error,data],self):self.fetch(callback)})},Usergrid.Group.prototype.feed=function(callback){var self=this,endpoint="groups/"+this._path+"/feed",options={method:"GET",endpoint:endpoint};this._client.request(options,function(err,data){err&&self.logging&&console.log
 ("error trying to log user in"),doCallback(callback,[err,data,data.entities],self)})},Usergrid.Group.prototype.createGroupActivity=function(options,callback){var user=options.user;options={client:this._client,data:{actor:{displayName:user.get("username"),uuid:user.get("uuid"),username:user.get("username"),email:user.get("email"),picture:user.get("picture"),image:{duration:0,height:80,url:user.get("picture"),width:80}},verb:"post",content:options.content,type:"groups/"+this._path+"/activities"}};var entity=new Usergrid.Entity(options);entity.save(function(err){doCallback(callback,[err,entity])})},Usergrid.Counter=function(options,callback){var self=this;this._client=options.client,this._data=options.data||{},this._data.category=options.category||"UNKNOWN",this._data.timestamp=options.timestamp||0,this._data.type="events",this._data.counters=options.counters||{},doCallback(callback,[!1,self],self)};var COUNTER_RESOLUTIONS=["all","minute","five_minutes","half_hour","hour","six_day","da
 y","week","month"];Usergrid.Counter.prototype=new Usergrid.Entity,Usergrid.Counter.prototype.fetch=function(callback){this.getData({},callback)},Usergrid.Counter.prototype.increment=function(options,callback){var self=this,name=options.name,value=options.value;return name?isNaN(value)?doCallback(callback,[!0,"'value' for increment, decrement must be a number"],self):(self._data.counters[name]=parseInt(value)||1,self.save(callback)):doCallback(callback,[!0,"'name' for increment, decrement must be a number"],self)},Usergrid.Counter.prototype.decrement=function(options,callback){var self=this,name=options.name,value=options.value;self.increment({name:name,value:-(parseInt(value)||1)},callback)},Usergrid.Counter.prototype.reset=function(options,callback){var self=this,name=options.name;self.increment({name:name,value:0},callback)},Usergrid.Counter.prototype.getData=function(options,callback){var start_time,end_time,start=options.start||0,end=options.end||Date.now(),resolution=(options.r
 esolution||"all").toLowerCase(),counters=options.counters||Object.keys(this._data.counters),res=(resolution||"all").toLowerCase();if(-1===COUNTER_RESOLUTIONS.indexOf(res)&&(res="all"),start)switch(typeof start){case"undefined":start_time=0;break;case"number":start_time=start;break;case"string":start_time=isNaN(start)?Date.parse(start):parseInt(start);break;default:start_time=Date.parse(start.toString())}if(end)switch(typeof end){case"undefined":end_time=Date.now();break;case"number":end_time=end;break;case"string":end_time=isNaN(end)?Date.parse(end):parseInt(end);break;default:end_time=Date.parse(end.toString())}var self=this,params=Object.keys(counters).map(function(counter){return["counter",encodeURIComponent(counters[counter])].join("=")});params.push("resolution="+res),params.push("start_time="+String(start_time)),params.push("end_time="+String(end_time));var endpoint="counters?"+params.join("&");this._client.request({endpoint:endpoint},function(err,data){return data.counters&&d
 ata.counters.length&&data.counters.forEach(function(counter){self._data.counters[counter.name]=counter.value||counter.values}),doCallback(callback,[err,data],self)})},Usergrid.Folder=function(options,callback){var self=this;console.log("FOLDER OPTIONS",options),self._client=options.client,self._data=options.data||{},self._data.type="folders";var missingData=["name","owner","path"].some(function(required){return!(required in self._data)});return missingData?doCallback(callback,[!0,new Usergrid.Error("Invalid asset data: 'name', 'owner', and 'path' are required properties.")],self):void self.save(function(err,data){err?doCallback(callback,[!0,new Usergrid.Error(data)],self):(data&&data.entities&&data.entities.length&&self.set(data.entities[0]),doCallback(callback,[!1,self],self))})},Usergrid.Folder.prototype=new Usergrid.Entity,Usergrid.Folder.prototype.fetch=function(callback){var self=this;Usergrid.Entity.prototype.fetch.call(self,function(err,data){console.log("self",self.get()),co
 nsole.log("data",data),err?doCallback(callback,[!0,new UsergridError(data)],self):self.getAssets(function(err,data){err?doCallback(callback,[!0,new UsergridError(data)],self):doCallback(callback,[null,self],self)})})},Usergrid.Folder.prototype.addAsset=function(options,callback){var self=this;if("asset"in options){var asset=null;switch(typeof options.asset){case"object":asset=options.asset,asset instanceof Usergrid.Entity||(asset=new Usergrid.Asset(asset));break;case"string":isUUID(options.asset)&&(asset=new Usergrid.Asset({client:self._client,data:{uuid:options.asset,type:"assets"}}))}asset&&asset instanceof Usergrid.Entity&&asset.fetch(function(err,data){if(err)doCallback(callback,[err,new UsergridError(data)],self);else{var endpoint=["folders",self.get("uuid"),"assets",asset.get("uuid")].join("/"),options={method:"POST",endpoint:endpoint};self._client.request(options,callback)}})}else doCallback(callback,[!0,{error_description:"No asset specified"}],self)},Usergrid.Folder.prototy
 pe.removeAsset=function(options,callback){var self=this;if("asset"in options){var asset=null;switch(typeof options.asset){case"object":asset=options.asset;break;case"string":isUUID(options.asset)&&(asset=new Usergrid.Asset({client:self._client,data:{uuid:options.asset,type:"assets"}}))}if(asset&&null!==asset){var endpoint=["folders",self.get("uuid"),"assets",asset.get("uuid")].join("/");self._client.request({method:"DELETE",endpoint:endpoint},callback)}}else doCallback(callback,[!0,{error_description:"No asset specified"}],self)},Usergrid.Folder.prototype.getAssets=function(callback){return this.getConnections("assets",callback)},XMLHttpRequest.prototype.sendAsBinary||(XMLHttpRequest.prototype.sendAsBinary=function(sData){for(var nBytes=sData.length,ui8Data=new Uint8Array(nBytes),nIdx=0;nBytes>nIdx;nIdx++)ui8Data[nIdx]=255&sData.charCodeAt(nIdx);this.send(ui8Data)}),Usergrid.Asset=function(options,callback){var self=this;self._client=options.client,self._data=options.data||{},self._
 data.type="assets";var missingData=["name","owner","path"].some(function(required){return!(required in self._data)});return missingData?doCallback(callback,[!0,new Usergrid.Error("Invalid asset data: 'name', 'owner', and 'path' are required properties.")],self):void self.save(function(err,data){err?doCallback(callback,[!0,new Usergrid.Error(data)],self):(data&&data.entities&&data.entities.length&&self.set(data.entities[0]),doCallback(callback,[!1,self],self))})},Usergrid.Asset.prototype=new Usergrid.Entity,Usergrid.Asset.prototype.addToFolder=function(options,callback){var self=this;if("folder"in options&&isUUID(options.folder)){Usergrid.Folder({uuid:options.folder},function(err,folder){if(err)return callback.call(self,err,folder);var endpoint=["folders",folder.get("uuid"),"assets",self.get("uuid")].join("/"),options={method:"POST",endpoint:endpoint};this._client.request(options,callback)})}else doCallback(callback,[!0,new UsergridError("folder not specified")],self)},Usergrid.Asset
 .prototype.upload=function(data,callback){if(!(window.File&&window.FileReader&&window.FileList&&window.Blob))return doCallback(callback,[!0,new UsergridError("The File APIs are not fully supported by your browser.")],self);var self=this,endpoint=[this._client.URI,this._client.orgName,this._client.appName,"assets",self.get("uuid"),"data"].join("/"),xhr=new XMLHttpRequest;xhr.open("POST",endpoint,!0),xhr.onerror=function(){doCallback(callback,[!0,new UsergridError("The File APIs are not fully supported by your browser.")],self)},xhr.onload=function(){xhr.status>=300?doCallback(callback,[!0,new UsergridError(JSON.parse(xhr.responseText))],self):doCallback(callback,[null,self],self)};var fr=new FileReader;fr.onload=function(){var binary=fr.result;xhr.overrideMimeType("application/octet-stream"),setTimeout(function(){xhr.sendAsBinary(binary)},1e3)},fr.readAsBinaryString(data)},Usergrid.Asset.prototype.download=function(callback){var self=this,endpoint=[this._client.URI,this._client.orgNa
 me,this._client.appName,"assets",self.get("uuid"),"data"].join("/"),xhr=new XMLHttpRequest;xhr.open("GET",endpoint,!0),xhr.responseType="blob",xhr.onload=function(){var blob=xhr.response;doCallback(callback,[!1,blob],self)},xhr.onerror=function(err){callback(!0,err),doCallback(callback,[!0,new UsergridError(err)],self)},xhr.send()},function(global){function UsergridError(message,name,timestamp,duration,exception){this.message=message,this.name=name,this.timestamp=timestamp||Date.now(),this.duration=duration||0,this.exception=exception}function UsergridHTTPResponseError(message,name,timestamp,duration,exception){this.message=message,this.name=name,this.timestamp=timestamp||Date.now(),this.duration=duration||0,this.exception=exception}function UsergridInvalidHTTPMethodError(message,name,timestamp,duration,exception){this.message=message,this.name=name,this.timestamp=timestamp||Date.now(),this.duration=duration||0,this.exception=exception}function UsergridInvalidURIError(message,name,t
 imestamp,duration,exception){this.message=message,this.name=name,this.timestamp=timestamp||Date.now(),this.duration=duration||0,this.exception=exception}function UsergridKeystoreDatabaseUpgradeNeededError(message,name,timestamp,duration,exception){this.message=message,this.name=name,this.timestamp=timestamp||Date.now(),this.duration=duration||0,this.exception=exception}var short,name="UsergridError",_name=global[name],_short=short&&void 0!==short?global[short]:void 0;return UsergridError.prototype=new Error,UsergridError.prototype.constructor=UsergridError,UsergridError.fromResponse=function(response){return response&&"undefined"!=typeof response?new UsergridError(response.error_description,response.error,response.timestamp,response.duration,response.exception):new UsergridError},UsergridError.createSubClass=function(name){return name in global&&global[name]?global[name]:(global[name]=function(){},global[name].name=name,global[name].prototype=new UsergridError,global[name])},Usergri
 dHTTPResponseError.prototype=new UsergridError,UsergridInvalidHTTPMethodError.prototype=new UsergridError,UsergridInvalidURIError.prototype=new UsergridError,UsergridKeystoreDatabaseUpgradeNeededError.prototype=new UsergridError,global.UsergridHTTPResponseError=UsergridHTTPResponseError,global.UsergridInvalidHTTPMethodError=UsergridInvalidHTTPMethodError,global.UsergridInvalidURIError=UsergridInvalidURIError,global.UsergridKeystoreDatabaseUpgradeNeededError=UsergridKeystoreDatabaseUpgradeNeededError,global[name]=UsergridError,void 0!==short&&(global[short]=UsergridError),global[name].noConflict=function(){return _name&&(global[name]=_name),void 0!==short&&(global[short]=_short),UsergridError},global[name]}(this);
\ No newline at end of file


[13/50] [abbrv] fix module errors

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/js/libs/usergrid-libs.min.js
----------------------------------------------------------------------
diff --git a/portal/js/libs/usergrid-libs.min.js b/portal/js/libs/usergrid-libs.min.js
index db86fed..f002c2a 100644
--- a/portal/js/libs/usergrid-libs.min.js
+++ b/portal/js/libs/usergrid-libs.min.js
@@ -1,4 +1,4 @@
-/*! apigee-usergrid@2.0.34 2014-02-20 */
+/*! apigee-usergrid@2.0.34 2014-03-03 */
 !function(e,t){function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)dele
 te o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function it(){return!0}function ot(){return!1}function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0==
 =n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){for(var n,r=0;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t
 ).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}function tn(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;i--;)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function 
 rn(e,t){for(var n,r,i,o=[],a=0,s=e.length;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(
 e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(
 b.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}var o={},a=e===jn;return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);for(;"*"===l[0];)l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataT
 ype)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"!==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){for(var r=(Qn[t]||[]).concat(Qn["*"]),i=0,o=r.length;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;u>a;a++)
 l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.timer(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.css
 Hooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",
 {}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function or(e){return b.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],
 :{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementB
 yId(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.cal
 l(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},
 isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.
 replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a)for(;o>i&&(r=t.apply(e[i],n),r!==!1);i++);else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a)for(;o>i&&(r=t.call(e[i],i,e[i]),r!==!1);i++);else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call(" ")?function(e){return 
 null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else for(;n[o]!==t;)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid
 ||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.to
 LowerCase()}),r=b(o);var _={};b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;!function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})}(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){for(var r;(r=b.inArray(t,u,r))>-1;)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u|
 |i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]
 +"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var s,u,l,t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}};if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t
 ={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t
 "),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;bo
 rder:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.fir
 stChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf(
 "data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}}),b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e
 ,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};for("string"!=typeof e&&(n=e,e=t),e=e||"fx";s--;)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q
 =b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){for(o=0;i=t[o++];)0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||
 "").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){for(o=0;i=t[o++];)for(;r.indexOf(" "+i+" ")>=0;)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return this.each(b.isFunction(e)?function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}:function(){if("string"===n)for(var o,a=0,s=b(this),u=t,l=e.match(w)||[];o=l[a++];)u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o);else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,r=this.length;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];return arguments.length?(i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType
 &&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))})):o?(r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)):void 0}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inA
 rray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;return e&&3!==u&&8!==u&&2!==u?typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t)):void 0},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)for(;n=o[i++];)r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpad
 ding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;return e&&3!==s&&8!==s&&2!==s?(a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]):void 0},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.
 nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)
 }}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected|
 |(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){for(r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f
 .elem=e),n=(n||"").match(w)||[""],l=n.length;l--;)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){for(t=(t||"").match(w)||[""],l=t.length;l--;)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){for(p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.l
 ength;o--;)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||
 p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}for(d=0;(l=h[d++])&&!n.isPropagationStopped();)n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(s=b.event.handlers.call(this,e,l),n=
 0;(o=s[n++])&&!e.isPropagationStopped();)for(e.currentTarget=o.elem,a=0;(i=o.handlers[a++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];for(s||(this.fixHooks[i]=s=tt.test(i)?this.mouse
 Hooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;t--;)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.sc
 rollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof
  e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i
 =e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this.
 _just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}})
 ,b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undeleg
 ate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e
 ),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;u--;)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;
 )n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);for(s=e,u=[],l=i.preFilter;s;){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){for(;t=t[i];)if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){for(;t=t[i];)if((1===t.nodeType||o)&&e(t,n,s))return!0}else for(;t=t[i];)if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return
  e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r)for(l=mt(y,d),r(l,[],s,u),c=l.length;c--;)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p));if(o){if(i||e){if(i){for(l=[],c=y.length;c--;)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}for(c=y.length;c--;)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){for(var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeTyp
 e?c(e,n,r):p(e,n,r))}];o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r&&!i.relative[e[r].type];r++);return yt(u>1&&gt(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){for(g=0;m=e[g++];)if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){for(g=0;m=t[g++];)m(x,y,u,c);if(s){if(v>0)for(;b--;)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}function xt(e,t,n){for(var r=0,i=t.length;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1
 ===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}for(o=U.needsContext.test(e)?0:a.length;o--&&(u=a[o],!i.relative[l=u.type]);)if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}return s(e,p)(r,t,d,n,V.test(e)),n}function Tt(){}var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((
 ?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n
 +65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){for(var t,n=[];t=this[e++];)n.push(t);return n}}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'></a>
 <div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&
 &e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length|
 |h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t
 ];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);for(r=e;r=r.parentNode;)s.unshift(r);for(r=t;r=r.parentNode;)l.unshift(r);for(;s[i]===l[i];)i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "
 +e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return e},o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e
 ){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u
 ){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];p=++d&&p&&p[g]||(f=d=0)||h.pop();)if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else for(;(p=++d&&p&&p[g]||(f=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++f||(v&&((p[x]||(p[x]={}))[e]=[N,f]),p!==t)););return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){for(var i,o=r(e,t),a=o.length;a--;)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){r
 eturn r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e)
 {return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){for(var r
 =0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){for(var r=0>n?n+t:n;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){for(t||(t=ft(e)),n=t.length;n--;)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o},i.pseudos.nth=i.pseudos.eq,i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,th
 is[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n.ownerDocument&&n!==t&&11!==n.nodeType;){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==type
 of e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack,b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.
 fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)
 }}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){for(var i=[],o=e[n];o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r));)1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,
 "<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return t
 his},wrapInner:function(e){return this.each(b.isFunction(e)?function(t){b(this).wrapInner(e.call(this,t))}:function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function
 (e,t){for(var n,r=0;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&b.cleanData(Ot(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)}
 ,null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"glo
 balEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}}),b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){for(var n,r=0,i=[],o=b(e),a=o.length-1;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}}),b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&
 &Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){for(var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){for(s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];i--;)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody)for(o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;i--;)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l);for(b.merge(d,s.childNodes),s.textContent="";s.firstChild;)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));for(s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;o=d[h++];)if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),
 "script"),a&&Mt(s),n))for(i=0;o=s[i++];)kt.test(o.type||"")&&n.push(o);return s=null,f},cleanData:function(e,t){for(var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;
 i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.sup
 port.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=fu
 nction(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u}),b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),
 ""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:i
 nput|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")},b.each("blur focus focusin focusout load resize scroll unload click dblclick moused
 own mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[],b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o
 =arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t
 ){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="error",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{}
 ,y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c)for(c={};t=Tn.exec(a);)c[t[1].toLowerCase()]=t[2];t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.done,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&
 "string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader("Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(j
 n,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}}),b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&
 &(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0]),s=
 a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.noop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.te
 xt=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,r=0,i=e.length;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}}),b.Tween=rr,rr.prototype={constructor:rr,init
 :function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.el
 em[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n
 )&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=function(e,t,n){var r=e&&"object"==typeof e?b.extend({},e):{complete:n||!n&&t||b.isFunction(e)&&e,duration:e,easing:n&&t||t&&!b.isFunction(t)&&t};r

<TRUNCATED>

[29/50] [abbrv] git commit: Merge pull request #67 from r3b/DPS-131

Posted by sn...@apache.org.
Merge pull request #67 from r3b/DPS-131

Dps 131

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

Branch: refs/pull/60/head
Commit: 2891b5483696b4414ce301e4c202f0ef253b021c
Parents: 7f50cae 406541d
Author: Rod Simpson <ro...@rodsimpson.com>
Authored: Mon Mar 3 16:37:45 2014 -0700
Committer: Rod Simpson <ro...@rodsimpson.com>
Committed: Mon Mar 3 16:37:45 2014 -0700

----------------------------------------------------------------------
 sdks/html5-javascript/usergrid.js     | 8 ++++----
 sdks/html5-javascript/usergrid.min.js | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------



[49/50] [abbrv] git commit: Merge branch 'master' of https://github.com/usergrid/usergrid into Export_Persistance_Integration

Posted by sn...@apache.org.
Merge branch 'master' of https://github.com/usergrid/usergrid into Export_Persistance_Integration

# By Shawn Feldman (9) and others
# Via Dave Johnson (3) and others
* 'master' of https://github.com/usergrid/usergrid:
  Removed 10 app limit
  updating dist artifacts
  createCollection was executing its callback with an inconsistent arity
  fix module errors
  Move SimpleService test class to correct package (not sure why this was not breaking everybody's build).
  Add RAT exclusions for tmp directories and Netbeans files.
  Fixing parse errors
  Remove LGPL license header based on MODE-2081 https://github.com/ModeShape/modeshape/commit/65cd7f28b9c79d3fa11150edfe52c4ef34d280a0
  Adding licence headers
  flush out at 10000 items
  remove break
  flush list after certain amount of commits
  adding circuit breaker to stop at 10k connections
  adding comments
  implemented using iterator
  adding test for feed not returning when its over 10 items
  remove s3 dev dependency

Conflicts:
	stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java <- Resolved


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

Branch: refs/pull/60/merge
Commit: a8824941262dc05bad2b93fe593b90ad0d021415
Parents: cb606aa 631f02d
Author: grey <gr...@apigee.com>
Authored: Thu Mar 6 10:38:07 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Thu Mar 6 10:38:07 2014 -0800

----------------------------------------------------------------------
 portal/config.js                                |  12 ---
 portal/index-debug.html                         |   4 +-
 portal/index.html                               |   4 +-
 portal/js/app.js                                |   4 +-
 portal/js/libs/usergrid-libs.min.js             |   2 +-
 portal/js/usergrid-dev.min.js                   |   9 +-
 portal/js/usergrid.min.js                       |   8 +-
 portal/package.json                             |   3 +-
 sdks/html5-javascript/usergrid.js               |   8 +-
 sdks/html5-javascript/usergrid.min.js           |   2 +-
 .../lib/vendor/Apigee/Usergrid/Collection.php   |   4 +-
 stack/build-tools/pom.xml                       |  16 +++
 .../src/main/resources/usergrid/checkstyle.xml  |  16 +++
 stack/config/pom.xml                            |  16 +++
 stack/config/src/main/resources/log4j.xml       |  16 +++
 .../main/resources/usergrid-default.properties  |  12 +++
 stack/config/src/test/resources/cassandra.yaml  |  14 ++-
 stack/config/src/test/resources/hazelcast.xml   |  16 +++
 stack/config/src/test/resources/log4j.xml       |  16 +++
 stack/core/pom.xml                              |  16 +++
 .../persistence/query/tree/QueryFilter.g        |  34 ++++++
 .../java/org/apache/usergrid/batch/AppArgs.java |  16 +++
 .../java/org/apache/usergrid/batch/Job.java     |  16 +++
 .../org/apache/usergrid/batch/JobExecution.java |  17 +--
 .../apache/usergrid/batch/JobExecutionImpl.java |  16 +++
 .../org/apache/usergrid/batch/JobFactory.java   |  16 +++
 .../usergrid/batch/JobNotFoundException.java    |  16 +++
 .../org/apache/usergrid/batch/JobRuntime.java   |  17 +--
 .../usergrid/batch/JobRuntimeException.java     |  16 +++
 .../usergrid/batch/UsergridJobFactory.java      |  16 +++
 .../apache/usergrid/batch/job/OnlyOnceJob.java  |  17 +--
 .../apache/usergrid/batch/job/package-info.java |   1 -
 .../usergrid/batch/repository/JobAccessor.java  |   1 -
 .../batch/repository/JobDescriptor.java         |  16 +++
 .../usergrid/batch/repository/package-info.java |   1 -
 .../org/apache/usergrid/batch/service/App.java  |  16 +++
 .../usergrid/batch/service/JobListener.java     |   1 -
 .../batch/service/JobSchedulerService.java      |   1 -
 .../usergrid/batch/service/package-info.java    |   1 -
 .../hazelcast/HazelcastLifecycleMonitor.java    |  17 +--
 .../apache/usergrid/count/AbstractBatcher.java  |  17 +--
 .../apache/usergrid/count/BatchSubmitter.java   |  17 +--
 .../java/org/apache/usergrid/count/Batcher.java |  17 +--
 .../usergrid/count/CassandraCounterStore.java   |  17 +--
 .../usergrid/count/CassandraSubmitter.java      |  17 +--
 .../apache/usergrid/count/CountProducer.java    |  17 +--
 .../CounterProcessingUnavailableException.java  |  17 +--
 .../org/apache/usergrid/count/CounterStore.java |  17 +--
 .../apache/usergrid/count/SimpleBatcher.java    |  17 +--
 .../usergrid/count/Slf4JBatchSubmitter.java     |  17 +--
 .../org/apache/usergrid/count/common/Count.java |  17 +--
 .../usergrid/count/common/CountSerDeUtils.java  |  17 +--
 .../common/CountTransportSerDeException.java    |  17 +--
 .../org/apache/usergrid/count/package-info.java |  16 +++
 .../usergrid/exception/JsonReadException.java   |  18 ++--
 .../usergrid/exception/JsonWriteException.java  |  18 ++--
 .../exception/NotImplementedException.java      |  17 +--
 .../java/org/apache/usergrid/locking/Lock.java  |  17 +--
 .../org/apache/usergrid/locking/LockHelper.java |  17 +--
 .../apache/usergrid/locking/LockManager.java    |  17 +--
 .../usergrid/locking/LockPathBuilder.java       |  17 +--
 .../locking/cassandra/HectorLockImpl.java       |  17 +--
 .../cassandra/HectorLockManagerImpl.java        |  17 +--
 .../locking/exception/UGLockException.java      |  17 +--
 .../usergrid/locking/noop/NoOpLockImpl.java     |  17 +--
 .../locking/noop/NoOpLockManagerImpl.java       |  17 +--
 .../locking/singlenode/SingleNodeLockImpl.java  |  17 +--
 .../singlenode/SingleNodeLockManagerImpl.java   |  17 +--
 .../zookeeper/ZooKeeperLockManagerImpl.java     |  17 +--
 .../locking/zookeeper/ZookeeperLockImpl.java    |  17 +--
 .../org/apache/usergrid/mq/CounterQuery.java    |  17 +--
 .../java/org/apache/usergrid/mq/Message.java    |  17 +--
 .../main/java/org/apache/usergrid/mq/Query.java |  17 +--
 .../apache/usergrid/mq/QueryFilterLexer.java    |  16 +++
 .../apache/usergrid/mq/QueryFilterParser.java   |  16 +++
 .../org/apache/usergrid/mq/QueryProcessor.java  |  16 +++
 .../main/java/org/apache/usergrid/mq/Queue.java |  17 +--
 .../org/apache/usergrid/mq/QueueManager.java    |  17 +--
 .../apache/usergrid/mq/QueueManagerFactory.java |  17 +--
 .../org/apache/usergrid/mq/QueuePosition.java   |  17 +--
 .../java/org/apache/usergrid/mq/QueueQuery.java |  17 +--
 .../org/apache/usergrid/mq/QueueResults.java    |  17 +--
 .../java/org/apache/usergrid/mq/QueueSet.java   |  17 +--
 .../usergrid/mq/cassandra/CassandraMQUtils.java |  17 +--
 .../mq/cassandra/MessageIndexUpdate.java        |  17 +--
 .../usergrid/mq/cassandra/QueueIndexUpdate.java |  17 +--
 .../mq/cassandra/QueueManagerFactoryImpl.java   |  17 +--
 .../usergrid/mq/cassandra/QueueManagerImpl.java |  17 +--
 .../apache/usergrid/mq/cassandra/QueuesCF.java  |  17 +--
 .../mq/cassandra/io/AbstractSearch.java         |  17 +--
 .../mq/cassandra/io/ConsumerTransaction.java    |  17 +--
 .../usergrid/mq/cassandra/io/EndSearch.java     |  17 +--
 .../usergrid/mq/cassandra/io/FilterSearch.java  |  17 +--
 .../mq/cassandra/io/NoTransactionSearch.java    |  17 +--
 .../usergrid/mq/cassandra/io/QueueBounds.java   |  16 +++
 .../usergrid/mq/cassandra/io/QueueSearch.java   |  17 +--
 .../usergrid/mq/cassandra/io/StartSearch.java   |  17 +--
 .../usergrid/persistence/AbstractEntity.java    |  17 +--
 .../usergrid/persistence/AggregateCounter.java  |  17 +--
 .../persistence/AggregateCounterSet.java        |  17 +--
 .../persistence/AssociatedEntityRef.java        |  17 +--
 .../usergrid/persistence/CollectionRef.java     |  17 +--
 .../persistence/ConnectedEntityRef.java         |  17 +--
 .../usergrid/persistence/ConnectionRef.java     |  17 +--
 .../usergrid/persistence/CounterQuery.java      |  17 +--
 .../usergrid/persistence/CounterResolution.java |  17 +--
 .../usergrid/persistence/CredentialsInfo.java   |  17 +--
 .../usergrid/persistence/DynamicEntity.java     |  17 +--
 .../org/apache/usergrid/persistence/Entity.java |  17 +--
 .../usergrid/persistence/EntityFactory.java     |  17 +--
 .../usergrid/persistence/EntityManager.java     |  17 +--
 .../persistence/EntityManagerFactory.java       |  17 +--
 .../persistence/EntityPropertyComparator.java   |  17 +--
 .../apache/usergrid/persistence/EntityRef.java  |  17 +--
 .../usergrid/persistence/EntityUtils.java       |  17 +--
 .../apache/usergrid/persistence/Identifier.java |  17 +--
 .../persistence/IndexBucketLocator.java         |  17 +--
 .../persistence/MultiQueryIterator.java         |  16 +++
 .../persistence/PagingResultsIterator.java      |  16 +++
 .../apache/usergrid/persistence/PathQuery.java  |  16 +++
 .../org/apache/usergrid/persistence/Query.java  |  17 +--
 .../apache/usergrid/persistence/QueryUtils.java |  16 +++
 .../usergrid/persistence/RelationManager.java   |  17 +--
 .../apache/usergrid/persistence/Results.java    |  17 +--
 .../apache/usergrid/persistence/RoleRef.java    |  17 +--
 .../org/apache/usergrid/persistence/Schema.java |  17 +--
 .../persistence/SimpleCollectionRef.java        |  17 +--
 .../usergrid/persistence/SimpleEntityRef.java   |  17 +--
 .../usergrid/persistence/SimpleRoleRef.java     |  17 +--
 .../usergrid/persistence/TypedEntity.java       |  17 +--
 .../org/apache/usergrid/persistence/Update.java |  17 +--
 .../annotations/EntityCollection.java           |  17 +--
 .../annotations/EntityDictionary.java           |  17 +--
 .../persistence/annotations/EntityProperty.java |  17 +--
 .../persistence/cassandra/ApplicationCF.java    |  17 +--
 .../usergrid/persistence/cassandra/CFEnum.java  |  17 +--
 .../cassandra/CassandraPersistenceUtils.java    |  17 +--
 .../persistence/cassandra/CassandraService.java |  17 +--
 .../cassandra/ConnectedEntityRefImpl.java       |  17 +--
 .../cassandra/ConnectionRefImpl.java            |  17 +--
 .../persistence/cassandra/CounterUtils.java     |  17 +--
 .../persistence/cassandra/CursorCache.java      |  16 +++
 .../cassandra/EntityManagerFactoryImpl.java     |  17 +--
 .../cassandra/EntityManagerImpl.java            |  17 +--
 .../cassandra/EntityValueSerializer.java        |  17 +--
 .../persistence/cassandra/GeoIndexManager.java  |  17 +--
 .../persistence/cassandra/IndexUpdate.java      |  17 +--
 .../persistence/cassandra/QueryProcessor.java   |  17 +--
 .../cassandra/RelationManagerImpl.java          |  17 +--
 .../usergrid/persistence/cassandra/Setup.java   |  17 +--
 .../cassandra/SimpleIndexBucketLocatorImpl.java |  17 +--
 .../cassandra/index/ConnectedIndexScanner.java  |  17 +--
 .../cassandra/index/IndexBucketScanner.java     |  17 +--
 .../index/IndexMultiBucketSetLoader.java        |  17 +--
 .../cassandra/index/IndexScanner.java           |  17 +--
 .../cassandra/index/NoOpIndexScanner.java       |  17 +--
 .../cassandra/util/Slf4jTraceTagReporter.java   |  16 +++
 .../cassandra/util/TaggedOpTimer.java           |  16 +++
 .../persistence/cassandra/util/TimedOpTag.java  |  16 +++
 .../cassandra/util/TraceParticipant.java        |  16 +++
 .../persistence/cassandra/util/TraceTag.java    |  16 +++
 .../cassandra/util/TraceTagAspect.java          |  16 +++
 .../cassandra/util/TraceTagManager.java         |  16 +++
 .../cassandra/util/TraceTagReporter.java        |  16 +++
 .../usergrid/persistence/entities/Activity.java |  17 +--
 .../persistence/entities/Application.java       |  17 +--
 .../usergrid/persistence/entities/Asset.java    |  17 +--
 .../usergrid/persistence/entities/Device.java   |  17 +--
 .../usergrid/persistence/entities/Event.java    |  17 +--
 .../usergrid/persistence/entities/Folder.java   |  17 +--
 .../usergrid/persistence/entities/Group.java    |  17 +--
 .../usergrid/persistence/entities/JobData.java  |  17 +--
 .../usergrid/persistence/entities/JobStat.java  |  17 +--
 .../usergrid/persistence/entities/Message.java  |  17 +--
 .../usergrid/persistence/entities/Role.java     |  17 +--
 .../usergrid/persistence/entities/User.java     |  17 +--
 .../ApplicationAlreadyExistsException.java      |  17 +--
 .../DuplicateUniquePropertyExistsException.java |  17 +--
 .../exceptions/EntityNotFoundException.java     |  17 +--
 .../exceptions/LockingException.java            |  18 ++--
 .../exceptions/NoFullTextIndexException.java    |  17 +--
 .../exceptions/NoIndexException.java            |  17 +--
 .../exceptions/PersistenceException.java        |  17 +--
 .../PropertyTypeConversionException.java        |  17 +--
 .../exceptions/QueryIterationException.java     |  16 +++
 .../exceptions/QueryParseException.java         |  17 +--
 .../exceptions/QueryTokenException.java         |  17 +--
 .../persistence/exceptions/QueueException.java  |  18 ++--
 .../RequiredPropertyNotFoundException.java      |  17 +--
 .../TransactionNotFoundException.java           |  17 +--
 .../UnexpectedEntityTypeException.java          |  17 +--
 .../persistence/geo/CollectionGeoSearch.java    |  16 +++
 .../persistence/geo/ConnectionGeoSearch.java    |  16 +++
 .../persistence/geo/EntityLocationRef.java      |  16 +++
 .../EntityLocationRefDistanceComparator.java    |  17 +--
 .../persistence/geo/GeoIndexSearcher.java       |  16 +++
 .../persistence/geo/GeocellManager.java         |  16 +++
 .../usergrid/persistence/geo/GeocellUtils.java  |  24 +++--
 .../geo/comparator/DoubleTupleComparator.java   |  16 +++
 .../persistence/geo/model/BoundingBox.java      |  27 ++---
 .../persistence/geo/model/CostFunction.java     |  27 ++---
 .../geo/model/DefaultCostFunction.java          |  27 ++---
 .../usergrid/persistence/geo/model/Point.java   |  27 ++---
 .../usergrid/persistence/geo/model/Tuple.java   |  16 +++
 .../usergrid/persistence/query/ir/AllNode.java  |  16 +++
 .../usergrid/persistence/query/ir/AndNode.java  |  17 +--
 .../persistence/query/ir/BooleanNode.java       |  17 +--
 .../query/ir/EmailIdentifierNode.java           |  16 +++
 .../query/ir/NameIdentifierNode.java            |  16 +++
 .../persistence/query/ir/NodeVisitor.java       |  17 +--
 .../usergrid/persistence/query/ir/NotNode.java  |  17 +--
 .../usergrid/persistence/query/ir/OrNode.java   |  17 +--
 .../persistence/query/ir/OrderByNode.java       |  17 +--
 .../persistence/query/ir/QueryNode.java         |  17 +--
 .../persistence/query/ir/QuerySlice.java        |  17 +--
 .../persistence/query/ir/SearchVisitor.java     |  16 +++
 .../persistence/query/ir/SliceNode.java         |  17 +--
 .../query/ir/UuidIdentifierNode.java            |  16 +++
 .../persistence/query/ir/WithinNode.java        |  17 +--
 .../query/ir/result/AbstractScanColumn.java     |  16 +++
 .../result/CollectionResultsLoaderFactory.java  |  16 +++
 .../ir/result/ConnectionIndexSliceParser.java   |  17 +--
 .../query/ir/result/ConnectionRefLoader.java    |  16 +++
 .../result/ConnectionResultsLoaderFactory.java  |  16 +++
 .../ir/result/ConnectionTypesIterator.java      |  16 +++
 .../query/ir/result/EmptyIterator.java          |  16 +++
 .../query/ir/result/EntityRefLoader.java        |  17 +--
 .../query/ir/result/EntityResultsLoader.java    |  17 +--
 .../query/ir/result/GeoIterator.java            |  17 +--
 .../persistence/query/ir/result/IDLoader.java   |  16 +++
 .../query/ir/result/IntersectionIterator.java   |  17 +--
 .../query/ir/result/MergeIterator.java          |  17 +--
 .../query/ir/result/MultiIterator.java          |  17 +--
 .../query/ir/result/OrderByIterator.java        |  17 +--
 .../query/ir/result/ResultIterator.java         |  17 +--
 .../query/ir/result/ResultsLoader.java          |  17 +--
 .../query/ir/result/ResultsLoaderFactory.java   |  16 +++
 .../persistence/query/ir/result/ScanColumn.java |  16 +++
 .../query/ir/result/ScanColumnTransformer.java  |  16 +++
 .../ir/result/SecondaryIndexSliceParser.java    |  17 +--
 .../query/ir/result/SliceIterator.java          |  17 +--
 .../query/ir/result/SliceParser.java            |  17 +--
 .../query/ir/result/StaticIdIterator.java       |  16 +++
 .../query/ir/result/SubtractionIterator.java    |  17 +--
 .../query/ir/result/UUIDIndexSliceParser.java   |  17 +--
 .../query/ir/result/UnionIterator.java          |  17 +--
 .../persistence/query/tree/AndOperand.java      |  17 +--
 .../persistence/query/tree/BooleanLiteral.java  |  17 +--
 .../persistence/query/tree/BooleanOperand.java  |  17 +--
 .../persistence/query/tree/ContainsOperand.java |  17 +--
 .../query/tree/ContainsProperty.java            |  17 +--
 .../usergrid/persistence/query/tree/Equal.java  |  17 +--
 .../persistence/query/tree/EqualityOperand.java |  17 +--
 .../persistence/query/tree/FloatLiteral.java    |  17 +--
 .../persistence/query/tree/GreaterThan.java     |  17 +--
 .../query/tree/GreaterThanEqual.java            |  17 +--
 .../persistence/query/tree/LessThan.java        |  17 +--
 .../persistence/query/tree/LessThanEqual.java   |  17 +--
 .../persistence/query/tree/Literal.java         |  17 +--
 .../persistence/query/tree/LiteralFactory.java  |  17 +--
 .../persistence/query/tree/LongLiteral.java     |  17 +--
 .../persistence/query/tree/NotOperand.java      |  17 +--
 .../persistence/query/tree/NumericLiteral.java  |  17 +--
 .../persistence/query/tree/Operand.java         |  17 +--
 .../persistence/query/tree/OrOperand.java       |  17 +--
 .../persistence/query/tree/Property.java        |  17 +--
 .../persistence/query/tree/QueryVisitor.java    |  17 +--
 .../persistence/query/tree/StringLiteral.java   |  17 +--
 .../persistence/query/tree/UUIDLiteral.java     |  17 +--
 .../persistence/query/tree/WithinOperand.java   |  17 +--
 .../persistence/query/tree/WithinProperty.java  |  17 +--
 .../persistence/schema/CollectionInfo.java      |  17 +--
 .../persistence/schema/DictionaryInfo.java      |  17 +--
 .../usergrid/persistence/schema/EntityInfo.java |  17 +--
 .../persistence/schema/PropertyInfo.java        |  17 +--
 .../usergrid/system/UsergridSystemMonitor.java  |  16 +++
 .../org/apache/usergrid/utils/AESUtils.java     |   1 -
 .../org/apache/usergrid/utils/DateUtils.java    |  15 ---
 .../org/apache/usergrid/utils/Inflector.java    |  25 -----
 .../org/apache/usergrid/utils/package-info.java |   1 -
 .../main/resources/usergrid-core-context.xml    |  16 +++
 .../resources/usergrid-scheduler-context.xml    |  17 +++
 stack/core/src/site/apt/format.apt              |  17 ++-
 stack/core/src/site/apt/index.apt               |  16 +++
 stack/core/src/site/fml/faq.fml                 |  17 +++
 stack/core/src/site/site.xml                    |  16 +++
 stack/core/src/site/xdoc/xdoc.xml               |  18 +++-
 stack/core/src/test/java/io/baas/Simple.java    |  19 ----
 .../org/apache/usergrid/AbstractCoreIT.java     |  17 +--
 .../java/org/apache/usergrid/Application.java   |  16 +++
 .../apache/usergrid/ConcurrentCoreITSuite.java  |  17 +--
 .../usergrid/ConcurrentCoreIteratorITSuite.java |  16 +++
 .../usergrid/ConcurrentCoreTestSuite.java       |  16 +++
 .../org/apache/usergrid/CoreApplication.java    |  17 +--
 .../java/org/apache/usergrid/CoreITSetup.java   |  17 +--
 .../org/apache/usergrid/CoreITSetupImpl.java    |  16 +++
 .../java/org/apache/usergrid/CoreITSuite.java   |  16 +++
 .../java/org/apache/usergrid/CoreTestSuite.java |  17 +--
 .../org/apache/usergrid/batch/AppArgsTest.java  |  16 +++
 .../batch/BulkJobExecutionUnitTest.java         |  16 +++
 .../apache/usergrid/batch/BulkTestUtils.java    |  16 +++
 .../batch/ConcurrentSchedulerITSuite.java       |  16 +++
 .../batch/ConcurrentSchedulerTestSuite.java     |  16 +++
 .../apache/usergrid/batch/SchedulerITSuite.java |  16 +++
 .../usergrid/batch/SchedulerTestSuite.java      |  16 +++
 .../usergrid/batch/UsergridJobFactoryTest.java  |  16 +++
 .../usergrid/batch/job/TestJobListener.java     |   1 -
 .../usergrid/batch/job/TestJobListenerTest.java |   1 -
 .../apache/usergrid/batch/job/package-info.java |   1 -
 .../clustering/hazelcast/HazelcastTest.java     |  17 +--
 .../count/BatchCountParallelismTest.java        |  16 +++
 .../usergrid/count/SimpleBatcherTest.java       |  17 +--
 .../count/common/CountSerDeUtilsTest.java       |  17 +--
 .../apache/usergrid/count/common/CountTest.java |  17 +--
 .../locking/cassandra/HectorLockManagerIT.java  |  17 +--
 .../SingleNodeLockTestSingleNode.java           |  17 +--
 .../zookeeper/AbstractZooKeeperTest.java        |  17 +--
 .../usergrid/locking/zookeeper/ZooPut.java      |  17 +--
 .../zookeeper/ZookeeperLockManagerTest.java     |  17 +--
 .../java/org/apache/usergrid/mq/MessagesIT.java |  17 +--
 .../org/apache/usergrid/mq/QueuePathsTest.java  |  17 +--
 .../usergrid/persistence/CollectionIT.java      |  17 +--
 .../usergrid/persistence/CoreSchemaManager.java |  16 +++
 .../apache/usergrid/persistence/CounterIT.java  |  17 +--
 .../persistence/EntityConnectionsIT.java        |  17 +--
 .../persistence/EntityDictionaryIT.java         |  17 +--
 .../usergrid/persistence/EntityManagerIT.java   |  17 +--
 .../EntityPropertyComparatorTest.java           |  16 +++
 .../apache/usergrid/persistence/EntityTest.java |  17 +--
 .../org/apache/usergrid/persistence/GeoIT.java  |  17 +--
 .../apache/usergrid/persistence/IndexIT.java    |  17 +--
 .../usergrid/persistence/PathQueryIT.java       |  16 +++
 .../usergrid/persistence/PermissionsIT.java     |  17 +--
 .../apache/usergrid/persistence/QueryTest.java  |  17 +--
 .../usergrid/persistence/QueryUtilsTest.java    |  16 +++
 .../apache/usergrid/persistence/SchemaTest.java |  21 ++--
 .../apache/usergrid/persistence/UtilsTest.java  |  17 +--
 .../cassandra/EntityManagerFactoryImplIT.java   |  17 +--
 .../cassandra/QueryProcessorTest.java           |  17 +--
 .../SimpleIndexBucketLocatorImplTest.java       |  17 +--
 .../cassandra/util/TraceTagUnitTest.java        |  16 +++
 .../persistence/entities/SampleEntity.java      |  17 +--
 ...EntityLocationRefDistanceComparatorTest.java |  17 +--
 .../query/AbstractIteratingQueryIT.java         |  17 +--
 .../persistence/query/AllInCollectionIT.java    |  17 +--
 .../persistence/query/AllInConnectionIT.java    |  17 +--
 .../query/AllInConnectionNoTypeIT.java          |  17 +--
 .../query/IntersectionUnionPagingIT.java        |  17 +--
 .../query/MultiOrderByCollectionIT.java         |  17 +--
 .../MultiOrderByComplexUnionCollectionIT.java   |  17 +--
 .../MultiOrderByComplexUnionConnectionIT.java   |  17 +--
 .../query/MultiOrderByConnectionIT.java         |  17 +--
 .../query/NotOrderByCollectionIT.java           |  17 +--
 .../query/NotOrderByConnectionIT.java           |  17 +--
 ...gleOrderByBoundRangeScanAscCollectionIT.java |  17 +--
 ...gleOrderByBoundRangeScanAscConnectionIT.java |  17 +--
 ...leOrderByBoundRangeScanDescCollectionIT.java |  17 +--
 ...leOrderByBoundRangeScanDescConnectionIT.java |  17 +--
 ...eOrderByComplexIntersectionCollectionIT.java |  17 +--
 ...eOrderByComplexIntersectionConnectionIT.java |  17 +--
 .../SingleOrderByComplexUnionCollectionIT.java  |  17 +--
 .../SingleOrderByComplexUnionConnectionIT.java  |  17 +--
 .../SingleOrderByIntersectionCollectionIT.java  |  17 +--
 .../SingleOrderByIntersectionConnectionIT.java  |  17 +--
 .../SingleOrderByLessThanLimitCollectionIT.java |  17 +--
 .../SingleOrderByLessThanLimitConnectionIT.java |  17 +--
 .../SingleOrderByMaxLimitCollectionIT.java      |  17 +--
 .../SingleOrderByMaxLimitConnectionIT.java      |  17 +--
 ...SingleOrderByNoIntersectionCollectionIT.java |  17 +--
 ...SingleOrderByNoIntersectionConnectionIT.java |  17 +--
 .../query/SingleOrderByNotCollectionIT.java     |  17 +--
 .../query/SingleOrderByNotConnectionIT.java     |  17 +--
 ...OrderBySameRangeScanGreaterCollectionIT.java |  17 +--
 ...OrderBySameRangeScanGreaterConnectionIT.java |  17 +--
 ...meRangeScanGreaterThanEqualCollectionIT.java |  17 +--
 ...gleOrderBySameRangeScanLessCollectionIT.java |  17 +--
 ...gleOrderBySameRangeScanLessConnectionIT.java |  17 +--
 ...ySameRangeScanLessThanEqualCollectionIT.java |  17 +--
 ...ySameRangeScanLessThanEqualConnectionIT.java |  17 +--
 .../query/ir/result/AbstractScanColumnTest.java |  16 +++
 .../query/ir/result/InOrderIterator.java        |  16 +++
 .../ir/result/IntersectionIteratorTest.java     |  17 +--
 .../query/ir/result/IteratorHelper.java         |  16 +++
 .../ir/result/SubtractionIteratorTest.java      |  17 +--
 .../query/ir/result/UnionIteratorTest.java      |  17 +--
 .../persistence/query/tree/GrammarTreeTest.java |  17 +--
 .../persistence/query/tree/LongLiteralTest.java |  17 +--
 .../query/tree/StringLiteralTest.java           |  17 +--
 .../system/UsergridSystemMonitorIT.java         |  16 +++
 .../apache/usergrid/utils/TimeUtilsTest.java    |   1 -
 .../org/apache/usergrid/utils/package-info.java |   1 -
 .../core/src/test/java/org/usergrid/Simple.java |  36 +++++++
 stack/launcher/launch                           |  18 +++-
 stack/launcher/pom.xml                          |  16 +++
 .../java/org/apache/usergrid/launcher/App.java  |  17 +--
 .../apache/usergrid/launcher/AppleUtils.java    |  17 +--
 .../org/apache/usergrid/launcher/JarMain.java   |   1 -
 .../apache/usergrid/launcher/LauncherFrame.java |  17 +--
 .../usergrid/launcher/LogViewerFrame.java       |  17 +--
 .../apache/usergrid/launcher/package-info.java  |   1 -
 .../launcher/src/main/resources/cassandra.yaml  |  14 ++-
 .../resources/usergrid-standalone-context.xml   |  16 +++
 .../resources/usergrid-standalone.properties    |  23 ++++
 stack/mongo-emulator/pom.xml                    |  16 +++
 .../usergrid/mongo/MongoChannelHandler.java     |  17 +--
 .../usergrid/mongo/MongoMessageDecoder.java     |  17 +--
 .../usergrid/mongo/MongoMessageEncoder.java     |  17 +--
 .../org/apache/usergrid/mongo/MongoQuery.java   |  17 +--
 .../org/apache/usergrid/mongo/MongoServer.java  |  17 +--
 .../mongo/MongoServerPipelineFactory.java       |  17 +--
 .../usergrid/mongo/commands/Buildinfo.java      |  17 +--
 .../usergrid/mongo/commands/Collstats.java      |  17 +--
 .../apache/usergrid/mongo/commands/Count.java   |  17 +--
 .../apache/usergrid/mongo/commands/Dbstats.java |  17 +--
 .../usergrid/mongo/commands/Getlasterror.java   |  17 +--
 .../usergrid/mongo/commands/ListDatabases.java  |  17 +--
 .../usergrid/mongo/commands/MongoCommand.java   |  17 +--
 .../mongo/commands/ReplSetGetStatus.java        |  17 +--
 .../usergrid/mongo/commands/ServerStatus.java   |  17 +--
 .../usergrid/mongo/commands/Whatsmyuri.java     |  17 +--
 .../apache/usergrid/mongo/protocol/Message.java |  17 +--
 .../apache/usergrid/mongo/protocol/OpCrud.java  |  17 +--
 .../usergrid/mongo/protocol/OpDelete.java       |  17 +--
 .../usergrid/mongo/protocol/OpGetMore.java      |  17 +--
 .../usergrid/mongo/protocol/OpInsert.java       |  17 +--
 .../usergrid/mongo/protocol/OpKillCursors.java  |  17 +--
 .../apache/usergrid/mongo/protocol/OpMsg.java   |  17 +--
 .../apache/usergrid/mongo/protocol/OpQuery.java |  17 +--
 .../apache/usergrid/mongo/protocol/OpReply.java |  17 +--
 .../usergrid/mongo/protocol/OpUpdate.java       |  17 +--
 .../usergrid/mongo/query/MongoQueryParser.java  |  17 +--
 .../mongo/testproxy/MongoMessageFrame.java      |  17 +--
 .../testproxy/MongoProxyInboundHandler.java     |  17 +--
 .../testproxy/MongoProxyPipelineFactory.java    |  17 +--
 .../mongo/testproxy/MongoProxyServer.java       |  17 +--
 .../testproxy/MongoProxyServerHandler.java      |  17 +--
 .../apache/usergrid/mongo/utils/BSONUtils.java  |  17 +--
 .../usergrid/mongo/AbstractMongoTest.java       |  17 +--
 .../apache/usergrid/mongo/BasicMongoTest.java   |  16 +++
 .../usergrid/mongo/DatabaseInitializer.java     |  17 +--
 .../apache/usergrid/mongo/MongoQueryTest.java   |  16 +++
 stack/pom.xml                                   |  67 ++++++++++++
 stack/query-validator/pom.xml                   |  16 +++
 .../query/validator/ApiServerRunner.java        |  17 ++-
 .../validator/DefaultQueryResultsMatcher.java   |  17 ++-
 .../usergrid/query/validator/QueryEntity.java   |  17 ++-
 .../usergrid/query/validator/QueryRequest.java  |  17 ++-
 .../usergrid/query/validator/QueryResponse.java |  17 ++-
 .../query/validator/QueryResultsMatcher.java    |  17 ++-
 .../usergrid/query/validator/QueryRunner.java   |  17 ++-
 .../validator/QueryValidationConfiguration.java |  17 ++-
 .../query/validator/QueryValidator.java         |  17 ++-
 .../usergrid/query/validator/SqliteRunner.java  |  17 ++-
 .../usergrid-query-validator-context.xml        |  16 +++
 .../query/validator/AbstractQueryIT.java        |  17 ++-
 .../usergrid/query/validator/QueryITSuite.java  |  17 ++-
 .../query/validator/users/UserQueryIT.java      |  17 ++-
 .../src/test/resources/project.properties       |  16 +++
 .../resources/usergrid-custom-test.properties   |  16 +++
 .../test/resources/usergrid-test-context.xml    |  16 +++
 stack/rest/pom.xml                              |  17 +++
 .../usergrid/rest/AbstractContextResource.java  |  17 +--
 .../org/apache/usergrid/rest/ApiResponse.java   |  17 +--
 .../rest/JacksonCustomMapperProvider.java       |  17 +--
 .../org/apache/usergrid/rest/RootResource.java  |  17 +--
 .../rest/ServerEnvironmentProperties.java       |  16 +++
 .../apache/usergrid/rest/SwaggerServlet.java    |  17 +--
 .../apache/usergrid/rest/SystemResource.java    |  17 +--
 .../usergrid/rest/TextToJsonSwapWriter.java     |  16 +++
 .../rest/applications/ApplicationResource.java  |  17 +--
 .../rest/applications/AuthResource.java         |  17 +--
 .../rest/applications/ServiceResource.java      |  17 +--
 .../applications/assets/AssetsResource.java     |  16 +++
 .../applications/events/EventsResource.java     |  17 +--
 .../rest/applications/queues/QueueResource.java |  17 +--
 .../queues/QueueSubscriberResource.java         |  17 +--
 .../queues/QueueSubscriptionResource.java       |  17 +--
 .../queues/QueueTransactionsResource.java       |  17 +--
 .../users/AbstractUserExtensionResource.java    |  17 +--
 .../rest/applications/users/UserResource.java   |  17 +--
 .../rest/applications/users/UsersResource.java  |  17 +--
 .../exceptions/AbstractExceptionMapper.java     |  17 +--
 .../usergrid/rest/exceptions/AuthErrorInfo.java |  17 +--
 .../AuthorizationExceptionMapper.java           |  17 +--
 ...cateUniquePropertyExistsExceptionMapper.java |  17 +--
 .../EntityNotFoundExceptionMapper.java          |  17 +--
 ...orbiddenServiceOperationExceptionMapper.java |  17 +--
 .../IllegalArgumentExceptionMapper.java         |  17 +--
 .../exceptions/JsonReadExceptionMapper.java     |  12 +--
 .../exceptions/JsonWriteExceptionMapper.java    |  12 +--
 .../exceptions/ManagementExceptionMapper.java   |  17 +--
 .../usergrid/rest/exceptions/NoOpException.java |  17 +--
 .../rest/exceptions/NoOpExceptionMapper.java    |  17 +--
 .../NotImplementedExceptionMapper.java          |  17 +--
 .../exceptions/OAuthProblemExceptionMapper.java |  17 +--
 ...rganizationApplicationNotFoundException.java |  16 +++
 ...ationApplicationNotFoundExceptionMapper.java |  16 +++
 .../exceptions/PersistenceExceptionMapper.java  |  17 +--
 .../exceptions/QueryParseExceptionMapper.java   |  17 +--
 .../exceptions/QueryTokenExceptionMapper.java   |  17 +--
 .../RecentlyUsedPasswordExceptionMapper.java    |  16 +++
 .../rest/exceptions/RedirectionException.java   |  16 +++
 .../exceptions/RedirectionExceptionMapper.java  |  17 +--
 ...RequiredPropertyNotFoundExceptionMapper.java |  17 +--
 .../rest/exceptions/SecurityException.java      |  17 +--
 .../exceptions/SecurityExceptionMapper.java     |  17 +--
 .../rest/exceptions/ServiceExceptionMapper.java |  17 +--
 .../ServiceResourceNotFoundExceptionMapper.java |  17 +--
 .../rest/exceptions/ThrowableMapper.java        |  17 +--
 .../TransactionNotFoundExceptionMapper.java     |  17 +--
 .../rest/filters/ContentTypeFilter.java         |  17 +--
 .../rest/filters/JSONPCallbackFilter.java       |  17 +--
 .../usergrid/rest/filters/MeteringFilter.java   |  17 +--
 .../usergrid/rest/filters/TracingFilter.java    |  16 +++
 .../rest/management/ManagementResource.java     |  17 +--
 .../management/metrics/MetricsResource.java     |  16 +++
 .../organizations/OrganizationResource.java     |  17 +--
 .../organizations/OrganizationsResource.java    |  17 +--
 .../applications/ApplicationResource.java       |  17 +--
 .../applications/ApplicationsResource.java      |  17 +--
 .../organizations/users/UsersResource.java      |  17 +--
 .../rest/management/users/UserResource.java     |  17 +--
 .../rest/management/users/UsersResource.java    |  17 +--
 .../organizations/OrganizationsResource.java    |  17 +--
 .../organizations/OrganizationResource.java     |  16 +++
 .../rest/security/CrossOriginRequestFilter.java |  17 +--
 .../security/SecuredResourceFilterFactory.java  |  17 +--
 .../annotations/RequireAdminUserAccess.java     |  17 +--
 .../annotations/RequireApplicationAccess.java   |  17 +--
 .../annotations/RequireOrganizationAccess.java  |  17 +--
 .../annotations/RequireSystemAccess.java        |  17 +--
 .../security/shiro/RestSecurityManager.java     |  17 +--
 .../ShiroAuthenticationExceptionMapper.java     |  17 +--
 .../shiro/filters/BasicAuthSecurityFilter.java  |  17 +--
 .../ClientCredentialsSecurityFilter.java        |  17 +--
 .../OAuth2AccessTokenSecurityFilter.java        |  17 +--
 .../security/shiro/filters/SecurityFilter.java  |  17 +--
 .../session/HttpRequestSessionManager.java      |  17 +--
 .../session/HttpServletRequestSession.java      |  17 +--
 .../usergrid/rest/test/PropertiesResource.java  |  11 +-
 .../apache/usergrid/rest/utils/CORSUtils.java   |  17 +--
 .../apache/usergrid/rest/utils/JSONPUtils.java  |  17 +--
 .../usergrid/rest/utils/PathingUtils.java       |  16 +++
 .../main/resources/swagger/applications.json    |  16 +++
 .../src/main/resources/swagger/management.json  |  16 +++
 .../src/main/resources/swagger/resources.json   |  16 +++
 .../main/resources/usergrid-rest-context.xml    |  16 +++
 .../resources/usergrid-rest-deploy-context.xml  |  16 +++
 stack/rest/src/main/webapp/WEB-INF/c.tld        |  17 ++-
 .../apache/usergrid/rest/TestResource/error.jsp |  16 +++
 .../apache/usergrid/rest/TestResource/test.jsp  |  16 +++
 .../ApplicationResource/authorize_form.jsp      |  16 +++
 .../applications/ApplicationResource/error.jsp  |  16 +++
 .../users/UserResource/activate.jsp             |  16 +++
 .../applications/users/UserResource/confirm.jsp |  16 +++
 .../applications/users/UserResource/error.jsp   |  16 +++
 .../users/UserResource/resetpw_email_form.jsp   |  16 +++
 .../UserResource/resetpw_email_success.jsp      |  16 +++
 .../users/UserResource/resetpw_set_form.jsp     |  16 +++
 .../users/UserResource/resetpw_set_success.jsp  |  16 +++
 .../applications/users/UsersResource/error.jsp  |  16 +++
 .../users/UsersResource/resetpw_email_form.jsp  |  16 +++
 .../UsersResource/resetpw_email_success.jsp     |  16 +++
 .../ManagementResource/authorize_form.jsp       |  16 +++
 .../management/ManagementResource/error.jsp     |  16 +++
 .../OrganizationResource/activate.jsp           |  16 +++
 .../OrganizationResource/confirm.jsp            |  16 +++
 .../OrganizationResource/error.jsp              |  16 +++
 .../management/users/UserResource/activate.jsp  |  16 +++
 .../management/users/UserResource/confirm.jsp   |  16 +++
 .../management/users/UserResource/error.jsp     |  16 +++
 .../users/UserResource/resetpw_email_form.jsp   |  16 +++
 .../UserResource/resetpw_email_success.jsp      |  16 +++
 .../users/UserResource/resetpw_set_form.jsp     |  16 +++
 .../users/UserResource/resetpw_set_success.jsp  |  16 +++
 .../management/users/UsersResource/error.jsp    |  16 +++
 .../users/UsersResource/resetpw_email_form.jsp  |  16 +++
 .../UsersResource/resetpw_email_success.jsp     |  16 +++
 stack/rest/src/main/webapp/WEB-INF/web.xml      |  16 +++
 stack/rest/src/main/webapp/css/styles.css       |  17 ++-
 .../apache/usergrid/rest/AbstractRestIT.java    |  17 +--
 .../java/org/apache/usergrid/rest/BasicIT.java  |  17 +--
 .../usergrid/rest/ConcurrentRestITSuite.java    |  16 +++
 .../usergrid/rest/DatabaseInitializer.java      |  17 +--
 .../java/org/apache/usergrid/rest/ITSetup.java  |  26 ++---
 .../org/apache/usergrid/rest/RestITSuite.java   |  26 ++---
 .../apache/usergrid/rest/TestContextSetup.java  |  16 +++
 .../apache/usergrid/rest/TomcatResource.java    |  16 +++
 .../ApplicationRequestCounterIT.java            |  24 +++--
 .../applications/ApplicationResourceIT.java     |  16 +--
 .../rest/applications/DevicesResourceIT.java    |  16 +++
 .../applications/assets/AssetResourceIT.java    |  16 +++
 .../collection/BadGrammarQueryTest.java         |  16 +++
 .../collection/BrowserCompatibilityTest.java    |  17 +--
 .../collection/PagingResourceIT.java            |  17 +--
 .../collection/activities/AndOrQueryTest.java   |  16 +++
 .../collection/activities/OrderByTest.java      |  16 +++
 .../activities/PagingEntitiesTest.java          |  16 +++
 .../collection/activities/PutTest.java          |  16 +++
 .../collection/groups/GeoPagingTest.java        |  26 ++---
 .../collection/groups/UpdateGroupIT.java        |  26 ++---
 .../applications/events/EventsResourceIT.java   |  16 +++
 .../queues/AbstractQueueResourceIT.java         |  16 +++
 .../queues/QueueResourceLong1IT.java            |  16 +++
 .../queues/QueueResourceLong2IT.java            |  16 +++
 .../queues/QueueResourceLong3IT.java            |  16 +++
 .../queues/QueueResourceShortIT.java            |  16 +++
 .../applications/users/ActivityResourceIT.java  |  17 +--
 .../users/CollectionsResourceIT.java            |  17 +--
 .../users/ConnectionResourceTest.java           |  16 +++
 .../applications/users/GroupResourceIT.java     |  17 +--
 .../applications/users/OwnershipResourceIT.java |  17 +--
 .../users/PermissionsResourceIT.java            |  17 +--
 .../applications/users/RetrieveUsersTest.java   |  16 +++
 .../rest/applications/users/UserResourceIT.java |  17 +--
 .../users/extensions/TestResource.java          |  17 +--
 .../rest/applications/utils/TestUtils.java      |  17 +--
 .../rest/applications/utils/UserRepo.java       |  16 +++
 .../rest/filters/ContentTypeResourceIT.java     |  17 +--
 .../rest/management/ManagementResourceIT.java   | 108 +++++++++++++++++--
 .../rest/management/RegistrationIT.java         |  25 +++--
 .../organizations/AdminEmailEncodingIT.java     |  16 +++
 .../organizations/OrganizationResourceIT.java   |  16 +++
 .../organizations/OrganizationsResourceIT.java  |  16 +++
 .../applications/ApplicationsIT.java            |  84 +++++++++++++++
 .../rest/management/users/MUUserResourceIT.java |  25 +++--
 .../UsersOrganizationsResourceIT.java           |  16 +++
 .../rest/test/PropertiesResourceIT.java         |  12 +--
 .../rest/test/resource/CollectionResource.java  |  17 +--
 .../usergrid/rest/test/resource/Connection.java |  17 +--
 .../rest/test/resource/CustomCollection.java    |  17 +--
 .../rest/test/resource/EntityResource.java      |  17 +--
 .../apache/usergrid/rest/test/resource/Me.java  |  17 +--
 .../rest/test/resource/NamedResource.java       |  17 +--
 .../rest/test/resource/ResultsParser.java       |  17 +--
 .../rest/test/resource/RootResource.java        |  17 +--
 .../rest/test/resource/SetResource.java         |  17 +--
 .../rest/test/resource/TestContext.java         |  26 ++---
 .../rest/test/resource/ValueResource.java       |  17 +--
 .../rest/test/resource/app/Application.java     |  17 +--
 .../usergrid/rest/test/resource/app/Device.java |  17 +--
 .../usergrid/rest/test/resource/app/User.java   |  17 +--
 .../rest/test/resource/app/UsersCollection.java |  17 +--
 .../resource/app/queue/DevicesCollection.java   |  17 +--
 .../rest/test/resource/app/queue/Queue.java     |  17 +--
 .../resource/app/queue/QueuesCollection.java    |  17 +--
 .../app/queue/SubscribersCollection.java        |  17 +--
 .../test/resource/app/queue/Transaction.java    |  17 +--
 .../app/queue/TransactionsCollection.java       |  17 +--
 .../rest/test/resource/mgmt/Application.java    |  17 +--
 .../resource/mgmt/ApplicationsCollection.java   |  17 +--
 .../rest/test/resource/mgmt/Management.java     |  17 +--
 .../rest/test/resource/mgmt/Organization.java   |  17 +--
 .../resource/mgmt/OrganizationsCollection.java  |  17 +--
 .../rest/test/security/TestAdminUser.java       |  17 +--
 .../rest/test/security/TestAppUser.java         |  17 +--
 .../usergrid/rest/test/security/TestUser.java   |  17 +--
 stack/services/pom.xml                          |  16 +++
 .../management/AccountCreationProps.java        |  17 +--
 .../usergrid/management/ActivationState.java    |  16 +++
 .../usergrid/management/ApplicationCreator.java |  16 +++
 .../usergrid/management/ApplicationInfo.java    |  17 +--
 .../usergrid/management/ManagementService.java  |  17 +--
 .../usergrid/management/OrganizationInfo.java   |  17 +--
 .../management/OrganizationOwnerInfo.java       |  17 +--
 .../management/OrganizationProfile.java         |  17 +--
 .../apache/usergrid/management/UserInfo.java    |  17 +--
 .../cassandra/AccountCreationPropsImpl.java     |  17 +--
 .../cassandra/ApplicationCreatorImpl.java       |  16 +++
 .../cassandra/ManagementServiceImpl.java        |  45 ++++----
 .../ApplicationCreationException.java           |  16 +++
 .../exceptions/DisabledAdminUserException.java  |  17 +--
 .../exceptions/DisabledAppUserException.java    |  17 +--
 .../exceptions/IncorrectPasswordException.java  |  17 +--
 .../exceptions/ManagementException.java         |  17 +--
 .../RecentlyUsedPasswordException.java          |  16 +++
 .../UnableToLeaveOrganizationException.java     |  17 +--
 .../UnactivatedAdminUserException.java          |  17 +--
 .../exceptions/UnactivatedAppUserException.java |  17 +--
 .../UnactivatedOrganizationException.java       |  17 +--
 .../UnconfirmedAdminUserException.java          |  17 +--
 .../usergrid/management/utils/AccountUtils.java |  17 +--
 .../usergrid/security/AuthPrincipalInfo.java    |  17 +--
 .../usergrid/security/AuthPrincipalType.java    |  17 +--
 .../security/crypto/EncryptionService.java      |  17 +--
 .../security/crypto/EncryptionServiceImpl.java  |  17 +--
 .../security/crypto/command/BcryptCommand.java  |  17 +--
 .../crypto/command/EncryptionCommand.java       |  17 +--
 .../security/crypto/command/Md5HashCommand.java |  17 +--
 .../crypto/command/PlainTextCommand.java        |  17 +--
 .../crypto/command/SaltedHasherCommand.java     |  17 +--
 .../crypto/command/Sha1HashCommand.java         |  17 +--
 .../usergrid/security/oauth/AccessInfo.java     |  17 +--
 .../security/oauth/ClientCredentialsInfo.java   |  17 +--
 .../usergrid/security/oauth/OAuthProxy.java     |  17 +--
 .../security/oauth/OAuthProxyFactory.java       |  17 +--
 .../security/providers/AbstractProvider.java    |  16 +++
 .../security/providers/FacebookProvider.java    |  16 +++
 .../security/providers/FoursquareProvider.java  |  16 +++
 .../providers/PingIdentityProvider.java         |  16 +++
 .../security/providers/SignInAsProvider.java    |  16 +++
 .../providers/SignInProviderFactory.java        |  16 +++
 .../security/salt/NoOpSaltProvider.java         |  17 +--
 .../security/salt/PropertiesSaltProvider.java   |  17 +--
 .../usergrid/security/salt/SaltProvider.java    |  17 +--
 .../security/shiro/CustomPermission.java        |  17 +--
 .../shiro/CustomPermissionResolver.java         |  17 +--
 .../shiro/PrincipalCredentialsToken.java        |  17 +--
 .../apache/usergrid/security/shiro/Realm.java   |  17 +--
 .../AbstractAccessTokenCredentials.java         |  17 +--
 .../credentials/AbstractClientCredentials.java  |  17 +--
 .../AbstractPasswordCredentials.java            |  17 +--
 .../credentials/AccessTokenCredentials.java     |  17 +--
 .../shiro/credentials/AdminUserAccessToken.java |  17 +--
 .../shiro/credentials/AdminUserCredentials.java |  17 +--
 .../shiro/credentials/AdminUserPassword.java    |  17 +--
 .../credentials/ApplicationAccessToken.java     |  17 +--
 .../ApplicationClientCredentials.java           |  17 +--
 .../credentials/ApplicationCredentials.java     |  17 +--
 .../shiro/credentials/ApplicationGuest.java     |  17 +--
 .../credentials/ApplicationUserAccessToken.java |  17 +--
 .../credentials/ApplicationUserCredentials.java |  17 +--
 .../credentials/ApplicationUserPassword.java    |  17 +--
 .../shiro/credentials/ClientCredentials.java    |  17 +--
 .../credentials/OrganizationAccessToken.java    |  17 +--
 .../OrganizationClientCredentials.java          |  17 +--
 .../credentials/OrganizationCredentials.java    |  17 +--
 .../shiro/credentials/PasswordCredentials.java  |  17 +--
 .../shiro/credentials/PrincipalCredentials.java |  17 +--
 .../shiro/principals/AdminUserPrincipal.java    |  17 +--
 .../principals/ApplicationGuestPrincipal.java   |  17 +--
 .../shiro/principals/ApplicationPrincipal.java  |  17 +--
 .../principals/ApplicationUserPrincipal.java    |  17 +--
 .../shiro/principals/OrganizationPrincipal.java |  17 +--
 .../shiro/principals/PrincipalIdentifier.java   |  17 +--
 .../shiro/principals/UserPrincipal.java         |  17 +--
 .../security/shiro/utils/SubjectUtils.java      |  17 +--
 .../usergrid/security/tokens/TokenCategory.java |  17 +--
 .../usergrid/security/tokens/TokenInfo.java     |  16 +++
 .../usergrid/security/tokens/TokenService.java  |  16 +++
 .../tokens/cassandra/TokenServiceImpl.java      |  16 +++
 .../tokens/exceptions/BadTokenException.java    |  17 +--
 .../exceptions/ExpiredTokenException.java       |  17 +--
 .../exceptions/InvalidTokenException.java       |  17 +--
 .../tokens/exceptions/TokenException.java       |  17 +--
 .../services/AbstractCollectionService.java     |  17 +--
 .../services/AbstractConnectionsService.java    |  17 +--
 .../AbstractPathBasedColllectionService.java    |  17 +--
 .../usergrid/services/AbstractService.java      |  17 +--
 .../org/apache/usergrid/services/Service.java   |  17 +--
 .../apache/usergrid/services/ServiceAction.java |  17 +--
 .../ServiceCollectionEventListener.java         |  17 +--
 .../usergrid/services/ServiceContext.java       |  17 +--
 .../services/ServiceExecutionEvent.java         |  17 +--
 .../services/ServiceExecutionEventListener.java |  17 +--
 .../apache/usergrid/services/ServiceInfo.java   |  17 +--
 .../usergrid/services/ServiceManager.java       |  17 +--
 .../services/ServiceManagerFactory.java         |  17 +--
 .../usergrid/services/ServiceParameter.java     |  17 +--
 .../usergrid/services/ServicePayload.java       |  17 +--
 .../usergrid/services/ServiceRequest.java       |  17 +--
 .../usergrid/services/ServiceResults.java       |  17 +--
 .../apache/usergrid/services/ServiceUtils.java  |  17 +--
 .../services/activities/ActivitiesService.java  |  17 +--
 .../applications/ApplicationsService.java       |  17 +--
 .../usergrid/services/assets/AssetsService.java |  17 +--
 .../services/assets/data/AssetMimeHandler.java  |  16 +++
 .../services/assets/data/AssetUtils.java        |  16 +++
 .../services/assets/data/BinaryStore.java       |  16 +++
 .../assets/data/LocalFileBinaryStore.java       |  16 +++
 .../services/assets/data/S3BinaryStore.java     |  16 +++
 .../services/devices/DevicesService.java        |  17 +--
 .../services/devices/users/UsersService.java    |  17 +--
 .../ForbiddenServiceOperationException.java     |  17 +--
 .../services/exceptions/ServiceException.java   |  17 +--
 .../exceptions/ServiceInvocationException.java  |  17 +--
 .../ServiceResourceNotFoundException.java       |  17 +--
 .../UndefinedServiceEntityTypeException.java    |  17 +--
 .../UnsupportedServiceOperationException.java   |  17 +--
 .../generic/GenericCollectionService.java       |  17 +--
 .../generic/GenericConnectionsService.java      |  17 +--
 .../services/generic/RootCollectionService.java |  17 +--
 .../usergrid/services/groups/GroupsService.java |  17 +--
 .../groups/activities/ActivitiesService.java    |  17 +--
 .../services/groups/roles/RolesService.java     |  17 +--
 .../services/groups/users/UsersService.java     |  17 +--
 .../users/activities/ActivitiesService.java     |  17 +--
 .../groups/users/devices/DevicesService.java    |  17 +--
 .../services/messages/MessagesService.java      |  17 +--
 .../usergrid/services/roles/RolesService.java   |  17 +--
 .../services/roles/groups/GroupsService.java    |  17 +--
 .../services/roles/users/UsersService.java      |  17 +--
 .../usergrid/services/users/UsersService.java   |  17 +--
 .../users/activities/ActivitiesService.java     |  53 +++++----
 .../services/users/devices/DevicesService.java  |  17 +--
 .../users/following/FollowingService.java       |  16 +++
 .../services/users/groups/GroupsService.java    |  17 +--
 .../services/users/roles/RolesService.java      |  17 +--
 .../org/apache/usergrid/utils/PythonUtils.java  |  17 +--
 .../src/main/python/pyusergrid/__init__.py      |  15 +++
 .../main/python/pyusergrid/services/__init__.py |  15 +++
 .../pyusergrid/services/pytest/PytestService.py |  16 +++
 .../pyusergrid/services/pytest/__init__.py      |  15 +++
 .../python/pyusergrid/services/pytest/test.py   |  16 +++
 stack/services/src/main/python/test/__init__.py |  15 +++
 stack/services/src/main/python/test/test.py     |  16 +++
 .../resources/usergrid-services-context.xml     |  16 +++
 .../test/java/baas/io/simple/SimpleService.java |  18 ----
 .../usergrid/ConcurrentServiceITSuite.java      |  16 +++
 .../org/apache/usergrid/ServiceApplication.java |  16 +++
 .../org/apache/usergrid/ServiceITSetup.java     |  16 +++
 .../org/apache/usergrid/ServiceITSetupImpl.java |  16 +++
 .../org/apache/usergrid/ServiceITSuite.java     |  16 +++
 .../apache/usergrid/management/EmailFlowIT.java |  17 +--
 .../management/ManagementTestHelper.java        |  17 +--
 .../usergrid/management/MockImapClient.java     |  16 +++
 .../usergrid/management/OrganizationIT.java     |  25 ++---
 .../org/apache/usergrid/management/RoleIT.java  |  17 +--
 .../cassandra/ApplicationCreatorIT.java         |  16 +++
 .../cassandra/ManagementServiceIT.java          |  16 +++
 .../cassandra/ManagementTestHelperImpl.java     |  17 +--
 .../org/apache/usergrid/python/JythonTest.java  |  17 +--
 .../usergrid/security/CustomResolverTest.java   |  17 +--
 .../crypto/EncryptionServiceImplTest.java       |  17 +--
 .../crypto/command/BcryptCommandTest.java       |  17 +--
 .../crypto/command/Md5HashCommandTest.java      |  17 +--
 .../crypto/command/Sha1HashCommandTest.java     |  17 +--
 .../security/providers/FacebookProviderIT.java  |  16 +++
 .../providers/PingIdentityProviderIT.java       |  16 +++
 .../security/tokens/TokenServiceIT.java         |  16 +++
 .../usergrid/services/AbstractServiceIT.java    |  17 +--
 .../usergrid/services/ActivitiesServiceIT.java  |  17 +--
 .../services/ApplicationsServiceIT.java         |  17 +--
 .../usergrid/services/CollectionServiceIT.java  |  17 +--
 .../usergrid/services/ConnectionsServiceIT.java |  17 +--
 .../usergrid/services/GroupServiceIT.java       |  17 +--
 .../usergrid/services/RolesServiceIT.java       |  17 +--
 .../usergrid/services/ServiceFactoryIT.java     |  19 ++--
 .../usergrid/services/ServiceInfoTest.java      |  17 +--
 .../usergrid/services/ServiceInvocationIT.java  |  17 +--
 .../usergrid/services/ServiceRequestIT.java     |  17 +--
 .../usergrid/services/UsersServiceIT.java       |  17 +--
 .../services/assets/data/AssetUtilsTest.java    |  16 +++
 .../usergrid/services/simple/SimpleService.java |  33 ++++++
 .../src/test/resources/project.properties       |  16 +++
 .../test/resources/usergrid-test-context.xml    |  16 +++
 stack/test-utils/pom.xml                        |  16 +++
 .../apache/usergrid/NoExitSecurityManager.java  |  16 +++
 .../usergrid/cassandra/AvailablePortFinder.java |  27 +++--
 .../usergrid/cassandra/CassandraResource.java   |  16 +++
 .../usergrid/cassandra/ClearShiroSubject.java   |  16 +++
 .../apache/usergrid/cassandra/Concurrent.java   |  16 +++
 .../cassandra/ConcurrentJunitRunner.java        |  16 +++
 .../usergrid/cassandra/ConcurrentSuite.java     |  16 +++
 .../apache/usergrid/cassandra/DataControl.java  |  16 +++
 .../apache/usergrid/cassandra/DataLoader.java   |  16 +++
 .../usergrid/cassandra/SchemaManager.java       |  16 +++
 .../src/main/resources/cassandra.yaml           |  12 +++
 .../src/main/resources/log4j.properties         |  12 +++
 .../cassandra/AnotherCassandraResourceIT.java   |  16 +++
 .../cassandra/CassandraResourceITSuite.java     |  16 +++
 .../cassandra/CassandraResourceTest.java        |  16 +++
 .../usergrid/cassandra/FakeSchemaManager.java   |  16 +++
 .../usergrid/cassandra/OkThisIsTheLastIT.java   |  16 +++
 .../YetAnotherCassandraResourceIT.java          |  16 +++
 .../src/test/resources/project.properties       |  12 +++
 .../test/resources/usergrid-test-context.xml    |  16 +++
 stack/tools/impoexpo.sh                         |  16 +++
 stack/tools/pom.xml                             |  16 +++
 stack/tools/src/main/assembly/release.xml       |  16 +++
 .../main/dist/usergrid-custom-tools.properties  |  16 +++
 stack/tools/src/main/dist/usergrid-export.sh    |  16 +++
 .../java/org/apache/usergrid/tools/ApiDoc.java  |  17 +--
 .../org/apache/usergrid/tools/AppAudit.java     |  17 +--
 .../org/apache/usergrid/tools/AppNameFix.java   |  17 +--
 .../java/org/apache/usergrid/tools/Cli.java     |  17 +--
 .../java/org/apache/usergrid/tools/Command.java |  17 +--
 .../org/apache/usergrid/tools/CredExport.java   |  17 +--
 .../apache/usergrid/tools/DupAdminRepair.java   |  17 +--
 .../org/apache/usergrid/tools/DupOrgRepair.java |  17 +--
 .../apache/usergrid/tools/EntityCleanup.java    |  17 +--
 .../usergrid/tools/EntityInsertBenchMark.java   |  17 +--
 .../usergrid/tools/EntityReadBenchMark.java     |  17 +--
 .../org/apache/usergrid/tools/EntityUpdate.java |  16 +++
 .../java/org/apache/usergrid/tools/Export.java  |  17 +--
 .../usergrid/tools/ExportDataCreator.java       |  17 +--
 .../usergrid/tools/ExportingToolBase.java       |  23 ++--
 .../java/org/apache/usergrid/tools/Import.java  |  17 +--
 .../org/apache/usergrid/tools/ImportFB.java     |  17 +--
 .../org/apache/usergrid/tools/IndexRebuild.java |  17 +--
 .../java/org/apache/usergrid/tools/Metrics.java |  16 +++
 .../usergrid/tools/OrganizationExport.java      |  16 +++
 .../apache/usergrid/tools/PopulateSample.java   |  17 +--
 .../apache/usergrid/tools/ResetSuperUser.java   |  17 +--
 .../java/org/apache/usergrid/tools/SetupDB.java |  17 +--
 .../java/org/apache/usergrid/tools/Test.java    |  17 +--
 .../org/apache/usergrid/tools/ToolBase.java     |  16 +--
 .../usergrid/tools/UniqueIndexCleanup.java      |  17 +--
 .../org/apache/usergrid/tools/UserManager.java  |  16 +++
 .../apache/usergrid/tools/WarehouseExport.java  |  16 +--
 .../apache/usergrid/tools/WarehouseUpsert.java  |  23 ++--
 .../usergrid/tools/apidoc/swagger/Api.java      |  17 +--
 .../tools/apidoc/swagger/ApiListing.java        |  17 +--
 .../tools/apidoc/swagger/ApiOperation.java      |  17 +--
 .../tools/apidoc/swagger/ApiOperationError.java |  17 +--
 .../usergrid/tools/apidoc/swagger/ApiParam.java |  17 +--
 .../apidoc/swagger/ApiParamAllowableValues.java |  17 +--
 .../apache/usergrid/tools/bean/AppScore.java    |  16 +++
 .../apache/usergrid/tools/bean/ExportOrg.java   |  17 +--
 .../apache/usergrid/tools/bean/MetricLine.java  |  16 +++
 .../apache/usergrid/tools/bean/MetricQuery.java |  16 +++
 .../apache/usergrid/tools/bean/MetricSort.java  |  16 +++
 .../apache/usergrid/tools/bean/OrgScore.java    |  16 +++
 .../src/main/resources/apidoc/applications.yaml |  11 ++
 .../src/main/resources/apidoc/management.yaml   |  11 ++
 stack/tools/src/main/resources/log4j.xml        |  16 +++
 .../main/resources/toolsApplicationContext.xml  |  16 +++
 .../src/main/resources/warehouse-schema.sql     |  18 +++-
 stack/websocket/pom.xml                         |  16 +++
 .../websocket/WebSocketChannelHandler.java      |  17 +--
 .../usergrid/websocket/WebSocketKeyStore.java   |  17 +--
 .../usergrid/websocket/WebSocketServer.java     |  30 ++----
 .../websocket/WebSocketServerIndexPage.java     |  30 ++----
 .../WebSocketServerPipelineFactory.java         |  17 +--
 .../websocket/WebSocketSslContextFactory.java   |  17 +--
 .../usergrid/websocket/ExampleListener.java     |  17 +--
 .../websocket/SimpleMessageProducer.java        |  17 +--
 .../usergrid/websocket/WebSocketServerTest.java |  17 +--
 .../src/test/resources/test-activemq.xml        |  27 +++--
 .../test/resources/testApplicationContext.xml   |  16 +++
 930 files changed, 10323 insertions(+), 5345 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/core/src/main/java/org/apache/usergrid/persistence/Query.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/rest/src/main/java/org/apache/usergrid/rest/management/ManagementResource.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
index 9143ffd,e8b21db..b7479c5
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
@@@ -16,9 -17,7 +17,12 @@@
  package org.apache.usergrid.rest.management;
  
  
 -import java.util.*;
++import java.util.ArrayList;
 +import java.util.HashMap;
++import java.util.LinkedHashMap;
++import java.util.List;
 +import java.util.Map;
 +import java.util.UUID;
  
  import javax.ws.rs.core.MediaType;
  

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/services/src/main/resources/usergrid-services-context.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/services/src/test/java/org/apache/usergrid/ServiceITSetup.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/services/src/test/java/org/apache/usergrid/ServiceITSetupImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
----------------------------------------------------------------------


[08/50] [abbrv] git commit: Merge pull request #64 from usergrid/rat-fix

Posted by sn...@apache.org.
Merge pull request #64 from usergrid/rat-fix

Fix for build breakage caused by RAT

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

Branch: refs/pull/60/merge
Commit: 2474350bb1fd7e0c30d67790c42983e1504c04d5
Parents: f368246 0607083
Author: Rod Simpson <ro...@rodsimpson.com>
Authored: Sat Mar 1 13:05:09 2014 -0700
Committer: Rod Simpson <ro...@rodsimpson.com>
Committed: Sat Mar 1 13:05:09 2014 -0700

----------------------------------------------------------------------
 stack/pom.xml                                   | 34 +++++++++++++-------
 .../usergrid/services/ServiceFactoryIT.java     |  2 +-
 .../usergrid/services/simple/SimpleService.java | 33 +++++++++++++++++++
 .../java/org/usergrid/simple/SimpleService.java | 33 -------------------
 4 files changed, 56 insertions(+), 46 deletions(-)
----------------------------------------------------------------------



[30/50] [abbrv] git commit: Removed 10 app limit

Posted by sn...@apache.org.
Removed 10 app limit

Fixed idea excludes


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

Branch: refs/pull/60/head
Commit: 65064baf4551ccbec49c5ded9dad320c639d9a6b
Parents: 7f50cae
Author: Todd Nine <tn...@apigee.com>
Authored: Mon Mar 3 19:15:42 2014 -0700
Committer: Todd Nine <tn...@apigee.com>
Committed: Mon Mar 3 19:15:42 2014 -0700

----------------------------------------------------------------------
 stack/pom.xml                                   |  2 +-
 .../applications/ApplicationsIT.java            | 84 ++++++++++++++++++++
 .../cassandra/ManagementServiceImpl.java        | 27 ++++---
 3 files changed, 101 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/65064baf/stack/pom.xml
----------------------------------------------------------------------
diff --git a/stack/pom.xml b/stack/pom.xml
index bdf2137..1e4214c 100644
--- a/stack/pom.xml
+++ b/stack/pom.xml
@@ -1772,7 +1772,7 @@
                     <!-- git and IDE project files -->
                     <exclude>**/.git/**</exclude>
                     <exclude>**/.gitignore</exclude>
-                    <exclude>**..idea/**</exclude>
+                    <exclude>**/.idea/**</exclude>
                     <exclude>**/*.iml</exclude>
                     <exclude>**/nbactions.xml</exclude>
                     <exclude>**/nb-configuration.xml</exclude>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/65064baf/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationsIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationsIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationsIT.java
new file mode 100644
index 0000000..424c01c
--- /dev/null
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationsIT.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.usergrid.rest.management.organizations.applications;
+
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.codehaus.jackson.JsonNode;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.usergrid.rest.AbstractRestIT;
+import org.apache.usergrid.rest.TestContextSetup;
+
+import static org.junit.Assert.assertEquals;
+
+
+/**
+ *
+ *
+ */
+public class ApplicationsIT extends AbstractRestIT {
+
+    @Rule
+    public TestContextSetup context = new TestContextSetup( this );
+
+
+    @Test
+    public void test10AppLimit() {
+
+        int size = 11;
+
+        Set<String> appNames = new HashSet<String>( size );
+
+        for ( int i = 0; i < size; i++ ) {
+            final String name = i + "";
+
+            appNames.add( name );
+
+            context.withApp( name ).createAppForOrg();
+        }
+
+        //now go through and ensure each entry is present
+
+        final JsonNode apps = context.management().orgs().organization( context.getOrgName() ).apps().get();
+
+        final JsonNode data = apps.get( "data" );
+
+        final String orgName = context.getOrgName();
+
+
+        final Set<String> copy = new HashSet<String> (appNames);
+
+        for(String appName: copy){
+
+            final String mapEntryName = String.format( "%s/%s", orgName.toLowerCase(),  appName.toLowerCase());
+
+            JsonNode orgApp = data.get( mapEntryName);
+
+            if(orgApp != null){
+                appNames.remove( appName );
+            }
+
+        }
+
+        assertEquals("All elements removed", 0, appNames.size());
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/65064baf/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java
index af30325..07175ec 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java
@@ -55,6 +55,7 @@ import org.apache.usergrid.persistence.EntityManager;
 import org.apache.usergrid.persistence.EntityManagerFactory;
 import org.apache.usergrid.persistence.EntityRef;
 import org.apache.usergrid.persistence.Identifier;
+import org.apache.usergrid.persistence.PagingResultsIterator;
 import org.apache.usergrid.persistence.Results;
 import org.apache.usergrid.persistence.Results.Level;
 import org.apache.usergrid.persistence.SimpleEntityRef;
@@ -1640,24 +1641,28 @@ public class ManagementServiceImpl implements ManagementService {
         if ( organizationId == null ) {
             return null;
         }
-        BiMap<UUID, String> applications = HashBiMap.create();
-        EntityManager em = emf.getEntityManager( MANAGEMENT_APPLICATION_ID );
-        Results results = em.getConnectedEntities( organizationId, "owns", APPLICATION_INFO, Level.ALL_PROPERTIES );
-        if ( !results.isEmpty() ) {
+        final BiMap<UUID, String> applications = HashBiMap.create();
+        final EntityManager em = emf.getEntityManager( MANAGEMENT_APPLICATION_ID );
+        final Results results = em.getConnectedEntities( organizationId, "owns", APPLICATION_INFO, Level.ALL_PROPERTIES );
+        final PagingResultsIterator itr = new PagingResultsIterator( results );
 
-            String entityName = null;
 
-            for ( Entity entity : results.getEntities() ) {
-                entityName = entity.getName();
+        String entityName;
 
-                if ( entityName != null ) {
-                    entityName = entityName.toLowerCase();
-                }
+        while ( itr.hasNext() ) {
+
+            final Entity entity = ( Entity ) itr.next();
 
-                applications.put( entity.getUuid(), entityName );
+            entityName = entity.getName();
+
+            if ( entityName != null ) {
+                entityName = entityName.toLowerCase();
             }
+
+            applications.put( entity.getUuid(), entityName );
         }
 
+
         return applications;
     }
 


[33/50] [abbrv] git commit: Merge pull request #68 from usergrid/applimitfix

Posted by sn...@apache.org.
Merge pull request #68 from usergrid/applimitfix

Removed 10 app limit

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

Branch: refs/pull/60/merge
Commit: 754aa1f525aebac624fa12068da8b988d11b347e
Parents: 2891b54 65064ba
Author: Dave Johnson <da...@rollerweblogger.org>
Authored: Mon Mar 3 21:27:45 2014 -0500
Committer: Dave Johnson <da...@rollerweblogger.org>
Committed: Mon Mar 3 21:27:45 2014 -0500

----------------------------------------------------------------------
 stack/pom.xml                                   |  2 +-
 .../applications/ApplicationsIT.java            | 84 ++++++++++++++++++++
 .../cassandra/ManagementServiceImpl.java        | 27 ++++---
 3 files changed, 101 insertions(+), 12 deletions(-)
----------------------------------------------------------------------



[44/50] [abbrv] git commit: Fixed bug where timestamp was only instantiated only once.

Posted by sn...@apache.org.
Fixed bug where timestamp was only instantiated only once.


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

Branch: refs/pull/60/merge
Commit: 7dd6cee5c327108fd2a44cb635382a8197fca858
Parents: dde48e2
Author: grey <gr...@apigee.com>
Authored: Thu Mar 6 10:00:07 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Thu Mar 6 10:00:07 2014 -0800

----------------------------------------------------------------------
 .../org/apache/usergrid/management/export/ExportServiceImpl.java | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7dd6cee5/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
index 4bc307d..489002b 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
@@ -64,8 +64,6 @@ public class ExportServiceImpl implements ExportService {
 
     private JsonFactory jsonFactory = new JsonFactory();
 
-    protected long startTime = System.currentTimeMillis();
-
     private S3Export s3Export;
 
 
@@ -579,7 +577,7 @@ public class ExportServiceImpl implements ExportService {
         StringBuilder str = new StringBuilder();
         str.append( name );
         str.append( "." );
-        str.append( startTime );
+        str.append( System.currentTimeMillis() );
         str.append( ".json" );
 
         String outputFileName = str.toString();


[05/50] [abbrv] git commit: Move SimpleService test class to correct package (not sure why this was not breaking everybody's build).

Posted by sn...@apache.org.
Move SimpleService test class to correct package (not sure why this was not breaking everybody's build).


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

Branch: refs/pull/60/head
Commit: 0607083134c13eb0ae883cb520b8532e06548be8
Parents: 530a350
Author: Dave Johnson <sn...@gmail.com>
Authored: Sat Mar 1 14:39:25 2014 -0500
Committer: Dave Johnson <sn...@gmail.com>
Committed: Sat Mar 1 14:39:25 2014 -0500

----------------------------------------------------------------------
 .../usergrid/services/ServiceFactoryIT.java     |  2 +-
 .../usergrid/services/simple/SimpleService.java | 33 ++++++++++++++++++++
 .../java/org/usergrid/simple/SimpleService.java | 33 --------------------
 3 files changed, 34 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/06070831/stack/services/src/test/java/org/apache/usergrid/services/ServiceFactoryIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/ServiceFactoryIT.java b/stack/services/src/test/java/org/apache/usergrid/services/ServiceFactoryIT.java
index 9781050..0ea0538 100644
--- a/stack/services/src/test/java/org/apache/usergrid/services/ServiceFactoryIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/services/ServiceFactoryIT.java
@@ -25,7 +25,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.usergrid.cassandra.Concurrent;
 
-import org.usergrid.simple.SimpleService;
+import org.apache.usergrid.services.simple.SimpleService;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/06070831/stack/services/src/test/java/org/apache/usergrid/services/simple/SimpleService.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/simple/SimpleService.java b/stack/services/src/test/java/org/apache/usergrid/services/simple/SimpleService.java
new file mode 100644
index 0000000..630898f
--- /dev/null
+++ b/stack/services/src/test/java/org/apache/usergrid/services/simple/SimpleService.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.usergrid.services.simple;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.usergrid.services.AbstractCollectionService;
+
+
+public class SimpleService extends AbstractCollectionService {
+
+    private static final Logger logger = LoggerFactory.getLogger( SimpleService.class );
+
+
+    public SimpleService() {
+        super();
+        logger.info( "/simple" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/06070831/stack/services/src/test/java/org/usergrid/simple/SimpleService.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/usergrid/simple/SimpleService.java b/stack/services/src/test/java/org/usergrid/simple/SimpleService.java
deleted file mode 100644
index a132bc3..0000000
--- a/stack/services/src/test/java/org/usergrid/simple/SimpleService.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * 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.
- */
-package org.usergrid.simple;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.usergrid.services.AbstractCollectionService;
-
-
-public class SimpleService extends AbstractCollectionService {
-
-    private static final Logger logger = LoggerFactory.getLogger( SimpleService.class );
-
-
-    public SimpleService() {
-        super();
-        logger.info( "/simple" );
-    }
-}


[26/50] [abbrv] git commit: Changed error message returned, now throws the exception.

Posted by sn...@apache.org.
Changed error message returned, now throws the exception.


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

Branch: refs/pull/60/merge
Commit: 95f8773b72b279056467dbae8932ab0c2ba913a9
Parents: 0d4f3df
Author: grey <gr...@apigee.com>
Authored: Mon Mar 3 15:23:27 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Mon Mar 3 15:23:27 2014 -0800

----------------------------------------------------------------------
 .../applications/ApplicationResource.java              | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/95f8773b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
index 62ecf34..7f7c6e4 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
@@ -234,7 +234,7 @@ public class ApplicationResource extends AbstractContextResource {
         }
         catch ( NullPointerException e ) {
             OAuthResponse errorMsg =
-                    OAuthResponse.errorResponse( SC_BAD_REQUEST ).setErrorDescription( "Job Not Created" )
+                    OAuthResponse.errorResponse( SC_BAD_REQUEST ).setErrorDescription( e.getMessage() )
                                  .buildJSONMessage();
 
             return Response.status( errorMsg.getResponseStatus() ).type( JSONPUtils.jsonMediaType( callback ) )
@@ -275,7 +275,7 @@ public class ApplicationResource extends AbstractContextResource {
         }
         catch ( NullPointerException e ) {
             OAuthResponse errorMsg =
-                    OAuthResponse.errorResponse( SC_BAD_REQUEST ).setErrorDescription( "Job Not Created" )
+                    OAuthResponse.errorResponse( SC_BAD_REQUEST ).setErrorDescription( e.getMessage())
                                  .buildJSONMessage();
 
             return Response.status( errorMsg.getResponseStatus() ).type( JSONPUtils.jsonMediaType( callback ) )
@@ -307,7 +307,14 @@ public class ApplicationResource extends AbstractContextResource {
         }
         catch ( Exception e ) {
             //this might be due to other reasons, but gotta look up what service manager does.
-            return Response.status( SC_BAD_REQUEST ).build();
+
+            OAuthResponse errorMsg =
+                    OAuthResponse.errorResponse( SC_BAD_REQUEST ).setErrorDescription( e.getMessage())
+                                 .buildJSONMessage();
+
+            return Response.status( errorMsg.getResponseStatus() ).type( JSONPUtils.jsonMediaType( callback ) )
+                           .entity( ServiceResource.wrapWithCallback( errorMsg.getBody(), callback ) ).build();
+           // return Response.status( SC_BAD_REQUEST ).build();
         }
         //validate this user owns it
 


[18/50] [abbrv] git commit: fix module errors

Posted by sn...@apache.org.
fix module errors


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

Branch: refs/pull/60/head
Commit: f0158369c59585d02d2a821aa69321707aab0e5f
Parents: 2474350
Author: Shawn Feldman <sh...@gmail.com>
Authored: Mon Mar 3 09:09:50 2014 -0700
Committer: Shawn Feldman <sh...@gmail.com>
Committed: Mon Mar 3 09:09:50 2014 -0700

----------------------------------------------------------------------
 portal/config.js                    | 12 ------------
 portal/index-debug.html             |  4 ++--
 portal/index.html                   |  4 ++--
 portal/js/app.js                    |  4 +---
 portal/js/libs/usergrid-libs.min.js |  2 +-
 portal/js/usergrid-dev.min.js       |  9 ++++-----
 portal/js/usergrid.min.js           |  8 ++++----
 7 files changed, 14 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/config.js
----------------------------------------------------------------------
diff --git a/portal/config.js b/portal/config.js
index a78d776..c2f31d1 100644
--- a/portal/config.js
+++ b/portal/config.js
@@ -2,7 +2,6 @@ var Usergrid = Usergrid || {};
 
 Usergrid.showNotifcations = true;
 
-
 // used only if hostname does not match a real server name
 Usergrid.overrideUrl = 'https://api.usergrid.com/';
 
@@ -74,17 +73,6 @@ Usergrid.regex = {
   stateRegexDescription: "Sorry only alphabetical characters or spaces are allowed. Must be between 2-100 characters.",
   collectionNameRegexDescription: "Collection name only allows : a-z A-Z 0-9. Must be between 3-25 characters."
 };
-
-//Performance
-Usergrid.options.scriptReferences.dev.push('bower_components/apigee.performance.ui/dist/js/usergrid-perf-dev.min.js');
-Usergrid.options.scriptReferences.main.push('bower_components/apigee.performance.ui/dist/js/usergrid-perf.min.js');
-Usergrid.options.cssRefs.push({id:'perf-css',src:'bower_components/apigee.performance.ui/dist/css/performance.min.css'});
-//End Performance
-//Push
-Usergrid.options.scriptReferences.dev.push('bower_components/apigee.push.ui/dist/js/usergrid-push-dev.min.js');
-Usergrid.options.scriptReferences.main.push('bower_components/apigee.push.ui/dist/js/usergrid-push.min.js');
-Usergrid.options.cssRefs.push({id:'push-css',src:'bower_components/apigee.push.ui/dist/css/push.min.css'});
-//End Push
 try{
   if(module && module.exports){
     module.exports = Usergrid;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/index-debug.html
----------------------------------------------------------------------
diff --git a/portal/index-debug.html b/portal/index-debug.html
index 39395f7..8aea400 100644
--- a/portal/index-debug.html
+++ b/portal/index-debug.html
@@ -14,7 +14,7 @@
   <!--styles for jquery ui calendar component-->
   <link id="libScript" rel="stylesheet" type="text/css" href="2.0.34/js/libs/jqueryui/jquery-ui-1.8.9.custom.css">
   <link id="libScript" rel="stylesheet" type="text/css" href="2.0.34/js/libs/jqueryui/jquery-ui-timepicker.css">
-<link href="2.0.34/bower_components/apigee.performance.ui/dist/css/performance.min.css" rel="stylesheet" id="perf-css"><link href="2.0.34/bower_components/apigee.push.ui/dist/css/push.min.css" rel="stylesheet" id="push-css"></head>
+</head>
 <body ng-controller="PageCtrl">
 <!-- Google Tag Manager -->
 <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-N52333" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
@@ -124,5 +124,5 @@
 <script src="config.js"></script>
 <script id="main-script" src="2.0.34/js/usergrid-dev.min.js"></script>
 
-<script src="2.0.34/bower_components/apigee.performance.ui/dist/js/usergrid-perf-dev.min.js"></script><script src="2.0.34/bower_components/apigee.push.ui/dist/js/usergrid-push-dev.min.js"></script></body>
+</body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/index.html
----------------------------------------------------------------------
diff --git a/portal/index.html b/portal/index.html
index 4e36ada..2285ff5 100644
--- a/portal/index.html
+++ b/portal/index.html
@@ -14,7 +14,7 @@
   <!--styles for jquery ui calendar component-->
   <link id="libScript" rel="stylesheet" type="text/css" href="2.0.34/js/libs/jqueryui/jquery-ui-1.8.9.custom.css">
   <link id="libScript" rel="stylesheet" type="text/css" href="2.0.34/js/libs/jqueryui/jquery-ui-timepicker.css">
-<link href="2.0.34/bower_components/apigee.performance.ui/dist/css/performance.min.css" rel="stylesheet" id="perf-css"><link href="2.0.34/bower_components/apigee.push.ui/dist/css/push.min.css" rel="stylesheet" id="push-css"></head>
+</head>
 <body ng-controller="PageCtrl">
 <!-- Google Tag Manager -->
 <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-N52333" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
@@ -124,5 +124,5 @@
 <script src="config.js"></script>
 <script id="main-script" src="2.0.34/js/usergrid.min.js"></script>
 
-<script src="2.0.34/bower_components/apigee.performance.ui/dist/js/usergrid-perf.min.js"></script><script src="2.0.34/bower_components/apigee.push.ui/dist/js/usergrid-push.min.js"></script></body>
+</body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/js/app.js
----------------------------------------------------------------------
diff --git a/portal/js/app.js b/portal/js/app.js
index b097f12..9ed6816 100644
--- a/portal/js/app.js
+++ b/portal/js/app.js
@@ -51,7 +51,6 @@ AppServices.Services = angular.module('appservices.services', []);
 AppServices.Controllers = angular.module('appservices.controllers', []);
 AppServices.Filters = angular.module('appservices.filters', []);
 AppServices.Directives = angular.module('appservices.directives', []);
-AppServices.Push = angular.module('appservices.push', []);
 
 angular.module('appservices',
     [ 'ngRoute',
@@ -63,8 +62,7 @@ angular.module('appservices',
       'appservices.directives',
       'appservices.constants',
       'appservices.controllers',
-      'appservices.performance',
-      'appservices.push'
+
     ]).config(['$routeProvider', '$locationProvider','$sceDelegateProvider',
         function ($routeProvider,$locationProvider,$sceDelegateProvider) {
             $routeProvider


[40/50] [abbrv] git commit: Made blanket changes to remove ExportInfo to support serialization of export information.

Posted by sn...@apache.org.
Made blanket changes to remove ExportInfo to support serialization of export information.


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

Branch: refs/pull/60/merge
Commit: a7504dee8ccc0bc048fb0cfd81efffa003f9741d
Parents: 8e22ba1
Author: grey <gr...@apigee.com>
Authored: Wed Mar 5 10:44:53 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Wed Mar 5 10:44:53 2014 -0800

----------------------------------------------------------------------
 .../applications/ApplicationResource.java       |   33 +-
 .../rest/management/ManagementResourceIT.java   |  408 +++---
 .../usergrid/management/export/ExportJob.java   |   22 +-
 .../management/export/ExportService.java        |    6 +-
 .../management/export/ExportServiceImpl.java    |   40 +-
 .../usergrid/management/export/S3Export.java    |    5 +-
 .../management/export/S3ExportImpl.java         |   11 +-
 .../cassandra/ManagementServiceIT.java          | 1158 +++++++++---------
 .../management/cassandra/MockS3ExportImpl.java  |    4 +-
 9 files changed, 848 insertions(+), 839 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a7504dee/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
index 1d1daf2..d88ef8d 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
@@ -43,7 +43,6 @@ import org.apache.amber.oauth2.common.message.OAuthResponse;
 import org.apache.commons.lang.StringUtils;
 
 import org.apache.usergrid.management.ApplicationInfo;
-import org.apache.usergrid.management.ExportInfo;
 import org.apache.usergrid.management.OrganizationInfo;
 import org.apache.usergrid.management.export.ExportService;
 import org.apache.usergrid.persistence.entities.Export;
@@ -222,14 +221,16 @@ public class ApplicationResource extends AbstractContextResource {
         OAuthResponse response = null;
         UUID jobUUID = null;
         Map<String, String> uuidRet = new HashMap<String, String>();
-
+//TODO: do input verification here! make sure json map has all correct values.
         try {
             //parse the json into some useful object (the config params)
-            ExportInfo objEx = new ExportInfo( json );
-            objEx.setOrganizationId( organization.getUuid() );
-            objEx.setApplicationId( applicationId );
+            //ExportInfo objEx = new ExportInfo( json );
+            json.put( "organizationId",organization.getUuid());
+            //objEx.setOrganizationId( organization.getUuid() );
+            json.put( "applicationId",applicationId);
+            //objEx.setApplicationId( applicationId );
 
-            jobUUID = exportService.schedule( objEx );
+            jobUUID = exportService.schedule( json );
             uuidRet.put( "jobUUID", jobUUID.toString() );
         }
         catch ( NullPointerException e ) {
@@ -261,13 +262,21 @@ public class ApplicationResource extends AbstractContextResource {
         Map<String, String> uuidRet = new HashMap<String, String>();
 
         try {
+            //checkJsonExportProperties(json);
+            if(json.get( "properties" ) == null){
+                throw new NullPointerException();
+            }
+            //if(json.get( "properties."))
             //parse the json into some useful object (the config params)
-            ExportInfo objEx = new ExportInfo( json );
-            objEx.setOrganizationId( organization.getUuid() );
-            objEx.setApplicationId( applicationId );
-            objEx.setCollection( colExport );
-
-            jobUUID = exportService.schedule( objEx );
+//            ExportInfo objEx = new ExportInfo( json );
+//            objEx.setOrganizationId( organization.getUuid() );
+//            objEx.setApplicationId( applicationId );
+//            objEx.setCollection( colExport );
+            json.put( "organizationId",organization.getUuid() );
+            json.put( "applicationId", applicationId);
+            json.put( "collectionName", colExport);
+
+            jobUUID = exportService.schedule( json );
             uuidRet.put( "jobUUID", jobUUID.toString() );
         }
         catch ( NullPointerException e ) {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a7504dee/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
index 0056759..a914237 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
@@ -531,26 +531,26 @@ public class ManagementResourceIT extends AbstractRestIT {
 
         assertEquals( Status.OK, status );
     }
-
-
-    @Test
-    public void exportCallSuccessful() throws Exception {
-        Status responseStatus = Status.OK;
-        JsonNode node = null;
-
-        HashMap<String, Object> payload = payloadBuilder();
-
-        try {
-            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
-                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
-        }
-        catch ( UniformInterfaceException uie ) {
-            responseStatus = uie.getResponse().getClientResponseStatus();
-        }
-
-        assertEquals( Status.OK, responseStatus );
-    }
+//
+//
+//    @Test
+//    public void exportCallSuccessful() throws Exception {
+//        Status responseStatus = Status.OK;
+//        JsonNode node = null;
+//
+//        HashMap<String, Object> payload = payloadBuilder();
+//
+//        try {
+//            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+//                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
+//        }
+//        catch ( UniformInterfaceException uie ) {
+//            responseStatus = uie.getResponse().getClientResponseStatus();
+//        }
+//
+//        assertEquals( Status.OK, responseStatus );
+//    }
 
 
     @Ignore
@@ -616,194 +616,194 @@ public class ManagementResourceIT extends AbstractRestIT {
         assertEquals( Status.ACCEPTED, responseStatus );
         assertNotNull( node.get( "jobUUID" ) );
     }
-
-    @Test
-    public void exportCollectionUUIDRetTest() throws Exception {
-        Status responseStatus = Status.ACCEPTED;
-        String uuid;
-        UUID jobUUID = null;
-        JsonNode node = null;
-
-
-        HashMap<String, Object> payload = payloadBuilder();
-
-        try {
-            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
-                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
-        }
-        catch ( UniformInterfaceException uie ) {
-            responseStatus = uie.getResponse().getClientResponseStatus();
-        }
-
-        assertEquals( Status.ACCEPTED, responseStatus );
-        assertNotNull( node.get( "jobUUID" ) );
-    }
+//
+//    @Test
+//    public void exportCollectionUUIDRetTest() throws Exception {
+//        Status responseStatus = Status.ACCEPTED;
+//        String uuid;
+//        UUID jobUUID = null;
+//        JsonNode node = null;
+//
+//
+//        HashMap<String, Object> payload = payloadBuilder();
+//
+//        try {
+//            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+//                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
+//        }
+//        catch ( UniformInterfaceException uie ) {
+//            responseStatus = uie.getResponse().getClientResponseStatus();
+//        }
+//
+//        assertEquals( Status.ACCEPTED, responseStatus );
+//        assertNotNull( node.get( "jobUUID" ) );
+//    }
 
 
     /*Make a test with an invalid uuid and a wrong uuid.*/
     //all tests should be moved to OrganizationResourceIT ( *not* Organizations there is a difference)
-    @Test
-    public void exportGetApplicationJobStatTest() throws Exception {
-        JsonNode node = null;
-        Status responseStatus = Status.OK;
-
-        HashMap<String, Object> payload = payloadBuilder();
-
-        node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
-                         .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-                         .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
-        String uuid = String.valueOf( node.get( "jobUUID" ) );
-        uuid = uuid.replaceAll( "\"", "" );
-
-        try {
-            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + uuid )
-                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
-        }
-        catch ( UniformInterfaceException uie ) {
-            responseStatus = uie.getResponse().getClientResponseStatus();
-        }
-
-
-        assertEquals( Status.OK, responseStatus );
-        assertEquals( "SCHEDULED", node.asText() );//TODO: do tests for other states in service tier
-    }
-
-    @Test
-    public void exportGetCollectionJobStatTest() throws Exception {
-        JsonNode node = null;
-        Status responseStatus = Status.OK;
-
-        HashMap<String, Object> payload = payloadBuilder();
-
-        node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
-                         .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-                         .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
-        String uuid = String.valueOf( node.get( "jobUUID" ) );
-        uuid = uuid.replaceAll( "\"", "" );
-
-        try {
-            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + uuid )
-                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
-        }
-        catch ( UniformInterfaceException uie ) {
-            responseStatus = uie.getResponse().getClientResponseStatus();
-        }
-
-
-        assertEquals( Status.OK, responseStatus );
-        assertEquals( "SCHEDULED", node.asText() );//TODO: do tests for other states in service tier
-    }
-
-
-    //do an unauthorized test for both post and get
-    @Test
-    public void exportGetWrongUUID() throws Exception {
-        JsonNode node = null;
-        Status responseStatus = Status.OK;
-        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
-        try {
-            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + fake )
-                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
-        }
-        catch ( UniformInterfaceException uie ) {
-            responseStatus = uie.getResponse().getClientResponseStatus();
-        }
-        assertEquals( Status.BAD_REQUEST, responseStatus );
-    }
-
-    @Test
-    public void exportPostApplicationNullPointer() throws Exception {
-        JsonNode node = null;
-        Status responseStatus = Status.OK;
-
-        HashMap<String, Object> payload = new HashMap<String, Object>();
-        Map<String, Object> properties = new HashMap<String, Object>();
-        Map<String, Object> storage_info = new HashMap<String, Object>();
-        //TODO: always put dummy values here and ignore this test.
-        //TODO: add a ret for when s3 values are invalid.
-        storage_info.put( "bucket_location", "insert bucket name here" );
-
-
-        properties.put( "storage_provider", "s3" );
-        properties.put( "storage_info", storage_info );
-
-        payload.put( "path", "test-organization/test-app" );
-
-        try {
-            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
-                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
-        }
-        catch ( UniformInterfaceException uie ) {
-            responseStatus = uie.getResponse().getClientResponseStatus();
-        }
-        assertEquals( Status.BAD_REQUEST, responseStatus );
-    }
-
-    @Test
-    public void exportPostCollectionNullPointer() throws Exception {
-        JsonNode node = null;
-        Status responseStatus = Status.OK;
-
-        HashMap<String, Object> payload = new HashMap<String, Object>();
-        Map<String, Object> properties = new HashMap<String, Object>();
-        Map<String, Object> storage_info = new HashMap<String, Object>();
-        //TODO: always put dummy values here and ignore this test.
-        //TODO: add a ret for when s3 values are invalid.
-        storage_info.put( "bucket_location", "insert bucket name here" );
-
-
-        properties.put( "storage_provider", "s3" );
-        properties.put( "storage_info", storage_info );
-
-
-        try {
-            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
-                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
-        }
-        catch ( UniformInterfaceException uie ) {
-            responseStatus = uie.getResponse().getClientResponseStatus();
-        }
-        assertEquals( Status.BAD_REQUEST, responseStatus );
-    }
-
-
-    @Test
-    public void exportGetCollectionUnauthorized() throws Exception {
-        JsonNode node = null;
-        Status responseStatus = Status.OK;
-        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
-        try {
-            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export/" + fake )
-                             .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
-                             .get( JsonNode.class );
-        }
-        catch ( UniformInterfaceException uie ) {
-            responseStatus = uie.getResponse().getClientResponseStatus();
-        }
-        assertEquals( Status.UNAUTHORIZED, responseStatus );
-    }
-
-    @Test
-    public void exportGetApplicationUnauthorized() throws Exception {
-        JsonNode node = null;
-        Status responseStatus = Status.OK;
-        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
-        try {
-            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + fake )
-                             .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
-                             .get( JsonNode.class );
-        }
-        catch ( UniformInterfaceException uie ) {
-            responseStatus = uie.getResponse().getClientResponseStatus();
-        }
-        assertEquals( Status.UNAUTHORIZED, responseStatus );
-    }
+//    @Test
+//    public void exportGetApplicationJobStatTest() throws Exception {
+//        JsonNode node = null;
+//        Status responseStatus = Status.OK;
+//
+//        HashMap<String, Object> payload = payloadBuilder();
+//
+//        node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+//                         .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+//                         .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
+//        String uuid = String.valueOf( node.get( "jobUUID" ) );
+//        uuid = uuid.replaceAll( "\"", "" );
+//
+//        try {
+//            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + uuid )
+//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+//                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
+//        }
+//        catch ( UniformInterfaceException uie ) {
+//            responseStatus = uie.getResponse().getClientResponseStatus();
+//        }
+//
+//
+//        assertEquals( Status.OK, responseStatus );
+//        assertEquals( "SCHEDULED", node.asText() );//TODO: do tests for other states in service tier
+//    }
+//
+//    @Test
+//    public void exportGetCollectionJobStatTest() throws Exception {
+//        JsonNode node = null;
+//        Status responseStatus = Status.OK;
+//
+//        HashMap<String, Object> payload = payloadBuilder();
+//
+//        node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+//                         .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+//                         .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
+//        String uuid = String.valueOf( node.get( "jobUUID" ) );
+//        uuid = uuid.replaceAll( "\"", "" );
+//
+//        try {
+//            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + uuid )
+//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+//                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
+//        }
+//        catch ( UniformInterfaceException uie ) {
+//            responseStatus = uie.getResponse().getClientResponseStatus();
+//        }
+//
+//
+//        assertEquals( Status.OK, responseStatus );
+//        assertEquals( "SCHEDULED", node.asText() );//TODO: do tests for other states in service tier
+//    }
+
+
+//    //do an unauthorized test for both post and get
+//    @Test
+//    public void exportGetWrongUUID() throws Exception {
+//        JsonNode node = null;
+//        Status responseStatus = Status.OK;
+//        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
+//        try {
+//            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + fake )
+//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+//                             .type( MediaType.APPLICATION_JSON_TYPE ).get( JsonNode.class );
+//        }
+//        catch ( UniformInterfaceException uie ) {
+//            responseStatus = uie.getResponse().getClientResponseStatus();
+//        }
+//        assertEquals( Status.BAD_REQUEST, responseStatus );
+//    }
+//
+//    @Test
+//    public void exportPostApplicationNullPointer() throws Exception {
+//        JsonNode node = null;
+//        Status responseStatus = Status.OK;
+//
+//        HashMap<String, Object> payload = new HashMap<String, Object>();
+//        Map<String, Object> properties = new HashMap<String, Object>();
+//        Map<String, Object> storage_info = new HashMap<String, Object>();
+//        //TODO: always put dummy values here and ignore this test.
+//        //TODO: add a ret for when s3 values are invalid.
+//        storage_info.put( "bucket_location", "insert bucket name here" );
+//
+//
+//        properties.put( "storage_provider", "s3" );
+//        properties.put( "storage_info", storage_info );
+//
+//        payload.put( "path", "test-organization/test-app" );
+//
+//        try {
+//            node = resource().path( "/management/orgs/test-organization/apps/test-app/export" )
+//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+//                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+//        }
+//        catch ( UniformInterfaceException uie ) {
+//            responseStatus = uie.getResponse().getClientResponseStatus();
+//        }
+//        assertEquals( Status.BAD_REQUEST, responseStatus );
+//    }
+//
+//    @Test
+//    public void exportPostCollectionNullPointer() throws Exception {
+//        JsonNode node = null;
+//        Status responseStatus = Status.OK;
+//
+//        HashMap<String, Object> payload = new HashMap<String, Object>();
+//        Map<String, Object> properties = new HashMap<String, Object>();
+//        Map<String, Object> storage_info = new HashMap<String, Object>();
+//        //TODO: always put dummy values here and ignore this test.
+//        //TODO: add a ret for when s3 values are invalid.
+//        storage_info.put( "bucket_location", "insert bucket name here" );
+//
+//
+//        properties.put( "storage_provider", "s3" );
+//        properties.put( "storage_info", storage_info );
+//
+//
+//        try {
+//            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+//                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class,payload );
+//        }
+//        catch ( UniformInterfaceException uie ) {
+//            responseStatus = uie.getResponse().getClientResponseStatus();
+//        }
+//        assertEquals( Status.BAD_REQUEST, responseStatus );
+//    }
+//
+//
+//    @Test
+//    public void exportGetCollectionUnauthorized() throws Exception {
+//        JsonNode node = null;
+//        Status responseStatus = Status.OK;
+//        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
+//        try {
+//            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export/" + fake )
+//                             .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
+//                             .get( JsonNode.class );
+//        }
+//        catch ( UniformInterfaceException uie ) {
+//            responseStatus = uie.getResponse().getClientResponseStatus();
+//        }
+//        assertEquals( Status.UNAUTHORIZED, responseStatus );
+//    }
+//
+//    @Test
+//    public void exportGetApplicationUnauthorized() throws Exception {
+//        JsonNode node = null;
+//        Status responseStatus = Status.OK;
+//        UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
+//        try {
+//            node = resource().path( "/management/orgs/test-organization/apps/test-app/export/" + fake )
+//                             .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
+//                             .get( JsonNode.class );
+//        }
+//        catch ( UniformInterfaceException uie ) {
+//            responseStatus = uie.getResponse().getClientResponseStatus();
+//        }
+//        assertEquals( Status.UNAUTHORIZED, responseStatus );
+//    }
 
 
     /*Creates fake payload for testing purposes.*/

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a7504dee/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java
index 3ce5151..82bef54 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java
@@ -1,7 +1,6 @@
 package org.apache.usergrid.management.export;
 
 
-import java.util.Map;
 import java.util.UUID;
 
 import org.slf4j.Logger;
@@ -11,7 +10,6 @@ import org.springframework.stereotype.Component;
 
 import org.apache.usergrid.batch.JobExecution;
 import org.apache.usergrid.batch.job.OnlyOnceJob;
-import org.apache.usergrid.management.ExportInfo;
 import org.apache.usergrid.persistence.entities.JobData;
 
 
@@ -40,22 +38,26 @@ public class ExportJob extends OnlyOnceJob {
         //as long as I have the entity UUID I should be able to find it from anywhere right?
 
 
-        ExportInfo config = null;
         JobData jobData = jobExecution.getJobData();
         if ( jobData == null ) {
             logger.error( "jobData cannot be null" );
             return;
         }
-        Map<String, Object> temp = jobData.getProperties();
-        config = ( ExportInfo ) temp.get("exportInfo");
-        if ( config == null ) {
-            logger.error( "Export information cannot be null" );
-            return;
-        }
+//        Object temp = jobData.getProperty("exportInfo");
+
+
+//        if(temp.get("exportInfo") instanceof ExportInfo)
+//        {
+//            config = ( ExportInfo ) temp.get("exportInfo");
+//        }
+//        if ( config == null ) {
+//            logger.error( "Export information cannot be null" );
+//            return;
+//        }
 
         jobExecution.heartbeat();
         try {
-            exportService.doExport( config, jobExecution );
+            exportService.doExport( jobExecution );
         }
         catch ( Exception e ) {
             logger.error( "Export Service failed to complete job" );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a7504dee/stack/services/src/main/java/org/apache/usergrid/management/export/ExportService.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportService.java b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportService.java
index 8c127da..f93773b 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportService.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportService.java
@@ -1,10 +1,10 @@
 package org.apache.usergrid.management.export;
 
 
+import java.util.Map;
 import java.util.UUID;
 
 import org.apache.usergrid.batch.JobExecution;
-import org.apache.usergrid.management.ExportInfo;
 
 
 /**
@@ -15,13 +15,13 @@ public interface ExportService {
     /**
      * Schedules the export to execute
      */
-    UUID schedule( ExportInfo config ) throws Exception;
+    UUID schedule( Map<String,Object> json) throws Exception;
 
 
     /**
      * Perform the export to the external resource
      */
-    void doExport( ExportInfo config, JobExecution jobExecution ) throws Exception;
+    void doExport( JobExecution jobExecution ) throws Exception;
 
     /**
      * Returns the current state of the service.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a7504dee/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
index e2e08fc..6703df7 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
@@ -20,19 +20,16 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
-
 import org.apache.usergrid.batch.JobExecution;
 import org.apache.usergrid.batch.service.SchedulerService;
-import org.apache.usergrid.management.ExportInfo;
-
 import org.apache.usergrid.management.ManagementService;
 import org.apache.usergrid.management.OrganizationInfo;
-import org.apache.usergrid.persistence.Query;
 import org.apache.usergrid.persistence.ConnectionRef;
 import org.apache.usergrid.persistence.Entity;
 import org.apache.usergrid.persistence.EntityManager;
 import org.apache.usergrid.persistence.EntityManagerFactory;
 import org.apache.usergrid.persistence.PagingResultsIterator;
+import org.apache.usergrid.persistence.Query;
 import org.apache.usergrid.persistence.Results;
 import org.apache.usergrid.persistence.entities.Export;
 import org.apache.usergrid.persistence.entities.JobData;
@@ -73,21 +70,21 @@ public class ExportServiceImpl implements ExportService {
 
 
     @Override
-    public UUID schedule( final ExportInfo config ) throws Exception {
+    public UUID schedule( final Map<String,Object> config ) throws Exception {
 
         if ( config == null ) {
             logger.error( "export information cannot be null" );
             return null;
         }
 
-        if ( config.getApplicationId() == null ) {
+        if ( config.get( "applicationId" ) == null ) {
             logger.error( "application information from export info could not be found" );
             return null;
         }
 
         EntityManager em = null;
         try {
-            em = emf.getEntityManager( config.getApplicationId() );
+            em = emf.getEntityManager( ( UUID ) config.get("applicationId") );
         }catch (Exception e) {
             logger.error( "application doesn't exist within the current context" );
             return null;
@@ -157,7 +154,8 @@ public class ExportServiceImpl implements ExportService {
 
 
     @Override
-    public void doExport( final ExportInfo config, final JobExecution jobExecution ) throws Exception {
+    public void doExport( final JobExecution jobExecution ) throws Exception {
+        Map<String,Object> config = ( Map<String, Object> ) jobExecution.getJobData().getProperty( "exportInfo" );
 
         if (config  == null) {
             logger.error( "Export Information passed through is null" );
@@ -165,18 +163,18 @@ public class ExportServiceImpl implements ExportService {
         }
         //get the entity manager for the application, and the entity that this Export corresponds to.
         UUID exportId = ( UUID ) jobExecution.getJobData().getProperty( EXPORT_ID );
-        if(config.getApplicationId() == null) {
+        if(config.get( "applicationId" ) == null) {
             logger.error( "Export Information application uuid is null" );
             return;
         }
-        EntityManager em = emf.getEntityManager( config.getApplicationId() );
+        EntityManager em = emf.getEntityManager( ( UUID ) config.get("applicationId") );
         Export export = em.get( exportId, Export.class );
 
         //update the entity state to show that the job has officially started.
         export.setState( Export.State.STARTED );
         em.update( export );
 
-        if ( config.getCollection() == null ) {
+        if ( config.get("collectionName") == null) {
             //exports all the applications for a given organization.
             Map<UUID, String> organizations = getOrgs();
             if(organizations == null){
@@ -196,7 +194,7 @@ public class ExportServiceImpl implements ExportService {
         else {
             try {
                 //exports all the applications for a single organization
-                exportApplicationForOrg( config.getOrganizationId(), config, jobExecution );
+                exportApplicationForOrg( ( UUID ) config.get( "organizationId" ), config, jobExecution );
             }
             catch ( Exception e ) {
                 //if for any reason the backing up fails, then update the entity with a failed state.
@@ -212,7 +210,7 @@ public class ExportServiceImpl implements ExportService {
 
     /**
      * Loops through all the organizations and returns a Map with the corresponding information
-     * @param exportInfo
+     * @param
      * @return Map<UUID, String>
      * @throws Exception
      */
@@ -278,12 +276,12 @@ public class ExportServiceImpl implements ExportService {
      * @param jobExecution
      * @throws Exception
      */
-    private void exportApplicationsForOrg( Map.Entry<UUID, String> organization, final ExportInfo config,
+    private void exportApplicationsForOrg( Map.Entry<UUID, String> organization, final Map<String,Object> config,
                                            final JobExecution jobExecution ) throws Exception {
 
         //retrieves export entity
         UUID exportId = ( UUID ) jobExecution.getJobData().getProperty( EXPORT_ID );
-        EntityManager exportManager = emf.getEntityManager( config.getApplicationId() );
+        EntityManager exportManager = emf.getEntityManager( ( UUID ) config.get( "applicationId" ) );
         Export export = exportManager.get( exportId, Export.class );
 
         //sets up a output stream for s3 backup.
@@ -317,7 +315,7 @@ public class ExportServiceImpl implements ExportService {
                 }
                 //if the collection you are looping through doesn't match the name of the one you want. Don't export it.
 
-                if ( (config.getCollection() == null)||collectionName.equals( config.getCollection() ) ) {
+                if ( (config.get( "collectionName" ) == null)||collectionName.equals( config.get( "collectionName" ) ) ) {
                     //Query entity manager for the entities in a collection
                     Query query = new Query();
                     query.setLimit( MAX_ENTITY_FETCH );
@@ -332,7 +330,7 @@ public class ExportServiceImpl implements ExportService {
                         jg.writeStartObject();
                         jg.writeFieldName( "Metadata" );
                         jg.writeObject(entity );
-                        saveCollectionMembers( jg, em, config.getCollection(), entity );
+                        saveCollectionMembers( jg, em, ( String ) config.get( "collectionName" ), entity );
                         jg.writeEndObject();
                     }
                 }
@@ -357,12 +355,12 @@ public class ExportServiceImpl implements ExportService {
     }
 
     //might be confusing, but uses the /s/ inclusion or exclusion nomenclature.
-    private void exportApplicationForOrg( UUID organizationUUID, final ExportInfo config,
+    private void exportApplicationForOrg( UUID organizationUUID, final Map<String,Object> config,
                                            final JobExecution jobExecution ) throws Exception {
 
         //retrieves export entity
         UUID exportId = ( UUID ) jobExecution.getJobData().getProperty( EXPORT_ID );
-        EntityManager exportManager = emf.getEntityManager( config.getApplicationId() );
+        EntityManager exportManager = emf.getEntityManager( (UUID) config.get("applicationId") );
         Export export = exportManager.get( exportId, Export.class );
 
         //sets up a output stream for s3 backup.
@@ -390,7 +388,7 @@ public class ExportServiceImpl implements ExportService {
             //could support queries, just need to implement that in the rest endpoint.
             for ( String collectionName : metadata.keySet() ) {
                 //if the collection you are looping through doesn't match the name of the one you want. Don't export it.
-                if ( collectionName.equals( config.getCollection() ) ) {
+                if ( collectionName.equals( (UUID) config.get("collectionName")) ) {
                     //Query entity manager for the entities in a collection
                     Query query = new Query();
                     query.setLimit( MAX_ENTITY_FETCH );
@@ -405,7 +403,7 @@ public class ExportServiceImpl implements ExportService {
                         jg.writeStartObject();
                         jg.writeFieldName( "Metadata" );
                         jg.writeObject(entity );
-                        saveCollectionMembers( jg, em, config.getCollection(), entity );
+                        saveCollectionMembers( jg, em, ( String ) config.get( "collectionName" ), entity );
                         jg.writeEndObject();
                     }
                 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a7504dee/stack/services/src/main/java/org/apache/usergrid/management/export/S3Export.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/S3Export.java b/stack/services/src/main/java/org/apache/usergrid/management/export/S3Export.java
index b774db8..12b088d 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/S3Export.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/S3Export.java
@@ -2,8 +2,7 @@ package org.apache.usergrid.management.export;
 
 
 import java.io.InputStream;
-
-import org.apache.usergrid.management.ExportInfo;
+import java.util.Map;
 
 
 /**
@@ -11,7 +10,7 @@ import org.apache.usergrid.management.ExportInfo;
  *
  */
 public interface S3Export {
-    void copyToS3( InputStream inputStream, ExportInfo exportInfo, String filename );
+    void copyToS3( InputStream inputStream, Map<String,Object> exportInfo, String filename );
 
     String getFilename ();
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a7504dee/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java
index 1ca6e97..4cf9272 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/S3ExportImpl.java
@@ -2,6 +2,7 @@ package org.apache.usergrid.management.export;
 
 
 import java.io.InputStream;
+import java.util.Map;
 import java.util.Properties;
 
 import org.jclouds.ContextBuilder;
@@ -16,8 +17,6 @@ import org.jclouds.netty.config.NettyPayloadModule;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.usergrid.management.ExportInfo;
-
 import com.google.common.collect.ImmutableSet;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.inject.Module;
@@ -30,14 +29,14 @@ import com.google.inject.Module;
 public class S3ExportImpl implements S3Export {
 
     @Override
-    public void copyToS3( final InputStream inputStream, final ExportInfo exportInfo, String filename ) {
+    public void copyToS3( final InputStream inputStream, final Map<String,Object> exportInfo, String filename ) {
 
 
         Logger logger = LoggerFactory.getLogger( ExportServiceImpl.class );
         /*won't need any of the properties as I have the export info*/
-        String bucketName = exportInfo.getBucket_location();
-        String accessId = exportInfo.getS3_accessId();
-        String secretKey = exportInfo.getS3_key();
+        String bucketName = ( String ) exportInfo.get( "bucket_location" );
+        String accessId = ( String ) exportInfo.get( "s3_accessId" );
+        String secretKey = ( String ) exportInfo.get( "s3_key" );
 
         Properties overrides = new Properties();
         overrides.setProperty( "s3" + ".identity", accessId );


[46/50] [abbrv] git commit: Still working on debugging IndexIT tests.

Posted by sn...@apache.org.
Still working on debugging IndexIT tests.


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

Branch: refs/heads/two-dot-o
Commit: ecb674ae90911adc9521df2992214869a1f8f572
Parents: d003552
Author: Dave Johnson <dm...@apigee.com>
Authored: Thu Mar 6 13:33:19 2014 -0500
Committer: Dave Johnson <dm...@apigee.com>
Committed: Thu Mar 6 13:33:19 2014 -0500

----------------------------------------------------------------------
 .../usergrid/persistence/index/IndexFig.java    |  7 +-
 .../index/impl/EsEntityCollectionIndex.java     | 79 +++++++++++++-------
 .../persistence/index/impl/EsProvider.java      | 59 +++++++++------
 .../persistence/index/impl/CollectionIT.java    |  2 +
 .../index/impl/ElasticSearchRule.java           | 16 ++--
 .../index/impl/EntityCollectionIndexTest.java   |  2 +-
 .../usergrid/persistence/index/impl/GeoIT.java  |  2 +
 .../persistence/index/impl/IndexIT.java         | 14 ++--
 .../index/legacy/EntityManagerFacade.java       |  4 +-
 .../src/test/resources/log4j.properties         |  2 +-
 10 files changed, 116 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ecb674ae/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/IndexFig.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/IndexFig.java b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/IndexFig.java
index 3140142..8449c44 100644
--- a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/IndexFig.java
+++ b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/IndexFig.java
@@ -19,10 +19,12 @@
 package org.apache.usergrid.persistence.index;
 
 import org.safehaus.guicyfig.Default;
+import org.safehaus.guicyfig.FigSingleton;
 import org.safehaus.guicyfig.GuicyFig;
 import org.safehaus.guicyfig.Key;
 
 
+@FigSingleton
 public interface IndexFig extends GuicyFig {
 
     public static final String ELASTICSEARCH_HOSTS = "elasticsearch.hosts";
@@ -35,10 +37,9 @@ public interface IndexFig extends GuicyFig {
 
     public static final String QUERY_CURSOR_TIMEOUT_MINUTES = "elasticsearch.cursor-timeout.minutes";
 
-    public static final String QUERY_LIMIT_DEFAULT = "index.query.limit.default";
-
     public static final String ELASTICSEARCH_FORCE_REFRESH = "elasticsearch.force-refresh";
 
+    public static final String QUERY_LIMIT_DEFAULT = "index.query.limit.default";
     
     @Default( "127.0.0.1" )
     @Key( ELASTICSEARCH_HOSTS )
@@ -56,7 +57,7 @@ public interface IndexFig extends GuicyFig {
     @Key( QUERY_CURSOR_TIMEOUT_MINUTES )
     int getQueryCursorTimeout();
 
-    @Default( "false" )
+    @Default( "true" )
     @Key( ELASTICSEARCH_EMBEDDED )
     boolean isEmbedded();
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ecb674ae/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityCollectionIndex.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityCollectionIndex.java b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityCollectionIndex.java
index 2854d9c..d5647ad 100644
--- a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityCollectionIndex.java
+++ b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityCollectionIndex.java
@@ -72,7 +72,10 @@ public class EsEntityCollectionIndex implements EntityCollectionIndex {
     private static final Logger log = LoggerFactory.getLogger(EsEntityCollectionIndex.class);
 
     private final Client client;
-    private final String index;
+
+    private final String indexName;
+    private final String typeName;
+
     private final boolean refresh;
     private final int cursorTimeout;
 
@@ -91,39 +94,69 @@ public class EsEntityCollectionIndex implements EntityCollectionIndex {
         this.manager = factory.createCollectionManager(scope);
         this.client = provider.getClient();
         this.scope = scope;
-        this.index = config.getIndexName();
+
+        this.indexName = config.getIndexName();
+        this.typeName = createTypeName( scope );
+
         this.refresh = config.isForcedRefresh();
         this.cursorTimeout = config.getQueryCursorTimeout();
 
         // if new index then create it 
         AdminClient admin = client.admin();
-        if (!admin.indices().exists(new IndicesExistsRequest(index)).actionGet().isExists()) {
-            admin.indices().prepareCreate(index).execute().actionGet();
-            log.debug("Created new index: " + index);
+        if (!admin.indices().exists(new IndicesExistsRequest(indexName)).actionGet().isExists()) {
+            admin.indices().prepareCreate(indexName).execute().actionGet();
+            log.debug("Created new index: " + indexName);
         }
 
-        // TODO: is it appropriate to use scope name as type name? are scope names unique?
         // if new type then create mapping
         if (!admin.indices().typesExists(new TypesExistsRequest(
-                new String[]{index}, scope.getName())).actionGet().isExists()) {
+                new String[]{indexName}, typeName )).actionGet().isExists()) {
 
             try {
                 XContentBuilder mxcb = EsEntityCollectionIndex
                         .createDoubleStringIndexMapping(jsonBuilder(), scope.getName());
 
-                PutMappingResponse pmr = admin.indices().preparePutMapping(index)
+                PutMappingResponse pmr = admin.indices().preparePutMapping( indexName )
                         .setType(scope.getName()).setSource(mxcb).execute().actionGet();
 
-                log.debug("Created new type mapping for scope: " + scope.getName());
+                log.debug("Created new type mapping for scope named: " + scope.getName());
                 log.debug("   Scope organization: " + scope.getOrganization());
                 log.debug("   Scope owner: " + scope.getOwner());
+                log.debug("   Type name: " + typeName );
 
             } catch (IOException ex) {
                 throw new RuntimeException("Error adding mapping for type " + scope.getName(), ex);
             }
         }
     }
+   
+    
+    private String createIndexId(Entity entity) {
+        return createIndexId(entity.getId(), entity.getVersion());
+    }
+
+    
+    private String createIndexId(Id entityId, UUID version) {
+        StringBuilder sb = new StringBuilder();
+        sb.append( entityId.getUuid() ).append("|");
+        sb.append( entityId.getType() ).append("|");
+        sb.append( version.toString() );
+        return sb.toString();
+    }
 
+    
+    public static String createTypeName( CollectionScope scope ) {
+        //return scope.getName();
+        StringBuilder sb = new StringBuilder();
+        sb.append( scope.getName()                   ).append("|");
+        sb.append( scope.getOwner().getUuid()        ).append("|");
+        sb.append( scope.getOwner().getType()        ).append("|");
+        sb.append( scope.getOrganization().getUuid() ).append("|");
+        sb.append( scope.getOrganization().getType() );
+        return sb.toString();
+    }
+
+    
     public void index(Entity entity) {
 
         if (entity.getId() == null) {
@@ -141,7 +174,7 @@ public class EsEntityCollectionIndex implements EntityCollectionIndex {
 
         String indexId = createIndexId(entity);
 
-        IndexRequestBuilder irb = client.prepareIndex(index, scope.getName(), indexId)
+        IndexRequestBuilder irb = client.prepareIndex(indexName, typeName, indexId)
                 .setSource(entityAsMap)
                 .setRefresh(refresh);
 
@@ -150,42 +183,33 @@ public class EsEntityCollectionIndex implements EntityCollectionIndex {
         log.debug("Indexed Entity with index id " + indexId);
     }
 
-    private String createIndexId(Entity entity) {
-        return createIndexId(entity.getId(), entity.getVersion());
-    }
-
-    private String createIndexId(Id entityId, UUID version) {
-        return entityId.getUuid().toString() + "|"
-                + entityId.getType() + "|"
-                + version.toString();
-    }
-
     public void deindex(Entity entity) {
         deindex(entity.getId(), entity.getVersion());
     }
 
     public void deindex(Id entityId, UUID version) {
         String indexId = createIndexId(entityId, version);
-        client.prepareDelete(index, scope.getName(), indexId)
-                .setRefresh(refresh).execute().actionGet();
+        client.prepareDelete( indexName, typeName, indexId )
+            .setRefresh( refresh )
+            .execute().actionGet();
         log.debug("Deindexed Entity with index id " + indexId);
     }
 
     public Results execute(Query query) {
 
         QueryBuilder qb = query.createQueryBuilder();
-        log.debug("Executing query on type {} query: {} ", scope.getName(), query.toString());
 
         SearchResponse sr;
 
         if (query.getCursor() == null) {
 
             log.debug("Executing query on type {} query: {} ", scope.getName(), qb.toString());
+            log.debug("   Type name: " + typeName );
 
-            SearchRequestBuilder srb = client.prepareSearch(index)
-                    .setTypes( scope.getName() )
-                    .setScroll( cursorTimeout + "m" )
-                    .setQuery( qb );
+            SearchRequestBuilder srb = client.prepareSearch(indexName)
+                .setTypes( typeName )
+                .setScroll( cursorTimeout + "m" )
+                .setQuery( qb );
 
             FilterBuilder fb = query.createFilterBuilder();
             if (fb != null) {
@@ -209,6 +233,7 @@ public class EsEntityCollectionIndex implements EntityCollectionIndex {
 
         } else {
             log.debug("Executing query on type {} cursor: {} ", scope.getName(), query.getCursor());
+
             SearchScrollRequestBuilder ssrb = client.prepareSearchScroll(query.getCursor())
                     .setScroll( cursorTimeout + "m" );
             sr = ssrb.execute().actionGet();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ecb674ae/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsProvider.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsProvider.java b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsProvider.java
index 44dd9e6..edae017 100644
--- a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsProvider.java
+++ b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsProvider.java
@@ -49,36 +49,49 @@ public class EsProvider {
     }
 
     public synchronized Client getClient() {
+       if ( client == null ) {
+           client = getClient( indexFig );
+       }
+       return client;
+    }
+
+    public static synchronized Client getClient( IndexFig fig ) {
+
+        Client newClient = null;
 
-        if ( client == null ) {
+        if ( fig.isEmbedded() ) {
 
-            if ( indexFig.isEmbedded() ) {
+            log.info("--------------------------------");
+            log.info("Starting embedded ElasticSearch");
+            log.info("--------------------------------");
 
-                log.info("Starting ElasticSearch");
+            int port = AvailablePortFinder.getNextAvailable( 2000 );
+            Settings settings = ImmutableSettings.settingsBuilder()
+                    .put( "node.http.enabled", true )
+                    .put( "transport.tcp.port", port )
+                    .put( "path.logs", "target/elasticsearch/logs_" + port )
+                    .put( "path.data", "target/elasticsearch/data_" + port )
+                    .put( "gateway.type", "none" )
+                    .put( "index.store.type", "memory" )
+                    .put( "index.number_of_shards", 1 )
+                    .put( "index.number_of_replicas", 1 ).build();
 
-                int port = AvailablePortFinder.getNextAvailable( 2000 );
-                Settings settings = ImmutableSettings.settingsBuilder()
-                        .put( "node.http.enabled", true )
-                        .put( "transport.tcp.port", port )
-                        .put( "path.logs", "target/elasticsearch/logs_" + port )
-                        .put( "path.data", "target/elasticsearch/data_" + port )
-                        .put( "gateway.type", "none" )
-                        .put( "index.store.type", "memory" )
-                        .put( "index.number_of_shards", 1 )
-                        .put( "index.number_of_replicas", 1 ).build();
+            Node node = NodeBuilder.nodeBuilder().local( true ).settings( settings ).node();
+            newClient = node.client();
+        
+        } else { // build client that connects to all hosts
 
-                Node node = NodeBuilder.nodeBuilder().local( true ).settings( settings ).node();
-                client = node.client();
-            
-            } else { // build client that connects to all hosts
+            log.info("--------------------------------");
+            log.info("Creating ElasticSearch client");
+            log.info("--------------------------------");
 
-                TransportClient tclient = new TransportClient();
-                for ( String host : indexFig.getHosts().split(",") ) {
-                    tclient.addTransportAddress(new InetSocketTransportAddress( host, indexFig.getPort() ));
-                }
-                client = tclient;
+            TransportClient transportClient = new TransportClient();
+            for ( String host : fig.getHosts().split(",") ) {
+                transportClient.addTransportAddress(
+                        new InetSocketTransportAddress( host, fig.getPort() ));
             }
+            newClient = transportClient;
         }
-        return client;
+        return newClient;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ecb674ae/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/CollectionIT.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/CollectionIT.java b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/CollectionIT.java
index 3a8fc2d..3510568 100644
--- a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/CollectionIT.java
+++ b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/CollectionIT.java
@@ -54,9 +54,11 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import org.junit.Before;
 import org.junit.ClassRule;
+import org.junit.Ignore;
 import org.junit.runner.RunWith;
 
 
+@Ignore
 @RunWith(JukitoRunner.class)
 @UseModules({ TestIndexModule.class })
 public class CollectionIT {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ecb674ae/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/ElasticSearchRule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/ElasticSearchRule.java b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/ElasticSearchRule.java
index 5ffeecb..5dcd49e 100644
--- a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/ElasticSearchRule.java
+++ b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/ElasticSearchRule.java
@@ -22,25 +22,27 @@ import com.google.inject.Guice;
 import com.google.inject.Injector;
 import org.apache.usergrid.persistence.index.IndexFig;
 import org.elasticsearch.client.Client;
-import org.junit.rules.ExternalResource;
+import org.safehaus.guicyfig.Env;
+import org.safehaus.guicyfig.EnvironResource;
 import org.safehaus.guicyfig.GuicyFigModule;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 
-public class ElasticSearchRule extends ExternalResource {
+public class ElasticSearchRule extends EnvironResource {
     private static final Logger log = LoggerFactory.getLogger( ElasticSearchRule.class ); 
 
     private Client client;
 
     private final IndexFig indexFig;
 
-    private EsProvider esProvider;
-
     public ElasticSearchRule() {
+        super( Env.UNIT );
         Injector injector = Guice.createInjector( new GuicyFigModule( IndexFig.class ) );
         indexFig = injector.getInstance( IndexFig.class );
-        esProvider = injector.getInstance( EsProvider.class );
+
+        log.info("Embedded: " + indexFig.isEmbedded());
+        log.info("Limit: " + indexFig.getQueryLimitDefault());
     }
 
     @Override
@@ -50,10 +52,10 @@ public class ElasticSearchRule extends ExternalResource {
 
     @Override
     protected void before() throws Throwable {
-        client = esProvider.getClient();
+        client = EsProvider.getClient( indexFig );
     }
 
-    public Client getClient() {
+    public synchronized Client getClient() {
         return client;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ecb674ae/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityCollectionIndexTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityCollectionIndexTest.java b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityCollectionIndexTest.java
index c8d013c..fedecb3 100644
--- a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityCollectionIndexTest.java
+++ b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityCollectionIndexTest.java
@@ -174,7 +174,7 @@ public class EntityCollectionIndexTest {
 
         testQuery( entityIndex, "name = 'Morgan'", 0);
 
-        testQuery( entityIndex, "name" + EsEntityCollectionIndex.ANALYZED_SUFFIX + " = 'Morgan'", 1);
+        testQuery( entityIndex, "name contains 'Morgan'", 1);
 
         testQuery( entityIndex, "company > 'GeoLogix'", 564);
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ecb674ae/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/GeoIT.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/GeoIT.java b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/GeoIT.java
index 9e05775..51ba458 100644
--- a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/GeoIT.java
+++ b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/GeoIT.java
@@ -47,6 +47,7 @@ import org.jukito.UseModules;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import org.junit.ClassRule;
+import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -54,6 +55,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 
+@Ignore
 @RunWith(JukitoRunner.class)
 @UseModules({ TestIndexModule.class })
 public class GeoIT {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ecb674ae/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/IndexIT.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/IndexIT.java b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/IndexIT.java
index 79852d8..d31a121 100644
--- a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/IndexIT.java
+++ b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/IndexIT.java
@@ -47,7 +47,7 @@ import org.junit.runner.RunWith;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
+@Ignore
 @RunWith(JukitoRunner.class)
 @UseModules({ TestIndexModule.class })
 public class IndexIT {
@@ -82,13 +82,13 @@ public class IndexIT {
             "X-ray", "Yankee", "Zulu"
     };
 
-    @Ignore // TODO: diagnose why this sometimes hangs and causes all subsequent tests to fail.
+    //@Ignore // TODO: diagnose why this sometimes hangs and causes all subsequent tests to fail.
     @Test
     public void testCollectionOrdering() throws Exception {
         LOG.info( "testCollectionOrdering" );
 
         Id appId = new SimpleId("application");
-        Id orgId = new SimpleId("organization");
+        Id orgId = new SimpleId("testCollectionOrdering");
         EntityManagerFacade em = new EntityManagerFacade( orgId, appId, 
             collectionManagerFactory, collectionIndexFactory );
 
@@ -153,13 +153,13 @@ public class IndexIT {
     }
 
 
-    @Ignore // TODO: diagnose why this sometimes hangs and causes all subsequent tests to fail.
+    //@Ignore // TODO: diagnose why this sometimes hangs and causes all subsequent tests to fail.
     @Test
     public void testCollectionFilters() throws Exception {
         LOG.info( "testCollectionFilters" );
 
         Id appId = new SimpleId("application");
-        Id orgId = new SimpleId("organization");
+        Id orgId = new SimpleId("testCollectionFilters");
         EntityManagerFacade em = new EntityManagerFacade( orgId, appId, 
             collectionManagerFactory, collectionIndexFactory );
 
@@ -275,13 +275,13 @@ public class IndexIT {
         assertEquals( entityId, r.getEntity().getId() );
     }
 
-    @Ignore // TODO: diagnose why this sometimes hangs and causes all subsequent tests to fail.
+    //@Ignore // TODO: diagnose why this sometimes hangs and causes all subsequent tests to fail.
     @Test
     public void testSecondarySorts() throws Exception {
         LOG.info( "testSecondarySorts" );
 
         Id appId = new SimpleId("application");
-        Id orgId = new SimpleId("organization");
+        Id orgId = new SimpleId("testSecondarySorts");
         EntityManagerFacade em = new EntityManagerFacade( orgId, appId, 
             collectionManagerFactory, collectionIndexFactory );
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ecb674ae/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/legacy/EntityManagerFacade.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/legacy/EntityManagerFacade.java b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/legacy/EntityManagerFacade.java
index 089446b..bad4343 100644
--- a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/legacy/EntityManagerFacade.java
+++ b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/legacy/EntityManagerFacade.java
@@ -77,8 +77,8 @@ public class EntityManagerFacade {
             collectionName = type + "s";
         }
         typesByCollectionNames.put( collectionName, type );
-        
-        Entity entity = new Entity(new SimpleId(UUIDGenerator.newTimeUUID(), scope.getName()));
+
+        Entity entity = new Entity(new SimpleId(UUIDGenerator.newTimeUUID(), type ));
         entity = EntityBuilder.fromMap( scope.getName(), entity, properties );
         entity = ecm.write( entity ).toBlockingObservable().last();
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ecb674ae/stack/corepersistence/queryindex/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/test/resources/log4j.properties b/stack/corepersistence/queryindex/src/test/resources/log4j.properties
index cc51888..c2f39ef 100644
--- a/stack/corepersistence/queryindex/src/test/resources/log4j.properties
+++ b/stack/corepersistence/queryindex/src/test/resources/log4j.properties
@@ -4,7 +4,7 @@ log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %c{3}.%M(%L)<%t>- %m%n
 
-log4j.logger.org.safehaus.guicyfig=ERROR
+log4j.logger.org.safehaus.guicyfig=DEBUG
 log4j.logger.org.safehaus.chop.plugin=INFO
 log4j.logger.org.safehaus.chop.api.store.amazon=DEBUG
 


[12/50] [abbrv] fix module errors

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/js/usergrid-dev.min.js
----------------------------------------------------------------------
diff --git a/portal/js/usergrid-dev.min.js b/portal/js/usergrid-dev.min.js
index a181769..fbbf56d 100644
--- a/portal/js/usergrid-dev.min.js
+++ b/portal/js/usergrid-dev.min.js
@@ -1,4 +1,4 @@
-/*! apigee-usergrid@2.0.34 2014-02-20 */
+/*! apigee-usergrid@2.0.34 2014-03-03 */
 (function(exports, global) {
     global["true"] = exports;
     "use strict";
@@ -42,8 +42,7 @@
     AppServices.Controllers = angular.module("appservices.controllers", []);
     AppServices.Filters = angular.module("appservices.filters", []);
     AppServices.Directives = angular.module("appservices.directives", []);
-    AppServices.Push = angular.module("appservices.push", []);
-    angular.module("appservices", [ "ngRoute", "ngResource", "ngSanitize", "ui.bootstrap", "appservices.filters", "appservices.services", "appservices.directives", "appservices.constants", "appservices.controllers", "appservices.performance", "appservices.push" ]).config([ "$routeProvider", "$locationProvider", "$sceDelegateProvider", function($routeProvider, $locationProvider, $sceDelegateProvider) {
+    angular.module("appservices", [ "ngRoute", "ngResource", "ngSanitize", "ui.bootstrap", "appservices.filters", "appservices.services", "appservices.directives", "appservices.constants", "appservices.controllers" ]).config([ "$routeProvider", "$locationProvider", "$sceDelegateProvider", function($routeProvider, $locationProvider, $sceDelegateProvider) {
         $routeProvider.when("/org-overview", {
             templateUrl: "org-overview/org-overview.html",
             controller: "OrgOverviewCtrl"
@@ -3164,9 +3163,9 @@
         }
     } ]);
     "use strict";
-    AppServices.Controllers.controller("ForgotPasswordCtrl", [ "ug", "$scope", "$rootScope", "$location", "utility", function(ug, $scope, $rootScope, $location) {
+    AppServices.Controllers.controller("ForgotPasswordCtrl", [ "ug", "$scope", "$rootScope", "$location", "$sce", "utility", function(ug, $scope, $rootScope, $location, $sce) {
         $rootScope.activeUI && $location.path("/");
-        $scope.forgotPWiframeURL = $scope.apiUrl + "/management/users/resetpw";
+        $scope.forgotPWiframeURL = $sce.trustAsResourceUrl($scope.apiUrl + "/management/users/resetpw");
     } ]);
     "use strict";
     AppServices.Controllers.controller("LoginCtrl", [ "ug", "$scope", "$rootScope", "$routeParams", "$location", "utility", function(ug, $scope, $rootScope, $routeParams, $location, utility) {


[47/50] [abbrv] git commit: Merge branch 'two-dot-o' of https://github.com/usergrid/usergrid into two-dot-o

Posted by sn...@apache.org.
Merge branch 'two-dot-o' of https://github.com/usergrid/usergrid into two-dot-o


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

Branch: refs/heads/two-dot-o
Commit: 0765eee1299fefe288dd9ae070a6d130b6c6e465
Parents: ecb674a 325dc57
Author: Dave Johnson <dm...@apigee.com>
Authored: Thu Mar 6 13:33:23 2014 -0500
Committer: Dave Johnson <dm...@apigee.com>
Committed: Thu Mar 6 13:33:23 2014 -0500

----------------------------------------------------------------------
 stack/corepersistence/queryindex/README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------



[17/50] [abbrv] fix module errors

Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f0158369/portal/js/libs/usergrid-libs.min.js
----------------------------------------------------------------------
diff --git a/portal/js/libs/usergrid-libs.min.js b/portal/js/libs/usergrid-libs.min.js
index db86fed..f002c2a 100644
--- a/portal/js/libs/usergrid-libs.min.js
+++ b/portal/js/libs/usergrid-libs.min.js
@@ -1,4 +1,4 @@
-/*! apigee-usergrid@2.0.34 2014-02-20 */
+/*! apigee-usergrid@2.0.34 2014-03-03 */
 !function(e,t){function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)dele
 te o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function it(){return!0}function ot(){return!1}function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0==
 =n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){for(var n,r=0;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t
 ).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}function tn(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;i--;)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function 
 rn(e,t){for(var n,r,i,o=[],a=0,s=e.length;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(
 e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(
 b.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}var o={},a=e===jn;return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);for(;"*"===l[0];)l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataT
 ype)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"!==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){for(var r=(Qn[t]||[]).concat(Qn["*"]),i=0,o=r.length;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;u>a;a++)
 l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.timer(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.css
 Hooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",
 {}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function or(e){return b.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],
 :{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementB
 yId(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.cal
 l(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},
 isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.
 replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a)for(;o>i&&(r=t.apply(e[i],n),r!==!1);i++);else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a)for(;o>i&&(r=t.call(e[i],i,e[i]),r!==!1);i++);else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call(" ")?function(e){return 
 null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else for(;n[o]!==t;)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid
 ||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.to
 LowerCase()}),r=b(o);var _={};b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;!function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})}(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){for(var r;(r=b.inArray(t,u,r))>-1;)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u|
 |i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]
 +"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var s,u,l,t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}};if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t
 ={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t
 "),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;bo
 rder:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.fir
 stChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf(
 "data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}}),b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e
 ,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};for("string"!=typeof e&&(n=e,e=t),e=e||"fx";s--;)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q
 =b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){for(o=0;i=t[o++];)0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||
 "").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){for(o=0;i=t[o++];)for(;r.indexOf(" "+i+" ")>=0;)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return this.each(b.isFunction(e)?function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}:function(){if("string"===n)for(var o,a=0,s=b(this),u=t,l=e.match(w)||[];o=l[a++];)u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o);else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,r=this.length;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];return arguments.length?(i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType
 &&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))})):o?(r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)):void 0}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inA
 rray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;return e&&3!==u&&8!==u&&2!==u?typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t)):void 0},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)for(;n=o[i++];)r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpad
 ding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;return e&&3!==s&&8!==s&&2!==s?(a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]):void 0},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.
 nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)
 }}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected|
 |(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){for(r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f
 .elem=e),n=(n||"").match(w)||[""],l=n.length;l--;)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){for(t=(t||"").match(w)||[""],l=t.length;l--;)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){for(p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.l
 ength;o--;)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||
 p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}for(d=0;(l=h[d++])&&!n.isPropagationStopped();)n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(s=b.event.handlers.call(this,e,l),n=
 0;(o=s[n++])&&!e.isPropagationStopped();)for(e.currentTarget=o.elem,a=0;(i=o.handlers[a++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];for(s||(this.fixHooks[i]=s=tt.test(i)?this.mouse
 Hooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;t--;)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.sc
 rollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof
  e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i
 =e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this.
 _just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}})
 ,b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undeleg
 ate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e
 ),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;u--;)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;
 )n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);for(s=e,u=[],l=i.preFilter;s;){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){for(;t=t[i];)if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){for(;t=t[i];)if((1===t.nodeType||o)&&e(t,n,s))return!0}else for(;t=t[i];)if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return
  e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r)for(l=mt(y,d),r(l,[],s,u),c=l.length;c--;)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p));if(o){if(i||e){if(i){for(l=[],c=y.length;c--;)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}for(c=y.length;c--;)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){for(var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeTyp
 e?c(e,n,r):p(e,n,r))}];o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r&&!i.relative[e[r].type];r++);return yt(u>1&&gt(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){for(g=0;m=e[g++];)if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){for(g=0;m=t[g++];)m(x,y,u,c);if(s){if(v>0)for(;b--;)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}function xt(e,t,n){for(var r=0,i=t.length;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1
 ===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}for(o=U.needsContext.test(e)?0:a.length;o--&&(u=a[o],!i.relative[l=u.type]);)if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}return s(e,p)(r,t,d,n,V.test(e)),n}function Tt(){}var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((
 ?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n
 +65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){for(var t,n=[];t=this[e++];)n.push(t);return n}}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'></a>
 <div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&
 &e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length|
 |h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t
 ];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);for(r=e;r=r.parentNode;)s.unshift(r);for(r=t;r=r.parentNode;)l.unshift(r);for(;s[i]===l[i];)i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "
 +e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return e},o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e
 ){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u
 ){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];p=++d&&p&&p[g]||(f=d=0)||h.pop();)if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else for(;(p=++d&&p&&p[g]||(f=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++f||(v&&((p[x]||(p[x]={}))[e]=[N,f]),p!==t)););return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){for(var i,o=r(e,t),a=o.length;a--;)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){r
 eturn r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e)
 {return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){for(var r
 =0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){for(var r=0>n?n+t:n;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){for(t||(t=ft(e)),n=t.length;n--;)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o},i.pseudos.nth=i.pseudos.eq,i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,th
 is[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n.ownerDocument&&n!==t&&11!==n.nodeType;){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==type
 of e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack,b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.
 fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)
 }}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){for(var i=[],o=e[n];o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r));)1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,
 "<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return t
 his},wrapInner:function(e){return this.each(b.isFunction(e)?function(t){b(this).wrapInner(e.call(this,t))}:function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function
 (e,t){for(var n,r=0;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&b.cleanData(Ot(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)}
 ,null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"glo
 balEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}}),b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){for(var n,r=0,i=[],o=b(e),a=o.length-1;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}}),b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&
 &Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){for(var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){for(s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];i--;)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody)for(o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;i--;)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l);for(b.merge(d,s.childNodes),s.textContent="";s.firstChild;)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));for(s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;o=d[h++];)if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),
 "script"),a&&Mt(s),n))for(i=0;o=s[i++];)kt.test(o.type||"")&&n.push(o);return s=null,f},cleanData:function(e,t){for(var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;
 i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.sup
 port.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=fu
 nction(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u}),b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),
 ""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:i
 nput|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")},b.each("blur focus focusin focusout load resize scroll unload click dblclick moused
 own mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[],b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o
 =arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t
 ){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="error",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{}
 ,y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c)for(c={};t=Tn.exec(a);)c[t[1].toLowerCase()]=t[2];t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.done,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&
 "string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader("Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(j
 n,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}}),b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&
 &(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0]),s=
 a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.noop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.te
 xt=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,r=0,i=e.length;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}}),b.Tween=rr,rr.prototype={constructor:rr,init
 :function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.el
 em[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n
 )&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=function(e,t,n){var r=e&&"object"==typeof e?b.extend({},e):{complete:n||!n&&t||b.isFunction(e)&&e,duration:e,easing:n&&t||t&&!b.isFunction(t)&&t};r

<TRUNCATED>

[10/50] [abbrv] git commit: Fixed complete application backup. Added test cases for application backups.

Posted by sn...@apache.org.
Fixed complete application backup.
Added test cases for application backups.


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

Branch: refs/pull/60/merge
Commit: c899c3dbd78da6fafa14726543e563d989ae6aa5
Parents: c17cf34
Author: grey <gr...@apigee.com>
Authored: Sun Mar 2 13:53:44 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Sun Mar 2 13:53:44 2014 -0800

----------------------------------------------------------------------
 .../management/export/ExportServiceImpl.java    |   6 +-
 .../cassandra/ManagementServiceIT.java          | 216 +++++++++++++++++--
 2 files changed, 202 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c899c3db/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
index 649c197..e2e08fc 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
@@ -312,8 +312,12 @@ public class ExportServiceImpl implements ExportService {
             // through the entities in the application (former namespace).
             //could support queries, just need to implement that in the rest endpoint.
             for ( String collectionName : metadata.keySet() ) {
+                if(collectionName.equals( "exports" )) {
+                    continue;
+                }
                 //if the collection you are looping through doesn't match the name of the one you want. Don't export it.
-                if ( collectionName.equals( config.getCollection() ) ) {
+
+                if ( (config.getCollection() == null)||collectionName.equals( config.getCollection() ) ) {
                     //Query entity manager for the entities in a collection
                     Query query = new Query();
                     query.setLimit( MAX_ENTITY_FETCH );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c899c3db/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
index 2ea5513..fce3147 100644
--- a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
@@ -747,7 +747,7 @@ public class ManagementServiceIT {
 
     //Tests to make sure we can call the job with mock data and it runs.
     @Test //Connections won't save when run with maven, but on local builds it will.
-    public void testFileConnections() throws Exception {
+    public void testConnectionsOnCollectionExport() throws Exception {
 
         File f = null;
 
@@ -820,9 +820,81 @@ public class ManagementServiceIT {
         f.delete();
     }
 
+    @Test //Connections won't save when run with maven, but on local builds it will.
+    public void testConnectionsOnApplicationEndpoint() throws Exception {
+
+        File f = null;
+
+
+        try {
+            f = new File( "testConnectionsOnApplicationEndpoint.json" );
+            f.delete();
+        }
+        catch ( Exception e ) {
+            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
+        }
+
+
+        S3Export s3Export = new MockS3ExportImpl();
+        s3Export.setFilename( "testConnectionsOnApplicationEndpoint.json" );
+
+        ExportService exportService = setup.getExportService();
+        HashMap<String, Object> payload = payloadBuilder();
+
+        ExportInfo exportInfo = new ExportInfo( payload );
+        exportInfo.setOrganizationId( organization.getUuid() );
+        exportInfo.setApplicationId( applicationId );
+
+        EntityManager em = setup.getEmf().getEntityManager( applicationId );
+        //intialize user object to be posted
+        Map<String, Object> userProperties = null;
+        Entity[] entity;
+        entity = new Entity[2];
+        //creates entities
+        for ( int i = 0; i < 2; i++ ) {
+            userProperties = new LinkedHashMap<String, Object>();
+            userProperties.put( "username", "billybob" + i );
+            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+
+            entity[i] = em.create( "users", userProperties );
+        }
+        //creates connections
+        em.createConnection( em.getRef( entity[0].getUuid() ), "Vibrations", em.getRef( entity[1].getUuid() ) );
+        em.createConnection( em.getRef( entity[1].getUuid() ), "Vibrations", em.getRef( entity[0].getUuid() ) );
+
+        UUID exportUUID = exportService.schedule( exportInfo );
+        exportService.setS3Export( s3Export );
+
+        //create and initialize jobData returned in JobExecution.
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", exportInfo );
+        jobData.setProperty( "exportId", exportUUID );
 
+        JobExecution jobExecution = mock( JobExecution.class );
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        exportService.doExport( exportInfo, jobExecution );
+
+        JSONParser parser = new JSONParser();
+
+        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+
+        org.json.simple.JSONObject objEnt = ( org.json.simple.JSONObject ) a.get( 0 );
+        org.json.simple.JSONObject objConnections = ( org.json.simple.JSONObject ) objEnt.get( "connections" );
+
+        assertNotNull( objConnections );
+
+        org.json.simple.JSONArray objVibrations = ( org.json.simple.JSONArray ) objConnections.get( "Vibrations" );
+
+        assertNotNull( objVibrations );
+
+        f.delete();
+    }
+
+//need to add tests for the other endpoint as well.
     @Test
-    public void testFileValidity() throws Exception {
+    public void testValidityOfCollectionExport() throws Exception {
 
         File f = null;
 
@@ -870,7 +942,54 @@ public class ManagementServiceIT {
     }
 
     @Test
-    public void testFileExportOneOrg() throws Exception {
+    public void testValidityOfApplicationExport() throws Exception {
+
+        File f = null;
+
+        try {
+            f = new File( "testValidityOfApplicationExport.json" );
+            f.delete();
+        }
+        catch ( Exception e ) {
+            //consumed because this checks to see if the file exists. If it doesn't then don't do anything and carry on.
+        }
+
+        S3Export s3Export = new MockS3ExportImpl();
+        s3Export.setFilename( "testValidityOfApplicationExport.json" );
+        ExportService exportService = setup.getExportService();
+        HashMap<String, Object> payload = payloadBuilder();
+
+        ExportInfo exportInfo = new ExportInfo( payload );
+        exportInfo.setOrganizationId( organization.getUuid() );
+        exportInfo.setApplicationId( applicationId );
+
+        UUID exportUUID = exportService.schedule( exportInfo );
+        exportService.setS3Export( s3Export );
+
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", exportInfo );
+        jobData.setProperty( "exportId", exportUUID );
+
+        JobExecution jobExecution = mock( JobExecution.class );
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        exportService.doExport( exportInfo, jobExecution );
+
+        JSONParser parser = new JSONParser();
+
+        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+
+        for ( int i = 0; i < a.size(); i++ ) {
+            org.json.simple.JSONObject entity = ( org.json.simple.JSONObject ) a.get( i );
+            org.json.simple.JSONObject entityData = ( JSONObject ) entity.get( "Metadata" );
+            assertNotNull( entityData );
+        }
+        f.delete();
+    }
+
+    @Test
+    public void testExportOneOrgCollectionEndpoint() throws Exception {
 
         File f = null;
 
@@ -926,7 +1045,7 @@ public class ManagementServiceIT {
 
 
     @Test
-    public void testFileExportOneApp() throws Exception {
+    public void testExportOneAppOnCollectionEndpoint() throws Exception {
 
         File f = null;
         String orgName = "ed-organization";
@@ -947,11 +1066,11 @@ public class ManagementServiceIT {
         //intialize user object to be posted
         Map<String, Object> userProperties = null;
         Entity[] entity;
-        entity = new Entity[10];
+        entity = new Entity[1];
         //creates entities
-        for ( int i = 0; i < 10; i++ ) {
+        for ( int i = 0; i < 1; i++ ) {
             userProperties = new LinkedHashMap<String, Object>();
-            userProperties.put( "username", "billybob" + i );
+            userProperties.put( "username", "junkRealName");
             userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
             entity[i] = em.create( "user", userProperties );
         }
@@ -964,7 +1083,7 @@ public class ManagementServiceIT {
         ExportInfo exportInfo = new ExportInfo( payload );
         exportInfo.setOrganizationId( organization.getUuid() );
         exportInfo.setApplicationId( applicationId );
-        exportInfo.setCollection( "roles" );
+        exportInfo.setCollection( "roles" ); // <- this line determines if it is a collection back up or a application backup.
 
         UUID exportUUID = exportService.schedule( exportInfo );
         exportService.setS3Export( s3Export );
@@ -989,13 +1108,79 @@ public class ManagementServiceIT {
             org.json.simple.JSONObject entityData = ( JSONObject ) data.get( "Metadata" );
             String entityName = ( String ) entityData.get( "name" );
             assertFalse( "junkRealName".equals( entityName ) );
-            //assertNotEquals( "NotEquals","junkRealName",entityName );
         }
         f.delete();
     }
 
     @Test
-    public void testFileExportOneCollection() throws Exception {
+    public void testExportOneAppOnApplicationEndpoint() throws Exception {
+
+        File f = null;
+        String orgName = "ed-organization";
+        String appName = "testAppNotExported";
+
+        try {
+            f = new File( "exportOneApp.json" );
+            f.delete();
+        }
+        catch ( Exception e ) {
+            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
+        }
+
+        UUID appId = setup.getEmf().createApplication( orgName, appName );
+
+
+        EntityManager em = setup.getEmf().getEntityManager( appId );
+        //intialize user object to be posted
+        Map<String, Object> userProperties = null;
+        Entity[] entity;
+        entity = new Entity[1];
+        //creates entities
+        for ( int i = 0; i < 1; i++ ) {
+            userProperties = new LinkedHashMap<String, Object>();
+            userProperties.put( "username", "junkRealName");
+            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+            entity[i] = em.create( "users", userProperties );
+        }
+
+        S3Export s3Export = new MockS3ExportImpl();
+        s3Export.setFilename( "exportOneApp.json" );
+        ExportService exportService = setup.getExportService();
+        HashMap<String, Object> payload = payloadBuilder();
+
+        ExportInfo exportInfo = new ExportInfo( payload );
+        exportInfo.setOrganizationId( organization.getUuid() );
+        exportInfo.setApplicationId( applicationId );
+
+        UUID exportUUID = exportService.schedule( exportInfo );
+        exportService.setS3Export( s3Export );
+
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", exportInfo );
+        jobData.setProperty( "exportId", exportUUID );
+
+        JobExecution jobExecution = mock( JobExecution.class );
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        exportService.doExport( exportInfo, jobExecution );
+
+        JSONParser parser = new JSONParser();
+
+        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+
+        //assertEquals( 3 , a.size() );
+        for ( int i = 0; i < a.size(); i++ ) {
+            org.json.simple.JSONObject data = ( org.json.simple.JSONObject ) a.get( i );
+            org.json.simple.JSONObject entityData = ( JSONObject ) data.get( "Metadata" );
+            String entityName = ( String ) entityData.get( "name" );
+            assertFalse( "junkRealName".equals( entityName ) );
+        }
+        f.delete();
+    }
+
+    @Test
+    public void testExportOneCollection() throws Exception {
 
         File f = null;
 
@@ -1049,13 +1234,6 @@ public class ManagementServiceIT {
         org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
 
         assertEquals( 10 , a.size() );
-        for ( int i = 0; i < a.size(); i++ ) {
-            org.json.simple.JSONObject data = ( org.json.simple.JSONObject ) a.get( i );
-            org.json.simple.JSONObject entityData = ( JSONObject ) data.get( "Metadata" );
-            String entityName = ( String ) entityData.get( "name" );
-            assertFalse( "junkRealName".equals( entityName ) );
-            //assertNotEquals( "NotEquals","junkRealName",entityName );
-        }
         f.delete();
     }
 
@@ -1092,7 +1270,7 @@ public class ManagementServiceIT {
     }
 
     @Test
-    public void testExportDoExport() throws Exception {
+    public void testExportDoExportOnApplicationEndpoint() throws Exception {
 
         EntityManagerFactory emf = setup.getEmf();
         EntityManager em = emf.getEntityManager( applicationId );
@@ -1180,7 +1358,7 @@ public class ManagementServiceIT {
 
 
     @Ignore //For this test please input your s3 credentials into payload builder.
-    public void testIntegration100Entities() throws Exception {
+    public void testIntegration100EntitiesOn() throws Exception {
 
         S3Export s3Export = new S3ExportImpl();
         ExportService exportService = setup.getExportService();


[02/50] [abbrv] git commit: Removed comments from the test management services. Added error checking for the schedule method. Added comment to the resource on the error message.

Posted by sn...@apache.org.
Removed comments from the test management services.
Added error checking for the schedule method.
Added comment to the resource on the error message.


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

Branch: refs/pull/60/merge
Commit: 027a754ff6c19d25cfd45f43565b6fca8d11253d
Parents: 11b235b
Author: grey <gr...@apigee.com>
Authored: Fri Feb 28 17:04:39 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Fri Feb 28 17:04:39 2014 -0800

----------------------------------------------------------------------
 .../applications/ApplicationResource.java       |  1 +
 .../management/export/ExportServiceImpl.java    | 21 ++++++++++++++++++--
 .../cassandra/ManagementServiceIT.java          |  6 ------
 3 files changed, 20 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/027a754f/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
index 158991a..62ecf34 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
@@ -306,6 +306,7 @@ public class ApplicationResource extends AbstractContextResource {
             entity = smf.getServiceManager( applicationId ).getEntityManager().get( jobUUIDStr, Export.class );
         }
         catch ( Exception e ) {
+            //this might be due to other reasons, but gotta look up what service manager does.
             return Response.status( SC_BAD_REQUEST ).build();
         }
         //validate this user owns it

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/027a754f/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
index f5cc642..7f28bc7 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
@@ -80,12 +80,29 @@ public class ExportServiceImpl implements ExportService {
             return null;
         }
 
-        EntityManager em = emf.getEntityManager( config.getApplicationId() );
+        if ( config.getApplicationId() == null ) {
+            logger.error( "application information from export info could not be found" );
+            return null;
+        }
+
+        EntityManager em = null;
+        try {
+            em = emf.getEntityManager( config.getApplicationId() );
+        }catch (Exception e) {
+            logger.error( "application doesn't exist within the current context" );
+            return null;
+        }
 
         Export export = new Export();
 
         //update state
-        export = em.create( export );
+        try{
+            export = em.create( export );
+        }catch(Exception e) {
+            logger.error( "Export entity creation failed" );
+            return null;
+        }
+
         export.setState( Export.State.CREATED );
         em.update( export );
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/027a754f/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
index 70010d4..990c26b 100644
--- a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
@@ -998,8 +998,6 @@ public class ManagementServiceIT {
     public void testFileExportOneCollection() throws Exception {
 
         File f = null;
-//        String orgName = "ed-organization";
-//        String appName = "ed-app";
 
         try {
             f = new File( "exportOneCollection.json" );
@@ -1009,10 +1007,6 @@ public class ManagementServiceIT {
             //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
         }
 
-        //UUID appId = setup.getEmf().createApplication( orgName, appName );
-
-
-
         EntityManager em = setup.getEmf().getEntityManager( applicationId);
         em.createApplicationCollection( "baconators" );
         //intialize user object to be posted


[45/50] [abbrv] git commit: Removed ExportInfo and all mentions of it in the code.

Posted by sn...@apache.org.
Removed ExportInfo and all mentions of it in the code.


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

Branch: refs/pull/60/merge
Commit: cb606aa7bed323a499c4798390e3e3ad26a53a02
Parents: 7dd6cee
Author: grey <gr...@apigee.com>
Authored: Thu Mar 6 10:06:10 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Thu Mar 6 10:06:10 2014 -0800

----------------------------------------------------------------------
 .../applications/ApplicationResource.java       |  2 -
 .../rest/management/ManagementResourceIT.java   | 40 ++++-----
 .../apache/usergrid/management/ExportInfo.java  | 86 --------------------
 .../usergrid/management/export/ExportJob.java   | 17 ----
 .../cassandra/ManagementServiceIT.java          | 48 +----------
 5 files changed, 21 insertions(+), 172 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/cb606aa7/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
index bf44877..4bb81d5 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
@@ -227,8 +227,6 @@ public class ApplicationResource extends AbstractContextResource {
 
 //TODO: do input verification here! make sure json map has all correct values.
         try {
-            //parse the json into some useful object (the config params)
-            //ExportInfo objEx = new ExportInfo( json );
             if((properties = ( Map<String, Object> )  json.get( "properties" )) == null){
                 throw new NullPointerException("Could not find 'properties'");
             }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/cb606aa7/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
index 0c8e99a..9143ffd 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
@@ -531,26 +531,26 @@ public class ManagementResourceIT extends AbstractRestIT {
 
         assertEquals( Status.OK, status );
     }
-//
-//
-//    @Test
-//    public void exportCallSuccessful() throws Exception {
-//        Status responseStatus = Status.OK;
-//        JsonNode node = null;
-//
-//        HashMap<String, Object> payload = payloadBuilder();
-//
-//        try {
-//            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
-//                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
-//                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
-//        }
-//        catch ( UniformInterfaceException uie ) {
-//            responseStatus = uie.getResponse().getClientResponseStatus();
-//        }
-//
-//        assertEquals( Status.OK, responseStatus );
-//    }
+
+
+    @Test
+    public void exportCallSuccessful() throws Exception {
+        Status responseStatus = Status.OK;
+        JsonNode node = null;
+
+        HashMap<String, Object> payload = payloadBuilder();
+
+        try {
+            node = resource().path( "/management/orgs/test-organization/apps/test-app/collection/users/export" )
+                             .queryParam( "access_token", superAdminToken() ).accept( MediaType.APPLICATION_JSON )
+                             .type( MediaType.APPLICATION_JSON_TYPE ).post( JsonNode.class, payload );
+        }
+        catch ( UniformInterfaceException uie ) {
+            responseStatus = uie.getResponse().getClientResponseStatus();
+        }
+
+        assertEquals( Status.OK, responseStatus );
+    }
 
 //is this test still valid knowing that the sch. won't run in intelliJ?
     @Ignore

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/cb606aa7/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java b/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java
deleted file mode 100644
index fecf700..0000000
--- a/stack/services/src/main/java/org/apache/usergrid/management/ExportInfo.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.apache.usergrid.management;
-
-
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.usergrid.persistence.TypedEntity;
-
-
-/**
- * Created by ApigeeCorporation on 1/31/14.
- */
-//TODO: Documentation on this class.
-public class ExportInfo extends TypedEntity {
-
-    private String path;
-    private Map<String, Object> properties;
-    private String storage_provider;
-    private Map<String, Object> storage_info;
-    private String s3_accessId;
-    private String s3_key;
-    private String bucket_location;
-    private UUID applicationId; //TODO: include application when initializing export info
-    private String collection;  //TODO: include collection when initializing export info
-    private UUID organizationId;
-
-
-    public ExportInfo( Map<String, Object> exportData )  {
-        if(exportData == null) {
-            throw new NullPointerException(  );
-        }
-        if(exportData.get( "properties" ) == null) {
-            throw new NullPointerException(  );
-        }
-        properties = ( Map ) exportData.get( "properties" );
-        storage_provider = ( String ) properties.get( "storage_provider" );
-        storage_info = ( Map ) properties.get( "storage_info" );
-        s3_accessId = ( String ) storage_info.get( "s3_accessId" );
-        s3_key = ( String ) storage_info.get( "s3_key" );
-        bucket_location = ( String ) storage_info.get( "bucket_location" );
-    }
-
-    public String getCollection() { return collection; }
-
-    public UUID getApplicationId() {
-        return applicationId;
-    }
-
-    public UUID getOrganizationId() { return organizationId; }
-
-   // public String getPath() {
-   //     return path;
-    //}
-
-
-    //Wouldn't get exposed.
-    public Map<String, Object> getProperties() {
-        return properties;
-    }
-
-
-    public String getStorage_provider() {
-        return storage_provider;
-    }
-    //TODO: write setter methods
-
-
-    public Map<String, Object> getStorage_info() { return storage_info; }
-
-
-    //TODO: is this a security concern? How would we get rid of the key once we're done with this value?
-    public String getS3_key() { return s3_key; }
-
-
-    public String getBucket_location() { return bucket_location; }
-
-
-    public String getS3_accessId() { return s3_accessId; }
-
-
-    public void setApplicationId( UUID appId ) { applicationId = appId;}
-
-    public void setCollection ( String colName) { collection = colName; }
-
-    public void setOrganizationId ( UUID orgId ) { organizationId = orgId; }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/cb606aa7/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java
index 82bef54..ddabba3 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportJob.java
@@ -1,8 +1,6 @@
 package org.apache.usergrid.management.export;
 
 
-import java.util.UUID;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,26 +32,11 @@ public class ExportJob extends OnlyOnceJob {
     public void doJob( JobExecution jobExecution ) throws Exception {
         logger.info( "execute ExportJob {}", jobExecution );
 
-        UUID exportId = ( UUID ) jobExecution.getJobData().getProperty( EXPORT_ID );
-        //as long as I have the entity UUID I should be able to find it from anywhere right?
-
-
         JobData jobData = jobExecution.getJobData();
         if ( jobData == null ) {
             logger.error( "jobData cannot be null" );
             return;
         }
-//        Object temp = jobData.getProperty("exportInfo");
-
-
-//        if(temp.get("exportInfo") instanceof ExportInfo)
-//        {
-//            config = ( ExportInfo ) temp.get("exportInfo");
-//        }
-//        if ( config == null ) {
-//            logger.error( "Export information cannot be null" );
-//            return;
-//        }
 
         jobExecution.heartbeat();
         try {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/cb606aa7/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
index 8734dbc..4184262 100644
--- a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
@@ -768,10 +768,6 @@ public class ManagementServiceIT {
         ExportService exportService = setup.getExportService();
         HashMap<String, Object> payload = payloadBuilder();
 
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-//        exportInfo.setCollection( "users" );
         payload.put( "organizationId",organization.getUuid() );
         payload.put( "applicationId",applicationId );
         payload.put("collectionName","users");
@@ -854,9 +850,6 @@ public class ManagementServiceIT {
         ExportService exportService = setup.getExportService();
         HashMap<String, Object> payload = payloadBuilder();
 
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
         payload.put("organizationId",organization.getUuid());
         payload.put("applicationId",applicationId);
 
@@ -941,11 +934,6 @@ public class ManagementServiceIT {
         ExportService exportService = setup.getExportService();
         HashMap<String, Object> payload = payloadBuilder();
 
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-//        exportInfo.setCollection( "users" );
-
         payload.put( "organizationId",organization.getUuid() );
         payload.put( "applicationId",applicationId);
         payload.put( "collectionName","users");
@@ -993,10 +981,6 @@ public class ManagementServiceIT {
         ExportService exportService = setup.getExportService();
         HashMap<String, Object> payload = payloadBuilder();
 
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-
         payload.put( "organizationId",organization.getUuid() );
         payload.put( "applicationId",applicationId);
 
@@ -1047,11 +1031,6 @@ public class ManagementServiceIT {
         ExportService exportService = setup.getExportService();
         HashMap<String, Object> payload = payloadBuilder();
 
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-//        exportInfo.setCollection( "roles" );
-
         payload.put( "organizationId",organization.getUuid() );
         payload.put( "applicationId",applicationId);
         payload.put( "collectionName","roles");
@@ -1121,11 +1100,6 @@ public class ManagementServiceIT {
         ExportService exportService = setup.getExportService();
         HashMap<String, Object> payload = payloadBuilder();
 
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-//        exportInfo.setCollection( "roles" ); // <- this line determines if it is a collection back up or a application backup.
-
         payload.put( "organizationId",organization.getUuid() );
         payload.put( "applicationId",applicationId);
 
@@ -1192,10 +1166,6 @@ public class ManagementServiceIT {
         ExportService exportService = setup.getExportService();
         HashMap<String, Object> payload = payloadBuilder();
 
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-
         payload.put( "organizationId",organization.getUuid() );
         payload.put( "applicationId",applicationId);
 
@@ -1259,10 +1229,6 @@ public class ManagementServiceIT {
         ExportService exportService = setup.getExportService();
         HashMap<String, Object> payload = payloadBuilder();
 
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
-//        exportInfo.setCollection( "baconators" );
         payload.put( "organizationId",organization.getUuid() );
         payload.put( "applicationId",applicationId);
         payload.put( "collectionName","baconators");
@@ -1287,17 +1253,11 @@ public class ManagementServiceIT {
         assertEquals( entitiesToCreate , a.size() );
         f.delete();
     }
-//
-//
-//    //only handles the DoJob Code , different tests for DoExport
+
     @Test
     public void testExportDoJob() throws Exception {
 
         HashMap<String, Object> payload = payloadBuilder();
-
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
         payload.put( "organizationId",organization.getUuid() );
         payload.put( "applicationId",applicationId);
 
@@ -1332,9 +1292,6 @@ public class ManagementServiceIT {
 
         JobExecution jobExecution = mock( JobExecution.class );
 
-//        ExportInfo exportInfo = new ExportInfo( payload );
-//        exportInfo.setOrganizationId( organization.getUuid() );
-//        exportInfo.setApplicationId( applicationId );
         payload.put("organizationId",organization.getUuid());
         payload.put("applicationId",applicationId);
 
@@ -1419,9 +1376,6 @@ public class ManagementServiceIT {
         ExportService exportService = setup.getExportService();
         HashMap<String, Object> payload = payloadBuilder();
 
-       // ExportInfo exportInfo = new ExportInfo( payload );
-        //exportInfo.setApplicationId( applicationId );
-
         payload.put("applicationId",applicationId);
 
         EntityManager em = setup.getEmf().getEntityManager( applicationId );


[31/50] [abbrv] git commit: Removed 10 app limit

Posted by sn...@apache.org.
Removed 10 app limit

Fixed idea excludes


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

Branch: refs/pull/60/merge
Commit: 65064baf4551ccbec49c5ded9dad320c639d9a6b
Parents: 7f50cae
Author: Todd Nine <tn...@apigee.com>
Authored: Mon Mar 3 19:15:42 2014 -0700
Committer: Todd Nine <tn...@apigee.com>
Committed: Mon Mar 3 19:15:42 2014 -0700

----------------------------------------------------------------------
 stack/pom.xml                                   |  2 +-
 .../applications/ApplicationsIT.java            | 84 ++++++++++++++++++++
 .../cassandra/ManagementServiceImpl.java        | 27 ++++---
 3 files changed, 101 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/65064baf/stack/pom.xml
----------------------------------------------------------------------
diff --git a/stack/pom.xml b/stack/pom.xml
index bdf2137..1e4214c 100644
--- a/stack/pom.xml
+++ b/stack/pom.xml
@@ -1772,7 +1772,7 @@
                     <!-- git and IDE project files -->
                     <exclude>**/.git/**</exclude>
                     <exclude>**/.gitignore</exclude>
-                    <exclude>**..idea/**</exclude>
+                    <exclude>**/.idea/**</exclude>
                     <exclude>**/*.iml</exclude>
                     <exclude>**/nbactions.xml</exclude>
                     <exclude>**/nb-configuration.xml</exclude>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/65064baf/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationsIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationsIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationsIT.java
new file mode 100644
index 0000000..424c01c
--- /dev/null
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationsIT.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.usergrid.rest.management.organizations.applications;
+
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.codehaus.jackson.JsonNode;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.usergrid.rest.AbstractRestIT;
+import org.apache.usergrid.rest.TestContextSetup;
+
+import static org.junit.Assert.assertEquals;
+
+
+/**
+ *
+ *
+ */
+public class ApplicationsIT extends AbstractRestIT {
+
+    @Rule
+    public TestContextSetup context = new TestContextSetup( this );
+
+
+    @Test
+    public void test10AppLimit() {
+
+        int size = 11;
+
+        Set<String> appNames = new HashSet<String>( size );
+
+        for ( int i = 0; i < size; i++ ) {
+            final String name = i + "";
+
+            appNames.add( name );
+
+            context.withApp( name ).createAppForOrg();
+        }
+
+        //now go through and ensure each entry is present
+
+        final JsonNode apps = context.management().orgs().organization( context.getOrgName() ).apps().get();
+
+        final JsonNode data = apps.get( "data" );
+
+        final String orgName = context.getOrgName();
+
+
+        final Set<String> copy = new HashSet<String> (appNames);
+
+        for(String appName: copy){
+
+            final String mapEntryName = String.format( "%s/%s", orgName.toLowerCase(),  appName.toLowerCase());
+
+            JsonNode orgApp = data.get( mapEntryName);
+
+            if(orgApp != null){
+                appNames.remove( appName );
+            }
+
+        }
+
+        assertEquals("All elements removed", 0, appNames.size());
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/65064baf/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java
index af30325..07175ec 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java
@@ -55,6 +55,7 @@ import org.apache.usergrid.persistence.EntityManager;
 import org.apache.usergrid.persistence.EntityManagerFactory;
 import org.apache.usergrid.persistence.EntityRef;
 import org.apache.usergrid.persistence.Identifier;
+import org.apache.usergrid.persistence.PagingResultsIterator;
 import org.apache.usergrid.persistence.Results;
 import org.apache.usergrid.persistence.Results.Level;
 import org.apache.usergrid.persistence.SimpleEntityRef;
@@ -1640,24 +1641,28 @@ public class ManagementServiceImpl implements ManagementService {
         if ( organizationId == null ) {
             return null;
         }
-        BiMap<UUID, String> applications = HashBiMap.create();
-        EntityManager em = emf.getEntityManager( MANAGEMENT_APPLICATION_ID );
-        Results results = em.getConnectedEntities( organizationId, "owns", APPLICATION_INFO, Level.ALL_PROPERTIES );
-        if ( !results.isEmpty() ) {
+        final BiMap<UUID, String> applications = HashBiMap.create();
+        final EntityManager em = emf.getEntityManager( MANAGEMENT_APPLICATION_ID );
+        final Results results = em.getConnectedEntities( organizationId, "owns", APPLICATION_INFO, Level.ALL_PROPERTIES );
+        final PagingResultsIterator itr = new PagingResultsIterator( results );
 
-            String entityName = null;
 
-            for ( Entity entity : results.getEntities() ) {
-                entityName = entity.getName();
+        String entityName;
 
-                if ( entityName != null ) {
-                    entityName = entityName.toLowerCase();
-                }
+        while ( itr.hasNext() ) {
+
+            final Entity entity = ( Entity ) itr.next();
 
-                applications.put( entity.getUuid(), entityName );
+            entityName = entity.getName();
+
+            if ( entityName != null ) {
+                entityName = entityName.toLowerCase();
             }
+
+            applications.put( entity.getUuid(), entityName );
         }
 
+
         return applications;
     }
 


[48/50] [abbrv] git commit: Merge branch 'master' of https://github.com/usergrid/usergrid into Export_Persistance_Integration

Posted by sn...@apache.org.
Merge branch 'master' of https://github.com/usergrid/usergrid into Export_Persistance_Integration

# By Shawn Feldman (9) and others
# Via Dave Johnson (3) and others
* 'master' of https://github.com/usergrid/usergrid:
  Removed 10 app limit
  updating dist artifacts
  createCollection was executing its callback with an inconsistent arity
  fix module errors
  Move SimpleService test class to correct package (not sure why this was not breaking everybody's build).
  Add RAT exclusions for tmp directories and Netbeans files.
  Fixing parse errors
  Remove LGPL license header based on MODE-2081 https://github.com/ModeShape/modeshape/commit/65cd7f28b9c79d3fa11150edfe52c4ef34d280a0
  Adding licence headers
  flush out at 10000 items
  remove break
  flush list after certain amount of commits
  adding circuit breaker to stop at 10k connections
  adding comments
  implemented using iterator
  adding test for feed not returning when its over 10 items
  remove s3 dev dependency

Conflicts:
	stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java <- Resolved


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

Branch: refs/pull/60/head
Commit: a8824941262dc05bad2b93fe593b90ad0d021415
Parents: cb606aa 631f02d
Author: grey <gr...@apigee.com>
Authored: Thu Mar 6 10:38:07 2014 -0800
Committer: grey <gr...@apigee.com>
Committed: Thu Mar 6 10:38:07 2014 -0800

----------------------------------------------------------------------
 portal/config.js                                |  12 ---
 portal/index-debug.html                         |   4 +-
 portal/index.html                               |   4 +-
 portal/js/app.js                                |   4 +-
 portal/js/libs/usergrid-libs.min.js             |   2 +-
 portal/js/usergrid-dev.min.js                   |   9 +-
 portal/js/usergrid.min.js                       |   8 +-
 portal/package.json                             |   3 +-
 sdks/html5-javascript/usergrid.js               |   8 +-
 sdks/html5-javascript/usergrid.min.js           |   2 +-
 .../lib/vendor/Apigee/Usergrid/Collection.php   |   4 +-
 stack/build-tools/pom.xml                       |  16 +++
 .../src/main/resources/usergrid/checkstyle.xml  |  16 +++
 stack/config/pom.xml                            |  16 +++
 stack/config/src/main/resources/log4j.xml       |  16 +++
 .../main/resources/usergrid-default.properties  |  12 +++
 stack/config/src/test/resources/cassandra.yaml  |  14 ++-
 stack/config/src/test/resources/hazelcast.xml   |  16 +++
 stack/config/src/test/resources/log4j.xml       |  16 +++
 stack/core/pom.xml                              |  16 +++
 .../persistence/query/tree/QueryFilter.g        |  34 ++++++
 .../java/org/apache/usergrid/batch/AppArgs.java |  16 +++
 .../java/org/apache/usergrid/batch/Job.java     |  16 +++
 .../org/apache/usergrid/batch/JobExecution.java |  17 +--
 .../apache/usergrid/batch/JobExecutionImpl.java |  16 +++
 .../org/apache/usergrid/batch/JobFactory.java   |  16 +++
 .../usergrid/batch/JobNotFoundException.java    |  16 +++
 .../org/apache/usergrid/batch/JobRuntime.java   |  17 +--
 .../usergrid/batch/JobRuntimeException.java     |  16 +++
 .../usergrid/batch/UsergridJobFactory.java      |  16 +++
 .../apache/usergrid/batch/job/OnlyOnceJob.java  |  17 +--
 .../apache/usergrid/batch/job/package-info.java |   1 -
 .../usergrid/batch/repository/JobAccessor.java  |   1 -
 .../batch/repository/JobDescriptor.java         |  16 +++
 .../usergrid/batch/repository/package-info.java |   1 -
 .../org/apache/usergrid/batch/service/App.java  |  16 +++
 .../usergrid/batch/service/JobListener.java     |   1 -
 .../batch/service/JobSchedulerService.java      |   1 -
 .../usergrid/batch/service/package-info.java    |   1 -
 .../hazelcast/HazelcastLifecycleMonitor.java    |  17 +--
 .../apache/usergrid/count/AbstractBatcher.java  |  17 +--
 .../apache/usergrid/count/BatchSubmitter.java   |  17 +--
 .../java/org/apache/usergrid/count/Batcher.java |  17 +--
 .../usergrid/count/CassandraCounterStore.java   |  17 +--
 .../usergrid/count/CassandraSubmitter.java      |  17 +--
 .../apache/usergrid/count/CountProducer.java    |  17 +--
 .../CounterProcessingUnavailableException.java  |  17 +--
 .../org/apache/usergrid/count/CounterStore.java |  17 +--
 .../apache/usergrid/count/SimpleBatcher.java    |  17 +--
 .../usergrid/count/Slf4JBatchSubmitter.java     |  17 +--
 .../org/apache/usergrid/count/common/Count.java |  17 +--
 .../usergrid/count/common/CountSerDeUtils.java  |  17 +--
 .../common/CountTransportSerDeException.java    |  17 +--
 .../org/apache/usergrid/count/package-info.java |  16 +++
 .../usergrid/exception/JsonReadException.java   |  18 ++--
 .../usergrid/exception/JsonWriteException.java  |  18 ++--
 .../exception/NotImplementedException.java      |  17 +--
 .../java/org/apache/usergrid/locking/Lock.java  |  17 +--
 .../org/apache/usergrid/locking/LockHelper.java |  17 +--
 .../apache/usergrid/locking/LockManager.java    |  17 +--
 .../usergrid/locking/LockPathBuilder.java       |  17 +--
 .../locking/cassandra/HectorLockImpl.java       |  17 +--
 .../cassandra/HectorLockManagerImpl.java        |  17 +--
 .../locking/exception/UGLockException.java      |  17 +--
 .../usergrid/locking/noop/NoOpLockImpl.java     |  17 +--
 .../locking/noop/NoOpLockManagerImpl.java       |  17 +--
 .../locking/singlenode/SingleNodeLockImpl.java  |  17 +--
 .../singlenode/SingleNodeLockManagerImpl.java   |  17 +--
 .../zookeeper/ZooKeeperLockManagerImpl.java     |  17 +--
 .../locking/zookeeper/ZookeeperLockImpl.java    |  17 +--
 .../org/apache/usergrid/mq/CounterQuery.java    |  17 +--
 .../java/org/apache/usergrid/mq/Message.java    |  17 +--
 .../main/java/org/apache/usergrid/mq/Query.java |  17 +--
 .../apache/usergrid/mq/QueryFilterLexer.java    |  16 +++
 .../apache/usergrid/mq/QueryFilterParser.java   |  16 +++
 .../org/apache/usergrid/mq/QueryProcessor.java  |  16 +++
 .../main/java/org/apache/usergrid/mq/Queue.java |  17 +--
 .../org/apache/usergrid/mq/QueueManager.java    |  17 +--
 .../apache/usergrid/mq/QueueManagerFactory.java |  17 +--
 .../org/apache/usergrid/mq/QueuePosition.java   |  17 +--
 .../java/org/apache/usergrid/mq/QueueQuery.java |  17 +--
 .../org/apache/usergrid/mq/QueueResults.java    |  17 +--
 .../java/org/apache/usergrid/mq/QueueSet.java   |  17 +--
 .../usergrid/mq/cassandra/CassandraMQUtils.java |  17 +--
 .../mq/cassandra/MessageIndexUpdate.java        |  17 +--
 .../usergrid/mq/cassandra/QueueIndexUpdate.java |  17 +--
 .../mq/cassandra/QueueManagerFactoryImpl.java   |  17 +--
 .../usergrid/mq/cassandra/QueueManagerImpl.java |  17 +--
 .../apache/usergrid/mq/cassandra/QueuesCF.java  |  17 +--
 .../mq/cassandra/io/AbstractSearch.java         |  17 +--
 .../mq/cassandra/io/ConsumerTransaction.java    |  17 +--
 .../usergrid/mq/cassandra/io/EndSearch.java     |  17 +--
 .../usergrid/mq/cassandra/io/FilterSearch.java  |  17 +--
 .../mq/cassandra/io/NoTransactionSearch.java    |  17 +--
 .../usergrid/mq/cassandra/io/QueueBounds.java   |  16 +++
 .../usergrid/mq/cassandra/io/QueueSearch.java   |  17 +--
 .../usergrid/mq/cassandra/io/StartSearch.java   |  17 +--
 .../usergrid/persistence/AbstractEntity.java    |  17 +--
 .../usergrid/persistence/AggregateCounter.java  |  17 +--
 .../persistence/AggregateCounterSet.java        |  17 +--
 .../persistence/AssociatedEntityRef.java        |  17 +--
 .../usergrid/persistence/CollectionRef.java     |  17 +--
 .../persistence/ConnectedEntityRef.java         |  17 +--
 .../usergrid/persistence/ConnectionRef.java     |  17 +--
 .../usergrid/persistence/CounterQuery.java      |  17 +--
 .../usergrid/persistence/CounterResolution.java |  17 +--
 .../usergrid/persistence/CredentialsInfo.java   |  17 +--
 .../usergrid/persistence/DynamicEntity.java     |  17 +--
 .../org/apache/usergrid/persistence/Entity.java |  17 +--
 .../usergrid/persistence/EntityFactory.java     |  17 +--
 .../usergrid/persistence/EntityManager.java     |  17 +--
 .../persistence/EntityManagerFactory.java       |  17 +--
 .../persistence/EntityPropertyComparator.java   |  17 +--
 .../apache/usergrid/persistence/EntityRef.java  |  17 +--
 .../usergrid/persistence/EntityUtils.java       |  17 +--
 .../apache/usergrid/persistence/Identifier.java |  17 +--
 .../persistence/IndexBucketLocator.java         |  17 +--
 .../persistence/MultiQueryIterator.java         |  16 +++
 .../persistence/PagingResultsIterator.java      |  16 +++
 .../apache/usergrid/persistence/PathQuery.java  |  16 +++
 .../org/apache/usergrid/persistence/Query.java  |  17 +--
 .../apache/usergrid/persistence/QueryUtils.java |  16 +++
 .../usergrid/persistence/RelationManager.java   |  17 +--
 .../apache/usergrid/persistence/Results.java    |  17 +--
 .../apache/usergrid/persistence/RoleRef.java    |  17 +--
 .../org/apache/usergrid/persistence/Schema.java |  17 +--
 .../persistence/SimpleCollectionRef.java        |  17 +--
 .../usergrid/persistence/SimpleEntityRef.java   |  17 +--
 .../usergrid/persistence/SimpleRoleRef.java     |  17 +--
 .../usergrid/persistence/TypedEntity.java       |  17 +--
 .../org/apache/usergrid/persistence/Update.java |  17 +--
 .../annotations/EntityCollection.java           |  17 +--
 .../annotations/EntityDictionary.java           |  17 +--
 .../persistence/annotations/EntityProperty.java |  17 +--
 .../persistence/cassandra/ApplicationCF.java    |  17 +--
 .../usergrid/persistence/cassandra/CFEnum.java  |  17 +--
 .../cassandra/CassandraPersistenceUtils.java    |  17 +--
 .../persistence/cassandra/CassandraService.java |  17 +--
 .../cassandra/ConnectedEntityRefImpl.java       |  17 +--
 .../cassandra/ConnectionRefImpl.java            |  17 +--
 .../persistence/cassandra/CounterUtils.java     |  17 +--
 .../persistence/cassandra/CursorCache.java      |  16 +++
 .../cassandra/EntityManagerFactoryImpl.java     |  17 +--
 .../cassandra/EntityManagerImpl.java            |  17 +--
 .../cassandra/EntityValueSerializer.java        |  17 +--
 .../persistence/cassandra/GeoIndexManager.java  |  17 +--
 .../persistence/cassandra/IndexUpdate.java      |  17 +--
 .../persistence/cassandra/QueryProcessor.java   |  17 +--
 .../cassandra/RelationManagerImpl.java          |  17 +--
 .../usergrid/persistence/cassandra/Setup.java   |  17 +--
 .../cassandra/SimpleIndexBucketLocatorImpl.java |  17 +--
 .../cassandra/index/ConnectedIndexScanner.java  |  17 +--
 .../cassandra/index/IndexBucketScanner.java     |  17 +--
 .../index/IndexMultiBucketSetLoader.java        |  17 +--
 .../cassandra/index/IndexScanner.java           |  17 +--
 .../cassandra/index/NoOpIndexScanner.java       |  17 +--
 .../cassandra/util/Slf4jTraceTagReporter.java   |  16 +++
 .../cassandra/util/TaggedOpTimer.java           |  16 +++
 .../persistence/cassandra/util/TimedOpTag.java  |  16 +++
 .../cassandra/util/TraceParticipant.java        |  16 +++
 .../persistence/cassandra/util/TraceTag.java    |  16 +++
 .../cassandra/util/TraceTagAspect.java          |  16 +++
 .../cassandra/util/TraceTagManager.java         |  16 +++
 .../cassandra/util/TraceTagReporter.java        |  16 +++
 .../usergrid/persistence/entities/Activity.java |  17 +--
 .../persistence/entities/Application.java       |  17 +--
 .../usergrid/persistence/entities/Asset.java    |  17 +--
 .../usergrid/persistence/entities/Device.java   |  17 +--
 .../usergrid/persistence/entities/Event.java    |  17 +--
 .../usergrid/persistence/entities/Folder.java   |  17 +--
 .../usergrid/persistence/entities/Group.java    |  17 +--
 .../usergrid/persistence/entities/JobData.java  |  17 +--
 .../usergrid/persistence/entities/JobStat.java  |  17 +--
 .../usergrid/persistence/entities/Message.java  |  17 +--
 .../usergrid/persistence/entities/Role.java     |  17 +--
 .../usergrid/persistence/entities/User.java     |  17 +--
 .../ApplicationAlreadyExistsException.java      |  17 +--
 .../DuplicateUniquePropertyExistsException.java |  17 +--
 .../exceptions/EntityNotFoundException.java     |  17 +--
 .../exceptions/LockingException.java            |  18 ++--
 .../exceptions/NoFullTextIndexException.java    |  17 +--
 .../exceptions/NoIndexException.java            |  17 +--
 .../exceptions/PersistenceException.java        |  17 +--
 .../PropertyTypeConversionException.java        |  17 +--
 .../exceptions/QueryIterationException.java     |  16 +++
 .../exceptions/QueryParseException.java         |  17 +--
 .../exceptions/QueryTokenException.java         |  17 +--
 .../persistence/exceptions/QueueException.java  |  18 ++--
 .../RequiredPropertyNotFoundException.java      |  17 +--
 .../TransactionNotFoundException.java           |  17 +--
 .../UnexpectedEntityTypeException.java          |  17 +--
 .../persistence/geo/CollectionGeoSearch.java    |  16 +++
 .../persistence/geo/ConnectionGeoSearch.java    |  16 +++
 .../persistence/geo/EntityLocationRef.java      |  16 +++
 .../EntityLocationRefDistanceComparator.java    |  17 +--
 .../persistence/geo/GeoIndexSearcher.java       |  16 +++
 .../persistence/geo/GeocellManager.java         |  16 +++
 .../usergrid/persistence/geo/GeocellUtils.java  |  24 +++--
 .../geo/comparator/DoubleTupleComparator.java   |  16 +++
 .../persistence/geo/model/BoundingBox.java      |  27 ++---
 .../persistence/geo/model/CostFunction.java     |  27 ++---
 .../geo/model/DefaultCostFunction.java          |  27 ++---
 .../usergrid/persistence/geo/model/Point.java   |  27 ++---
 .../usergrid/persistence/geo/model/Tuple.java   |  16 +++
 .../usergrid/persistence/query/ir/AllNode.java  |  16 +++
 .../usergrid/persistence/query/ir/AndNode.java  |  17 +--
 .../persistence/query/ir/BooleanNode.java       |  17 +--
 .../query/ir/EmailIdentifierNode.java           |  16 +++
 .../query/ir/NameIdentifierNode.java            |  16 +++
 .../persistence/query/ir/NodeVisitor.java       |  17 +--
 .../usergrid/persistence/query/ir/NotNode.java  |  17 +--
 .../usergrid/persistence/query/ir/OrNode.java   |  17 +--
 .../persistence/query/ir/OrderByNode.java       |  17 +--
 .../persistence/query/ir/QueryNode.java         |  17 +--
 .../persistence/query/ir/QuerySlice.java        |  17 +--
 .../persistence/query/ir/SearchVisitor.java     |  16 +++
 .../persistence/query/ir/SliceNode.java         |  17 +--
 .../query/ir/UuidIdentifierNode.java            |  16 +++
 .../persistence/query/ir/WithinNode.java        |  17 +--
 .../query/ir/result/AbstractScanColumn.java     |  16 +++
 .../result/CollectionResultsLoaderFactory.java  |  16 +++
 .../ir/result/ConnectionIndexSliceParser.java   |  17 +--
 .../query/ir/result/ConnectionRefLoader.java    |  16 +++
 .../result/ConnectionResultsLoaderFactory.java  |  16 +++
 .../ir/result/ConnectionTypesIterator.java      |  16 +++
 .../query/ir/result/EmptyIterator.java          |  16 +++
 .../query/ir/result/EntityRefLoader.java        |  17 +--
 .../query/ir/result/EntityResultsLoader.java    |  17 +--
 .../query/ir/result/GeoIterator.java            |  17 +--
 .../persistence/query/ir/result/IDLoader.java   |  16 +++
 .../query/ir/result/IntersectionIterator.java   |  17 +--
 .../query/ir/result/MergeIterator.java          |  17 +--
 .../query/ir/result/MultiIterator.java          |  17 +--
 .../query/ir/result/OrderByIterator.java        |  17 +--
 .../query/ir/result/ResultIterator.java         |  17 +--
 .../query/ir/result/ResultsLoader.java          |  17 +--
 .../query/ir/result/ResultsLoaderFactory.java   |  16 +++
 .../persistence/query/ir/result/ScanColumn.java |  16 +++
 .../query/ir/result/ScanColumnTransformer.java  |  16 +++
 .../ir/result/SecondaryIndexSliceParser.java    |  17 +--
 .../query/ir/result/SliceIterator.java          |  17 +--
 .../query/ir/result/SliceParser.java            |  17 +--
 .../query/ir/result/StaticIdIterator.java       |  16 +++
 .../query/ir/result/SubtractionIterator.java    |  17 +--
 .../query/ir/result/UUIDIndexSliceParser.java   |  17 +--
 .../query/ir/result/UnionIterator.java          |  17 +--
 .../persistence/query/tree/AndOperand.java      |  17 +--
 .../persistence/query/tree/BooleanLiteral.java  |  17 +--
 .../persistence/query/tree/BooleanOperand.java  |  17 +--
 .../persistence/query/tree/ContainsOperand.java |  17 +--
 .../query/tree/ContainsProperty.java            |  17 +--
 .../usergrid/persistence/query/tree/Equal.java  |  17 +--
 .../persistence/query/tree/EqualityOperand.java |  17 +--
 .../persistence/query/tree/FloatLiteral.java    |  17 +--
 .../persistence/query/tree/GreaterThan.java     |  17 +--
 .../query/tree/GreaterThanEqual.java            |  17 +--
 .../persistence/query/tree/LessThan.java        |  17 +--
 .../persistence/query/tree/LessThanEqual.java   |  17 +--
 .../persistence/query/tree/Literal.java         |  17 +--
 .../persistence/query/tree/LiteralFactory.java  |  17 +--
 .../persistence/query/tree/LongLiteral.java     |  17 +--
 .../persistence/query/tree/NotOperand.java      |  17 +--
 .../persistence/query/tree/NumericLiteral.java  |  17 +--
 .../persistence/query/tree/Operand.java         |  17 +--
 .../persistence/query/tree/OrOperand.java       |  17 +--
 .../persistence/query/tree/Property.java        |  17 +--
 .../persistence/query/tree/QueryVisitor.java    |  17 +--
 .../persistence/query/tree/StringLiteral.java   |  17 +--
 .../persistence/query/tree/UUIDLiteral.java     |  17 +--
 .../persistence/query/tree/WithinOperand.java   |  17 +--
 .../persistence/query/tree/WithinProperty.java  |  17 +--
 .../persistence/schema/CollectionInfo.java      |  17 +--
 .../persistence/schema/DictionaryInfo.java      |  17 +--
 .../usergrid/persistence/schema/EntityInfo.java |  17 +--
 .../persistence/schema/PropertyInfo.java        |  17 +--
 .../usergrid/system/UsergridSystemMonitor.java  |  16 +++
 .../org/apache/usergrid/utils/AESUtils.java     |   1 -
 .../org/apache/usergrid/utils/DateUtils.java    |  15 ---
 .../org/apache/usergrid/utils/Inflector.java    |  25 -----
 .../org/apache/usergrid/utils/package-info.java |   1 -
 .../main/resources/usergrid-core-context.xml    |  16 +++
 .../resources/usergrid-scheduler-context.xml    |  17 +++
 stack/core/src/site/apt/format.apt              |  17 ++-
 stack/core/src/site/apt/index.apt               |  16 +++
 stack/core/src/site/fml/faq.fml                 |  17 +++
 stack/core/src/site/site.xml                    |  16 +++
 stack/core/src/site/xdoc/xdoc.xml               |  18 +++-
 stack/core/src/test/java/io/baas/Simple.java    |  19 ----
 .../org/apache/usergrid/AbstractCoreIT.java     |  17 +--
 .../java/org/apache/usergrid/Application.java   |  16 +++
 .../apache/usergrid/ConcurrentCoreITSuite.java  |  17 +--
 .../usergrid/ConcurrentCoreIteratorITSuite.java |  16 +++
 .../usergrid/ConcurrentCoreTestSuite.java       |  16 +++
 .../org/apache/usergrid/CoreApplication.java    |  17 +--
 .../java/org/apache/usergrid/CoreITSetup.java   |  17 +--
 .../org/apache/usergrid/CoreITSetupImpl.java    |  16 +++
 .../java/org/apache/usergrid/CoreITSuite.java   |  16 +++
 .../java/org/apache/usergrid/CoreTestSuite.java |  17 +--
 .../org/apache/usergrid/batch/AppArgsTest.java  |  16 +++
 .../batch/BulkJobExecutionUnitTest.java         |  16 +++
 .../apache/usergrid/batch/BulkTestUtils.java    |  16 +++
 .../batch/ConcurrentSchedulerITSuite.java       |  16 +++
 .../batch/ConcurrentSchedulerTestSuite.java     |  16 +++
 .../apache/usergrid/batch/SchedulerITSuite.java |  16 +++
 .../usergrid/batch/SchedulerTestSuite.java      |  16 +++
 .../usergrid/batch/UsergridJobFactoryTest.java  |  16 +++
 .../usergrid/batch/job/TestJobListener.java     |   1 -
 .../usergrid/batch/job/TestJobListenerTest.java |   1 -
 .../apache/usergrid/batch/job/package-info.java |   1 -
 .../clustering/hazelcast/HazelcastTest.java     |  17 +--
 .../count/BatchCountParallelismTest.java        |  16 +++
 .../usergrid/count/SimpleBatcherTest.java       |  17 +--
 .../count/common/CountSerDeUtilsTest.java       |  17 +--
 .../apache/usergrid/count/common/CountTest.java |  17 +--
 .../locking/cassandra/HectorLockManagerIT.java  |  17 +--
 .../SingleNodeLockTestSingleNode.java           |  17 +--
 .../zookeeper/AbstractZooKeeperTest.java        |  17 +--
 .../usergrid/locking/zookeeper/ZooPut.java      |  17 +--
 .../zookeeper/ZookeeperLockManagerTest.java     |  17 +--
 .../java/org/apache/usergrid/mq/MessagesIT.java |  17 +--
 .../org/apache/usergrid/mq/QueuePathsTest.java  |  17 +--
 .../usergrid/persistence/CollectionIT.java      |  17 +--
 .../usergrid/persistence/CoreSchemaManager.java |  16 +++
 .../apache/usergrid/persistence/CounterIT.java  |  17 +--
 .../persistence/EntityConnectionsIT.java        |  17 +--
 .../persistence/EntityDictionaryIT.java         |  17 +--
 .../usergrid/persistence/EntityManagerIT.java   |  17 +--
 .../EntityPropertyComparatorTest.java           |  16 +++
 .../apache/usergrid/persistence/EntityTest.java |  17 +--
 .../org/apache/usergrid/persistence/GeoIT.java  |  17 +--
 .../apache/usergrid/persistence/IndexIT.java    |  17 +--
 .../usergrid/persistence/PathQueryIT.java       |  16 +++
 .../usergrid/persistence/PermissionsIT.java     |  17 +--
 .../apache/usergrid/persistence/QueryTest.java  |  17 +--
 .../usergrid/persistence/QueryUtilsTest.java    |  16 +++
 .../apache/usergrid/persistence/SchemaTest.java |  21 ++--
 .../apache/usergrid/persistence/UtilsTest.java  |  17 +--
 .../cassandra/EntityManagerFactoryImplIT.java   |  17 +--
 .../cassandra/QueryProcessorTest.java           |  17 +--
 .../SimpleIndexBucketLocatorImplTest.java       |  17 +--
 .../cassandra/util/TraceTagUnitTest.java        |  16 +++
 .../persistence/entities/SampleEntity.java      |  17 +--
 ...EntityLocationRefDistanceComparatorTest.java |  17 +--
 .../query/AbstractIteratingQueryIT.java         |  17 +--
 .../persistence/query/AllInCollectionIT.java    |  17 +--
 .../persistence/query/AllInConnectionIT.java    |  17 +--
 .../query/AllInConnectionNoTypeIT.java          |  17 +--
 .../query/IntersectionUnionPagingIT.java        |  17 +--
 .../query/MultiOrderByCollectionIT.java         |  17 +--
 .../MultiOrderByComplexUnionCollectionIT.java   |  17 +--
 .../MultiOrderByComplexUnionConnectionIT.java   |  17 +--
 .../query/MultiOrderByConnectionIT.java         |  17 +--
 .../query/NotOrderByCollectionIT.java           |  17 +--
 .../query/NotOrderByConnectionIT.java           |  17 +--
 ...gleOrderByBoundRangeScanAscCollectionIT.java |  17 +--
 ...gleOrderByBoundRangeScanAscConnectionIT.java |  17 +--
 ...leOrderByBoundRangeScanDescCollectionIT.java |  17 +--
 ...leOrderByBoundRangeScanDescConnectionIT.java |  17 +--
 ...eOrderByComplexIntersectionCollectionIT.java |  17 +--
 ...eOrderByComplexIntersectionConnectionIT.java |  17 +--
 .../SingleOrderByComplexUnionCollectionIT.java  |  17 +--
 .../SingleOrderByComplexUnionConnectionIT.java  |  17 +--
 .../SingleOrderByIntersectionCollectionIT.java  |  17 +--
 .../SingleOrderByIntersectionConnectionIT.java  |  17 +--
 .../SingleOrderByLessThanLimitCollectionIT.java |  17 +--
 .../SingleOrderByLessThanLimitConnectionIT.java |  17 +--
 .../SingleOrderByMaxLimitCollectionIT.java      |  17 +--
 .../SingleOrderByMaxLimitConnectionIT.java      |  17 +--
 ...SingleOrderByNoIntersectionCollectionIT.java |  17 +--
 ...SingleOrderByNoIntersectionConnectionIT.java |  17 +--
 .../query/SingleOrderByNotCollectionIT.java     |  17 +--
 .../query/SingleOrderByNotConnectionIT.java     |  17 +--
 ...OrderBySameRangeScanGreaterCollectionIT.java |  17 +--
 ...OrderBySameRangeScanGreaterConnectionIT.java |  17 +--
 ...meRangeScanGreaterThanEqualCollectionIT.java |  17 +--
 ...gleOrderBySameRangeScanLessCollectionIT.java |  17 +--
 ...gleOrderBySameRangeScanLessConnectionIT.java |  17 +--
 ...ySameRangeScanLessThanEqualCollectionIT.java |  17 +--
 ...ySameRangeScanLessThanEqualConnectionIT.java |  17 +--
 .../query/ir/result/AbstractScanColumnTest.java |  16 +++
 .../query/ir/result/InOrderIterator.java        |  16 +++
 .../ir/result/IntersectionIteratorTest.java     |  17 +--
 .../query/ir/result/IteratorHelper.java         |  16 +++
 .../ir/result/SubtractionIteratorTest.java      |  17 +--
 .../query/ir/result/UnionIteratorTest.java      |  17 +--
 .../persistence/query/tree/GrammarTreeTest.java |  17 +--
 .../persistence/query/tree/LongLiteralTest.java |  17 +--
 .../query/tree/StringLiteralTest.java           |  17 +--
 .../system/UsergridSystemMonitorIT.java         |  16 +++
 .../apache/usergrid/utils/TimeUtilsTest.java    |   1 -
 .../org/apache/usergrid/utils/package-info.java |   1 -
 .../core/src/test/java/org/usergrid/Simple.java |  36 +++++++
 stack/launcher/launch                           |  18 +++-
 stack/launcher/pom.xml                          |  16 +++
 .../java/org/apache/usergrid/launcher/App.java  |  17 +--
 .../apache/usergrid/launcher/AppleUtils.java    |  17 +--
 .../org/apache/usergrid/launcher/JarMain.java   |   1 -
 .../apache/usergrid/launcher/LauncherFrame.java |  17 +--
 .../usergrid/launcher/LogViewerFrame.java       |  17 +--
 .../apache/usergrid/launcher/package-info.java  |   1 -
 .../launcher/src/main/resources/cassandra.yaml  |  14 ++-
 .../resources/usergrid-standalone-context.xml   |  16 +++
 .../resources/usergrid-standalone.properties    |  23 ++++
 stack/mongo-emulator/pom.xml                    |  16 +++
 .../usergrid/mongo/MongoChannelHandler.java     |  17 +--
 .../usergrid/mongo/MongoMessageDecoder.java     |  17 +--
 .../usergrid/mongo/MongoMessageEncoder.java     |  17 +--
 .../org/apache/usergrid/mongo/MongoQuery.java   |  17 +--
 .../org/apache/usergrid/mongo/MongoServer.java  |  17 +--
 .../mongo/MongoServerPipelineFactory.java       |  17 +--
 .../usergrid/mongo/commands/Buildinfo.java      |  17 +--
 .../usergrid/mongo/commands/Collstats.java      |  17 +--
 .../apache/usergrid/mongo/commands/Count.java   |  17 +--
 .../apache/usergrid/mongo/commands/Dbstats.java |  17 +--
 .../usergrid/mongo/commands/Getlasterror.java   |  17 +--
 .../usergrid/mongo/commands/ListDatabases.java  |  17 +--
 .../usergrid/mongo/commands/MongoCommand.java   |  17 +--
 .../mongo/commands/ReplSetGetStatus.java        |  17 +--
 .../usergrid/mongo/commands/ServerStatus.java   |  17 +--
 .../usergrid/mongo/commands/Whatsmyuri.java     |  17 +--
 .../apache/usergrid/mongo/protocol/Message.java |  17 +--
 .../apache/usergrid/mongo/protocol/OpCrud.java  |  17 +--
 .../usergrid/mongo/protocol/OpDelete.java       |  17 +--
 .../usergrid/mongo/protocol/OpGetMore.java      |  17 +--
 .../usergrid/mongo/protocol/OpInsert.java       |  17 +--
 .../usergrid/mongo/protocol/OpKillCursors.java  |  17 +--
 .../apache/usergrid/mongo/protocol/OpMsg.java   |  17 +--
 .../apache/usergrid/mongo/protocol/OpQuery.java |  17 +--
 .../apache/usergrid/mongo/protocol/OpReply.java |  17 +--
 .../usergrid/mongo/protocol/OpUpdate.java       |  17 +--
 .../usergrid/mongo/query/MongoQueryParser.java  |  17 +--
 .../mongo/testproxy/MongoMessageFrame.java      |  17 +--
 .../testproxy/MongoProxyInboundHandler.java     |  17 +--
 .../testproxy/MongoProxyPipelineFactory.java    |  17 +--
 .../mongo/testproxy/MongoProxyServer.java       |  17 +--
 .../testproxy/MongoProxyServerHandler.java      |  17 +--
 .../apache/usergrid/mongo/utils/BSONUtils.java  |  17 +--
 .../usergrid/mongo/AbstractMongoTest.java       |  17 +--
 .../apache/usergrid/mongo/BasicMongoTest.java   |  16 +++
 .../usergrid/mongo/DatabaseInitializer.java     |  17 +--
 .../apache/usergrid/mongo/MongoQueryTest.java   |  16 +++
 stack/pom.xml                                   |  67 ++++++++++++
 stack/query-validator/pom.xml                   |  16 +++
 .../query/validator/ApiServerRunner.java        |  17 ++-
 .../validator/DefaultQueryResultsMatcher.java   |  17 ++-
 .../usergrid/query/validator/QueryEntity.java   |  17 ++-
 .../usergrid/query/validator/QueryRequest.java  |  17 ++-
 .../usergrid/query/validator/QueryResponse.java |  17 ++-
 .../query/validator/QueryResultsMatcher.java    |  17 ++-
 .../usergrid/query/validator/QueryRunner.java   |  17 ++-
 .../validator/QueryValidationConfiguration.java |  17 ++-
 .../query/validator/QueryValidator.java         |  17 ++-
 .../usergrid/query/validator/SqliteRunner.java  |  17 ++-
 .../usergrid-query-validator-context.xml        |  16 +++
 .../query/validator/AbstractQueryIT.java        |  17 ++-
 .../usergrid/query/validator/QueryITSuite.java  |  17 ++-
 .../query/validator/users/UserQueryIT.java      |  17 ++-
 .../src/test/resources/project.properties       |  16 +++
 .../resources/usergrid-custom-test.properties   |  16 +++
 .../test/resources/usergrid-test-context.xml    |  16 +++
 stack/rest/pom.xml                              |  17 +++
 .../usergrid/rest/AbstractContextResource.java  |  17 +--
 .../org/apache/usergrid/rest/ApiResponse.java   |  17 +--
 .../rest/JacksonCustomMapperProvider.java       |  17 +--
 .../org/apache/usergrid/rest/RootResource.java  |  17 +--
 .../rest/ServerEnvironmentProperties.java       |  16 +++
 .../apache/usergrid/rest/SwaggerServlet.java    |  17 +--
 .../apache/usergrid/rest/SystemResource.java    |  17 +--
 .../usergrid/rest/TextToJsonSwapWriter.java     |  16 +++
 .../rest/applications/ApplicationResource.java  |  17 +--
 .../rest/applications/AuthResource.java         |  17 +--
 .../rest/applications/ServiceResource.java      |  17 +--
 .../applications/assets/AssetsResource.java     |  16 +++
 .../applications/events/EventsResource.java     |  17 +--
 .../rest/applications/queues/QueueResource.java |  17 +--
 .../queues/QueueSubscriberResource.java         |  17 +--
 .../queues/QueueSubscriptionResource.java       |  17 +--
 .../queues/QueueTransactionsResource.java       |  17 +--
 .../users/AbstractUserExtensionResource.java    |  17 +--
 .../rest/applications/users/UserResource.java   |  17 +--
 .../rest/applications/users/UsersResource.java  |  17 +--
 .../exceptions/AbstractExceptionMapper.java     |  17 +--
 .../usergrid/rest/exceptions/AuthErrorInfo.java |  17 +--
 .../AuthorizationExceptionMapper.java           |  17 +--
 ...cateUniquePropertyExistsExceptionMapper.java |  17 +--
 .../EntityNotFoundExceptionMapper.java          |  17 +--
 ...orbiddenServiceOperationExceptionMapper.java |  17 +--
 .../IllegalArgumentExceptionMapper.java         |  17 +--
 .../exceptions/JsonReadExceptionMapper.java     |  12 +--
 .../exceptions/JsonWriteExceptionMapper.java    |  12 +--
 .../exceptions/ManagementExceptionMapper.java   |  17 +--
 .../usergrid/rest/exceptions/NoOpException.java |  17 +--
 .../rest/exceptions/NoOpExceptionMapper.java    |  17 +--
 .../NotImplementedExceptionMapper.java          |  17 +--
 .../exceptions/OAuthProblemExceptionMapper.java |  17 +--
 ...rganizationApplicationNotFoundException.java |  16 +++
 ...ationApplicationNotFoundExceptionMapper.java |  16 +++
 .../exceptions/PersistenceExceptionMapper.java  |  17 +--
 .../exceptions/QueryParseExceptionMapper.java   |  17 +--
 .../exceptions/QueryTokenExceptionMapper.java   |  17 +--
 .../RecentlyUsedPasswordExceptionMapper.java    |  16 +++
 .../rest/exceptions/RedirectionException.java   |  16 +++
 .../exceptions/RedirectionExceptionMapper.java  |  17 +--
 ...RequiredPropertyNotFoundExceptionMapper.java |  17 +--
 .../rest/exceptions/SecurityException.java      |  17 +--
 .../exceptions/SecurityExceptionMapper.java     |  17 +--
 .../rest/exceptions/ServiceExceptionMapper.java |  17 +--
 .../ServiceResourceNotFoundExceptionMapper.java |  17 +--
 .../rest/exceptions/ThrowableMapper.java        |  17 +--
 .../TransactionNotFoundExceptionMapper.java     |  17 +--
 .../rest/filters/ContentTypeFilter.java         |  17 +--
 .../rest/filters/JSONPCallbackFilter.java       |  17 +--
 .../usergrid/rest/filters/MeteringFilter.java   |  17 +--
 .../usergrid/rest/filters/TracingFilter.java    |  16 +++
 .../rest/management/ManagementResource.java     |  17 +--
 .../management/metrics/MetricsResource.java     |  16 +++
 .../organizations/OrganizationResource.java     |  17 +--
 .../organizations/OrganizationsResource.java    |  17 +--
 .../applications/ApplicationResource.java       |  17 +--
 .../applications/ApplicationsResource.java      |  17 +--
 .../organizations/users/UsersResource.java      |  17 +--
 .../rest/management/users/UserResource.java     |  17 +--
 .../rest/management/users/UsersResource.java    |  17 +--
 .../organizations/OrganizationsResource.java    |  17 +--
 .../organizations/OrganizationResource.java     |  16 +++
 .../rest/security/CrossOriginRequestFilter.java |  17 +--
 .../security/SecuredResourceFilterFactory.java  |  17 +--
 .../annotations/RequireAdminUserAccess.java     |  17 +--
 .../annotations/RequireApplicationAccess.java   |  17 +--
 .../annotations/RequireOrganizationAccess.java  |  17 +--
 .../annotations/RequireSystemAccess.java        |  17 +--
 .../security/shiro/RestSecurityManager.java     |  17 +--
 .../ShiroAuthenticationExceptionMapper.java     |  17 +--
 .../shiro/filters/BasicAuthSecurityFilter.java  |  17 +--
 .../ClientCredentialsSecurityFilter.java        |  17 +--
 .../OAuth2AccessTokenSecurityFilter.java        |  17 +--
 .../security/shiro/filters/SecurityFilter.java  |  17 +--
 .../session/HttpRequestSessionManager.java      |  17 +--
 .../session/HttpServletRequestSession.java      |  17 +--
 .../usergrid/rest/test/PropertiesResource.java  |  11 +-
 .../apache/usergrid/rest/utils/CORSUtils.java   |  17 +--
 .../apache/usergrid/rest/utils/JSONPUtils.java  |  17 +--
 .../usergrid/rest/utils/PathingUtils.java       |  16 +++
 .../main/resources/swagger/applications.json    |  16 +++
 .../src/main/resources/swagger/management.json  |  16 +++
 .../src/main/resources/swagger/resources.json   |  16 +++
 .../main/resources/usergrid-rest-context.xml    |  16 +++
 .../resources/usergrid-rest-deploy-context.xml  |  16 +++
 stack/rest/src/main/webapp/WEB-INF/c.tld        |  17 ++-
 .../apache/usergrid/rest/TestResource/error.jsp |  16 +++
 .../apache/usergrid/rest/TestResource/test.jsp  |  16 +++
 .../ApplicationResource/authorize_form.jsp      |  16 +++
 .../applications/ApplicationResource/error.jsp  |  16 +++
 .../users/UserResource/activate.jsp             |  16 +++
 .../applications/users/UserResource/confirm.jsp |  16 +++
 .../applications/users/UserResource/error.jsp   |  16 +++
 .../users/UserResource/resetpw_email_form.jsp   |  16 +++
 .../UserResource/resetpw_email_success.jsp      |  16 +++
 .../users/UserResource/resetpw_set_form.jsp     |  16 +++
 .../users/UserResource/resetpw_set_success.jsp  |  16 +++
 .../applications/users/UsersResource/error.jsp  |  16 +++
 .../users/UsersResource/resetpw_email_form.jsp  |  16 +++
 .../UsersResource/resetpw_email_success.jsp     |  16 +++
 .../ManagementResource/authorize_form.jsp       |  16 +++
 .../management/ManagementResource/error.jsp     |  16 +++
 .../OrganizationResource/activate.jsp           |  16 +++
 .../OrganizationResource/confirm.jsp            |  16 +++
 .../OrganizationResource/error.jsp              |  16 +++
 .../management/users/UserResource/activate.jsp  |  16 +++
 .../management/users/UserResource/confirm.jsp   |  16 +++
 .../management/users/UserResource/error.jsp     |  16 +++
 .../users/UserResource/resetpw_email_form.jsp   |  16 +++
 .../UserResource/resetpw_email_success.jsp      |  16 +++
 .../users/UserResource/resetpw_set_form.jsp     |  16 +++
 .../users/UserResource/resetpw_set_success.jsp  |  16 +++
 .../management/users/UsersResource/error.jsp    |  16 +++
 .../users/UsersResource/resetpw_email_form.jsp  |  16 +++
 .../UsersResource/resetpw_email_success.jsp     |  16 +++
 stack/rest/src/main/webapp/WEB-INF/web.xml      |  16 +++
 stack/rest/src/main/webapp/css/styles.css       |  17 ++-
 .../apache/usergrid/rest/AbstractRestIT.java    |  17 +--
 .../java/org/apache/usergrid/rest/BasicIT.java  |  17 +--
 .../usergrid/rest/ConcurrentRestITSuite.java    |  16 +++
 .../usergrid/rest/DatabaseInitializer.java      |  17 +--
 .../java/org/apache/usergrid/rest/ITSetup.java  |  26 ++---
 .../org/apache/usergrid/rest/RestITSuite.java   |  26 ++---
 .../apache/usergrid/rest/TestContextSetup.java  |  16 +++
 .../apache/usergrid/rest/TomcatResource.java    |  16 +++
 .../ApplicationRequestCounterIT.java            |  24 +++--
 .../applications/ApplicationResourceIT.java     |  16 +--
 .../rest/applications/DevicesResourceIT.java    |  16 +++
 .../applications/assets/AssetResourceIT.java    |  16 +++
 .../collection/BadGrammarQueryTest.java         |  16 +++
 .../collection/BrowserCompatibilityTest.java    |  17 +--
 .../collection/PagingResourceIT.java            |  17 +--
 .../collection/activities/AndOrQueryTest.java   |  16 +++
 .../collection/activities/OrderByTest.java      |  16 +++
 .../activities/PagingEntitiesTest.java          |  16 +++
 .../collection/activities/PutTest.java          |  16 +++
 .../collection/groups/GeoPagingTest.java        |  26 ++---
 .../collection/groups/UpdateGroupIT.java        |  26 ++---
 .../applications/events/EventsResourceIT.java   |  16 +++
 .../queues/AbstractQueueResourceIT.java         |  16 +++
 .../queues/QueueResourceLong1IT.java            |  16 +++
 .../queues/QueueResourceLong2IT.java            |  16 +++
 .../queues/QueueResourceLong3IT.java            |  16 +++
 .../queues/QueueResourceShortIT.java            |  16 +++
 .../applications/users/ActivityResourceIT.java  |  17 +--
 .../users/CollectionsResourceIT.java            |  17 +--
 .../users/ConnectionResourceTest.java           |  16 +++
 .../applications/users/GroupResourceIT.java     |  17 +--
 .../applications/users/OwnershipResourceIT.java |  17 +--
 .../users/PermissionsResourceIT.java            |  17 +--
 .../applications/users/RetrieveUsersTest.java   |  16 +++
 .../rest/applications/users/UserResourceIT.java |  17 +--
 .../users/extensions/TestResource.java          |  17 +--
 .../rest/applications/utils/TestUtils.java      |  17 +--
 .../rest/applications/utils/UserRepo.java       |  16 +++
 .../rest/filters/ContentTypeResourceIT.java     |  17 +--
 .../rest/management/ManagementResourceIT.java   | 108 +++++++++++++++++--
 .../rest/management/RegistrationIT.java         |  25 +++--
 .../organizations/AdminEmailEncodingIT.java     |  16 +++
 .../organizations/OrganizationResourceIT.java   |  16 +++
 .../organizations/OrganizationsResourceIT.java  |  16 +++
 .../applications/ApplicationsIT.java            |  84 +++++++++++++++
 .../rest/management/users/MUUserResourceIT.java |  25 +++--
 .../UsersOrganizationsResourceIT.java           |  16 +++
 .../rest/test/PropertiesResourceIT.java         |  12 +--
 .../rest/test/resource/CollectionResource.java  |  17 +--
 .../usergrid/rest/test/resource/Connection.java |  17 +--
 .../rest/test/resource/CustomCollection.java    |  17 +--
 .../rest/test/resource/EntityResource.java      |  17 +--
 .../apache/usergrid/rest/test/resource/Me.java  |  17 +--
 .../rest/test/resource/NamedResource.java       |  17 +--
 .../rest/test/resource/ResultsParser.java       |  17 +--
 .../rest/test/resource/RootResource.java        |  17 +--
 .../rest/test/resource/SetResource.java         |  17 +--
 .../rest/test/resource/TestContext.java         |  26 ++---
 .../rest/test/resource/ValueResource.java       |  17 +--
 .../rest/test/resource/app/Application.java     |  17 +--
 .../usergrid/rest/test/resource/app/Device.java |  17 +--
 .../usergrid/rest/test/resource/app/User.java   |  17 +--
 .../rest/test/resource/app/UsersCollection.java |  17 +--
 .../resource/app/queue/DevicesCollection.java   |  17 +--
 .../rest/test/resource/app/queue/Queue.java     |  17 +--
 .../resource/app/queue/QueuesCollection.java    |  17 +--
 .../app/queue/SubscribersCollection.java        |  17 +--
 .../test/resource/app/queue/Transaction.java    |  17 +--
 .../app/queue/TransactionsCollection.java       |  17 +--
 .../rest/test/resource/mgmt/Application.java    |  17 +--
 .../resource/mgmt/ApplicationsCollection.java   |  17 +--
 .../rest/test/resource/mgmt/Management.java     |  17 +--
 .../rest/test/resource/mgmt/Organization.java   |  17 +--
 .../resource/mgmt/OrganizationsCollection.java  |  17 +--
 .../rest/test/security/TestAdminUser.java       |  17 +--
 .../rest/test/security/TestAppUser.java         |  17 +--
 .../usergrid/rest/test/security/TestUser.java   |  17 +--
 stack/services/pom.xml                          |  16 +++
 .../management/AccountCreationProps.java        |  17 +--
 .../usergrid/management/ActivationState.java    |  16 +++
 .../usergrid/management/ApplicationCreator.java |  16 +++
 .../usergrid/management/ApplicationInfo.java    |  17 +--
 .../usergrid/management/ManagementService.java  |  17 +--
 .../usergrid/management/OrganizationInfo.java   |  17 +--
 .../management/OrganizationOwnerInfo.java       |  17 +--
 .../management/OrganizationProfile.java         |  17 +--
 .../apache/usergrid/management/UserInfo.java    |  17 +--
 .../cassandra/AccountCreationPropsImpl.java     |  17 +--
 .../cassandra/ApplicationCreatorImpl.java       |  16 +++
 .../cassandra/ManagementServiceImpl.java        |  45 ++++----
 .../ApplicationCreationException.java           |  16 +++
 .../exceptions/DisabledAdminUserException.java  |  17 +--
 .../exceptions/DisabledAppUserException.java    |  17 +--
 .../exceptions/IncorrectPasswordException.java  |  17 +--
 .../exceptions/ManagementException.java         |  17 +--
 .../RecentlyUsedPasswordException.java          |  16 +++
 .../UnableToLeaveOrganizationException.java     |  17 +--
 .../UnactivatedAdminUserException.java          |  17 +--
 .../exceptions/UnactivatedAppUserException.java |  17 +--
 .../UnactivatedOrganizationException.java       |  17 +--
 .../UnconfirmedAdminUserException.java          |  17 +--
 .../usergrid/management/utils/AccountUtils.java |  17 +--
 .../usergrid/security/AuthPrincipalInfo.java    |  17 +--
 .../usergrid/security/AuthPrincipalType.java    |  17 +--
 .../security/crypto/EncryptionService.java      |  17 +--
 .../security/crypto/EncryptionServiceImpl.java  |  17 +--
 .../security/crypto/command/BcryptCommand.java  |  17 +--
 .../crypto/command/EncryptionCommand.java       |  17 +--
 .../security/crypto/command/Md5HashCommand.java |  17 +--
 .../crypto/command/PlainTextCommand.java        |  17 +--
 .../crypto/command/SaltedHasherCommand.java     |  17 +--
 .../crypto/command/Sha1HashCommand.java         |  17 +--
 .../usergrid/security/oauth/AccessInfo.java     |  17 +--
 .../security/oauth/ClientCredentialsInfo.java   |  17 +--
 .../usergrid/security/oauth/OAuthProxy.java     |  17 +--
 .../security/oauth/OAuthProxyFactory.java       |  17 +--
 .../security/providers/AbstractProvider.java    |  16 +++
 .../security/providers/FacebookProvider.java    |  16 +++
 .../security/providers/FoursquareProvider.java  |  16 +++
 .../providers/PingIdentityProvider.java         |  16 +++
 .../security/providers/SignInAsProvider.java    |  16 +++
 .../providers/SignInProviderFactory.java        |  16 +++
 .../security/salt/NoOpSaltProvider.java         |  17 +--
 .../security/salt/PropertiesSaltProvider.java   |  17 +--
 .../usergrid/security/salt/SaltProvider.java    |  17 +--
 .../security/shiro/CustomPermission.java        |  17 +--
 .../shiro/CustomPermissionResolver.java         |  17 +--
 .../shiro/PrincipalCredentialsToken.java        |  17 +--
 .../apache/usergrid/security/shiro/Realm.java   |  17 +--
 .../AbstractAccessTokenCredentials.java         |  17 +--
 .../credentials/AbstractClientCredentials.java  |  17 +--
 .../AbstractPasswordCredentials.java            |  17 +--
 .../credentials/AccessTokenCredentials.java     |  17 +--
 .../shiro/credentials/AdminUserAccessToken.java |  17 +--
 .../shiro/credentials/AdminUserCredentials.java |  17 +--
 .../shiro/credentials/AdminUserPassword.java    |  17 +--
 .../credentials/ApplicationAccessToken.java     |  17 +--
 .../ApplicationClientCredentials.java           |  17 +--
 .../credentials/ApplicationCredentials.java     |  17 +--
 .../shiro/credentials/ApplicationGuest.java     |  17 +--
 .../credentials/ApplicationUserAccessToken.java |  17 +--
 .../credentials/ApplicationUserCredentials.java |  17 +--
 .../credentials/ApplicationUserPassword.java    |  17 +--
 .../shiro/credentials/ClientCredentials.java    |  17 +--
 .../credentials/OrganizationAccessToken.java    |  17 +--
 .../OrganizationClientCredentials.java          |  17 +--
 .../credentials/OrganizationCredentials.java    |  17 +--
 .../shiro/credentials/PasswordCredentials.java  |  17 +--
 .../shiro/credentials/PrincipalCredentials.java |  17 +--
 .../shiro/principals/AdminUserPrincipal.java    |  17 +--
 .../principals/ApplicationGuestPrincipal.java   |  17 +--
 .../shiro/principals/ApplicationPrincipal.java  |  17 +--
 .../principals/ApplicationUserPrincipal.java    |  17 +--
 .../shiro/principals/OrganizationPrincipal.java |  17 +--
 .../shiro/principals/PrincipalIdentifier.java   |  17 +--
 .../shiro/principals/UserPrincipal.java         |  17 +--
 .../security/shiro/utils/SubjectUtils.java      |  17 +--
 .../usergrid/security/tokens/TokenCategory.java |  17 +--
 .../usergrid/security/tokens/TokenInfo.java     |  16 +++
 .../usergrid/security/tokens/TokenService.java  |  16 +++
 .../tokens/cassandra/TokenServiceImpl.java      |  16 +++
 .../tokens/exceptions/BadTokenException.java    |  17 +--
 .../exceptions/ExpiredTokenException.java       |  17 +--
 .../exceptions/InvalidTokenException.java       |  17 +--
 .../tokens/exceptions/TokenException.java       |  17 +--
 .../services/AbstractCollectionService.java     |  17 +--
 .../services/AbstractConnectionsService.java    |  17 +--
 .../AbstractPathBasedColllectionService.java    |  17 +--
 .../usergrid/services/AbstractService.java      |  17 +--
 .../org/apache/usergrid/services/Service.java   |  17 +--
 .../apache/usergrid/services/ServiceAction.java |  17 +--
 .../ServiceCollectionEventListener.java         |  17 +--
 .../usergrid/services/ServiceContext.java       |  17 +--
 .../services/ServiceExecutionEvent.java         |  17 +--
 .../services/ServiceExecutionEventListener.java |  17 +--
 .../apache/usergrid/services/ServiceInfo.java   |  17 +--
 .../usergrid/services/ServiceManager.java       |  17 +--
 .../services/ServiceManagerFactory.java         |  17 +--
 .../usergrid/services/ServiceParameter.java     |  17 +--
 .../usergrid/services/ServicePayload.java       |  17 +--
 .../usergrid/services/ServiceRequest.java       |  17 +--
 .../usergrid/services/ServiceResults.java       |  17 +--
 .../apache/usergrid/services/ServiceUtils.java  |  17 +--
 .../services/activities/ActivitiesService.java  |  17 +--
 .../applications/ApplicationsService.java       |  17 +--
 .../usergrid/services/assets/AssetsService.java |  17 +--
 .../services/assets/data/AssetMimeHandler.java  |  16 +++
 .../services/assets/data/AssetUtils.java        |  16 +++
 .../services/assets/data/BinaryStore.java       |  16 +++
 .../assets/data/LocalFileBinaryStore.java       |  16 +++
 .../services/assets/data/S3BinaryStore.java     |  16 +++
 .../services/devices/DevicesService.java        |  17 +--
 .../services/devices/users/UsersService.java    |  17 +--
 .../ForbiddenServiceOperationException.java     |  17 +--
 .../services/exceptions/ServiceException.java   |  17 +--
 .../exceptions/ServiceInvocationException.java  |  17 +--
 .../ServiceResourceNotFoundException.java       |  17 +--
 .../UndefinedServiceEntityTypeException.java    |  17 +--
 .../UnsupportedServiceOperationException.java   |  17 +--
 .../generic/GenericCollectionService.java       |  17 +--
 .../generic/GenericConnectionsService.java      |  17 +--
 .../services/generic/RootCollectionService.java |  17 +--
 .../usergrid/services/groups/GroupsService.java |  17 +--
 .../groups/activities/ActivitiesService.java    |  17 +--
 .../services/groups/roles/RolesService.java     |  17 +--
 .../services/groups/users/UsersService.java     |  17 +--
 .../users/activities/ActivitiesService.java     |  17 +--
 .../groups/users/devices/DevicesService.java    |  17 +--
 .../services/messages/MessagesService.java      |  17 +--
 .../usergrid/services/roles/RolesService.java   |  17 +--
 .../services/roles/groups/GroupsService.java    |  17 +--
 .../services/roles/users/UsersService.java      |  17 +--
 .../usergrid/services/users/UsersService.java   |  17 +--
 .../users/activities/ActivitiesService.java     |  53 +++++----
 .../services/users/devices/DevicesService.java  |  17 +--
 .../users/following/FollowingService.java       |  16 +++
 .../services/users/groups/GroupsService.java    |  17 +--
 .../services/users/roles/RolesService.java      |  17 +--
 .../org/apache/usergrid/utils/PythonUtils.java  |  17 +--
 .../src/main/python/pyusergrid/__init__.py      |  15 +++
 .../main/python/pyusergrid/services/__init__.py |  15 +++
 .../pyusergrid/services/pytest/PytestService.py |  16 +++
 .../pyusergrid/services/pytest/__init__.py      |  15 +++
 .../python/pyusergrid/services/pytest/test.py   |  16 +++
 stack/services/src/main/python/test/__init__.py |  15 +++
 stack/services/src/main/python/test/test.py     |  16 +++
 .../resources/usergrid-services-context.xml     |  16 +++
 .../test/java/baas/io/simple/SimpleService.java |  18 ----
 .../usergrid/ConcurrentServiceITSuite.java      |  16 +++
 .../org/apache/usergrid/ServiceApplication.java |  16 +++
 .../org/apache/usergrid/ServiceITSetup.java     |  16 +++
 .../org/apache/usergrid/ServiceITSetupImpl.java |  16 +++
 .../org/apache/usergrid/ServiceITSuite.java     |  16 +++
 .../apache/usergrid/management/EmailFlowIT.java |  17 +--
 .../management/ManagementTestHelper.java        |  17 +--
 .../usergrid/management/MockImapClient.java     |  16 +++
 .../usergrid/management/OrganizationIT.java     |  25 ++---
 .../org/apache/usergrid/management/RoleIT.java  |  17 +--
 .../cassandra/ApplicationCreatorIT.java         |  16 +++
 .../cassandra/ManagementServiceIT.java          |  16 +++
 .../cassandra/ManagementTestHelperImpl.java     |  17 +--
 .../org/apache/usergrid/python/JythonTest.java  |  17 +--
 .../usergrid/security/CustomResolverTest.java   |  17 +--
 .../crypto/EncryptionServiceImplTest.java       |  17 +--
 .../crypto/command/BcryptCommandTest.java       |  17 +--
 .../crypto/command/Md5HashCommandTest.java      |  17 +--
 .../crypto/command/Sha1HashCommandTest.java     |  17 +--
 .../security/providers/FacebookProviderIT.java  |  16 +++
 .../providers/PingIdentityProviderIT.java       |  16 +++
 .../security/tokens/TokenServiceIT.java         |  16 +++
 .../usergrid/services/AbstractServiceIT.java    |  17 +--
 .../usergrid/services/ActivitiesServiceIT.java  |  17 +--
 .../services/ApplicationsServiceIT.java         |  17 +--
 .../usergrid/services/CollectionServiceIT.java  |  17 +--
 .../usergrid/services/ConnectionsServiceIT.java |  17 +--
 .../usergrid/services/GroupServiceIT.java       |  17 +--
 .../usergrid/services/RolesServiceIT.java       |  17 +--
 .../usergrid/services/ServiceFactoryIT.java     |  19 ++--
 .../usergrid/services/ServiceInfoTest.java      |  17 +--
 .../usergrid/services/ServiceInvocationIT.java  |  17 +--
 .../usergrid/services/ServiceRequestIT.java     |  17 +--
 .../usergrid/services/UsersServiceIT.java       |  17 +--
 .../services/assets/data/AssetUtilsTest.java    |  16 +++
 .../usergrid/services/simple/SimpleService.java |  33 ++++++
 .../src/test/resources/project.properties       |  16 +++
 .../test/resources/usergrid-test-context.xml    |  16 +++
 stack/test-utils/pom.xml                        |  16 +++
 .../apache/usergrid/NoExitSecurityManager.java  |  16 +++
 .../usergrid/cassandra/AvailablePortFinder.java |  27 +++--
 .../usergrid/cassandra/CassandraResource.java   |  16 +++
 .../usergrid/cassandra/ClearShiroSubject.java   |  16 +++
 .../apache/usergrid/cassandra/Concurrent.java   |  16 +++
 .../cassandra/ConcurrentJunitRunner.java        |  16 +++
 .../usergrid/cassandra/ConcurrentSuite.java     |  16 +++
 .../apache/usergrid/cassandra/DataControl.java  |  16 +++
 .../apache/usergrid/cassandra/DataLoader.java   |  16 +++
 .../usergrid/cassandra/SchemaManager.java       |  16 +++
 .../src/main/resources/cassandra.yaml           |  12 +++
 .../src/main/resources/log4j.properties         |  12 +++
 .../cassandra/AnotherCassandraResourceIT.java   |  16 +++
 .../cassandra/CassandraResourceITSuite.java     |  16 +++
 .../cassandra/CassandraResourceTest.java        |  16 +++
 .../usergrid/cassandra/FakeSchemaManager.java   |  16 +++
 .../usergrid/cassandra/OkThisIsTheLastIT.java   |  16 +++
 .../YetAnotherCassandraResourceIT.java          |  16 +++
 .../src/test/resources/project.properties       |  12 +++
 .../test/resources/usergrid-test-context.xml    |  16 +++
 stack/tools/impoexpo.sh                         |  16 +++
 stack/tools/pom.xml                             |  16 +++
 stack/tools/src/main/assembly/release.xml       |  16 +++
 .../main/dist/usergrid-custom-tools.properties  |  16 +++
 stack/tools/src/main/dist/usergrid-export.sh    |  16 +++
 .../java/org/apache/usergrid/tools/ApiDoc.java  |  17 +--
 .../org/apache/usergrid/tools/AppAudit.java     |  17 +--
 .../org/apache/usergrid/tools/AppNameFix.java   |  17 +--
 .../java/org/apache/usergrid/tools/Cli.java     |  17 +--
 .../java/org/apache/usergrid/tools/Command.java |  17 +--
 .../org/apache/usergrid/tools/CredExport.java   |  17 +--
 .../apache/usergrid/tools/DupAdminRepair.java   |  17 +--
 .../org/apache/usergrid/tools/DupOrgRepair.java |  17 +--
 .../apache/usergrid/tools/EntityCleanup.java    |  17 +--
 .../usergrid/tools/EntityInsertBenchMark.java   |  17 +--
 .../usergrid/tools/EntityReadBenchMark.java     |  17 +--
 .../org/apache/usergrid/tools/EntityUpdate.java |  16 +++
 .../java/org/apache/usergrid/tools/Export.java  |  17 +--
 .../usergrid/tools/ExportDataCreator.java       |  17 +--
 .../usergrid/tools/ExportingToolBase.java       |  23 ++--
 .../java/org/apache/usergrid/tools/Import.java  |  17 +--
 .../org/apache/usergrid/tools/ImportFB.java     |  17 +--
 .../org/apache/usergrid/tools/IndexRebuild.java |  17 +--
 .../java/org/apache/usergrid/tools/Metrics.java |  16 +++
 .../usergrid/tools/OrganizationExport.java      |  16 +++
 .../apache/usergrid/tools/PopulateSample.java   |  17 +--
 .../apache/usergrid/tools/ResetSuperUser.java   |  17 +--
 .../java/org/apache/usergrid/tools/SetupDB.java |  17 +--
 .../java/org/apache/usergrid/tools/Test.java    |  17 +--
 .../org/apache/usergrid/tools/ToolBase.java     |  16 +--
 .../usergrid/tools/UniqueIndexCleanup.java      |  17 +--
 .../org/apache/usergrid/tools/UserManager.java  |  16 +++
 .../apache/usergrid/tools/WarehouseExport.java  |  16 +--
 .../apache/usergrid/tools/WarehouseUpsert.java  |  23 ++--
 .../usergrid/tools/apidoc/swagger/Api.java      |  17 +--
 .../tools/apidoc/swagger/ApiListing.java        |  17 +--
 .../tools/apidoc/swagger/ApiOperation.java      |  17 +--
 .../tools/apidoc/swagger/ApiOperationError.java |  17 +--
 .../usergrid/tools/apidoc/swagger/ApiParam.java |  17 +--
 .../apidoc/swagger/ApiParamAllowableValues.java |  17 +--
 .../apache/usergrid/tools/bean/AppScore.java    |  16 +++
 .../apache/usergrid/tools/bean/ExportOrg.java   |  17 +--
 .../apache/usergrid/tools/bean/MetricLine.java  |  16 +++
 .../apache/usergrid/tools/bean/MetricQuery.java |  16 +++
 .../apache/usergrid/tools/bean/MetricSort.java  |  16 +++
 .../apache/usergrid/tools/bean/OrgScore.java    |  16 +++
 .../src/main/resources/apidoc/applications.yaml |  11 ++
 .../src/main/resources/apidoc/management.yaml   |  11 ++
 stack/tools/src/main/resources/log4j.xml        |  16 +++
 .../main/resources/toolsApplicationContext.xml  |  16 +++
 .../src/main/resources/warehouse-schema.sql     |  18 +++-
 stack/websocket/pom.xml                         |  16 +++
 .../websocket/WebSocketChannelHandler.java      |  17 +--
 .../usergrid/websocket/WebSocketKeyStore.java   |  17 +--
 .../usergrid/websocket/WebSocketServer.java     |  30 ++----
 .../websocket/WebSocketServerIndexPage.java     |  30 ++----
 .../WebSocketServerPipelineFactory.java         |  17 +--
 .../websocket/WebSocketSslContextFactory.java   |  17 +--
 .../usergrid/websocket/ExampleListener.java     |  17 +--
 .../websocket/SimpleMessageProducer.java        |  17 +--
 .../usergrid/websocket/WebSocketServerTest.java |  17 +--
 .../src/test/resources/test-activemq.xml        |  27 +++--
 .../test/resources/testApplicationContext.xml   |  16 +++
 930 files changed, 10323 insertions(+), 5345 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/core/src/main/java/org/apache/usergrid/persistence/Query.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/rest/src/main/java/org/apache/usergrid/rest/management/ManagementResource.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
index 9143ffd,e8b21db..b7479c5
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
@@@ -16,9 -17,7 +17,12 @@@
  package org.apache.usergrid.rest.management;
  
  
 -import java.util.*;
++import java.util.ArrayList;
 +import java.util.HashMap;
++import java.util.LinkedHashMap;
++import java.util.List;
 +import java.util.Map;
 +import java.util.UUID;
  
  import javax.ws.rs.core.MediaType;
  

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/services/src/main/resources/usergrid-services-context.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/services/src/test/java/org/apache/usergrid/ServiceITSetup.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/services/src/test/java/org/apache/usergrid/ServiceITSetupImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a8824941/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
----------------------------------------------------------------------