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 2015/09/04 15:42:01 UTC

[1/8] usergrid git commit: queue up deletes

Repository: usergrid
Updated Branches:
  refs/heads/two-dot-o-dev 4c406edd8 -> e25f2c39c


queue up deletes


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

Branch: refs/heads/two-dot-o-dev
Commit: 09e81836121d57e293d853bcb1c2e284bf8322aa
Parents: 4450504
Author: Shawn Feldman <sf...@apache.org>
Authored: Thu Sep 3 13:53:28 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Thu Sep 3 13:53:28 2015 -0600

----------------------------------------------------------------------
 .../usergrid/corepersistence/CoreModule.java    |   2 +
 .../service/ApplicationService.java             |  31 ++++++
 .../service/ApplicationServiceImpl.java         |  60 +++++++++++
 .../apache/usergrid/rest/SystemResource.java    |  45 +++++++-
 .../usergrid/management/ManagementService.java  |   8 ++
 .../cassandra/ManagementServiceImpl.java        | 108 +++++++++++--------
 6 files changed, 204 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/09e81836/stack/core/src/main/java/org/apache/usergrid/corepersistence/CoreModule.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CoreModule.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CoreModule.java
index 1a7f794..c032dcb 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CoreModule.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CoreModule.java
@@ -167,6 +167,8 @@ public class CoreModule  extends AbstractModule {
 
         bind( ConnectionService.class).to( ConnectionServiceImpl.class);
 
+        bind( ApplicationService.class ).to( ApplicationServiceImpl.class );
+
     }
 
 }

http://git-wip-us.apache.org/repos/asf/usergrid/blob/09e81836/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationService.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationService.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationService.java
new file mode 100644
index 0000000..18b1e60
--- /dev/null
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationService.java
@@ -0,0 +1,31 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  *  contributor license agreements.  The ASF licenses this file to You
+ *  * under the Apache License, Version 2.0 (the "License"); you may not
+ *  * use this file except in compliance with the License.
+ *  * You may obtain a copy of the License at
+ *  *
+ *  *     http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing, software
+ *  * distributed under the License is distributed on an "AS IS" BASIS,
+ *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  * See the License for the specific language governing permissions and
+ *  * limitations under the License.  For additional information regarding
+ *  * copyright in this work, please see the NOTICE file in the top level
+ *  * directory of this distribution.
+ *
+ */
+package org.apache.usergrid.corepersistence.service;
+
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import rx.Observable;
+
+/**
+ * Encapsulation of application operations.
+ */
+public interface ApplicationService {
+
+    Observable<Integer> deleteAllEntities(ApplicationScope applicationScope);
+}

http://git-wip-us.apache.org/repos/asf/usergrid/blob/09e81836/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
new file mode 100644
index 0000000..0becab4
--- /dev/null
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
@@ -0,0 +1,60 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  *  contributor license agreements.  The ASF licenses this file to You
+ *  * under the Apache License, Version 2.0 (the "License"); you may not
+ *  * use this file except in compliance with the License.
+ *  * You may obtain a copy of the License at
+ *  *
+ *  *     http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing, software
+ *  * distributed under the License is distributed on an "AS IS" BASIS,
+ *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  * See the License for the specific language governing permissions and
+ *  * limitations under the License.  For additional information regarding
+ *  * copyright in this work, please see the NOTICE file in the top level
+ *  * directory of this distribution.
+ *
+ */
+package org.apache.usergrid.corepersistence.service;
+
+import org.apache.usergrid.corepersistence.asyncevents.AsyncEventService;
+import org.apache.usergrid.corepersistence.asyncevents.EventBuilder;
+import org.apache.usergrid.corepersistence.rx.impl.AllEntityIdsObservable;
+import org.apache.usergrid.corepersistence.util.CpNamingUtils;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import rx.Observable;
+
+/**
+ * implementation of application operations
+ */
+public class ApplicationServiceImpl  implements ApplicationService{
+
+    private final AllEntityIdsObservable allEntityIdsObservable;
+    private final AsyncEventService asyncEventService;
+    private final EventBuilder eventBuilder;
+
+    public ApplicationServiceImpl(AllEntityIdsObservable allEntityIdsObservable, AsyncEventService asyncEventService, EventBuilder eventBuilder){
+
+        this.allEntityIdsObservable = allEntityIdsObservable;
+        this.asyncEventService = asyncEventService;
+        this.eventBuilder = eventBuilder;
+    }
+    @Override
+    public Observable<Integer> deleteAllEntities(ApplicationScope applicationScope) {
+        if(applicationScope.getApplication().getUuid().equals(CpNamingUtils.MANAGEMENT_APPLICATION_ID)){
+            throw new IllegalArgumentException("Can't delete from management app");
+        }
+
+        //EventBuilder eventBuilder = injector.getInstance(EventBuilder.class);
+        Observable appObservable  = Observable.just(applicationScope);
+
+
+        Observable<Integer> countObservable = allEntityIdsObservable.getEntities(appObservable)
+            //.map(entity -> eventBuilder.buildEntityDelete(applicationScope, entity.getId()).getEntitiesCompacted())
+            .doOnNext(entity -> asyncEventService.queueEntityDelete(applicationScope, entity.getId()))
+            .count();
+        return countObservable;
+    }
+}

http://git-wip-us.apache.org/repos/asf/usergrid/blob/09e81836/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
index 26f1149..ace8fd0 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
@@ -17,11 +17,7 @@
 package org.apache.usergrid.rest;
 
 
-import javax.ws.rs.DefaultValue;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
+import javax.ws.rs.*;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.UriInfo;
@@ -35,6 +31,12 @@ import org.apache.usergrid.rest.security.annotations.RequireSystemAccess;
 
 import com.sun.jersey.api.json.JSONWithPadding;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicInteger;
+
 
 @Path( "/system" )
 @Component
@@ -77,6 +79,39 @@ public class SystemResource extends AbstractContextResource {
         return new JSONWithPadding( response, callback );
     }
 
+    @RequireSystemAccess
+    @DELETE
+    @Path( "applications/{applicationId}" )
+    public JSONWithPadding clearApplication( @Context UriInfo ui,
+                                               @PathParam("applicationId") UUID applicationId,
+                                               @QueryParam( "confirmApplicationId" ) UUID confirmApplicationId,
+                                              @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback )
+        throws Exception {
+
+        if(confirmApplicationId == null || !confirmApplicationId.equals(applicationId)){
+            throw new IllegalArgumentException("please make confirmApplicationId equal to applicationId");
+        }
+
+        ApiResponse response = createApiResponse();
+        response.setAction( "clear application" );
+
+        logger.info( "clearing up application" );
+        AtomicInteger itemsDeleted = new AtomicInteger(0);
+        try {
+             management.deleteAllEntities(applicationId)
+             .doOnNext(count -> itemsDeleted.set(count))
+             .toBlocking().lastOrDefault(0);
+        }
+        catch ( Exception e ) {
+            logger.error( "Unable to delete all items, deleted: " + itemsDeleted.get(), e );
+        }
+        Map<String,Object> data = new HashMap<>();
+        data.put("count",itemsDeleted.get());
+        response.setData(data);
+        response.setSuccess();
+        return new JSONWithPadding( response, callback );
+    }
+
 
     @Path( "migrate" )
     public MigrateResource migrate() {

http://git-wip-us.apache.org/repos/asf/usergrid/blob/09e81836/stack/services/src/main/java/org/apache/usergrid/management/ManagementService.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/ManagementService.java b/stack/services/src/main/java/org/apache/usergrid/management/ManagementService.java
index 43c1b30..4b05b94 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/ManagementService.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/ManagementService.java
@@ -35,6 +35,7 @@ import org.apache.usergrid.security.shiro.PrincipalCredentialsToken;
 import org.apache.usergrid.services.ServiceResults;
 
 import com.google.common.collect.BiMap;
+import rx.Observable;
 
 
 public interface ManagementService {
@@ -338,4 +339,11 @@ public interface ManagementService {
     long getCollectionSize(final UUID applicationId, final String collectionName);
 
     Map<String,Long> getEachCollectionSize(final UUID applicationId);
+
+    /**
+     * will delete all entities
+     * @param applicationId
+     * @return
+     */
+    Observable<Integer> deleteAllEntities(UUID applicationId);
 }

http://git-wip-us.apache.org/repos/asf/usergrid/blob/09e81836/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 73f18b1..437b1a4 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
@@ -18,14 +18,19 @@ package org.apache.usergrid.management.cassandra;
 
 
 import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
 import com.google.inject.Injector;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.lang.text.StrSubstitutor;
 import org.apache.shiro.UnavailableSecurityManagerException;
+import org.apache.usergrid.corepersistence.asyncevents.AsyncEventService;
+import org.apache.usergrid.corepersistence.asyncevents.EventBuilder;
+import org.apache.usergrid.corepersistence.rx.impl.AllEntityIdsObservable;
 import org.apache.usergrid.corepersistence.service.AggregationService;
 import org.apache.usergrid.corepersistence.service.AggregationServiceFactory;
+import org.apache.usergrid.corepersistence.service.ApplicationService;
 import org.apache.usergrid.corepersistence.util.CpNamingUtils;
 import org.apache.usergrid.exception.ConflictException;
 import org.apache.usergrid.locking.Lock;
@@ -34,6 +39,7 @@ import org.apache.usergrid.management.*;
 import org.apache.usergrid.management.exceptions.*;
 import org.apache.usergrid.persistence.*;
 import org.apache.usergrid.persistence.Query.Level;
+import org.apache.usergrid.persistence.collection.EntityCollectionManager;
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
 import org.apache.usergrid.persistence.entities.Application;
 import org.apache.usergrid.persistence.entities.Group;
@@ -63,6 +69,8 @@ import org.apache.usergrid.utils.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import rx.*;
+import rx.Observable;
 
 import java.nio.ByteBuffer;
 import java.util.*;
@@ -1749,7 +1757,7 @@ public class ManagementServiceImpl implements ManagementService {
             return null;
         }
 
-        final EntityManager em = emf.getEntityManager( smf.getManagementAppId() );
+        final EntityManager em = emf.getEntityManager(smf.getManagementAppId());
 
         Results r = em.getSourceEntities(
             new SimpleEntityRef(CpNamingUtils.APPLICATION_INFO, applicationInfoId),
@@ -1771,7 +1779,7 @@ public class ManagementServiceImpl implements ManagementService {
             return null;
         }
         final BiMap<UUID, String> applications = HashBiMap.create();
-        final EntityManager em = emf.getEntityManager( smf.getManagementAppId() );
+        final EntityManager em = emf.getEntityManager(smf.getManagementAppId());
 
         // query for application_info entities
         final Results results = em.getTargetEntities(
@@ -1829,7 +1837,7 @@ public class ManagementServiceImpl implements ManagementService {
             return null;
         }
 
-        EntityManager em = emf.getEntityManager( smf.getManagementAppId() );
+        EntityManager em = emf.getEntityManager(smf.getManagementAppId());
         em.createConnection( new SimpleEntityRef( Group.ENTITY_TYPE, organizationId ), ORG_APP_RELATIONSHIP, appInfo );
 
         return applicationId;
@@ -1869,7 +1877,7 @@ public class ManagementServiceImpl implements ManagementService {
             return null;
         }
         EntityManager em = emf.getEntityManager( smf.getManagementAppId() );
-        Entity entity = em.get( new SimpleEntityRef(CpNamingUtils.APPLICATION_INFO, applicationId) );
+        Entity entity = em.get(new SimpleEntityRef(CpNamingUtils.APPLICATION_INFO, applicationId));
 
         if ( entity != null ) {
             return new ApplicationInfo( applicationId, entity.getName() );
@@ -1966,19 +1974,19 @@ public class ManagementServiceImpl implements ManagementService {
 
     @Override
     public String getClientSecretForOrganization( UUID organizationId ) throws Exception {
-        return getSecret( smf.getManagementAppId(), AuthPrincipalType.ORGANIZATION, organizationId );
+        return getSecret(smf.getManagementAppId(), AuthPrincipalType.ORGANIZATION, organizationId);
     }
 
 
     @Override
     public String getClientIdForApplication( UUID applicationId ) {
-        return ClientCredentialsInfo.getClientIdForTypeAndUuid( AuthPrincipalType.APPLICATION, applicationId );
+        return ClientCredentialsInfo.getClientIdForTypeAndUuid(AuthPrincipalType.APPLICATION, applicationId);
     }
 
 
     @Override
     public String getClientSecretForApplication( UUID applicationId ) throws Exception {
-        return getSecret( smf.getManagementAppId(), AuthPrincipalType.APPLICATION, applicationId );
+        return getSecret(smf.getManagementAppId(), AuthPrincipalType.APPLICATION, applicationId);
     }
 
 
@@ -2135,7 +2143,7 @@ public class ManagementServiceImpl implements ManagementService {
         em.update( user );
 
         // revoke all access tokens for the app
-        revokeAccessTokensForAppUser( applicationId, userId );
+        revokeAccessTokensForAppUser(applicationId, userId);
 
         return user;
     }
@@ -2181,7 +2189,7 @@ public class ManagementServiceImpl implements ManagementService {
         EntityManager em = emf.getEntityManager( smf.getManagementAppId() );
         em.setProperty( new SimpleEntityRef( User.ENTITY_TYPE, userId ), "disabled", true );
 
-        revokeAccessTokensForAdminUser( userId );
+        revokeAccessTokensForAdminUser(userId);
     }
 
 
@@ -2360,7 +2368,7 @@ public class ManagementServiceImpl implements ManagementService {
             confirmAdminUser( user.getUuid() );
             if ( newAdminUsersNeedSysAdminApproval() ) {
                 sendAdminUserConfirmedAwaitingActivationEmail( user );
-                sendSysAdminRequestAdminActivationEmail( user );
+                sendSysAdminRequestAdminActivationEmail(user);
                 return ActivationState.CONFIRMED_AWAITING_ACTIVATION;
             }
             else {
@@ -2381,7 +2389,7 @@ public class ManagementServiceImpl implements ManagementService {
             activateAdminUser( principal.getUuid() );
             UserInfo user = getAdminUserByUuid( principal.getUuid() );
             sendAdminUserActivatedEmail( user );
-            sendSysAdminNewAdminActivatedNotificationEmail( user );
+            sendSysAdminNewAdminActivatedNotificationEmail(user);
             return ActivationState.ACTIVATED;
         }
         return ActivationState.UNKNOWN;
@@ -2389,7 +2397,7 @@ public class ManagementServiceImpl implements ManagementService {
 
 
     public void sendAdminUserConfirmationEmail( UserInfo user ) throws Exception {
-        String token = getConfirmationTokenForAdminUser( user.getUuid(), 0 );
+        String token = getConfirmationTokenForAdminUser(user.getUuid(), 0);
         String confirmation_url =
                 String.format( properties.getProperty( PROPERTIES_ADMIN_CONFIRMATION_URL ), user.getUuid().toString() )
                         + "?token=" + token;
@@ -2400,16 +2408,16 @@ public class ManagementServiceImpl implements ManagementService {
 
 
     public void sendSysAdminRequestAdminActivationEmail( UserInfo user ) throws Exception {
-        String token = getActivationTokenForAdminUser( user.getUuid(), 0 );
+        String token = getActivationTokenForAdminUser(user.getUuid(), 0);
         //TODO: admin specific email
         String activation_url =
                 String.format( properties.getProperty( PROPERTIES_ADMIN_ACTIVATION_URL ), user.getUuid().toString() )
                         + "?token=" + token;
-        sendHtmlMail( properties, getAdminSystemEmail(),
-                properties.getProperty( PROPERTIES_MAILER_EMAIL ),
-                "Request For Admin User Account Activation " + user.getEmail(), appendEmailFooter(
-                emailMsg( hashMap( "user_email", user.getEmail() ).map( "activation_url", activation_url ),
-                        PROPERTIES_EMAIL_SYSADMIN_ADMIN_ACTIVATION ) ) );
+        sendHtmlMail(properties, getAdminSystemEmail(),
+            properties.getProperty(PROPERTIES_MAILER_EMAIL),
+            "Request For Admin User Account Activation " + user.getEmail(), appendEmailFooter(
+                emailMsg(hashMap("user_email", user.getEmail()).map("activation_url", activation_url),
+                    PROPERTIES_EMAIL_SYSADMIN_ADMIN_ACTIVATION)));
     }
 
 
@@ -2445,14 +2453,14 @@ public class ManagementServiceImpl implements ManagementService {
 
     @Override
     public void sendAdminUserEmail( UserInfo user, String subject, String html ) throws Exception {
-        sendHtmlMail( properties, user.getDisplayEmailAddress(), properties.getProperty( PROPERTIES_MAILER_EMAIL ),
-                subject, appendEmailFooter( html ) );
+        sendHtmlMail(properties, user.getDisplayEmailAddress(), properties.getProperty(PROPERTIES_MAILER_EMAIL),
+            subject, appendEmailFooter(html));
     }
 
 
     @Override
     public void activateOrganization( OrganizationInfo organization ) throws Exception {
-        activateOrganization( organization, true );
+        activateOrganization(organization, true);
     }
 
 
@@ -2554,7 +2562,7 @@ public class ManagementServiceImpl implements ManagementService {
             throw new TokenException( "Could not match token : " + token );
         }
 
-        tokens.revokeToken( token );
+        tokens.revokeToken(token);
     }
 
 
@@ -2577,14 +2585,14 @@ public class ManagementServiceImpl implements ManagementService {
 
     @Override
     public User getAppUserByIdentifier( UUID applicationId, Identifier identifier ) throws Exception {
-        EntityManager em = emf.getEntityManager( applicationId );
+        EntityManager em = emf.getEntityManager(applicationId);
         return em.get( em.getUserByIdentifier( identifier ), User.class );
     }
 
 
     @Override
     public void startAppUserPasswordResetFlow( UUID applicationId, User user ) throws Exception {
-        String token = getPasswordResetTokenForAppUser( applicationId, user.getUuid() );
+        String token = getPasswordResetTokenForAppUser(applicationId, user.getUuid());
         String reset_url =
                 buildUserAppUrl( applicationId, properties.getProperty( PROPERTIES_USER_RESETPW_URL ), user, token );
         Map<String, String> pageContext = hashMap( "reset_url", reset_url )
@@ -2603,7 +2611,7 @@ public class ManagementServiceImpl implements ManagementService {
 
     @Override
     public boolean newAppUsersNeedAdminApproval( UUID applicationId ) throws Exception {
-        EntityManager em = emf.getEntityManager( applicationId );
+        EntityManager em = emf.getEntityManager(applicationId);
         Boolean registration_requires_admin_approval = ( Boolean ) em
                 .getProperty( new SimpleEntityRef( Application.ENTITY_TYPE, applicationId ),
                         REGISTRATION_REQUIRES_ADMIN_APPROVAL );
@@ -2681,7 +2689,7 @@ public class ManagementServiceImpl implements ManagementService {
             EntityManager em = emf.getEntityManager( applicationId );
             User user = em.get( userId, User.class );
             sendAppUserActivatedEmail( applicationId, user );
-            sendAdminNewAppUserActivatedNotificationEmail( applicationId, user );
+            sendAdminNewAppUserActivatedNotificationEmail(applicationId, user);
             return ActivationState.ACTIVATED;
         }
         return ActivationState.UNKNOWN;
@@ -2689,7 +2697,7 @@ public class ManagementServiceImpl implements ManagementService {
 
 
     public void sendAppUserConfirmationEmail( UUID applicationId, User user ) throws Exception {
-        String token = getConfirmationTokenForAppUser( applicationId, user.getUuid() );
+        String token = getConfirmationTokenForAppUser(applicationId, user.getUuid());
         String confirmation_url =
                 buildUserAppUrl( applicationId, properties.getProperty( PROPERTIES_USER_CONFIRMATION_URL ), user,
                         token );
@@ -2705,17 +2713,17 @@ public class ManagementServiceImpl implements ManagementService {
 
 
     protected String buildUserAppUrl(UUID applicationId, String url, User user, String token) throws Exception {
-        ApplicationInfo ai = getApplicationInfo( applicationId );
-        OrganizationInfo oi = getOrganizationForApplication( applicationId );
+        ApplicationInfo ai = getApplicationInfo(applicationId);
+        OrganizationInfo oi = getOrganizationForApplication(applicationId);
         return String.format( url, oi.getName(), StringUtils.stringOrSubstringAfterFirst( ai.getName(), '/' ),
                 user.getUuid().toString() ) + "?token=" + token;
     }
 
 
     public void sendAdminRequestAppUserActivationEmail( UUID applicationId, User user ) throws Exception {
-        String token = getActivationTokenForAppUser( applicationId, user.getUuid() );
+        String token = getActivationTokenForAppUser(applicationId, user.getUuid());
         String activation_url =
-                buildUserAppUrl( applicationId, properties.getProperty( PROPERTIES_USER_ACTIVATION_URL ), user, token );
+                buildUserAppUrl(applicationId, properties.getProperty(PROPERTIES_USER_ACTIVATION_URL), user, token);
     /*
      * String activation_url = String.format(
      * properties.getProperty(PROPERTIES_USER_ACTIVATION_URL),
@@ -2752,7 +2760,7 @@ public class ManagementServiceImpl implements ManagementService {
     @Override
     public void activateAppUser( UUID applicationId, UUID userId ) throws Exception {
         EntityManager em = emf.getEntityManager( applicationId );
-        em.setProperty( new SimpleEntityRef( User.ENTITY_TYPE, userId ), "activated", true );
+        em.setProperty(new SimpleEntityRef(User.ENTITY_TYPE, userId), "activated", true);
     }
 
 
@@ -2769,10 +2777,10 @@ public class ManagementServiceImpl implements ManagementService {
         }
 
         EntityManager em = emf.getEntityManager( applicationId );
-        User user = em.get( userId, User.class );
+        User user = em.get(userId, User.class);
 
-        writeUserPassword( applicationId, user,
-                encryptionService.defaultEncryptedCredentials( newPassword, user.getUuid(), applicationId ) );
+        writeUserPassword(applicationId, user,
+            encryptionService.defaultEncryptedCredentials(newPassword, user.getUuid(), applicationId));
     }
 
 
@@ -2786,19 +2794,19 @@ public class ManagementServiceImpl implements ManagementService {
             throw new IllegalArgumentException( "oldpassword and newpassword are both required" );
         }
         // TODO load the user, send the hashType down to maybeSaltPassword
-        User user = emf.getEntityManager( applicationId ).get( userId, User.class );
+        User user = emf.getEntityManager( applicationId ).get(userId, User.class);
         if ( !verify( applicationId, user.getUuid(), oldPassword ) ) {
             throw new IncorrectPasswordException( "Old password does not match" );
         }
 
-        setAppUserPassword( applicationId, userId, newPassword );
+        setAppUserPassword(applicationId, userId, newPassword);
     }
 
 
     @Override
     public User verifyAppUserPasswordCredentials( UUID applicationId, String name, String password ) throws Exception {
 
-        User user = findUserEntity( applicationId, name );
+        User user = findUserEntity(applicationId, name);
         if ( user == null ) {
             return null;
         }
@@ -2861,16 +2869,16 @@ public class ManagementServiceImpl implements ManagementService {
         }
         String pin = getCredentialsSecret( readUserPin( applicationId, userId, user.getType() ) );
 
-        sendHtmlMail( properties, user.getDisplayEmailAddress(), properties.getProperty( PROPERTIES_MAILER_EMAIL ),
-                "Your app pin",
-                appendEmailFooter( emailMsg( hashMap( USER_PIN, pin ), PROPERTIES_EMAIL_USER_PIN_REQUEST ) ) );
+        sendHtmlMail(properties, user.getDisplayEmailAddress(), properties.getProperty(PROPERTIES_MAILER_EMAIL),
+            "Your app pin",
+            appendEmailFooter(emailMsg(hashMap(USER_PIN, pin), PROPERTIES_EMAIL_USER_PIN_REQUEST)));
     }
 
 
     @Override
     public User verifyAppUserPinCredentials( UUID applicationId, String name, String pin ) throws Exception {
 
-        User user = findUserEntity( applicationId, name );
+        User user = findUserEntity(applicationId, name);
         if ( user == null ) {
             return null;
         }
@@ -2883,7 +2891,7 @@ public class ManagementServiceImpl implements ManagementService {
 
     @Override
     public void countAdminUserAction( UserInfo user, String action ) throws Exception {
-        EntityManager em = emf.getEntityManager( smf.getManagementAppId() );
+        EntityManager em = emf.getEntityManager(smf.getManagementAppId());
         em.incrementAggregateCounters( user.getUuid(), null, null, "admin_logins", 1 );
     }
 
@@ -2907,7 +2915,7 @@ public class ManagementServiceImpl implements ManagementService {
 
         org.setProperties( props );
 
-        em.update( org );
+        em.update(org);
     }
 
 
@@ -2991,7 +2999,7 @@ public class ManagementServiceImpl implements ManagementService {
         EntityManager em = emf.getEntityManager( appId );
         Entity owner = em.get( new SimpleEntityRef("user", ownerId ));
         return ( Set<CredentialsInfo> ) em
-                .getDictionaryElementValue( owner, DICTIONARY_CREDENTIALS, USER_PASSWORD_HISTORY );
+                .getDictionaryElementValue(owner, DICTIONARY_CREDENTIALS, USER_PASSWORD_HISTORY);
     }
 
 
@@ -3058,6 +3066,16 @@ public class ManagementServiceImpl implements ManagementService {
         return null;
     }
 
+    @Override
+    public Observable<Integer> deleteAllEntities(UUID applicationId){
+        if(applicationId.equals(CpNamingUtils.MANAGEMENT_APPLICATION_ID)){
+            throw new IllegalArgumentException("Can't delete from management app");
+        }
+
+        ApplicationService service = injector.getInstance(ApplicationService.class);
+        return service.deleteAllEntities(CpNamingUtils.getApplicationScope(applicationId));
+    }
+
     private String getProperty(String key) {
         String obj = properties.getProperty(key);
         if(StringUtils.isEmpty(obj))


[4/8] usergrid git commit: rest test

Posted by sn...@apache.org.
rest test


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

Branch: refs/heads/two-dot-o-dev
Commit: ba8922b7c268917993d6ce1ac9d542b9ac92821c
Parents: 657dad3
Author: Shawn Feldman <sf...@apache.org>
Authored: Thu Sep 3 15:43:35 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Thu Sep 3 15:43:35 2015 -0600

----------------------------------------------------------------------
 .../apache/usergrid/rest/SystemResourceIT.java  | 16 +++++++++
 .../test/resource/endpoints/NamedResource.java  | 34 ++++++++++++--------
 .../test/resource/endpoints/SystemResource.java | 25 ++++++++++++++
 3 files changed, 62 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/ba8922b7/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java
index bb53e83..5c89422 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java
@@ -23,7 +23,10 @@ import org.apache.usergrid.rest.test.resource.AbstractRestIT;
 import org.apache.usergrid.rest.test.resource.model.Entity;
 import org.apache.usergrid.rest.test.resource.model.QueryParameters;
 
+import java.util.LinkedHashMap;
+
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 
 /**
@@ -47,6 +50,19 @@ public class SystemResourceIT extends AbstractRestIT {
         assertNotNull( "ok", ( String ) result.get( "status" ) );
     }
 
+    @Test
+    public void testDeleteAllApplicationEntities() {
+        QueryParameters queryParameters = new QueryParameters();
+        queryParameters.addParam( "access_token", clientSetup.getSuperuserToken().getAccessToken() );
+        queryParameters.addParam("confirmApplicationId", this.clientSetup.getAppUuid());
+
+        org.apache.usergrid.rest.test.resource.model.ApiResponse result = clientSetup.getRestClient().system().applications(this.clientSetup.getAppUuid()).delete( queryParameters);
+
+        assertNotNull( result );
+        assertNotNull( "ok",result.getStatus() );
+        assertTrue((int)((LinkedHashMap)result.getData()).get("count")==4);
+    }
+
 
     @Test
     public void testBoostrapAlreadyRun() {

http://git-wip-us.apache.org/repos/asf/usergrid/blob/ba8922b7/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/NamedResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/NamedResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/NamedResource.java
index 03f6b72..1a9c776 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/NamedResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/NamedResource.java
@@ -169,7 +169,7 @@ public class NamedResource implements UrlResource {
      */
     //For edge cases like Organizations and Tokens
     public ApiResponse post(Map map) {
-        return post( true, ApiResponse.class, map, null, false );
+        return post(true, ApiResponse.class, map, null, false);
 
     }
 
@@ -275,17 +275,17 @@ public class NamedResource implements UrlResource {
         if(useBasicAuthentication){
             //added httpBasicauth filter to all setup calls because they all do verification this way.
             HTTPBasicAuthFilter httpBasicAuthFilter = new HTTPBasicAuthFilter( "superuser","superpassword" );
-            resource.addFilter( httpBasicAuthFilter );
+            resource.addFilter(httpBasicAuthFilter);
         }
 
         GenericType<T> gt = new GenericType<>((Class) type);
-        return builder.post( gt.getRawClass() );
+        return builder.post(gt.getRawClass());
 
     }
 
     //For edge cases like Organizations and Tokens without any payload
     public <T> T get(Class<T> type) {
-        return get(type,null,true);
+        return get(type, null, true);
 
     }
 
@@ -308,7 +308,7 @@ public class NamedResource implements UrlResource {
         GenericType<T> gt = new GenericType<>((Class) type);
         return resource.type(MediaType.APPLICATION_JSON_TYPE)
             .accept( MediaType.APPLICATION_JSON )
-            .get( gt.getRawClass() );
+            .get(gt.getRawClass());
 
     }
 
@@ -322,34 +322,34 @@ public class NamedResource implements UrlResource {
     }
 
     public ApiResponse post( FormDataMultiPart multiPartForm ) {
-        return post( true, multiPartForm );
+        return post(true, multiPartForm);
     }
 
     public ApiResponse put( boolean useToken, byte[] data, MediaType type ) {
         WebResource resource = getResource(useToken);
-        return resource.type( type ).put( ApiResponse.class, data );
+        return resource.type( type ).put(ApiResponse.class, data);
     }
 
     public ApiResponse put( byte[] data, MediaType type ) {
-        return put( true, data, type );
+        return put(true, data, type);
     }
 
     public ApiResponse put( boolean useToken, FormDataMultiPart multiPartForm ) {
         WebResource resource = getResource(useToken);
-        return resource.type( MediaType.MULTIPART_FORM_DATA_TYPE ).put( ApiResponse.class, multiPartForm );
+        return resource.type( MediaType.MULTIPART_FORM_DATA_TYPE ).put(ApiResponse.class, multiPartForm);
     }
 
     public ApiResponse put( FormDataMultiPart multiPartForm ) {
-        return put( true, multiPartForm );
+        return put(true, multiPartForm);
     }
 
     public InputStream getAssetAsStream( boolean useToken ) {
         WebResource resource = getResource(useToken);
-        return resource.accept( MediaType.APPLICATION_OCTET_STREAM_TYPE ).get( InputStream.class );
+        return resource.accept( MediaType.APPLICATION_OCTET_STREAM_TYPE ).get(InputStream.class);
     }
 
     public InputStream getAssetAsStream() {
-        return getAssetAsStream( true );
+        return getAssetAsStream(true);
     }
 
     public ApiResponse delete( ) {
@@ -357,6 +357,14 @@ public class NamedResource implements UrlResource {
     }
 
     public ApiResponse delete( boolean useToken ) {
-        return getResource(useToken).delete( ApiResponse.class );
+        return getResource(useToken).delete(ApiResponse.class);
+    }
+
+    public ApiResponse delete( boolean useToken, QueryParameters queryParameters ) {
+        WebResource resource = getResource(useToken);
+        if(queryParameters!=null) {
+            resource = addParametersToResource(resource, queryParameters);
+        }
+        return resource.delete( ApiResponse.class );
     }
 }

http://git-wip-us.apache.org/repos/asf/usergrid/blob/ba8922b7/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/SystemResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/SystemResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/SystemResource.java
index cb8a369..c6a0586 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/SystemResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/SystemResource.java
@@ -20,10 +20,15 @@ package org.apache.usergrid.rest.test.resource.endpoints;
 
 import javax.ws.rs.core.MediaType;
 
+import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
 import org.apache.usergrid.rest.test.resource.model.ApiResponse;
 import org.apache.usergrid.rest.test.resource.model.Entity;
+import org.apache.usergrid.rest.test.resource.model.QueryParameters;
 import org.apache.usergrid.rest.test.resource.state.ClientContext;
 
+import java.util.UUID;
+
 
 /**
  * Handles making rest calls to system resources.
@@ -40,4 +45,24 @@ public class SystemResource extends NamedResource {
     }
 
 
+    public ApplicationsResource applications(String appid) {
+        return new ApplicationsResource(appid,context,this);
+    }
+    public class ApplicationsResource extends NamedResource {
+        public ApplicationsResource(final String appid, final ClientContext context, final UrlResource parent ) {
+            super( "applications/"+appid,context, parent );
+        }
+        public ApiResponse delete(QueryParameters queryParameters){
+
+            WebResource resource = getResource();
+            resource = addParametersToResource( resource, queryParameters );
+
+            //added httpBasicauth filter to all setup calls because they all do verification this way.
+            HTTPBasicAuthFilter httpBasicAuthFilter = new HTTPBasicAuthFilter( "superuser","superpassword" );
+            resource.addFilter(httpBasicAuthFilter);
+
+            return resource.type( MediaType.APPLICATION_JSON_TYPE ).accept( MediaType.APPLICATION_JSON )
+                .delete(ApiResponse.class);
+        }
+    }
 }


[5/8] usergrid git commit: fixed tests so edges don't get left behind

Posted by sn...@apache.org.
fixed tests so edges don't get left behind


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

Branch: refs/heads/two-dot-o-dev
Commit: a691ada9b0ad825eb0578d579c8bf043376d33de
Parents: ba8922b
Author: Shawn Feldman <sf...@apache.org>
Authored: Thu Sep 3 17:14:07 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Thu Sep 3 17:14:07 2015 -0600

----------------------------------------------------------------------
 .../service/ApplicationServiceImpl.java         | 74 +++++++++++++++++---
 .../org/apache/usergrid/persistence/Query.java  |  4 +-
 .../persistence/ApplicationServiceIT.java       | 48 +++++++++++--
 3 files changed, 110 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/a691ada9/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
index 07f7c13..2e4700a 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
@@ -22,15 +22,26 @@ package org.apache.usergrid.corepersistence.service;
 import com.google.inject.Inject;
 import org.apache.usergrid.corepersistence.asyncevents.AsyncEventService;
 import org.apache.usergrid.corepersistence.asyncevents.EventBuilder;
+import org.apache.usergrid.corepersistence.index.IndexService;
 import org.apache.usergrid.corepersistence.rx.impl.AllEntityIdsObservable;
 import org.apache.usergrid.corepersistence.util.CpNamingUtils;
+import org.apache.usergrid.persistence.EntityRef;
 import org.apache.usergrid.persistence.collection.EntityCollectionManager;
 import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
 import org.apache.usergrid.persistence.collection.serialization.impl.migration.EntityIdScope;
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.graph.GraphManager;
+import org.apache.usergrid.persistence.graph.GraphManagerFactory;
+import org.apache.usergrid.persistence.map.MapManager;
+import org.apache.usergrid.persistence.map.MapManagerFactory;
+import org.apache.usergrid.persistence.map.MapScope;
 import org.apache.usergrid.persistence.model.entity.Id;
+import org.apache.usergrid.persistence.model.entity.SimpleId;
 import rx.Observable;
 
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.createGraphOperationTimestamp;
+import static org.apache.usergrid.persistence.Schema.TYPE_APPLICATION;
+
 /**
  * implementation of application operations
  */
@@ -40,33 +51,80 @@ public class ApplicationServiceImpl  implements ApplicationService{
     private final EntityCollectionManagerFactory entityCollectionManagerFactory;
     private final AsyncEventService asyncEventService;
     private final EventBuilder eventBuilder;
+    private final MapManagerFactory mapManagerFactory;
+    private final GraphManagerFactory graphManagerFactory;
 
     @Inject
-    public ApplicationServiceImpl(AllEntityIdsObservable allEntityIdsObservable, EntityCollectionManagerFactory entityCollectionManagerFactory, AsyncEventService asyncEventService, EventBuilder eventBuilder){
+    public ApplicationServiceImpl(AllEntityIdsObservable allEntityIdsObservable,
+                                  EntityCollectionManagerFactory entityCollectionManagerFactory,
+                                  AsyncEventService asyncEventService,
+                                  EventBuilder eventBuilder,
+                                  MapManagerFactory mapManagerFactory,
+                                  GraphManagerFactory graphManagerFactory
+    ){
 
         this.allEntityIdsObservable = allEntityIdsObservable;
         this.entityCollectionManagerFactory = entityCollectionManagerFactory;
         this.asyncEventService = asyncEventService;
         this.eventBuilder = eventBuilder;
+        this.mapManagerFactory = mapManagerFactory;
+        this.graphManagerFactory = graphManagerFactory;
     }
     @Override
     public Observable<Id> deleteAllEntities(ApplicationScope applicationScope) {
-        if(applicationScope.getApplication().getUuid().equals(CpNamingUtils.MANAGEMENT_APPLICATION_ID)){
+        if (applicationScope.getApplication().getUuid().equals(CpNamingUtils.MANAGEMENT_APPLICATION_ID)) {
             throw new IllegalArgumentException("Can't delete from management app");
         }
 
         //EventBuilder eventBuilder = injector.getInstance(EventBuilder.class);
-        Observable appObservable  = Observable.just(applicationScope);
+        Observable appObservable = Observable.just(applicationScope);
         EntityCollectionManager entityCollectionManager = entityCollectionManagerFactory.createCollectionManager(applicationScope);
-
+        GraphManager graphManager = graphManagerFactory.createEdgeManager(applicationScope);
+        MapManager mapManager = getMapManagerForTypes(applicationScope);
 
         Observable<Id> countObservable = allEntityIdsObservable.getEntities(appObservable)
             //.map(entity -> eventBuilder.buildEntityDelete(applicationScope, entity.getId()).getEntitiesCompacted())
             .map(entityIdScope -> ((EntityIdScope) entityIdScope).getId())
-            .doOnNext(id ->
-                    entityCollectionManager.mark((Id) id)
-                        .doOnNext(id2 -> asyncEventService.queueEntityDelete(applicationScope, (Id) id2))
-            );
+            .skip(1)
+            .map(id -> {
+                    return entityCollectionManager.mark((Id) id)
+                        .mergeWith(graphManager.markNode((Id) id, createGraphOperationTimestamp()))
+                        .map(id2 -> id).toBlocking().last();
+                }
+            ).doOnNext(id -> deleteAsync(mapManager ,applicationScope, (Id) id));
+
+
         return countObservable;
     }
+
+    /**
+     * 4. Delete all entity documents out of elasticsearch.
+     * 5. Compact Graph so that it deletes the marked values.
+     * 6. Delete entity from cassandra using the map manager.
+     **/
+    private Id deleteAsync(MapManager mapManager, ApplicationScope applicationScope, Id entityId )  {
+        try {
+            //Step 4 && 5
+            asyncEventService.queueEntityDelete(applicationScope, entityId);
+            //Step 6
+            //delete from our UUID index
+            mapManager.delete(entityId.getUuid().toString());
+            return entityId;
+        }catch (Exception e){
+            throw new RuntimeException(e);
+        }
+
+    }
+    /**
+     * Get the map manager for uuid mapping
+     */
+    private MapManager getMapManagerForTypes( ApplicationScope applicationScope) {
+        Id mapOwner = new SimpleId( applicationScope.getApplication().getUuid(), TYPE_APPLICATION );
+
+        final MapScope ms = CpNamingUtils.getEntityTypeMapScope(mapOwner);
+
+        MapManager mm = mapManagerFactory.createMapManager(ms);
+
+        return mm;
+    }
 }

http://git-wip-us.apache.org/repos/asf/usergrid/blob/a691ada9/stack/core/src/main/java/org/apache/usergrid/persistence/Query.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/Query.java b/stack/core/src/main/java/org/apache/usergrid/persistence/Query.java
index 0074cc9..52e3b4e 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/Query.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/Query.java
@@ -158,7 +158,9 @@ public class Query {
 
         return query;
     }
-
+    public static Query all( ){
+        return fromQL("select *");
+    }
 
     /**
      * Create a query from a property equals

http://git-wip-us.apache.org/repos/asf/usergrid/blob/a691ada9/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java
index 5274987..d438304 100644
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java
+++ b/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java
@@ -19,8 +19,20 @@
  */
 package org.apache.usergrid.persistence;
 
+import com.google.common.base.Optional;
+import com.google.inject.Injector;
 import org.apache.usergrid.AbstractCoreIT;
+import org.apache.usergrid.cassandra.SpringResource;
+import org.apache.usergrid.corepersistence.service.AggregationService;
+import org.apache.usergrid.corepersistence.service.AggregationServiceFactory;
 import org.apache.usergrid.corepersistence.util.CpNamingUtils;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.graph.Edge;
+import org.apache.usergrid.persistence.graph.GraphManager;
+import org.apache.usergrid.persistence.graph.GraphManagerFactory;
+import org.apache.usergrid.persistence.graph.SearchByEdgeType;
+import org.apache.usergrid.persistence.graph.impl.SimpleSearchByEdge;
+import org.apache.usergrid.persistence.graph.impl.SimpleSearchByEdgeType;
 import org.apache.usergrid.persistence.model.entity.Id;
 import org.junit.Assert;
 import org.junit.Test;
@@ -29,14 +41,16 @@ import org.slf4j.LoggerFactory;
 import rx.Observable;
 
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
+import java.util.UUID;
 
 /**
  * testy test
  */
 public class ApplicationServiceIT extends AbstractCoreIT {
-    private static final Logger LOG = LoggerFactory.getLogger(ApplicationServiceIT.class);
 
+    private static final Logger LOG = LoggerFactory.getLogger( ApplicationServiceIT.class );
 
     public ApplicationServiceIT() {
         super();
@@ -46,16 +60,36 @@ public class ApplicationServiceIT extends AbstractCoreIT {
     public void testDeletes() throws Exception{
         EntityManager entityManager = this.app.getEntityManager();
         Map<String,Object> map = new HashMap<>();
-        Entity entity = entityManager.create("tests", map);
+        for(int i =0;i<10;i++) {
+            map.put("somekey", UUID.randomUUID());
+           Entity entity = entityManager.create("tests", map);
+        }
         this.app.refreshIndex();
         Thread.sleep(500);
+        ApplicationScope appScope  = CpNamingUtils.getApplicationScope(entityManager.getApplicationId());
         Observable<Id> ids =
-            this.app.getApplicationService().deleteAllEntities(CpNamingUtils.getApplicationScope(entityManager.getApplicationId()));
-        ids.toBlocking().last();
+            this.app.getApplicationService().deleteAllEntities(appScope);
+        int count = ids.count().toBlocking().last();
+        Assert.assertEquals(count, 13);
         this.app.refreshIndex();
-        Thread.sleep(500);
-        entity = entityManager.get(entity);
-        Assert.assertNull(entity);
+        Thread.sleep(5000);
+        Injector injector = SpringResource.getInstance().getBean(Injector.class);
+        GraphManagerFactory factory = injector.getInstance(GraphManagerFactory.class);
+        GraphManager graphManager = factory.createEdgeManager(appScope);
+        SimpleSearchByEdgeType simpleSearchByEdgeType = new SimpleSearchByEdgeType(
+            appScope.getApplication(),
+            CpNamingUtils.getEdgeTypeFromCollectionName("tests")
+            , Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING,
+            Optional.<Edge>absent() );
+
+        Iterator<Edge> results = graphManager.loadEdgesFromSource(simpleSearchByEdgeType).toBlocking().getIterator();
+        if(results.hasNext()){
+            Assert.fail();
+           
+        }else{
+
+            //success
+        }
     }
 
 }


[3/8] usergrid git commit: move delete call into resource

Posted by sn...@apache.org.
move delete call into resource


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

Branch: refs/heads/two-dot-o-dev
Commit: 657dad3ed5da8f185c939165d68083d7d14edc80
Parents: 10149d7
Author: Shawn Feldman <sf...@apache.org>
Authored: Thu Sep 3 14:49:04 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Thu Sep 3 14:49:04 2015 -0600

----------------------------------------------------------------------
 .../service/ApplicationServiceImpl.java         | 17 +++-
 .../java/org/apache/usergrid/Application.java   |  7 ++
 .../org/apache/usergrid/CoreApplication.java    |  4 +
 .../java/org/apache/usergrid/CoreITSetup.java   |  3 +
 .../org/apache/usergrid/CoreITSetupImpl.java    |  6 ++
 .../persistence/ApplicationServiceIT.java       | 61 +++++++++++++
 .../usergrid/rest/ApplicationsResource.java     | 93 ++++++++++++++++++++
 .../apache/usergrid/rest/SystemResource.java    | 38 ++------
 8 files changed, 193 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/657dad3e/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
index 72dd677..07f7c13 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
@@ -19,10 +19,14 @@
  */
 package org.apache.usergrid.corepersistence.service;
 
+import com.google.inject.Inject;
 import org.apache.usergrid.corepersistence.asyncevents.AsyncEventService;
 import org.apache.usergrid.corepersistence.asyncevents.EventBuilder;
 import org.apache.usergrid.corepersistence.rx.impl.AllEntityIdsObservable;
 import org.apache.usergrid.corepersistence.util.CpNamingUtils;
+import org.apache.usergrid.persistence.collection.EntityCollectionManager;
+import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
+import org.apache.usergrid.persistence.collection.serialization.impl.migration.EntityIdScope;
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
 import org.apache.usergrid.persistence.model.entity.Id;
 import rx.Observable;
@@ -33,12 +37,15 @@ import rx.Observable;
 public class ApplicationServiceImpl  implements ApplicationService{
 
     private final AllEntityIdsObservable allEntityIdsObservable;
+    private final EntityCollectionManagerFactory entityCollectionManagerFactory;
     private final AsyncEventService asyncEventService;
     private final EventBuilder eventBuilder;
 
-    public ApplicationServiceImpl(AllEntityIdsObservable allEntityIdsObservable, AsyncEventService asyncEventService, EventBuilder eventBuilder){
+    @Inject
+    public ApplicationServiceImpl(AllEntityIdsObservable allEntityIdsObservable, EntityCollectionManagerFactory entityCollectionManagerFactory, AsyncEventService asyncEventService, EventBuilder eventBuilder){
 
         this.allEntityIdsObservable = allEntityIdsObservable;
+        this.entityCollectionManagerFactory = entityCollectionManagerFactory;
         this.asyncEventService = asyncEventService;
         this.eventBuilder = eventBuilder;
     }
@@ -50,12 +57,16 @@ public class ApplicationServiceImpl  implements ApplicationService{
 
         //EventBuilder eventBuilder = injector.getInstance(EventBuilder.class);
         Observable appObservable  = Observable.just(applicationScope);
+        EntityCollectionManager entityCollectionManager = entityCollectionManagerFactory.createCollectionManager(applicationScope);
 
 
         Observable<Id> countObservable = allEntityIdsObservable.getEntities(appObservable)
             //.map(entity -> eventBuilder.buildEntityDelete(applicationScope, entity.getId()).getEntitiesCompacted())
-            .doOnNext(entity -> asyncEventService.queueEntityDelete(applicationScope, entity.getId()))
-            .map(entityIdScope -> entityIdScope.getId());
+            .map(entityIdScope -> ((EntityIdScope) entityIdScope).getId())
+            .doOnNext(id ->
+                    entityCollectionManager.mark((Id) id)
+                        .doOnNext(id2 -> asyncEventService.queueEntityDelete(applicationScope, (Id) id2))
+            );
         return countObservable;
     }
 }

http://git-wip-us.apache.org/repos/asf/usergrid/blob/657dad3e/stack/core/src/test/java/org/apache/usergrid/Application.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/Application.java b/stack/core/src/test/java/org/apache/usergrid/Application.java
index 56028bb..378a4f7 100644
--- a/stack/core/src/test/java/org/apache/usergrid/Application.java
+++ b/stack/core/src/test/java/org/apache/usergrid/Application.java
@@ -20,6 +20,7 @@ package org.apache.usergrid;
 import java.util.Map;
 import java.util.UUID;
 
+import org.apache.usergrid.corepersistence.service.ApplicationService;
 import org.junit.rules.TestRule;
 
 import org.apache.usergrid.persistence.Entity;
@@ -158,4 +159,10 @@ public interface Application extends TestRule {
      * @return
      */
     public EntityManager getEntityManager();
+
+    /**
+     * get application service
+     * @return
+     */
+    ApplicationService getApplicationService();
 }

http://git-wip-us.apache.org/repos/asf/usergrid/blob/657dad3e/stack/core/src/test/java/org/apache/usergrid/CoreApplication.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/CoreApplication.java b/stack/core/src/test/java/org/apache/usergrid/CoreApplication.java
index 465d238..f152389 100644
--- a/stack/core/src/test/java/org/apache/usergrid/CoreApplication.java
+++ b/stack/core/src/test/java/org/apache/usergrid/CoreApplication.java
@@ -25,6 +25,7 @@ import java.util.concurrent.ExecutionException;
 
 import com.google.inject.Injector;
 import org.apache.usergrid.corepersistence.index.IndexLocationStrategyFactory;
+import org.apache.usergrid.corepersistence.service.ApplicationService;
 import org.apache.usergrid.corepersistence.util.CpNamingUtils;
 import org.apache.usergrid.persistence.index.*;
 import org.apache.usergrid.persistence.model.entity.Id;
@@ -244,4 +245,7 @@ public class CoreApplication implements Application, TestRule {
     public EntityManager getEntityManager() {
         return em;
     }
+
+    @Override
+    public ApplicationService getApplicationService(){ return setup.getApplicationService();}
 }

http://git-wip-us.apache.org/repos/asf/usergrid/blob/657dad3e/stack/core/src/test/java/org/apache/usergrid/CoreITSetup.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/CoreITSetup.java b/stack/core/src/test/java/org/apache/usergrid/CoreITSetup.java
index 6da0515..7a0ebae 100644
--- a/stack/core/src/test/java/org/apache/usergrid/CoreITSetup.java
+++ b/stack/core/src/test/java/org/apache/usergrid/CoreITSetup.java
@@ -20,6 +20,7 @@ package org.apache.usergrid;
 import java.util.UUID;
 
 import com.google.inject.Injector;
+import org.apache.usergrid.corepersistence.service.ApplicationService;
 import org.apache.usergrid.persistence.index.EntityIndex;
 import org.junit.rules.TestRule;
 
@@ -44,4 +45,6 @@ public interface CoreITSetup extends TestRule {
     Injector getInjector();
 
     TestEntityIndex getEntityIndex();
+
+    ApplicationService getApplicationService();
 }

http://git-wip-us.apache.org/repos/asf/usergrid/blob/657dad3e/stack/core/src/test/java/org/apache/usergrid/CoreITSetupImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/CoreITSetupImpl.java b/stack/core/src/test/java/org/apache/usergrid/CoreITSetupImpl.java
index 30e8b35..d2129a4 100644
--- a/stack/core/src/test/java/org/apache/usergrid/CoreITSetupImpl.java
+++ b/stack/core/src/test/java/org/apache/usergrid/CoreITSetupImpl.java
@@ -19,6 +19,7 @@ package org.apache.usergrid;
 
 import com.google.inject.Injector;
 import org.apache.usergrid.cassandra.SpringResource;
+import org.apache.usergrid.corepersistence.service.ApplicationService;
 import org.apache.usergrid.mq.QueueManagerFactory;
 import org.apache.usergrid.persistence.Entity;
 import org.apache.usergrid.persistence.EntityManagerFactory;
@@ -113,6 +114,11 @@ public class CoreITSetupImpl implements CoreITSetup, TestEntityIndex {
          return qmf;
     }
 
+    @Override
+    public ApplicationService getApplicationService(){
+        return injector.getInstance(ApplicationService.class);
+    }
+
 
     @Override
     public CassandraService getCassSvc() {

http://git-wip-us.apache.org/repos/asf/usergrid/blob/657dad3e/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java
new file mode 100644
index 0000000..5274987
--- /dev/null
+++ b/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java
@@ -0,0 +1,61 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  *  contributor license agreements.  The ASF licenses this file to You
+ *  * under the Apache License, Version 2.0 (the "License"); you may not
+ *  * use this file except in compliance with the License.
+ *  * You may obtain a copy of the License at
+ *  *
+ *  *     http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing, software
+ *  * distributed under the License is distributed on an "AS IS" BASIS,
+ *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  * See the License for the specific language governing permissions and
+ *  * limitations under the License.  For additional information regarding
+ *  * copyright in this work, please see the NOTICE file in the top level
+ *  * directory of this distribution.
+ *
+ */
+package org.apache.usergrid.persistence;
+
+import org.apache.usergrid.AbstractCoreIT;
+import org.apache.usergrid.corepersistence.util.CpNamingUtils;
+import org.apache.usergrid.persistence.model.entity.Id;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import rx.Observable;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * testy test
+ */
+public class ApplicationServiceIT extends AbstractCoreIT {
+    private static final Logger LOG = LoggerFactory.getLogger(ApplicationServiceIT.class);
+
+
+    public ApplicationServiceIT() {
+        super();
+    }
+
+    @Test
+    public void testDeletes() throws Exception{
+        EntityManager entityManager = this.app.getEntityManager();
+        Map<String,Object> map = new HashMap<>();
+        Entity entity = entityManager.create("tests", map);
+        this.app.refreshIndex();
+        Thread.sleep(500);
+        Observable<Id> ids =
+            this.app.getApplicationService().deleteAllEntities(CpNamingUtils.getApplicationScope(entityManager.getApplicationId()));
+        ids.toBlocking().last();
+        this.app.refreshIndex();
+        Thread.sleep(500);
+        entity = entityManager.get(entity);
+        Assert.assertNull(entity);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/usergrid/blob/657dad3e/stack/rest/src/main/java/org/apache/usergrid/rest/ApplicationsResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/ApplicationsResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/ApplicationsResource.java
new file mode 100644
index 0000000..4504387
--- /dev/null
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/ApplicationsResource.java
@@ -0,0 +1,93 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  *  contributor license agreements.  The ASF licenses this file to You
+ *  * under the Apache License, Version 2.0 (the "License"); you may not
+ *  * use this file except in compliance with the License.
+ *  * You may obtain a copy of the License at
+ *  *
+ *  *     http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing, software
+ *  * distributed under the License is distributed on an "AS IS" BASIS,
+ *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  * See the License for the specific language governing permissions and
+ *  * limitations under the License.  For additional information regarding
+ *  * copyright in this work, please see the NOTICE file in the top level
+ *  * directory of this distribution.
+ *
+ */
+package org.apache.usergrid.rest;
+
+import com.sun.jersey.api.json.JSONWithPadding;
+import org.apache.usergrid.rest.security.annotations.RequireSystemAccess;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.UriInfo;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Classy class class.
+ */
+@Component
+@Scope( "singleton" )
+@Produces( {
+    MediaType.APPLICATION_JSON, "application/javascript", "application/x-javascript", "text/ecmascript",
+    "application/ecmascript", "text/jscript"
+} )
+public class ApplicationsResource extends AbstractContextResource {
+
+    private static final Logger logger = LoggerFactory.getLogger(ApplicationsResource.class);
+
+
+    public ApplicationsResource() {
+
+        logger.info( "ApplicationsResource initialized" );
+    } {
+
+    }
+
+    @RequireSystemAccess
+    @DELETE
+    @Path( "{applicationId}" )
+    public JSONWithPadding clearApplication( @Context UriInfo ui,
+                                             @PathParam("applicationId") UUID applicationId,
+                                             @QueryParam( "confirmApplicationId" ) UUID confirmApplicationId,
+                                             @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback )
+        throws Exception {
+
+        if(confirmApplicationId == null || !confirmApplicationId.equals(applicationId)){
+            throw new IllegalArgumentException("please make confirmApplicationId equal to applicationId");
+        }
+
+        ApiResponse response = createApiResponse();
+        response.setAction( "clear application" );
+
+        logger.info( "clearing up application" );
+        AtomicInteger itemsDeleted = new AtomicInteger(0);
+        try {
+            management.deleteAllEntities(applicationId)
+                .count()
+                .doOnNext(count -> itemsDeleted.set(count))
+                .toBlocking().lastOrDefault(0);
+        }
+        catch ( Exception e ) {
+            logger.error( "Unable to delete all items, deleted: " + itemsDeleted.get(), e );
+        }
+        Map<String,Object> data = new HashMap<>();
+        data.put("count",itemsDeleted.get());
+        response.setData(data);
+        response.setSuccess();
+        return new JSONWithPadding( response, callback );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/usergrid/blob/657dad3e/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
index 20f0fa4..f266441 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
@@ -79,39 +79,6 @@ public class SystemResource extends AbstractContextResource {
         return new JSONWithPadding( response, callback );
     }
 
-    @RequireSystemAccess
-    @DELETE
-    @Path( "applications/{applicationId}" )
-    public JSONWithPadding clearApplication( @Context UriInfo ui,
-                                               @PathParam("applicationId") UUID applicationId,
-                                               @QueryParam( "confirmApplicationId" ) UUID confirmApplicationId,
-                                              @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback )
-        throws Exception {
-
-        if(confirmApplicationId == null || !confirmApplicationId.equals(applicationId)){
-            throw new IllegalArgumentException("please make confirmApplicationId equal to applicationId");
-        }
-
-        ApiResponse response = createApiResponse();
-        response.setAction( "clear application" );
-
-        logger.info( "clearing up application" );
-        AtomicInteger itemsDeleted = new AtomicInteger(0);
-        try {
-             management.deleteAllEntities(applicationId)
-             .count()
-             .doOnNext(count -> itemsDeleted.set(count))
-             .toBlocking().lastOrDefault(0);
-        }
-        catch ( Exception e ) {
-            logger.error( "Unable to delete all items, deleted: " + itemsDeleted.get(), e );
-        }
-        Map<String,Object> data = new HashMap<>();
-        data.put("count",itemsDeleted.get());
-        response.setData(data);
-        response.setSuccess();
-        return new JSONWithPadding( response, callback );
-    }
 
 
     @Path( "migrate" )
@@ -128,4 +95,9 @@ public class SystemResource extends AbstractContextResource {
     public DatabaseResource database() {
         return getSubResource( DatabaseResource.class );
     }
+
+    @Path( "applications" )
+    public ApplicationsResource applications() {
+        return getSubResource( ApplicationsResource.class );
+    }
 }


[7/8] usergrid git commit: changing observable and tests

Posted by sn...@apache.org.
changing observable and tests


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

Branch: refs/heads/two-dot-o-dev
Commit: c90b6427a032cb878b730cf1b3f5a493d2a3f417
Parents: d21deaa
Author: Shawn Feldman <sf...@apache.org>
Authored: Thu Sep 3 17:47:43 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Thu Sep 3 17:47:43 2015 -0600

----------------------------------------------------------------------
 .../service/ApplicationServiceImpl.java               | 14 ++++++--------
 .../org/apache/usergrid/rest/SystemResourceIT.java    |  3 ++-
 2 files changed, 8 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/c90b6427/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
index 2e4700a..42d5e51 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
@@ -85,15 +85,13 @@ public class ApplicationServiceImpl  implements ApplicationService{
         Observable<Id> countObservable = allEntityIdsObservable.getEntities(appObservable)
             //.map(entity -> eventBuilder.buildEntityDelete(applicationScope, entity.getId()).getEntitiesCompacted())
             .map(entityIdScope -> ((EntityIdScope) entityIdScope).getId())
-            .skip(1)
+            .skip(1)//skip application entity
             .map(id -> {
-                    return entityCollectionManager.mark((Id) id)
-                        .mergeWith(graphManager.markNode((Id) id, createGraphOperationTimestamp()))
-                        .map(id2 -> id).toBlocking().last();
-                }
-            ).doOnNext(id -> deleteAsync(mapManager ,applicationScope, (Id) id));
-
-
+                entityCollectionManager.mark((Id) id)
+                    .mergeWith(graphManager.markNode((Id) id, createGraphOperationTimestamp())).toBlocking().last();
+                return id;
+            })
+            .doOnNext(id -> deleteAsync(mapManager, applicationScope, (Id) id));
         return countObservable;
     }
 

http://git-wip-us.apache.org/repos/asf/usergrid/blob/c90b6427/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java
index 5c89422..4523b56 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java
@@ -25,6 +25,7 @@ import org.apache.usergrid.rest.test.resource.model.QueryParameters;
 
 import java.util.LinkedHashMap;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
@@ -60,7 +61,7 @@ public class SystemResourceIT extends AbstractRestIT {
 
         assertNotNull( result );
         assertNotNull( "ok",result.getStatus() );
-        assertTrue((int)((LinkedHashMap)result.getData()).get("count")==4);
+        assertEquals(((LinkedHashMap) result.getData()).get("count"), 3);
     }
 
 


[8/8] usergrid git commit: Merge branch 'two-dot-o-dev' of https://git-wip-us.apache.org/repos/asf/usergrid into two-dot-o-dev

Posted by sn...@apache.org.
Merge branch 'two-dot-o-dev' of https://git-wip-us.apache.org/repos/asf/usergrid into two-dot-o-dev


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

Branch: refs/heads/two-dot-o-dev
Commit: e25f2c39c161a3761e6c9631ceff6bd558c8178b
Parents: c90b642 4c406ed
Author: Dave Johnson <sn...@apache.org>
Authored: Fri Sep 4 09:41:34 2015 -0400
Committer: Dave Johnson <sn...@apache.org>
Committed: Fri Sep 4 09:41:34 2015 -0400

----------------------------------------------------------------------
 stack/rest/src/main/resources/usergrid-rest-deploy-context.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------



[6/8] usergrid git commit: fixed tests so edges don't get left behind

Posted by sn...@apache.org.
fixed tests so edges don't get left behind


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

Branch: refs/heads/two-dot-o-dev
Commit: d21deaaa4a466e14593afc6c778e823c5aaef577
Parents: a691ada
Author: Shawn Feldman <sf...@apache.org>
Authored: Thu Sep 3 17:28:13 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Thu Sep 3 17:28:13 2015 -0600

----------------------------------------------------------------------
 .../apache/usergrid/persistence/ApplicationServiceIT.java | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/d21deaaa/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java
index d438304..9b20f72 100644
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java
+++ b/stack/core/src/test/java/org/apache/usergrid/persistence/ApplicationServiceIT.java
@@ -84,10 +84,14 @@ public class ApplicationServiceIT extends AbstractCoreIT {
 
         Iterator<Edge> results = graphManager.loadEdgesFromSource(simpleSearchByEdgeType).toBlocking().getIterator();
         if(results.hasNext()){
-            Assert.fail();
-           
-        }else{
+            Assert.fail("should be empty");
 
+        }else{
+            Results searchCollection = entityManager.searchCollection(entityManager.getApplication(), "tests", Query.all());
+            Assert.assertEquals(searchCollection.size(),0);
+            AggregationServiceFactory aggregationServiceFactory = injector.getInstance(AggregationServiceFactory.class);
+            long size = aggregationServiceFactory.getAggregationService().getCollectionSize(appScope,"tests");
+            Assert.assertEquals(size,0);
             //success
         }
     }


[2/8] usergrid git commit: queue up deletes

Posted by sn...@apache.org.
queue up deletes


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

Branch: refs/heads/two-dot-o-dev
Commit: 10149d740349cf37fbab0099f19379f2842c655a
Parents: 09e8183
Author: Shawn Feldman <sf...@apache.org>
Authored: Thu Sep 3 13:58:59 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Thu Sep 3 13:58:59 2015 -0600

----------------------------------------------------------------------
 .../usergrid/corepersistence/service/ApplicationService.java  | 3 ++-
 .../corepersistence/service/ApplicationServiceImpl.java       | 7 ++++---
 .../main/java/org/apache/usergrid/rest/SystemResource.java    | 1 +
 .../org/apache/usergrid/management/ManagementService.java     | 3 ++-
 .../usergrid/management/cassandra/ManagementServiceImpl.java  | 3 ++-
 5 files changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/10149d74/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationService.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationService.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationService.java
index 18b1e60..73547a7 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationService.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationService.java
@@ -20,6 +20,7 @@
 package org.apache.usergrid.corepersistence.service;
 
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.model.entity.Id;
 import rx.Observable;
 
 /**
@@ -27,5 +28,5 @@ import rx.Observable;
  */
 public interface ApplicationService {
 
-    Observable<Integer> deleteAllEntities(ApplicationScope applicationScope);
+    Observable<Id> deleteAllEntities(ApplicationScope applicationScope);
 }

http://git-wip-us.apache.org/repos/asf/usergrid/blob/10149d74/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
index 0becab4..72dd677 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/ApplicationServiceImpl.java
@@ -24,6 +24,7 @@ import org.apache.usergrid.corepersistence.asyncevents.EventBuilder;
 import org.apache.usergrid.corepersistence.rx.impl.AllEntityIdsObservable;
 import org.apache.usergrid.corepersistence.util.CpNamingUtils;
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.model.entity.Id;
 import rx.Observable;
 
 /**
@@ -42,7 +43,7 @@ public class ApplicationServiceImpl  implements ApplicationService{
         this.eventBuilder = eventBuilder;
     }
     @Override
-    public Observable<Integer> deleteAllEntities(ApplicationScope applicationScope) {
+    public Observable<Id> deleteAllEntities(ApplicationScope applicationScope) {
         if(applicationScope.getApplication().getUuid().equals(CpNamingUtils.MANAGEMENT_APPLICATION_ID)){
             throw new IllegalArgumentException("Can't delete from management app");
         }
@@ -51,10 +52,10 @@ public class ApplicationServiceImpl  implements ApplicationService{
         Observable appObservable  = Observable.just(applicationScope);
 
 
-        Observable<Integer> countObservable = allEntityIdsObservable.getEntities(appObservable)
+        Observable<Id> countObservable = allEntityIdsObservable.getEntities(appObservable)
             //.map(entity -> eventBuilder.buildEntityDelete(applicationScope, entity.getId()).getEntitiesCompacted())
             .doOnNext(entity -> asyncEventService.queueEntityDelete(applicationScope, entity.getId()))
-            .count();
+            .map(entityIdScope -> entityIdScope.getId());
         return countObservable;
     }
 }

http://git-wip-us.apache.org/repos/asf/usergrid/blob/10149d74/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
index ace8fd0..20f0fa4 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
@@ -99,6 +99,7 @@ public class SystemResource extends AbstractContextResource {
         AtomicInteger itemsDeleted = new AtomicInteger(0);
         try {
              management.deleteAllEntities(applicationId)
+             .count()
              .doOnNext(count -> itemsDeleted.set(count))
              .toBlocking().lastOrDefault(0);
         }

http://git-wip-us.apache.org/repos/asf/usergrid/blob/10149d74/stack/services/src/main/java/org/apache/usergrid/management/ManagementService.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/ManagementService.java b/stack/services/src/main/java/org/apache/usergrid/management/ManagementService.java
index 4b05b94..25a693b 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/ManagementService.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/ManagementService.java
@@ -30,6 +30,7 @@ import org.apache.usergrid.persistence.index.query.Identifier;
 import org.apache.usergrid.persistence.entities.Application;
 import org.apache.usergrid.persistence.entities.Group;
 import org.apache.usergrid.persistence.entities.User;
+import org.apache.usergrid.persistence.model.entity.Id;
 import org.apache.usergrid.security.oauth.AccessInfo;
 import org.apache.usergrid.security.shiro.PrincipalCredentialsToken;
 import org.apache.usergrid.services.ServiceResults;
@@ -345,5 +346,5 @@ public interface ManagementService {
      * @param applicationId
      * @return
      */
-    Observable<Integer> deleteAllEntities(UUID applicationId);
+    Observable<Id> deleteAllEntities(UUID applicationId);
 }

http://git-wip-us.apache.org/repos/asf/usergrid/blob/10149d74/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 437b1a4..1ef5659 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
@@ -48,6 +48,7 @@ import org.apache.usergrid.persistence.exceptions.ApplicationAlreadyExistsExcept
 import org.apache.usergrid.persistence.exceptions.DuplicateUniquePropertyExistsException;
 import org.apache.usergrid.persistence.exceptions.EntityNotFoundException;
 import org.apache.usergrid.persistence.index.query.Identifier;
+import org.apache.usergrid.persistence.model.entity.Id;
 import org.apache.usergrid.security.AuthPrincipalInfo;
 import org.apache.usergrid.security.AuthPrincipalType;
 import org.apache.usergrid.security.crypto.EncryptionService;
@@ -3067,7 +3068,7 @@ public class ManagementServiceImpl implements ManagementService {
     }
 
     @Override
-    public Observable<Integer> deleteAllEntities(UUID applicationId){
+    public Observable<Id> deleteAllEntities(UUID applicationId){
         if(applicationId.equals(CpNamingUtils.MANAGEMENT_APPLICATION_ID)){
             throw new IllegalArgumentException("Can't delete from management app");
         }