You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sf...@apache.org on 2015/09/21 00:04:07 UTC
[31/31] usergrid git commit: merge from 1022
merge from 1022
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/684bf2af
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/684bf2af
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/684bf2af
Branch: refs/heads/USERGRID-1022
Commit: 684bf2afdc0a8c1dec271736e03b1b9ecb586beb
Parents: a2389e6 549be61
Author: Shawn Feldman <sf...@apache.org>
Authored: Sun Sep 20 18:02:51 2015 -0400
Committer: Shawn Feldman <sf...@apache.org>
Committed: Sun Sep 20 18:02:51 2015 -0400
----------------------------------------------------------------------
.../usergrid/corepersistence/CoreModule.java | 4 -
.../corepersistence/CpEntityManager.java | 31 +-
.../corepersistence/CpRelationManager.java | 27 +-
.../asyncevents/EventBuilderImpl.java | 44 +--
.../corepersistence/index/IndexServiceImpl.java | 26 +-
.../read/search/CandidateEntityFilter.java | 15 +-
.../pipeline/read/search/CandidateIdFilter.java | 14 +-
.../usergrid/persistence/EntityManager.java | 2 +
.../corepersistence/StaleIndexCleanupTest.java | 14 +-
.../usergrid/persistence/CollectionIT.java | 10 +-
.../usergrid/persistence/PermissionsIT.java | 7 +-
.../core/future/FutureObservable.java | 44 ---
.../persistence/index/EntityIndexBatch.java | 8 +-
.../usergrid/persistence/index/IndexFig.java | 18 --
.../persistence/index/guice/IndexModule.java | 2 +-
.../index/impl/EsEntityIndexBatchImpl.java | 21 +-
.../index/impl/EsEntityIndexFactoryImpl.java | 8 +-
.../index/impl/EsEntityIndexImpl.java | 6 +-
.../index/impl/EsIndexBufferConsumerImpl.java | 286 -------------------
.../index/impl/EsIndexProducerImpl.java | 218 ++++++++++++++
.../index/impl/IndexBufferConsumer.java | 36 ---
.../index/impl/IndexOperationMessage.java | 18 --
.../persistence/index/impl/IndexProducer.java | 39 +++
.../index/impl/IndexRefreshCommandImpl.java | 4 +-
.../persistence/index/impl/EntityIndexTest.java | 66 ++---
.../persistence/index/impl/GeoPagingTest.java | 5 +-
.../index/impl/IndexLoadTestsIT.java | 6 +-
.../usergrid/rest/ApplicationsResource.java | 166 -----------
.../apache/usergrid/rest/DatabaseResource.java | 99 -------
.../apache/usergrid/rest/SystemResource.java | 19 +-
.../rest/system/ApplicationsResource.java | 168 +++++++++++
.../usergrid/rest/system/DatabaseResource.java | 101 +++++++
.../rest/system/QueueSystemResource.java | 77 +++++
.../apache/usergrid/rest/SystemResourceIT.java | 24 +-
.../collection/groups/GroupResourceIT.java | 6 +-
.../test/resource/endpoints/NamedResource.java | 163 ++++++-----
.../test/resource/endpoints/RootResource.java | 5 +
.../test/resource/endpoints/SubResource.java | 37 +++
.../test/resource/endpoints/SystemResource.java | 7 +-
.../test/resource/endpoints/UrlResource.java | 8 +
.../services/notifications/gcm/GCMAdapter.java | 7 +-
.../usergrid/services/roles/RolesService.java | 12 -
42 files changed, 956 insertions(+), 922 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/684bf2af/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
----------------------------------------------------------------------
diff --cc stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
index 3497621,fd85d94..1514e48
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/SystemResource.java
@@@ -24,12 -30,11 +30,15 @@@ import org.slf4j.LoggerFactory
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
+ import org.apache.usergrid.rest.security.annotations.RequireSystemAccess;
+
-import com.sun.jersey.api.json.JSONWithPadding;
+import javax.ws.rs.*;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.UriInfo;
+
+
@Path( "/system" )
@Component
@Scope( "singleton" )
@@@ -49,12 -54,9 +58,11 @@@ public class SystemResource extends Abs
@RequireSystemAccess
@GET
+
@Path( "superuser/setup" )
- @JSONP
- public JSONWithPadding getSetupSuperuser( @Context UriInfo ui,
- @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback )
+ @Produces({MediaType.APPLICATION_JSON, "application/javascript"})
+ public ApiResponse getSetupSuperuser( @Context UriInfo ui,
+ @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback )
throws Exception {
ApiResponse response = createApiResponse();
http://git-wip-us.apache.org/repos/asf/usergrid/blob/684bf2af/stack/rest/src/main/java/org/apache/usergrid/rest/system/ApplicationsResource.java
----------------------------------------------------------------------
diff --cc stack/rest/src/main/java/org/apache/usergrid/rest/system/ApplicationsResource.java
index 0000000,724a8cf..82bc4c8
mode 000000,100644..100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/system/ApplicationsResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/system/ApplicationsResource.java
@@@ -1,0 -1,168 +1,168 @@@
+ /*
+ *
+ * * Licensed to the Apache Software Foundation (ASF) under one or more
+ * * contributor license agreements. The ASF licenses this file to You
+ * * under the Apache License, Version 2.0 (the "License"); you may not
+ * * use this file except in compliance with the License.
+ * * You may obtain a copy of the License at
+ * *
+ * * http://www.apache.org/licenses/LICENSE-2.0
+ * *
+ * * Unless required by applicable law or agreed to in writing, software
+ * * distributed under the License is distributed on an "AS IS" BASIS,
+ * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * * See the License for the specific language governing permissions and
+ * * limitations under the License. For additional information regarding
+ * * copyright in this work, please see the NOTICE file in the top level
+ * * directory of this distribution.
+ *
+ */
+ package org.apache.usergrid.rest.system;
+
-import com.sun.jersey.api.json.JSONWithPadding;
++import com.fasterxml.jackson.jaxrs.json.annotation.JSONP;
+ import org.apache.usergrid.corepersistence.service.StatusService;
+ import org.apache.usergrid.persistence.EntityManager;
+ import org.apache.usergrid.persistence.model.util.UUIDGenerator;
+ import org.apache.usergrid.rest.AbstractContextResource;
+ import org.apache.usergrid.rest.ApiResponse;
+ import org.apache.usergrid.rest.security.annotations.RequireSystemAccess;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ import org.springframework.context.annotation.Scope;
+ import org.springframework.stereotype.Component;
+
+ import javax.ws.rs.*;
+ import javax.ws.rs.core.Context;
+ import javax.ws.rs.core.MediaType;
+ import javax.ws.rs.core.UriInfo;
+ import java.util.HashMap;
+ import java.util.LinkedHashMap;
+ import java.util.Map;
+ import java.util.UUID;
+ import java.util.concurrent.atomic.AtomicInteger;
+
+ /**
+ * Classy class class.
+ */
+ @Component
+ @Scope( "singleton" )
+ @Produces( {
+ MediaType.APPLICATION_JSON, "application/javascript", "application/x-javascript", "text/ecmascript",
+ "application/ecmascript", "text/jscript"
+ } )
+ public class ApplicationsResource extends AbstractContextResource {
+
+ private static final Logger logger = LoggerFactory.getLogger(ApplicationsResource.class);
+
+
+ public ApplicationsResource() {
-
+ logger.info( "ApplicationsResource initialized" );
- } {
-
+ }
+
+ @RequireSystemAccess
+ @DELETE
++ @JSONP
+ @Path( "{applicationId}" )
- public JSONWithPadding clearApplication( @Context UriInfo ui,
- @PathParam("applicationId") UUID applicationId,
- @QueryParam( "confirmApplicationName" ) String confirmApplicationName,
- @QueryParam( "limit" ) int limit,
- @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback )
++ public ApiResponse clearApplication(
++ @Context UriInfo ui,
++ @PathParam("applicationId") UUID applicationId,
++ @QueryParam( "confirmApplicationName" ) String confirmApplicationName,
++ @QueryParam( "limit" ) int limit,
++ @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback )
++
+ throws Exception {
+
+ if(confirmApplicationName == null){
+ throw new IllegalArgumentException("please make add a QueryString for confirmApplicationName");
+ }
+
+ final UUID jobId = UUIDGenerator.newTimeUUID();
+
+ final EntityManager em = emf.getEntityManager(applicationId);
+ final String name = em.getApplication().getApplicationName();
+ if(!name.toLowerCase().equals(confirmApplicationName.toLowerCase())){
- throw new IllegalArgumentException("confirmApplicationName: " + confirmApplicationName + " does not equal " + name);
++ throw new IllegalArgumentException(
++ "confirmApplicationName: " + confirmApplicationName + " does not equal " + name);
+ }
+ final StatusService statusService = injector.getInstance(StatusService.class);
+
+ final ApiResponse response = createApiResponse();
+
+ response.setAction( "clear application" );
+
+ logger.info("clearing up application");
+
-
+ final Thread delete = new Thread() {
+
+ @Override
+ public void run() {
+ final AtomicInteger itemsDeleted = new AtomicInteger(0);
+ try {
+ management.deleteAllEntities(applicationId, limit)
+ .map(id -> itemsDeleted.incrementAndGet())
+ .doOnNext(count -> {
+ if( count % 100 == 0 ){
+ Map<String,Object> map = new LinkedHashMap<>();
+ map.put("count",itemsDeleted.intValue());
+ final StatusService statusService = injector.getInstance(StatusService.class);
+ statusService.setStatus(applicationId, jobId, StatusService.Status.INPROGRESS,map).subscribe();
+ }
+ })
+ .doOnCompleted(() ->{
+ Map<String,Object> map = new LinkedHashMap<>();
+ map.put("count",itemsDeleted.intValue());
+ final StatusService statusService = injector.getInstance(StatusService.class);
+ statusService.setStatus(applicationId,jobId, StatusService.Status.COMPLETE,map).subscribe();
+ })
+ .subscribe();
+
+ } catch ( Exception e ) {
+ Map<String,Object> map = new LinkedHashMap<>();
+ map.put("exception",e);
+ statusService.setStatus(applicationId,jobId, StatusService.Status.FAILED,map).subscribe();
+ logger.error( "Failed to delete appid:"+applicationId + " jobid:"+jobId+" count:"+itemsDeleted, e );
+ }
+ }
+ };
+
+ delete.setName("Delete for app : " + applicationId + " job: " + jobId);
+ delete.setDaemon(true);
+ delete.start();
+
+ statusService.setStatus(applicationId,jobId, StatusService.Status.STARTED,new LinkedHashMap<>()).subscribe();
+
+ Map<String,Object> data = new HashMap<>();
+ data.put("jobId",jobId);
+ data.put("status",StatusService.Status.STARTED);
+ response.setData(data);
+ response.setSuccess();
- return new JSONWithPadding( response, callback );
++ return response;
+ }
+
+ @RequireSystemAccess
+ @GET
+ @Path( "{applicationId}/job/{jobId}" )
- public JSONWithPadding getStatus( @Context UriInfo ui,
- @PathParam("applicationId") UUID applicationId,
- @PathParam("jobId") UUID jobId,
- @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback ) throws Exception{
++ public ApiResponse getStatus(
++ @Context UriInfo ui,
++ @PathParam("applicationId") UUID applicationId,
++ @PathParam("jobId") UUID jobId,
++ @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback ) throws Exception{
++
+ final StatusService statusService = injector.getInstance(StatusService.class);
+
+ final ApiResponse response = createApiResponse();
+
+ response.setAction( "clear application" );
+
+ StatusService.JobStatus jobStatus = statusService.getStatus(applicationId, jobId).toBlocking().lastOrDefault(null);
+
+ Map<String,Object> data = new HashMap<>();
+ data.put("jobId",jobId);
+ data.put( "status", jobStatus.getStatus().toString() );
+ data.put( "metadata", jobStatus.getData() );
+ response.setData(data);
+ response.setSuccess();
-
- return new JSONWithPadding( response, callback );
-
++ return response;
+ }
+
+ }
http://git-wip-us.apache.org/repos/asf/usergrid/blob/684bf2af/stack/rest/src/main/java/org/apache/usergrid/rest/system/DatabaseResource.java
----------------------------------------------------------------------
diff --cc stack/rest/src/main/java/org/apache/usergrid/rest/system/DatabaseResource.java
index 0000000,f24bfc8..b261c96
mode 000000,100644..100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/system/DatabaseResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/system/DatabaseResource.java
@@@ -1,0 -1,100 +1,101 @@@
+ /*
+ * 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.system;
+
+
+ import javax.ws.rs.DefaultValue;
+ import javax.ws.rs.PUT;
+ import javax.ws.rs.Path;
+ import javax.ws.rs.Produces;
+ import javax.ws.rs.QueryParam;
+ import javax.ws.rs.core.Context;
+ import javax.ws.rs.core.MediaType;
+ import javax.ws.rs.core.UriInfo;
+
+ import org.apache.usergrid.rest.AbstractContextResource;
+ import org.apache.usergrid.rest.ApiResponse;
++import com.fasterxml.jackson.jaxrs.json.annotation.JSONP;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ import org.springframework.context.annotation.Scope;
+ import org.springframework.stereotype.Component;
+
+ import org.apache.usergrid.rest.security.annotations.RequireSystemAccess;
+
-import com.sun.jersey.api.json.JSONWithPadding;
-
+
+ @Component
+ @Scope( "singleton" )
+ @Produces( {
+ MediaType.APPLICATION_JSON, "application/javascript", "application/x-javascript", "text/ecmascript",
+ "application/ecmascript", "text/jscript"
+ } )
+ public class DatabaseResource extends AbstractContextResource {
+
+ private static final Logger logger = LoggerFactory.getLogger( DatabaseResource.class );
+
+
+ public DatabaseResource() {
+ logger.info( "DatabaseResource initialized" );
+ }
+
+
+ @RequireSystemAccess
+ @PUT
++ @JSONP
+ @Path( "setup" )
- public JSONWithPadding runDatabaseSetup( @Context UriInfo ui,
- @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback )
++ public ApiResponse runDatabaseSetup( @Context UriInfo ui,
++ @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback )
+ throws Exception {
+
+ ApiResponse response = createApiResponse();
+ response.setAction( "cassandra setup" );
+
+ logger.info( "Setting up Cassandra" );
+
+
+ emf.setup();
+
+
+ response.setSuccess();
+
- return new JSONWithPadding( response, callback );
++ return response;
+ }
+
+
+ @RequireSystemAccess
+ @PUT
++ @JSONP
+ @Path( "bootstrap" )
- public JSONWithPadding runSystemSetup( @Context UriInfo ui,
- @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback )
++ public ApiResponse runSystemSetup( @Context UriInfo ui,
++ @QueryParam( "callback" ) @DefaultValue( "callback" ) String callback )
+ throws Exception {
+
+ ApiResponse response = createApiResponse();
+ response.setAction( "cassandra setup" );
+
+ logger.info( "Setting up Cassandra" );
+
+
+ emf.boostrap();
+ management.setup();
+
+ response.setSuccess();
+
- return new JSONWithPadding( response, callback );
++ return response;
+ }
+ }
+
http://git-wip-us.apache.org/repos/asf/usergrid/blob/684bf2af/stack/rest/src/main/java/org/apache/usergrid/rest/system/QueueSystemResource.java
----------------------------------------------------------------------
diff --cc stack/rest/src/main/java/org/apache/usergrid/rest/system/QueueSystemResource.java
index 0000000,0721d89..15bdb34
mode 000000,100644..100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/system/QueueSystemResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/system/QueueSystemResource.java
@@@ -1,0 -1,78 +1,77 @@@
+ /*
+ *
+ * * Licensed to the Apache Software Foundation (ASF) under one or more
+ * * contributor license agreements. The ASF licenses this file to You
+ * * under the Apache License, Version 2.0 (the "License"); you may not
+ * * use this file except in compliance with the License.
+ * * You may obtain a copy of the License at
+ * *
+ * * http://www.apache.org/licenses/LICENSE-2.0
+ * *
+ * * Unless required by applicable law or agreed to in writing, software
+ * * distributed under the License is distributed on an "AS IS" BASIS,
+ * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * * See the License for the specific language governing permissions and
+ * * limitations under the License. For additional information regarding
+ * * copyright in this work, please see the NOTICE file in the top level
+ * * directory of this distribution.
+ *
+ */
+ package org.apache.usergrid.rest.system;
+
+ import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+ import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.sun.jersey.api.json.JSONWithPadding;
+ import org.apache.usergrid.corepersistence.asyncevents.AsyncEventService;
+ import org.apache.usergrid.rest.AbstractContextResource;
+ import org.apache.usergrid.rest.ApiResponse;
+ import org.apache.usergrid.rest.security.annotations.RequireSystemAccess;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ import org.springframework.context.annotation.Scope;
+ import org.springframework.stereotype.Component;
+
+ import javax.ws.rs.*;
+ import javax.ws.rs.core.MediaType;
+
+ /**
+ * retrieves queue stats
+ */
+ @Component
+ @Scope( "singleton" )
+ @Produces( {
+ MediaType.APPLICATION_JSON, "application/javascript", "application/x-javascript", "text/ecmascript",
+ "application/ecmascript", "text/jscript"
+ } )
+ public class QueueSystemResource extends AbstractContextResource {
+ private static final Logger logger = LoggerFactory.getLogger(QueueSystemResource.class);
+
+ public QueueSystemResource(){logger.info("queue resource initialized");}
+
+ /**
+ * Return queue depth of this Usergrid instance in JSON format.
+ *
+ * By Default this end-point will ignore errors but if you call it with ignore_status=false
+ * then it will return HTTP 500 if either the Entity store or the Index for the management
+ * application are in a bad state.
+ *
+ */
+ @GET
+ @RequireSystemAccess
+ @Path("size")
- public JSONWithPadding getQueueDepth(
++ public ApiResponse getQueueDepth(
+ @QueryParam("callback") @DefaultValue("callback") String callback ) {
+
+ ApiResponse response = createApiResponse();
+ response.setAction( "get queue depth" );
+
+ AsyncEventService eventService = injector.getInstance(AsyncEventService.class);
+ ObjectNode node = JsonNodeFactory.instance.objectNode();
+
+ node.put("queueDepth", eventService.getQueueDepth());
+
+ response.setProperty( "data", node );
+
- return new JSONWithPadding( response, callback );
++ return response;
+ }
+
+ }
http://git-wip-us.apache.org/repos/asf/usergrid/blob/684bf2af/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java
index ae9a2c2,44fa036..dd2a733
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/SystemResourceIT.java
@@@ -20,9 -20,11 +20,10 @@@ package org.apache.usergrid.rest
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 org.junit.Test;
import java.util.LinkedHashMap;
+ import java.util.Map;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
@@@ -61,8 -64,7 +62,7 @@@ public class SystemResourceIT extends A
queryParameters.addParam( "access_token", clientSetup.getSuperuserToken().getAccessToken() );
queryParameters.addParam("confirmApplicationName", this.clientSetup.getAppName());
- org.apache.usergrid.rest.test.resource.model.ApiResponse result =
- clientSetup.getRestClient().system().applications(this.clientSetup.getAppUuid()).delete( queryParameters);
- org.apache.usergrid.rest.test.resource.model.ApiResponse result = clientSetup.getRestClient().system().getSubResource("applications/" + this.clientSetup.getAppUuid()).delete(false, true, queryParameters);
++ org.apache.usergrid.rest.test.resource.model.ApiResponse result = clientSetup.getRestClient().system().getSubResource("applications/" + this.clientSetup.getAppUuid()).delete(false, queryParameters);
assertNotNull(result);
assertNotNull("ok", result.getStatus());
@@@ -97,6 -99,18 +97,18 @@@
result = clientSetup.getRestClient().system().database().bootstrap().put( queryParameters );
assertNotNull( result );
- assertNotNull( "ok", ( String ) result.get( "status" ) );
+ assertNotNull("ok", (String) result.get("status"));
+ }
+ @Test
+ public void testQueueDepth() {
+ QueryParameters queryParameters = new QueryParameters();
+ queryParameters.addParam("access_token", clientSetup.getSuperuserToken().getAccessToken());
+
- Entity result = clientSetup.getRestClient().system().getSubResource("queue/size").get(Entity.class, queryParameters,false,true);
++ Entity result = clientSetup.getRestClient().system().getSubResource("queue/size").get(Entity.class, queryParameters,false);
+
+ assertNotNull( result );
+ assertEquals(0, ((Map) result.get("data")).get("queueDepth"));
+
+
}
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/684bf2af/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/groups/GroupResourceIT.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/groups/GroupResourceIT.java
index 0db7601,a1bd03c..abf2be5
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/groups/GroupResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/groups/GroupResourceIT.java
@@@ -296,11 -302,11 +298,11 @@@ public class GroupResourceIT extends Ab
//9. do a GET to make sure the role was deleted
try {
- this.app().collection("role").entity(role).get();
+ Entity entity1 = this.app().collection("role").entity(role).get();
fail("Entity still exists");
- } catch (UniformInterfaceException e) {
+ } catch (ClientErrorException e) {
//verify the correct error was returned
- JsonNode node = mapper.readTree( e.getResponse().getEntity( String.class ));
+ JsonNode node = mapper.readTree( e.getResponse().readEntity( String.class ));
assertEquals( "entity_not_found", node.get( "error" ).textValue() );
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/684bf2af/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/NamedResource.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/NamedResource.java
index c8979f0,79ecb9e..0254d18
--- 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
@@@ -17,6 -17,11 +17,7 @@@
package org.apache.usergrid.rest.test.resource.endpoints;
-import com.sun.jersey.api.client.GenericType;
-import com.sun.jersey.api.client.WebResource;
+ import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
-import com.sun.jersey.api.representation.Form;
-import com.sun.jersey.multipart.FormDataMultiPart;
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;
@@@ -44,16 -41,17 +45,18 @@@ import java.util.Set
*/
public class NamedResource implements UrlResource {
-- public static String SLASH ="/" ;
++ public static String SLASH = "/";
protected final String name;
protected final ClientContext context;
- /* Stores the path of the parent that called it.
- i.e If we had a ApplicationResource ( an instance of a namedResource ) this would contain the OrganizationResource.
+
- /** Stores the path of the parent that called it. i.e If we had a ApplicationResource
- (an instance of a namedResource) this would contain the OrganizationResource. */
++ /**
++ * Stores the path of the parent that called it. i.e If we had a ApplicationResource
++ * (an instance of a namedResource) this would contain the OrganizationResource.
+ */
protected final UrlResource parent;
-
-- public NamedResource( final String name, final ClientContext context, final UrlResource parent ) {
++ public NamedResource(final String name, final ClientContext context, final UrlResource parent) {
this.name = name;
this.context = context;
this.parent = parent;
@@@ -65,59 -64,57 +68,64 @@@
}
@Override
- public WebResource getResource() {
- return getResource(false);
+ public WebTarget getTarget() {
- return getTarget( false );
++ return getTarget(false);
++ }
++
++ @Override
++ public ClientContext getContext() {
++ return context;
}
- public WebResource getResource(boolean useToken) {
- return getResource(useToken,null);
+
+ public WebTarget getTarget(boolean useToken) {
- return getTarget( useToken, null );
++ return getTarget(useToken, null);
}
- public WebResource getResource(boolean useToken,Token token) {
- WebResource resource = parent.getResource().path( getPath() );
- token = token !=null ? token : this.context.getToken();
+
+ public WebTarget getTarget(boolean useToken, Token token) {
- WebTarget resource = parent.getTarget().path( getPath() );
- token = token !=null ? token : this.context.getToken();
++ WebTarget resource = parent.getTarget().path(getPath());
++ token = token != null ? token : this.context.getToken();
//error checking
if (token == null) {
return resource;
}
- return useToken ? resource.queryParam("access_token", token.getAccessToken()) : resource;
- return useToken ? resource.queryParam("access_token",token.getAccessToken()) : resource;
++ return useToken ? resource.queryParam("access_token", token.getAccessToken()) : resource;
}
- protected WebTarget addParametersToResource(WebTarget resource, final QueryParameters parameters){
- protected WebResource addParametersToResource(WebResource resource, final QueryParameters parameters){
++ protected WebTarget addParametersToResource(WebTarget resource, final QueryParameters parameters) {
-- if(parameters == null){
++ if (parameters == null) {
return resource;
}
-- if ( parameters.getQuery() != null ) {
-- resource = resource.queryParam( "ql", parameters.getQuery() );
++ if (parameters.getQuery() != null) {
++ resource = resource.queryParam("ql", parameters.getQuery());
}
-- if ( parameters.getCursor() != null ) {
-- resource = resource.queryParam( "cursor", parameters.getCursor() );
++ if (parameters.getCursor() != null) {
++ resource = resource.queryParam("cursor", parameters.getCursor());
}
-- if ( parameters.getStart() != null ) {
++ if (parameters.getStart() != null) {
resource = resource.queryParam("start", parameters.getStart().toString());
}
-- if ( parameters.getLimit() != null ) {
++ if (parameters.getLimit() != null) {
resource = resource.queryParam("limit", parameters.getLimit().toString());
}
-- if ( parameters.getConnections() != null ) {
++ if (parameters.getConnections() != null) {
resource = resource.queryParam("connections", parameters.getConnections());
}
//We can also post the params as queries
-- if ( parameters.getFormPostData().size() > 0){
-- Map<String,String> formData = parameters.getFormPostData();
++ if (parameters.getFormPostData().size() > 0) {
++ Map<String, String> formData = parameters.getFormPostData();
Set<String> keySet = formData.keySet();
Iterator<String> keyIterator = keySet.iterator();
-- while(keyIterator.hasNext()){
++ while (keyIterator.hasNext()) {
String key = keyIterator.next();
-- String value = formData.get( key );
-- resource = resource.queryParam( key, value );
++ String value = formData.get(key);
++ resource = resource.queryParam(key, value);
}
}
return resource;
@@@ -167,6 -164,6 +175,7 @@@
/**
* Need to refactor all instances of tokens to either be passed in or manually set during the test.
* There isn't any reason we would want a rest forwarding framework to set something on behave of the user.
++ *
* @param map
* @return
*/
@@@ -178,89 -175,112 +187,89 @@@
//For edge cases like Organizations and Tokens
public ApiResponse post(boolean useToken, Map map, QueryParameters queryParameters) {
-- return post( useToken, ApiResponse.class, map, queryParameters, false );
++ return post(useToken, ApiResponse.class, map, queryParameters, false);
}
/**
* Need to refactor all instances of tokens to either be passed in or manually set during the test.
* There isn't any reason we would want a rest forwarding framework to set something on behave of the user.
- * @param type
- * @param <T>
- * @return
+ * For edge cases like Organizations and Tokens
*/
- //For edge cases like Organizations and Tokens
public <T> T post(Class<T> type) {
-- return post(true,type,null,null,false);
++ return post(true, type, null, null, false);
}
/**
* Need to refactor all instances of tokens to either be passed in or manually set during the test.
* There isn't any reason we would want a rest forwarding framework to set something on behave of the user.
- * @param type
- * @param requestEntity
- * @param <T>
- * @return
+ * For edge cases like Organizations and Tokens.
*/
- //For edge cases like Organizations and Tokens
public <T> T post(Class<T> type, Entity requestEntity) {
- return post( true, type, requestEntity, null, false);
- return post(true,type,requestEntity,null,false);
++ return post(true, type, requestEntity, null, false);
}
/**
* Need to refactor all instances of tokens to either be passed in or manually set during the test.
* There isn't any reason we would want a rest forwarding framework to set something on behave of the user.
- * @param type
- * @param requestEntity
- * @param <T>
- * @return
+ * For edge cases like Organizations and Tokens
*/
- //For edge cases like Organizations and Tokens
public <T> T post(Class<T> type, Map requestEntity) {
-- return post(true,type,requestEntity,null,false);
++ return post(true, type, requestEntity, null, false);
}
-- public <T> T post( boolean useToken, Class<T> type, Map requestEntity) {
++ public <T> T post(boolean useToken, Class<T> type, Map requestEntity) {
return post(useToken, type, requestEntity, null, false);
}
/**
* Used to test POST using form payloads.
- * @param type
- * @param requestEntity
- * @param <T>
- * @return
*/
- public <T> T post(Class<T> type, Form requestEntity) {
+ public <T> T post(Class<T> type, Form form) {
GenericType<T> gt = new GenericType<>((Class) type);
- return getResource()
+ return getTarget().request()
- .accept( MediaType.APPLICATION_JSON )
- .post( javax.ws.rs.client.Entity.entity( form, MediaType.APPLICATION_FORM_URLENCODED_TYPE ), gt );
+ .accept(MediaType.APPLICATION_JSON)
- .type(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
- .entity(requestEntity, MediaType.APPLICATION_FORM_URLENCODED_TYPE)
- .post(gt.getRawClass());
-
++ .post(javax.ws.rs.client.Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE), gt);
}
- //Used for empty posts
- public <T> T post( boolean useToken, Class<T> type, Map entity, final QueryParameters queryParameters) {
- WebResource resource = getResource(useToken);
+ // Used for empty posts
- public <T> T post( boolean useToken, Class<T> type, Map entity, final QueryParameters queryParameters) {
- WebTarget resource = getTarget( useToken );
- resource = addParametersToResource( resource, queryParameters );
++ public <T> T post(boolean useToken, Class<T> type, Map entity, final QueryParameters queryParameters) {
++ WebTarget resource = getTarget(useToken);
+ resource = addParametersToResource(resource, queryParameters);
- WebResource.Builder builder = resource
- .type(MediaType.APPLICATION_JSON_TYPE)
- .accept( MediaType.APPLICATION_JSON );
- if(entity!=null){
- builder.entity(entity);
- }
- GenericType<T> gt = new GenericType<>((Class) type);
- return builder
- .post(gt.getRawClass());
+ Invocation.Builder builder = resource.request()
- .accept( MediaType.APPLICATION_JSON );
++ .accept(MediaType.APPLICATION_JSON);
+ // it's OK for the entity to be null
+ GenericType<T> gt = new GenericType<>((Class) type);
- return builder.post( javax.ws.rs.client.Entity.json( entity ), gt );
++ return builder.post(javax.ws.rs.client.Entity.json(entity), gt);
}
- //Used for empty posts
- public <T> T post( boolean useToken, Class<T> type, Map entity, final QueryParameters queryParameters, boolean useBasicAuthentication ) {
- WebResource resource = getResource(useToken);
+ // Used for empty posts
- public <T> T post( boolean useToken, Class<T> type, Map entity,
- final QueryParameters queryParameters, boolean useBasicAuthentication ) {
++ public <T> T post(boolean useToken, Class<T> type, Map entity,
++ final QueryParameters queryParameters, boolean useBasicAuthentication) {
+
- WebTarget resource = getTarget( useToken );
++ WebTarget resource = getTarget(useToken);
resource = addParametersToResource(resource, queryParameters);
- WebResource.Builder builder = resource
- .type(MediaType.APPLICATION_JSON_TYPE)
- .accept( MediaType.APPLICATION_JSON );
- if(entity!=null){
- builder.entity(entity);
- }
+ GenericType<T> gt = new GenericType<>((Class) type);
- if ( useBasicAuthentication ) {
- 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);
++ if (useBasicAuthentication) {
+ HttpAuthenticationFeature feature = HttpAuthenticationFeature.basicBuilder()
- .credentials( "superuser", "superpassword" ).build();
- return resource.register( feature ).request()
- .accept( MediaType.APPLICATION_JSON )
- .post( javax.ws.rs.client.Entity.json( entity ), gt );
++ .credentials("superuser", "superpassword").build();
++ return resource.register(feature).request()
++ .accept(MediaType.APPLICATION_JSON)
++ .post(javax.ws.rs.client.Entity.json(entity), gt);
}
- GenericType<T> gt = new GenericType<>((Class) type);
- return builder.post(gt.getRawClass());
-
+ return resource.request()
- .accept( MediaType.APPLICATION_JSON )
- .post( javax.ws.rs.client.Entity.json( entity ), gt );
++ .accept(MediaType.APPLICATION_JSON)
++ .post(javax.ws.rs.client.Entity.json(entity), gt);
}
//For edge cases like Organizations and Tokens without any payload
@@@ -271,82 -291,104 +280,88 @@@
//For edge cases like Organizations and Tokens without any payload
public <T> T get(Class<T> type, boolean useToken) {
-- return get( type, null, useToken );
++ return get(type, null, useToken);
}
--
-- public <T> T get(Class<T> type,QueryParameters queryParameters) {
- return get( type, queryParameters, true );
++ public <T> T get(Class<T> type, QueryParameters queryParameters) {
+ return get(type, queryParameters, true);
}
- public <T> T get(Class<T> type,QueryParameters queryParameters, boolean useToken) {
- return get(type,queryParameters,useToken,false);
- }
- public <T> T get(Class<T> type,QueryParameters queryParameters, boolean useToken, boolean useSupertoken) {
- WebResource resource = getResource(useToken);
- if(queryParameters!=null) {
+
+ public <T> T get(Class<T> type, QueryParameters queryParameters, boolean useToken) {
- WebTarget resource = getTarget( useToken );
++
++ WebTarget resource = getTarget(useToken);
+ if (queryParameters != null) {
resource = addParametersToResource(resource, queryParameters);
}
- if(useSupertoken) {
- //added httpBasicauth filter to all setup calls because they all do verification this way.
- HTTPBasicAuthFilter httpBasicAuthFilter = new HTTPBasicAuthFilter("superuser", "superpassword");
- resource.addFilter(httpBasicAuthFilter);
- }
- GenericType<T> gt = new GenericType<>((Class) type);
- return resource.type(MediaType.APPLICATION_JSON_TYPE)
- .accept( MediaType.APPLICATION_JSON )
- .get(gt.getRawClass());
+
+ GenericType<T> gt = new GenericType<>((Class) type);
+ return resource.request()
- .accept( MediaType.APPLICATION_JSON )
- .get( gt );
++ .accept(MediaType.APPLICATION_JSON)
++ .get(gt);
}
public String getMatrix() {
return "";
}
- public ApiResponse post( boolean useToken, MultiPart multiPartForm ) {
- WebTarget resource = getTarget( useToken );
- public ApiResponse post( boolean useToken, FormDataMultiPart multiPartForm ) {
- WebResource resource = getResource( useToken );
- return resource.type( MediaType.MULTIPART_FORM_DATA_TYPE ).post(ApiResponse.class, multiPartForm);
++ public ApiResponse post(boolean useToken, MultiPart multiPartForm) {
++ WebTarget resource = getTarget(useToken);
+ return resource.request().post(
- javax.ws.rs.client.Entity.entity( multiPartForm, multiPartForm.getMediaType() ), ApiResponse.class );
++ javax.ws.rs.client.Entity.entity(multiPartForm, multiPartForm.getMediaType()), ApiResponse.class);
}
- public ApiResponse post( MultiPart multiPartForm ) {
- return post( true, multiPartForm );
- public ApiResponse post( FormDataMultiPart multiPartForm ) {
++ public ApiResponse post(MultiPart multiPartForm) {
+ return post(true, multiPartForm);
}
-- public ApiResponse put( boolean useToken, byte[] data, MediaType type ) {
- WebTarget resource = getTarget( useToken );
- WebResource resource = getResource(useToken);
- return resource.type( type ).put(ApiResponse.class, data);
++ public ApiResponse put(boolean useToken, byte[] data, MediaType type) {
++ WebTarget resource = getTarget(useToken);
+ return resource.request().put(
- javax.ws.rs.client.Entity.entity(data, type), ApiResponse.class );
++ javax.ws.rs.client.Entity.entity(data, type), ApiResponse.class);
}
-- public ApiResponse put( byte[] data, MediaType type ) {
++ public ApiResponse put(byte[] data, MediaType type) {
return put(true, data, type);
}
-- public ApiResponse put( boolean useToken, FormDataMultiPart multiPartForm ) {
- WebTarget resource = getTarget(useToken );
- WebResource resource = getResource(useToken);
- return resource.type( MediaType.MULTIPART_FORM_DATA_TYPE ).put(ApiResponse.class, multiPartForm);
++ public ApiResponse put(boolean useToken, FormDataMultiPart multiPartForm) {
++ WebTarget resource = getTarget(useToken);
+ return resource.request().put(
- javax.ws.rs.client.Entity.entity(multiPartForm, multiPartForm.getMediaType()), ApiResponse.class );
++ javax.ws.rs.client.Entity.entity(multiPartForm, multiPartForm.getMediaType()), ApiResponse.class);
}
-- public ApiResponse put( FormDataMultiPart multiPartForm ) {
++ public ApiResponse put(FormDataMultiPart multiPartForm) {
return put(true, multiPartForm);
}
-- public InputStream getAssetAsStream( boolean useToken ) {
- WebTarget resource = getTarget(useToken );
- return resource.request().accept( MediaType.APPLICATION_OCTET_STREAM_TYPE ).get( InputStream.class );
- WebResource resource = getResource(useToken);
- return resource.accept( MediaType.APPLICATION_OCTET_STREAM_TYPE ).get(InputStream.class);
++ public InputStream getAssetAsStream(boolean useToken) {
++ WebTarget resource = getTarget(useToken);
++ return resource.request().accept(MediaType.APPLICATION_OCTET_STREAM_TYPE).get(InputStream.class);
}
public InputStream getAssetAsStream() {
return getAssetAsStream(true);
}
-- public ApiResponse delete( ) {
++ public ApiResponse delete() {
return delete(true);
}
-- public ApiResponse delete( boolean useToken ) {
- return getTarget(useToken).request().delete( ApiResponse.class );
- return getResource(useToken).delete(ApiResponse.class);
++ public ApiResponse delete(boolean useToken) {
++ return getTarget(useToken).request().delete(ApiResponse.class);
}
- public ApiResponse delete( boolean useToken, QueryParameters queryParameters ) {
- return delete(useToken,false,queryParameters);
- }
- public ApiResponse delete( boolean useToken, boolean useSupertoken, QueryParameters queryParameters ) {
- WebResource resource = getResource(useToken);
- if(queryParameters!=null) {
- resource = addParametersToResource(resource, queryParameters);
- }
- if(useSupertoken) {
- //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.delete(ApiResponse.class);
- }
-
- public ApiResponse delete( boolean useToken, QueryParameters queryParameters ) {
++ public ApiResponse delete(boolean useToken, QueryParameters queryParameters) {
+ WebTarget resource = getTarget(useToken);
- if(queryParameters!=null) {
+
- public ClientContext getContext(){
- return context;
++ if (queryParameters != null) {
+ resource = addParametersToResource(resource, queryParameters);
+ }
- return resource.request().delete( ApiResponse.class );
++ return resource.request().delete(ApiResponse.class);
+ }
+
- public NamedResource getSubResource(final String path){
- return SubResource.getInstance(path,this);
++ public NamedResource getSubResource(String path) {
++ return new NamedResource(path,context,this);
}
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/684bf2af/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/RootResource.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/684bf2af/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/SystemResource.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/SystemResource.java
index 96e8fa5,1a7b594..82b0468
--- 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
@@@ -58,33 -58,27 +58,38 @@@ public class SystemResource extends Nam
public ApiResponse get(QueryParameters queryParameters){
- WebResource resource = getResource();
+ WebTarget resource = getTarget();
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);
+ HttpAuthenticationFeature feature = HttpAuthenticationFeature.basicBuilder()
+ .credentials( "superuser", "superpassword" ).build();
- return resource.type( MediaType.APPLICATION_JSON_TYPE ).accept( MediaType.APPLICATION_JSON )
+ return resource.register( feature ).request().accept( MediaType.APPLICATION_JSON )
.get(ApiResponse.class);
}
- public ApiResponse delete(QueryParameters queryParameters){
- WebResource resource = getResource();
+
+ public ApiResponse delete(QueryParameters queryParameters) {
+
+ WebTarget resource = getTarget();
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);
+ HttpAuthenticationFeature feature = HttpAuthenticationFeature.basicBuilder()
+ .credentials( "superuser", "superpassword" ).build();
+
- return resource.register( feature ).request().delete( ApiResponse.class );
++ return resource.register(feature).request().delete(ApiResponse.class);
+
+ }
+
- return resource.type( MediaType.APPLICATION_JSON_TYPE ).accept( MediaType.APPLICATION_JSON )
- .delete(ApiResponse.class);
++ @Override
++ public ClientContext getContext() {
++ return context;
+ }
}
+
+ public ApiResponse put(){
+ ApiResponse response = getTarget(true).request().accept(MediaType.APPLICATION_JSON)
+ .put( javax.ws.rs.client.Entity.json(""), ApiResponse.class);
+ return response;
+ }
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/684bf2af/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/UrlResource.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/UrlResource.java
index 6e5ee1b,b040aee..d16ae70
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/UrlResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource/endpoints/UrlResource.java
@@@ -17,7 -17,10 +17,9 @@@
package org.apache.usergrid.rest.test.resource.endpoints;
+ import org.apache.usergrid.rest.test.resource.state.ClientContext;
+
-import com.sun.jersey.api.client.WebResource;
-
+import javax.ws.rs.client.WebTarget;
/**
* Interface that returns the path that is currently being pointed to.
@@@ -35,7 -38,13 +37,13 @@@ public interface UrlResource
* Get the resource
* @return
*/
- public WebResource getResource();
+ public WebTarget getTarget();
+ /**
+ * get context
+ * @return
+ */
+ public ClientContext getContext();
+
}