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/14 23:45:16 UTC
[01/16] usergrid git commit: USERGRID-645: fix superuser access via
token
Repository: usergrid
Updated Branches:
refs/heads/usergrid-103-upgrade-jersey 2888a7cfe -> d4e8be8b0
USERGRID-645: fix superuser access via token
1. Superuser access via token now works. Some code was checking for hardcoded string "sysadmin" -- superuser role is now "service-admin".
2. Superuser token should now be granted access to all orgs and apps.
3. Locked down org config GET/PUT to superusers only.
Basic auth superuser still does not have access to orgs/apps. Org config GET/PUT requires both org access to specified org and superuser access, so token must be used for org config.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/ac1db7e3
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/ac1db7e3
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/ac1db7e3
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: ac1db7e33326076df13ca77610416e4d1dcc06aa
Parents: b67f0b1
Author: Mike Dunker <md...@apache.org>
Authored: Thu Sep 10 14:35:30 2015 -0700
Committer: Mike Dunker <md...@apache.org>
Committed: Thu Sep 10 14:35:30 2015 -0700
----------------------------------------------------------------------
.../organizations/OrganizationResource.java | 7 ++++--
.../security/SecuredResourceFilterFactory.java | 7 +++---
.../shiro/filters/BasicAuthSecurityFilter.java | 5 ++--
.../apache/usergrid/security/shiro/Realm.java | 24 ++++++++++++++++++++
4 files changed, 36 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/ac1db7e3/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/OrganizationResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/OrganizationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/OrganizationResource.java
index f45e1b2..5a55c9e 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/OrganizationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/OrganizationResource.java
@@ -363,7 +363,7 @@ public class OrganizationResource extends AbstractContextResource {
}
- @RequireOrganizationAccess
+ @RequireSystemAccess
@GET
@Path("config")
public JSONWithPadding getConfig( @Context UriInfo ui,
@@ -389,7 +389,7 @@ public class OrganizationResource extends AbstractContextResource {
}
- @RequireOrganizationAccess
+ @RequireSystemAccess
@Consumes(MediaType.APPLICATION_JSON)
@PUT
@Path("config")
@@ -410,6 +410,9 @@ public class OrganizationResource extends AbstractContextResource {
management.getOrganizationConfigByUuid( organization.getUuid() );
orgConfig.addProperties(json);
management.updateOrganizationConfig(orgConfig);
+
+ // refresh orgConfig -- to pick up removed entries and defaults
+ orgConfig = management.getOrganizationConfigByUuid( organization.getUuid() );
response.setProperty( "configuration", management.getOrganizationConfigData( orgConfig ) );
return new JSONWithPadding( response, callback );
http://git-wip-us.apache.org/repos/asf/usergrid/blob/ac1db7e3/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java b/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
index 551c687..6f7d698 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
@@ -58,6 +58,7 @@ import static org.apache.usergrid.security.shiro.utils.SubjectUtils.isPermittedA
import static org.apache.usergrid.security.shiro.utils.SubjectUtils.isPermittedAccessToOrganization;
import static org.apache.usergrid.security.shiro.utils.SubjectUtils.isUser;
import static org.apache.usergrid.security.shiro.utils.SubjectUtils.loginApplicationGuest;
+import static org.apache.usergrid.security.shiro.Realm.ROLE_SERVICE_ADMIN;
@Component
@@ -299,7 +300,7 @@ public class SecuredResourceFilterFactory implements ResourceFilterFactory {
public void authorize( ContainerRequest request ) {
logger.debug( "SystemFilter.authorize" );
try {
- if ( !request.isUserInRole( "sysadmin" ) ) {
+ if ( !request.isUserInRole( ROLE_SERVICE_ADMIN ) ) {
logger.debug( "You are not the system admin." );
throw mappableSecurityException( "unauthorized", "No system access authorized",
SecurityException.REALM );
@@ -307,8 +308,8 @@ public class SecuredResourceFilterFactory implements ResourceFilterFactory {
}
catch ( IllegalStateException e ) {
logger.debug( "This is an invalid state",e );
- if ( ( request.getUserPrincipal() == null ) || !"sysadmin"
- .equals( request.getUserPrincipal().getName() ) ) {
+ if ( ( request.getUserPrincipal() == null ) ||
+ !ROLE_SERVICE_ADMIN.equals( request.getUserPrincipal().getName() ) ) {
throw mappableSecurityException( "unauthorized", "No system access authorized",
SecurityException.REALM );
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/ac1db7e3/stack/rest/src/main/java/org/apache/usergrid/rest/security/shiro/filters/BasicAuthSecurityFilter.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/security/shiro/filters/BasicAuthSecurityFilter.java b/stack/rest/src/main/java/org/apache/usergrid/rest/security/shiro/filters/BasicAuthSecurityFilter.java
index 5f03809..d0fb3bf 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/security/shiro/filters/BasicAuthSecurityFilter.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/security/shiro/filters/BasicAuthSecurityFilter.java
@@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.apache.shiro.codec.Base64;
+import static org.apache.usergrid.security.shiro.Realm.ROLE_SERVICE_ADMIN;
import com.sun.jersey.spi.container.ContainerRequest;
@@ -80,7 +81,7 @@ public class BasicAuthSecurityFilter extends SecurityFilter {
principal = new Principal() {
@Override
public String getName() {
- return "sysadmin";
+ return ROLE_SERVICE_ADMIN;
}
};
}
@@ -94,7 +95,7 @@ public class BasicAuthSecurityFilter extends SecurityFilter {
@Override
public boolean isUserInRole( String role ) {
- return role.equals( "sysadmin" );
+ return role.equals( ROLE_SERVICE_ADMIN );
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/ac1db7e3/stack/services/src/main/java/org/apache/usergrid/security/shiro/Realm.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/security/shiro/Realm.java b/stack/services/src/main/java/org/apache/usergrid/security/shiro/Realm.java
index 91d97e9..a793fdb 100644
--- a/stack/services/src/main/java/org/apache/usergrid/security/shiro/Realm.java
+++ b/stack/services/src/main/java/org/apache/usergrid/security/shiro/Realm.java
@@ -306,6 +306,30 @@ public class Realm extends AuthorizingRealm {
grant( info, principal,
getPermissionFromPath( emf.getManagementAppId(), "get,put,post,delete", "/**" ) );
+
+ // get all organizations
+ try {
+
+ Map<UUID, String> allOrganizations = management.getOrganizations();
+
+ if ( allOrganizations != null ) {
+ for ( UUID id : allOrganizations.keySet() ) {
+ grant( info, principal, "organizations:admin,access,get,put,post,delete:" + id );
+ }
+ organizationSet.putAll(allOrganizations);
+
+ Map<UUID, String> allApplications =
+ management.getApplicationsForOrganizations( allOrganizations.keySet() );
+ if ( ( allApplications != null ) && !allApplications.isEmpty() ) {
+ grant( info, principal, "applications:admin,access,get,put,post,delete:" + StringUtils
+ .join( allApplications.keySet(), ',' ) );
+ applicationSet.putAll( allApplications );
+ }
+ }
+ }
+ catch ( Exception e ) {
+ logger.error( "Unable to construct superuser permissions", e );
+ }
}
else {
[06/16] usergrid git commit: add apm mobile config
Posted by sn...@apache.org.
add apm mobile config
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/cf6cf833
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/cf6cf833
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/cf6cf833
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: cf6cf83348819ead3ad58b1308832c06e1c9b412
Parents: a7ae791
Author: Shawn Feldman <sf...@apache.org>
Authored: Fri Sep 11 10:44:38 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Fri Sep 11 10:44:38 2015 -0600
----------------------------------------------------------------------
.../usergrid/rest/applications/ApplicationResource.java | 11 +++++++++--
.../rest/applications/ApplicationResourceIT.java | 12 ++++++++++++
2 files changed, 21 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/cf6cf833/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
index 52a0f99..c521d4f 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
@@ -35,6 +35,7 @@ import org.apache.usergrid.persistence.EntityManager;
import org.apache.usergrid.persistence.SimpleEntityRef;
import org.apache.usergrid.persistence.entities.Application;
import org.apache.usergrid.persistence.entities.User;
+import org.apache.usergrid.persistence.exceptions.EntityNotFoundException;
import org.apache.usergrid.persistence.index.query.Identifier;
import org.apache.usergrid.rest.AbstractContextResource;
import org.apache.usergrid.rest.applications.assets.AssetsResource;
@@ -42,6 +43,7 @@ import org.apache.usergrid.rest.applications.events.EventsResource;
import org.apache.usergrid.rest.applications.queues.QueueResource;
import org.apache.usergrid.rest.applications.users.UsersResource;
import org.apache.usergrid.rest.exceptions.AuthErrorInfo;
+import org.apache.usergrid.rest.exceptions.NotFoundExceptionMapper;
import org.apache.usergrid.rest.exceptions.RedirectionException;
import org.apache.usergrid.rest.security.annotations.RequireApplicationAccess;
import org.apache.usergrid.rest.security.annotations.RequireOrganizationAccess;
@@ -589,8 +591,13 @@ public class ApplicationResource extends ServiceResource {
APIGEE_MOBILE_APM_CONFIG_JSON_KEY );
//If there is no apm configuration then try to create apm config on the fly
if ( value == null ) {
- value = management.registerAppWithAPM( management.getOrganizationForApplication( applicationId ),
- management.getApplicationInfo( applicationId ) );
+ value = management.registerAppWithAPM(
+ management.getOrganizationForApplication( applicationId ),
+ management.getApplicationInfo( applicationId )
+ );
+ }
+ if(value==null){
+ throw new EntityNotFoundException("apigeeMobileConfig not found, it is possibly not enabled for your config.");
}
return new JSONWithPadding( value, callback );
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/cf6cf833/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
index ec858f7..f7e8dc3 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
@@ -21,10 +21,12 @@ import com.sun.jersey.api.client.ClientResponse.Status;
import com.sun.jersey.api.client.UniformInterfaceException;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.representation.Form;
+import junit.framework.Assert;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.shiro.codec.Base64;
import org.apache.usergrid.cassandra.SpringResource;
import org.apache.usergrid.management.ManagementService;
+import org.apache.usergrid.persistence.exceptions.EntityNotFoundException;
import org.apache.usergrid.rest.test.resource.AbstractRestIT;
import org.apache.usergrid.rest.test.resource.endpoints.mgmt.OrganizationResource;
import org.apache.usergrid.rest.test.resource.model.*;
@@ -845,6 +847,16 @@ public class ApplicationResourceIT extends AbstractRestIT {
assertNull(response.getError());
}
+ @Test
+ public void getApmConfig(){
+ try {
+ Collection collection = this.app().collection("apm/apigeeMobileConfig").get();
+ fail();
+ }catch (UniformInterfaceException e){
+ Assert.assertEquals(404, e.getResponse().getStatus());
+ }
+ }
+
/**
* Get the client credentials for the current app
* @return Credentials
[03/16] usergrid git commit: Fix push notification delivery
expiration.
Posted by sn...@apache.org.
Fix push notification delivery expiration.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/1efd1763
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/1efd1763
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/1efd1763
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: 1efd176325a147c82077c694bccda5af917fa23b
Parents: 3bd059c
Author: Michael Russo <mi...@gmail.com>
Authored: Thu Sep 10 15:44:08 2015 -0700
Committer: Michael Russo <mi...@gmail.com>
Committed: Thu Sep 10 15:44:08 2015 -0700
----------------------------------------------------------------------
.../usergrid/persistence/entities/Notification.java | 12 ++++++++----
.../services/notifications/apns/APNsNotification.java | 8 ++++----
.../services/notifications/gcm/GCMAdapter.java | 9 +++++----
.../services/notifications/wns/WNSAdapter.java | 13 ++++++++++---
.../notifications/apns/NotificationsServiceIT.java | 1 +
.../notifications/gcm/NotificationsServiceIT.java | 1 +
6 files changed, 29 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/1efd1763/stack/core/src/main/java/org/apache/usergrid/persistence/entities/Notification.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/entities/Notification.java b/stack/core/src/main/java/org/apache/usergrid/persistence/entities/Notification.java
index 88b2f33..d1101a5 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/entities/Notification.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/entities/Notification.java
@@ -230,12 +230,16 @@ public class Notification extends TypedEntity {
return State.CREATED;
}
+ @JsonIgnore
+ public long getExpireTimeMillis() {
+ long expireAtMillis = getExpire() != null ? getExpire() * 1000 : 0;
+ return expireAtMillis;
+ }
@JsonIgnore
- public int getExpireTimeInSeconds() {
- long expirySeconds = getExpire() != null ? getExpire() * 1000 : 0;
- return (expirySeconds > Integer.MAX_VALUE) ? Integer.MAX_VALUE
- : (int) expirySeconds;
+ public long getExpireTTLSeconds() {
+ Long ttlSeconds = (getExpireTimeMillis() - new Date().getTime()) / 1000;
+ return ttlSeconds > 0 ? ttlSeconds : 0;
}
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
http://git-wip-us.apache.org/repos/asf/usergrid/blob/1efd1763/stack/services/src/main/java/org/apache/usergrid/services/notifications/apns/APNsNotification.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/notifications/apns/APNsNotification.java b/stack/services/src/main/java/org/apache/usergrid/services/notifications/apns/APNsNotification.java
index b580410..ff00e4c 100644
--- a/stack/services/src/main/java/org/apache/usergrid/services/notifications/apns/APNsNotification.java
+++ b/stack/services/src/main/java/org/apache/usergrid/services/notifications/apns/APNsNotification.java
@@ -24,7 +24,6 @@ import com.relayrides.pushy.apns.util.TokenUtil;
import org.apache.usergrid.persistence.entities.Notification;
import org.apache.usergrid.services.notifications.TaskTracker;
-import java.util.Calendar;
import java.util.Date;
/**
* Standard apigee notificatton
@@ -44,12 +43,13 @@ public class APNsNotification extends SimpleApnsPushNotification {
*/
public static APNsNotification create(String providerId, String payload, Notification notification, TaskTracker tracker) throws RuntimeException {
- Calendar date = Calendar.getInstance();
- date.add(Calendar.SECOND, notification.getExpireTimeInSeconds());
+ // create Date object using milliseconds value
+ Date expiryDate = new Date(notification.getExpireTimeMillis());
+
try {
final byte[] token = TokenUtil.tokenStringToByteArray(providerId);
- return new APNsNotification(tracker, date.getTime(), token, payload, notification);
+ return new APNsNotification(tracker, expiryDate, token, payload, notification);
}catch(MalformedTokenStringException mtse){
throw new RuntimeException("Exception converting token",mtse);
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/1efd1763/stack/services/src/main/java/org/apache/usergrid/services/notifications/gcm/GCMAdapter.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/notifications/gcm/GCMAdapter.java b/stack/services/src/main/java/org/apache/usergrid/services/notifications/gcm/GCMAdapter.java
index 5580ea8..df1b580 100644
--- a/stack/services/src/main/java/org/apache/usergrid/services/notifications/gcm/GCMAdapter.java
+++ b/stack/services/src/main/java/org/apache/usergrid/services/notifications/gcm/GCMAdapter.java
@@ -36,7 +36,6 @@ import org.apache.usergrid.services.notifications.TaskTracker;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentLinkedQueue;
public class GCMAdapter implements ProviderAdapter {
@@ -71,9 +70,11 @@ public class GCMAdapter implements ProviderAdapter {
Map<String,Object> map = (Map<String, Object>) payload;
final String expiresKey = "time_to_live";
if(!map.containsKey(expiresKey) && notification.getExpire() != null){
- int expireSeconds = notification.getExpireTimeInSeconds();
- expireSeconds = expireSeconds <= 2419200 ? expireSeconds : 2419200; //send the max gcm value documented here http://developer.android.com/google/gcm/adv.html#ttl
- map.put(expiresKey, expireSeconds);
+ // ttl provided to GCM is in seconds. calculate the difference from now
+ Long ttlSeconds = notification.getExpireTTLSeconds();
+ // max ttl for gcm is 4 weeks - https://developers.google.com/cloud-messaging/http-server-ref
+ ttlSeconds = ttlSeconds <= 2419200 ? ttlSeconds : 2419200;
+ map.put(expiresKey, ttlSeconds);
}
Batch batch = getBatch( map);
batch.add(providerId, tracker);
http://git-wip-us.apache.org/repos/asf/usergrid/blob/1efd1763/stack/services/src/main/java/org/apache/usergrid/services/notifications/wns/WNSAdapter.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/notifications/wns/WNSAdapter.java b/stack/services/src/main/java/org/apache/usergrid/services/notifications/wns/WNSAdapter.java
index 1fe8f72..3ad3d35 100644
--- a/stack/services/src/main/java/org/apache/usergrid/services/notifications/wns/WNSAdapter.java
+++ b/stack/services/src/main/java/org/apache/usergrid/services/notifications/wns/WNSAdapter.java
@@ -74,10 +74,15 @@ public class WNSAdapter implements ProviderAdapter {
try {
List<TranslatedNotification> translatedNotifications = ( List<TranslatedNotification>) payload;
for(TranslatedNotification translatedNotification : translatedNotifications) {
+
+ // set the optional TTL value used when pushing notifications
+ WnsNotificationRequestOptional opt = new WnsNotificationRequestOptional();
+ opt.ttl = String.valueOf(notification.getExpireTTLSeconds());
+
switch (translatedNotification.getType()) {
case "toast":
WnsToast toast = new WnsToastBuilder().bindingTemplateToastText01(translatedNotification.getMessage().toString()).build();
- service.pushToast(providerId, toast);
+ service.pushToast(providerId, opt, toast);
break;
case "badge":
WnsBadge badge;
@@ -86,15 +91,17 @@ public class WNSAdapter implements ProviderAdapter {
} else {
badge = new WnsBadgeBuilder().value(translatedNotification.getMessage().toString()).build();
}
- service.pushBadge(providerId, badge);
+ service.pushBadge(providerId, opt, badge);
break;
case "raw":
Object message = translatedNotification.getMessage();
if(message instanceof String) {
WnsRaw raw = new WnsRawBuilder().stream(((String) message).getBytes()).build();
- WnsNotificationRequestOptional opt = new WnsNotificationRequestOptional();
+
+ // set additional optional parameter for raw notifications
opt.cachePolicy = "cache";
opt.requestForStatus = "true";
+
WnsNotificationResponse response = service.pushRaw(providerId, opt, raw);
if (!response.notificationStatus.equals("received")) { // https://msdn.microsoft.com/en-us/library/windows/apps/hh465435.aspx#pncodes_x_wns_notification
throw new Exception(String.format("Notification failed status:%s, devicesStatus:%s, description:%s, debug flag:%s", response.notificationStatus, response.deviceConnectionStatus, response.errorDescription, response.debugTrace));
http://git-wip-us.apache.org/repos/asf/usergrid/blob/1efd1763/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
index fc80fdf..bd248a5 100644
--- a/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
@@ -153,6 +153,7 @@ public class NotificationsServiceIT extends AbstractServiceNotificationIT {
app.put("payloads", payloads);
app.put("queued", System.currentTimeMillis());
app.put("debug",true);
+ app.put("expire", (System.currentTimeMillis() / 1000) + 300); // add 5 minutes to current time
// post notification to service manager
Entity e = app.testRequest(ServiceAction.POST, 1,"devices",device1.getUuid(), "notifications").getEntity();
http://git-wip-us.apache.org/repos/asf/usergrid/blob/1efd1763/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java
index 63869ca..38a6f2e 100644
--- a/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java
@@ -153,6 +153,7 @@ public class NotificationsServiceIT extends AbstractServiceNotificationIT {
app.put("payloads", payloads);
app.put("queued", System.currentTimeMillis());
app.put("debug",true);
+ app.put("expire", (System.currentTimeMillis() / 1000) + 300); // add 5 minutes to current time
Entity e = app.testRequest(ServiceAction.POST, 1, "devices",device1.getUuid(),"notifications").getEntity();
app.testRequest(ServiceAction.GET, 1, "notifications", e.getUuid());
[10/16] 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/c3c71c91
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/c3c71c91
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/c3c71c91
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: c3c71c91472045789f06e525d1028061240e0613
Parents: 98e76ae f24e7e4
Author: Shawn Feldman <sf...@apache.org>
Authored: Fri Sep 11 17:11:07 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Fri Sep 11 17:11:07 2015 -0600
----------------------------------------------------------------------
.../asyncevents/AmazonAsyncEventService.java | 6 +++---
stack/scripts/migrate_entity_data.py | 17 +++++++++++++++++
2 files changed, 20 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
[07/16] usergrid git commit: Add database setup to migration script.
Posted by sn...@apache.org.
Add database setup to migration script.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/66ba6b47
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/66ba6b47
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/66ba6b47
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: 66ba6b47702dfd13e472fdc62eb0e97af07afe00
Parents: cf6cf83
Author: Michael Russo <mi...@gmail.com>
Authored: Fri Sep 11 12:48:57 2015 -0700
Committer: Michael Russo <mi...@gmail.com>
Committed: Fri Sep 11 12:48:57 2015 -0700
----------------------------------------------------------------------
stack/scripts/migrate_entity_data.py | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/66ba6b47/stack/scripts/migrate_entity_data.py
----------------------------------------------------------------------
diff --git a/stack/scripts/migrate_entity_data.py b/stack/scripts/migrate_entity_data.py
index 66a9dd0..4258a71 100644
--- a/stack/scripts/migrate_entity_data.py
+++ b/stack/scripts/migrate_entity_data.py
@@ -130,6 +130,8 @@ class Migrate:
try:
+ self.run_database_setup()
+
# We need to check and roll the migration system to 1 if not already
migration_system_updated = self.is_migration_system_updated()
@@ -220,6 +222,10 @@ class Migrate:
self.log_metrics()
self.logger.error('Keyboard interrupted migration. Please run again to ensure the migration finished.')
+ def get_database_setup_url(self):
+ url = self.endpoint + '/system/database/setup'
+ return url
+
def get_migration_url(self):
url = self.endpoint + '/system/migrate/run'
return url
@@ -255,6 +261,17 @@ class Migrate:
self.logger.error('Failed to start migration, %s', e)
exit_on_error(str(e))
+ def run_database_setup(self):
+ try:
+ setupUrl = self.get_database_setup_url()
+ r = requests.put(url=setupUrl, auth=(self.admin_user, self.admin_pass))
+ if r.status_code != 200:
+ exit_on_error('Database Setup Failed')
+
+ except requests.exceptions.RequestException as e:
+ self.logger.error('Failed to run database setup, %s', e)
+ exit_on_error(str(e))
+
def start_index_mapping_migration(self):
try:
migrateUrl = self.get_migration_url() + '/' + PLUGIN_INDEX_MAPPING
[04/16] usergrid git commit: fix default queue
Posted by sn...@apache.org.
fix default queue
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/1c7ab043
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/1c7ab043
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/1c7ab043
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: 1c7ab04338e89fd1a7d1ebd15918be8875f933d7
Parents: 929528a
Author: Shawn Feldman <sf...@apache.org>
Authored: Thu Sep 10 17:06:39 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Thu Sep 10 17:06:39 2015 -0600
----------------------------------------------------------------------
.../queue/impl/QueueManagerFactoryImpl.java | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/1c7ab043/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/QueueManagerFactoryImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/QueueManagerFactoryImpl.java b/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/QueueManagerFactoryImpl.java
index 2f9e7b1..d0ed1ef 100644
--- a/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/QueueManagerFactoryImpl.java
+++ b/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/QueueManagerFactoryImpl.java
@@ -25,6 +25,9 @@ import com.google.inject.Provider;
import com.google.inject.Singleton;
import org.apache.usergrid.persistence.queue.*;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* manages whether we take in an external in memory override for queues.
*/
@@ -34,14 +37,25 @@ public class QueueManagerFactoryImpl implements QueueManagerFactory {
private final QueueFig queueFig;
private final QueueManagerInternalFactory queuemanagerInternalFactory;
+ private final Map<String,QueueManager> defaultManager;
@Inject
public QueueManagerFactoryImpl(final QueueFig queueFig, final QueueManagerInternalFactory queuemanagerInternalFactory){
this.queueFig = queueFig;
this.queuemanagerInternalFactory = queuemanagerInternalFactory;
+ this.defaultManager = new HashMap<>(10);
}
@Override
public QueueManager getQueueManager(QueueScope scope) {
- return queueFig.overrideQueueForDefault() ? new DefaultQueueManager() : queuemanagerInternalFactory.getQueueManager(scope);
+ if(queueFig.overrideQueueForDefault()){
+ QueueManager manager = defaultManager.get(scope.getName());
+ if(manager==null){
+ manager = new DefaultQueueManager();
+ defaultManager.put(scope.getName(),manager);
+ }
+ return manager;
+ }else{
+ return queuemanagerInternalFactory.getQueueManager(scope);
+ }
}
}
[14/16] usergrid git commit: Fix issue with portal login button not
handling failed logins properly when logging is disabled. Bump version.
Posted by sn...@apache.org.
Fix issue with portal login button not handling failed logins properly when logging is disabled. Bump version.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/7eb997b1
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/7eb997b1
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/7eb997b1
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: 7eb997b1c550bbd1661e223570b18f4cf2ba84d7
Parents: ca32186
Author: Michael Russo <mi...@gmail.com>
Authored: Fri Sep 11 16:59:40 2015 -0700
Committer: Michael Russo <mi...@gmail.com>
Committed: Fri Sep 11 16:59:40 2015 -0700
----------------------------------------------------------------------
portal/bower.json | 2 +-
portal/js/libs/usergrid.sdk.js | 8 +++++---
portal/package.json | 2 +-
3 files changed, 7 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/7eb997b1/portal/bower.json
----------------------------------------------------------------------
diff --git a/portal/bower.json b/portal/bower.json
index 3c4784c..7ffb4ff 100644
--- a/portal/bower.json
+++ b/portal/bower.json
@@ -1,6 +1,6 @@
{
"name": "usergrid-portal",
- "version": "2.0.17",
+ "version": "2.0.18",
"ignore": [
".jshintrc",
"**/*.txt",
http://git-wip-us.apache.org/repos/asf/usergrid/blob/7eb997b1/portal/js/libs/usergrid.sdk.js
----------------------------------------------------------------------
diff --git a/portal/js/libs/usergrid.sdk.js b/portal/js/libs/usergrid.sdk.js
index 795e3e2..d527ea0 100755
--- a/portal/js/libs/usergrid.sdk.js
+++ b/portal/js/libs/usergrid.sdk.js
@@ -774,8 +774,10 @@
var user = {};
var organizations = {};
var applications = {};
- if (err && self.logging) {
- console.log('error trying to log user in');
+ if (err ) {
+ if(self.logging) {
+ console.log('error trying to log user in');
+ }
} else {
var options = {
client: self,
@@ -2563,4 +2565,4 @@
return tail.join("&");
}
-})(window, sessionStorage);
\ No newline at end of file
+})(window, sessionStorage);
http://git-wip-us.apache.org/repos/asf/usergrid/blob/7eb997b1/portal/package.json
----------------------------------------------------------------------
diff --git a/portal/package.json b/portal/package.json
index d91ec7a..e36a910 100644
--- a/portal/package.json
+++ b/portal/package.json
@@ -1,6 +1,6 @@
{
"name": "usergrid",
- "version": "2.0.17",
+ "version": "2.0.18",
"packageName": "appsvc-ui",
"description": "full usergrid portal",
"main": "./scripts/web-server.js",
[12/16] usergrid git commit: remove location if its not a map
Posted by sn...@apache.org.
remove location if its not a map
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/56801735
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/56801735
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/56801735
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: 56801735c9af438b090df700c17b8ca8c22f6be9
Parents: 58f7402
Author: Shawn Feldman <sf...@apache.org>
Authored: Fri Sep 11 17:44:57 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Fri Sep 11 17:44:57 2015 -0600
----------------------------------------------------------------------
.../corepersistence/CpEntityMapUtilsTest.java | 5 ++-
stack/corepersistence/model/pom.xml | 6 ++-
.../model/entity/MapToEntityConverter.java | 39 +++++++++++++++-----
3 files changed, 37 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/56801735/stack/core/src/test/java/org/apache/usergrid/corepersistence/CpEntityMapUtilsTest.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/corepersistence/CpEntityMapUtilsTest.java b/stack/core/src/test/java/org/apache/usergrid/corepersistence/CpEntityMapUtilsTest.java
index 6e4e9a4..325e51f 100644
--- a/stack/core/src/test/java/org/apache/usergrid/corepersistence/CpEntityMapUtilsTest.java
+++ b/stack/core/src/test/java/org/apache/usergrid/corepersistence/CpEntityMapUtilsTest.java
@@ -38,6 +38,7 @@ import java.io.IOException;
import java.util.*;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -132,14 +133,14 @@ public class CpEntityMapUtilsTest {
cpEntity = CpEntityMapUtils.fromMap(properties, "loc", true);
- assertTrue(cpEntity.getFieldMap().get("location") instanceof EntityObjectField);
+ assertNull(cpEntity.getFieldMap().get("location"));
properties = new LinkedHashMap<String, Object>();
properties.put("location", "denver");
cpEntity = CpEntityMapUtils.fromMap(properties, "loc", true);
- assertTrue(cpEntity.getFieldMap().get("location") instanceof StringField);
+ assertNull(cpEntity.getFieldMap().get("location") );
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/56801735/stack/corepersistence/model/pom.xml
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/pom.xml b/stack/corepersistence/model/pom.xml
index 142bca1..591935f 100644
--- a/stack/corepersistence/model/pom.xml
+++ b/stack/corepersistence/model/pom.xml
@@ -40,7 +40,11 @@
<artifactId>commons-lang3</artifactId>
<version>${commons.lang.version}</version>
</dependency>
-
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>${slf4j.version}</version>
+ </dependency>
<!-- the core, which includes Streaming API, shared low-level abstractions (but NOT data-binding) -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
http://git-wip-us.apache.org/repos/asf/usergrid/blob/56801735/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/MapToEntityConverter.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/MapToEntityConverter.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/MapToEntityConverter.java
index e6744c4..dbd1b2a 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/MapToEntityConverter.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/MapToEntityConverter.java
@@ -25,15 +25,22 @@ import com.fasterxml.jackson.datatype.guava.GuavaModule;
import org.apache.usergrid.persistence.model.collection.SchemaManager;
import org.apache.usergrid.persistence.model.field.*;
import org.apache.usergrid.persistence.model.field.value.Location;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.nio.ByteBuffer;
import java.util.*;
public class MapToEntityConverter{
+ public static final Logger logger = LoggerFactory.getLogger(MapToEntityConverter.class);
private final JsonFactory jsonFactory = new JsonFactory();
private final ObjectMapper objectMapper = new ObjectMapper(jsonFactory).registerModule(new GuavaModule());
+ static final String locationKey = "location";
+ static final String lat = "latitude";
+ static final String lon = "longitude";
+
public Entity fromMap( Map<String, Object> map, boolean topLevel ) {
Entity entity = new Entity();
@@ -48,9 +55,15 @@ public class MapToEntityConverter{
}
Object value = map.get( fieldName );
boolean unique = schemaManager == null ? topLevel : topLevel && schemaManager.isPropertyUnique(entityType, fieldName);
+ //cannot store fields that aren't locations
+ if(fieldName.toLowerCase().equals(locationKey) && !(value instanceof Map)) {
+ logger.warn("can't map entity with location field");
+ continue;
+ }
if ( value instanceof String ) {
- entity.setField( new StringField( fieldName, (String)value, unique ));
+ String stringValue =(String)value;
+ entity.setField(new StringField(fieldName, stringValue, unique));
} else if ( value instanceof Boolean ) {
entity.setField( new BooleanField( fieldName, (Boolean)value, unique ));
@@ -190,26 +203,28 @@ public class MapToEntityConverter{
// Expect at least two fields in a Location object and must have lat lon
if (m.size() >= 2 && (
- (m.containsKey("latitude") && m.containsKey("longitude") )
+ (m.containsKey(lat) && m.containsKey(lon) )
|| (m.containsKey("lat") && m.containsKey("lon") )
)) {
- Double lat, lon;
+ Double latVal, lonVal;
// check the properties to make sure they are set and are doubles
- if (m.containsKey("latitude") && m.containsKey("longitude")) {
+ if (m.containsKey(lat) && m.containsKey(lon)) {
try {
- lat = Double.parseDouble(m.get("latitude").toString());
- lon = Double.parseDouble(m.get("longitude").toString());
+ latVal = Double.parseDouble(m.get(lat).toString());
+ lonVal = Double.parseDouble(m.get(lon).toString());
} catch (NumberFormatException ignored) {
throw new IllegalArgumentException(
"Latitude and longitude must be doubles (e.g. 32.1234).");
}
} else if (m.containsKey("lat") && m.containsKey("lon")) {
+ logger.warn("Entity contains latitude and longitude in old format location{lat,long}"
+ );
try {
- lat = Double.parseDouble(m.get("lat").toString());
- lon = Double.parseDouble(m.get("lon").toString());
+ latVal = Double.parseDouble(m.get("lat").toString());
+ lonVal = Double.parseDouble(m.get("lon").toString());
} catch (NumberFormatException ignored) {
throw new IllegalArgumentException(""
+ "Latitude and longitude must be doubles (e.g. 32.1234).");
@@ -219,9 +234,13 @@ public class MapToEntityConverter{
+ "latitude and longitude, or lat and lon");
}
- entity.setField(new LocationField(fieldName, new Location(lat, lon)));
+ entity.setField(new LocationField(fieldName, new Location(latVal, lonVal)));
} else {
- entity.setField(new EntityObjectField(fieldName,fromMap( value, false))); // recursion
+ //can't process non enties
+ logger.warn(
+ "entity cannot process location values that don't have valid location{latitude,longitude} values"
+ );
+ // entity.setField(new EntityObjectField(fieldName,fromMap( value, false))); // recursion
}
}
}
[11/16] usergrid git commit: removing noop exceptions,
removing failures due to bad location fields
Posted by sn...@apache.org.
removing noop exceptions, removing failures due to bad location fields
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/58f7402d
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/58f7402d
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/58f7402d
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: 58f7402db5686ada9174b301ebeebb09a55ceb29
Parents: c3c71c9
Author: Shawn Feldman <sf...@apache.org>
Authored: Fri Sep 11 17:17:02 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Fri Sep 11 17:17:02 2015 -0600
----------------------------------------------------------------------
.../corepersistence/CpEntityMapUtilsTest.java | 51 ++++++++++++++++++--
1 file changed, 47 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/58f7402d/stack/core/src/test/java/org/apache/usergrid/corepersistence/CpEntityMapUtilsTest.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/corepersistence/CpEntityMapUtilsTest.java b/stack/core/src/test/java/org/apache/usergrid/corepersistence/CpEntityMapUtilsTest.java
index 5dd8f3a..6e4e9a4 100644
--- a/stack/core/src/test/java/org/apache/usergrid/corepersistence/CpEntityMapUtilsTest.java
+++ b/stack/core/src/test/java/org/apache/usergrid/corepersistence/CpEntityMapUtilsTest.java
@@ -21,20 +21,21 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
+import junit.framework.Assert;
import org.apache.usergrid.corepersistence.util.CpEntityMapUtils;
import org.apache.usergrid.persistence.model.entity.Entity;
import org.apache.usergrid.persistence.model.entity.SimpleId;
+import org.apache.usergrid.persistence.model.field.EntityObjectField;
import org.apache.usergrid.persistence.model.field.ListField;
+import org.apache.usergrid.persistence.model.field.LocationField;
+import org.apache.usergrid.persistence.model.field.StringField;
import org.apache.usergrid.persistence.model.field.value.EntityObject;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -100,6 +101,48 @@ public class CpEntityMapUtilsTest {
}
+ @Test
+ public void testLocation() {
+
+ /*** This tests example property input of
+
+ {
+ "nestedarray" : [ [ "fred" ] ]
+ }
+
+ ****/
+ Map<String, Object> locMap = new HashMap<>();
+ locMap.put("latitude", 123.1);
+ locMap.put("longitude", 123.1);
+
+ Map<String, Object> properties = new LinkedHashMap<String, Object>();
+ properties.put("location", locMap);
+
+ Entity cpEntity = CpEntityMapUtils.fromMap(properties, "loc", true);
+
+ assertTrue(cpEntity.getFieldMap().get("location") instanceof LocationField);
+
+
+ locMap = new HashMap<>();
+ locMap.put("latitude", 123.1);
+ locMap.put("lgnosoos", 123.1);
+
+ properties = new LinkedHashMap<String, Object>();
+ properties.put("location", locMap);
+
+ cpEntity = CpEntityMapUtils.fromMap(properties, "loc", true);
+
+ assertTrue(cpEntity.getFieldMap().get("location") instanceof EntityObjectField);
+
+ properties = new LinkedHashMap<String, Object>();
+ properties.put("location", "denver");
+
+ cpEntity = CpEntityMapUtils.fromMap(properties, "loc", true);
+
+ assertTrue(cpEntity.getFieldMap().get("location") instanceof StringField);
+ }
+
+
@Test
public void testSerialization() throws JsonProcessingException, IOException {
[09/16] usergrid git commit: removing noop exceptions,
removing failures due to bad location fields
Posted by sn...@apache.org.
removing noop exceptions, removing failures due to bad location fields
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/98e76ae8
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/98e76ae8
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/98e76ae8
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: 98e76ae897484fe8eae2cd0e215b365d23c4916a
Parents: cf6cf83
Author: Shawn Feldman <sf...@apache.org>
Authored: Fri Sep 11 17:10:59 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Fri Sep 11 17:10:59 2015 -0600
----------------------------------------------------------------------
.../model/entity/MapToEntityConverter.java | 39 ++++++++------------
.../exceptions/AbstractExceptionMapper.java | 13 +++++--
2 files changed, 25 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/98e76ae8/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/MapToEntityConverter.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/MapToEntityConverter.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/MapToEntityConverter.java
index 09cf1f2..e6744c4 100644
--- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/MapToEntityConverter.java
+++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/MapToEntityConverter.java
@@ -163,14 +163,11 @@ public class MapToEntityConverter{
}
- private void processMapValue(
- Object value, String fieldName, Entity entity) {
+ private void processMapValue( Object value, String fieldName, Entity entity) {
// is the map really a location element?
if ("location" .equals(fieldName.toString().toLowerCase()) ) {
processLocationField((Map<String, Object>) value, fieldName, entity);
-
-
} else {
// not a location element, process it as map
entity.setField(new EntityObjectField(fieldName,
@@ -187,48 +184,44 @@ public class MapToEntityConverter{
Map<String, Object> m = new HashMap<String, Object>();
// Tests expect us to treat "Longitude" the same as "longitude"
- for ( String key : origMap.keySet() ) {
- m.put( key.toLowerCase(), origMap.get(key) );
+ for (String key : origMap.keySet()) {
+ m.put(key.toLowerCase(), origMap.get(key));
}
- // Expect at least two fields in a Location object
- if (m.size() >= 2) {
+ // Expect at least two fields in a Location object and must have lat lon
+ if (m.size() >= 2 && (
+ (m.containsKey("latitude") && m.containsKey("longitude") )
+ || (m.containsKey("lat") && m.containsKey("lon") )
+ )) {
- Double lat = null;
- Double lon = null;
+ Double lat, lon;
// check the properties to make sure they are set and are doubles
- if (m.get("latitude") != null && m.get("longitude") != null) {
+ if (m.containsKey("latitude") && m.containsKey("longitude")) {
try {
lat = Double.parseDouble(m.get("latitude").toString());
lon = Double.parseDouble(m.get("longitude").toString());
} catch (NumberFormatException ignored) {
throw new IllegalArgumentException(
- "Latitude and longitude must be doubles (e.g. 32.1234).");
+ "Latitude and longitude must be doubles (e.g. 32.1234).");
}
- } else if (m.get("lat") != null && m.get("lon") != null) {
+ } else if (m.containsKey("lat") && m.containsKey("lon")) {
try {
lat = Double.parseDouble(m.get("lat").toString());
lon = Double.parseDouble(m.get("lon").toString());
} catch (NumberFormatException ignored) {
throw new IllegalArgumentException(""
- + "Latitude and longitude must be doubles (e.g. 32.1234).");
+ + "Latitude and longitude must be doubles (e.g. 32.1234).");
}
} else {
throw new IllegalArgumentException("Location properties require two fields - "
- + "latitude and longitude, or lat and lon");
+ + "latitude and longitude, or lat and lon");
}
- if (lat != null && lon != null) {
- entity.setField( new LocationField(fieldName, new Location(lat, lon)));
- } else {
- throw new IllegalArgumentException( "Unable to parse location field properties "
- + "- make sure they conform - lat and lon, and should be doubles.");
- }
+ entity.setField(new LocationField(fieldName, new Location(lat, lon)));
} else {
- throw new IllegalArgumentException("Location properties requires two fields - "
- + "latitude and longitude, or lat and lon.");
+ entity.setField(new EntityObjectField(fieldName,fromMap( value, false))); // recursion
}
}
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/98e76ae8/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/AbstractExceptionMapper.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/AbstractExceptionMapper.java b/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/AbstractExceptionMapper.java
index 77760e0..1dbffbd 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/AbstractExceptionMapper.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/AbstractExceptionMapper.java
@@ -49,7 +49,7 @@ public abstract class AbstractExceptionMapper<E extends java.lang.Throwable> imp
public boolean isJSONP() {
- return isJavascript( hh.getAcceptableMediaTypes() );
+ return isJavascript(hh.getAcceptableMediaTypes());
}
@@ -71,13 +71,18 @@ public abstract class AbstractExceptionMapper<E extends java.lang.Throwable> imp
// only log real errors as errors
logger.error( e.getClass().getCanonicalName() + " Server Error (" + status + ")", e );
- } else if ( logger.isDebugEnabled() ) {
- logger.debug( e.getClass().getCanonicalName() + " Server Error (" + status + ")", e );
+ } else {
+ if (logger.isDebugEnabled()) {
+ logger.debug(e.getClass().getCanonicalName() + " Server Error (" + status + ")", e);
+ }
+ switch (status){
+ case 200 : logger.info("Uncaught Exception", e); break;
+ default: logger.error("Uncaught Exception", e);
+ }
}
ApiResponse response = new ApiResponse();
- logger.error("Uncaught Exception", e);
AuthErrorInfo authError = AuthErrorInfo.getForException( e );
[08/16] usergrid git commit: Updating EdgeDeleteEvent
Posted by sn...@apache.org.
Updating EdgeDeleteEvent
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/f24e7e40
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/f24e7e40
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/f24e7e40
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: f24e7e40cbd4f55154f4585d795a793d870c528f
Parents: 66ba6b4
Author: Michael Russo <mi...@gmail.com>
Authored: Fri Sep 11 13:35:51 2015 -0700
Committer: Michael Russo <mi...@gmail.com>
Committed: Fri Sep 11 13:35:51 2015 -0700
----------------------------------------------------------------------
.../corepersistence/asyncevents/AmazonAsyncEventService.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/f24e7e40/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java
index 71834c3..fcb93c9 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java
@@ -354,10 +354,10 @@ public class AmazonAsyncEventService implements AsyncEventService {
Preconditions.checkArgument(event instanceof EdgeDeleteEvent, String.format("Event Type for handleEdgeDelete must be EDGE_DELETE, got %s", event.getClass()));
- final EdgeIndexEvent edgeIndexEvent = ( EdgeIndexEvent ) event;
+ final EdgeDeleteEvent edgeDeleteEvent = ( EdgeDeleteEvent ) event;
- final ApplicationScope applicationScope = edgeIndexEvent.getApplicationScope();
- final Edge edge = edgeIndexEvent.getEdge();
+ final ApplicationScope applicationScope = edgeDeleteEvent.getApplicationScope();
+ final Edge edge = edgeDeleteEvent.getEdge();
if (logger.isDebugEnabled()) logger.debug("Deleting in app scope {} with edge {}", applicationScope, edge);
[15/16] usergrid git commit: Add note that notification expiration
timestamp is specified in seconds.
Posted by sn...@apache.org.
Add note that notification expiration timestamp is specified in seconds.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/2faa8056
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/2faa8056
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/2faa8056
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: 2faa805672721bc2d56eaa3b9e2d28fb7f1a6bec
Parents: 7eb997b
Author: Dave Johnson <sn...@apache.org>
Authored: Mon Sep 14 09:31:11 2015 -0400
Committer: Dave Johnson <sn...@apache.org>
Committed: Mon Sep 14 09:31:11 2015 -0400
----------------------------------------------------------------------
docs/push-notifications/creating-and-managing-notifications.md | 2 ++
1 file changed, 2 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/2faa8056/docs/push-notifications/creating-and-managing-notifications.md
----------------------------------------------------------------------
diff --git a/docs/push-notifications/creating-and-managing-notifications.md b/docs/push-notifications/creating-and-managing-notifications.md
index 72a2021..501dbee 100644
--- a/docs/push-notifications/creating-and-managing-notifications.md
+++ b/docs/push-notifications/creating-and-managing-notifications.md
@@ -189,6 +189,8 @@ Please note that if the expire property is not set and Apple APNS or Google GCM
Request body syntax
'{"expire":<unix_timestamp>,"payloads":{"<notifier_name>":"<message>"}}'
+
+NOTE: The timestamp is a UNIX timestamp and is specified in seconds.
## Getting notifications
[16/16] usergrid git commit: Merge branch 'two-dot-o-dev' into
usergrid-103-upgrade-jersey
Posted by sn...@apache.org.
Merge branch 'two-dot-o-dev' into usergrid-103-upgrade-jersey
Conflicts:
stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/OrganizationResource.java
stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
stack/rest/src/main/java/org/apache/usergrid/rest/security/shiro/filters/BasicAuthSecurityFilter.java
stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/d4e8be8b
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/d4e8be8b
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/d4e8be8b
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: d4e8be8b09f914842407a35428617cd2f06db092
Parents: 2888a7c 2faa805
Author: Dave Johnson <sn...@apache.org>
Authored: Mon Sep 14 13:54:18 2015 -0400
Committer: Dave Johnson <sn...@apache.org>
Committed: Mon Sep 14 13:54:18 2015 -0400
----------------------------------------------------------------------
.../creating-and-managing-notifications.md | 2 +
portal/bower.json | 2 +-
portal/js/libs/usergrid.sdk.js | 8 ++-
portal/package.json | 2 +-
.../asyncevents/AmazonAsyncEventService.java | 6 +-
.../persistence/entities/Notification.java | 13 ++--
.../corepersistence/CpEntityMapUtilsTest.java | 52 +++++++++++++--
stack/corepersistence/model/pom.xml | 6 +-
.../model/entity/MapToEntityConverter.java | 68 ++++++++++++--------
.../queue/impl/QueueManagerFactoryImpl.java | 16 ++++-
.../rest/applications/ApplicationResource.java | 11 +++-
.../exceptions/AbstractExceptionMapper.java | 13 ++--
.../organizations/OrganizationResource.java | 8 ++-
.../security/SecuredResourceFilterFactory.java | 46 ++++++-------
.../shiro/filters/BasicAuthSecurityFilter.java | 6 +-
.../applications/ApplicationResourceIT.java | 14 +++-
stack/scripts/migrate_entity_data.py | 17 +++++
.../apache/usergrid/security/shiro/Realm.java | 24 +++++++
.../notifications/apns/APNsNotification.java | 8 +--
.../services/notifications/gcm/GCMAdapter.java | 9 +--
.../services/notifications/wns/WNSAdapter.java | 13 +++-
.../apns/NotificationsServiceIT.java | 1 +
.../gcm/NotificationsServiceIT.java | 1 +
23 files changed, 254 insertions(+), 92 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/d4e8be8b/stack/corepersistence/model/pom.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/d4e8be8b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
----------------------------------------------------------------------
diff --cc stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
index afcbbaf,c521d4f..e830876
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
@@@ -34,9 -35,9 +34,10 @@@ import org.apache.usergrid.persistence.
import org.apache.usergrid.persistence.SimpleEntityRef;
import org.apache.usergrid.persistence.entities.Application;
import org.apache.usergrid.persistence.entities.User;
+ import org.apache.usergrid.persistence.exceptions.EntityNotFoundException;
import org.apache.usergrid.persistence.index.query.Identifier;
import org.apache.usergrid.rest.AbstractContextResource;
+import org.apache.usergrid.rest.ApiResponse;
import org.apache.usergrid.rest.applications.assets.AssetsResource;
import org.apache.usergrid.rest.applications.events.EventsResource;
import org.apache.usergrid.rest.applications.queues.QueueResource;
@@@ -591,9 -591,14 +593,14 @@@ public class ApplicationResource extend
APIGEE_MOBILE_APM_CONFIG_JSON_KEY );
//If there is no apm configuration then try to create apm config on the fly
if ( value == null ) {
- value = management.registerAppWithAPM( management.getOrganizationForApplication( applicationId ),
- management.getApplicationInfo( applicationId ) );
+ value = management.registerAppWithAPM(
+ management.getOrganizationForApplication( applicationId ),
+ management.getApplicationInfo( applicationId )
+ );
+ }
+ if(value==null){
+ throw new EntityNotFoundException("apigeeMobileConfig not found, it is possibly not enabled for your config.");
}
- return new JSONWithPadding( value, callback );
+ return value;
}
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/d4e8be8b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/OrganizationResource.java
----------------------------------------------------------------------
diff --cc stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/OrganizationResource.java
index 8055849,5a55c9e..e1fde46
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/OrganizationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/OrganizationResource.java
@@@ -362,11 -363,10 +363,11 @@@ public class OrganizationResource exten
}
- @RequireOrganizationAccess
+ @JSONP
+ @RequireSystemAccess
@GET
@Path("config")
- public JSONWithPadding getConfig( @Context UriInfo ui,
+ public ApiResponse getConfig( @Context UriInfo ui,
@QueryParam("callback") @DefaultValue("callback") String callback )
throws Exception {
@@@ -389,12 -389,11 +390,12 @@@
}
- @RequireOrganizationAccess
+ @RequireSystemAccess
@Consumes(MediaType.APPLICATION_JSON)
+ @JSONP
@PUT
@Path("config")
- public JSONWithPadding putConfig( @Context UriInfo ui, Map<String, Object> json,
+ public ApiResponse putConfig( @Context UriInfo ui, Map<String, Object> json,
@QueryParam("callback") @DefaultValue("callback") String callback )
throws Exception {
@@@ -411,9 -410,12 +412,12 @@@
management.getOrganizationConfigByUuid( organization.getUuid() );
orgConfig.addProperties(json);
management.updateOrganizationConfig(orgConfig);
+
+ // refresh orgConfig -- to pick up removed entries and defaults
+ orgConfig = management.getOrganizationConfigByUuid( organization.getUuid() );
response.setProperty( "configuration", management.getOrganizationConfigData( orgConfig ) );
- return new JSONWithPadding( response, callback );
+ return response;
}
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/d4e8be8b/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
----------------------------------------------------------------------
diff --cc stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
index f6edfcc,6f7d698..3a290d9
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/security/SecuredResourceFilterFactory.java
@@@ -52,11 -54,15 +52,12 @@@ import java.util.Properties
import static org.apache.commons.lang.StringUtils.isNotEmpty;
import static org.apache.usergrid.rest.exceptions.SecurityException.mappableSecurityException;
-import static org.apache.usergrid.security.shiro.utils.SubjectUtils.isPermittedAccessToApplication;
-import static org.apache.usergrid.security.shiro.utils.SubjectUtils.isPermittedAccessToOrganization;
-import static org.apache.usergrid.security.shiro.utils.SubjectUtils.isUser;
-import static org.apache.usergrid.security.shiro.utils.SubjectUtils.loginApplicationGuest;
+ import static org.apache.usergrid.security.shiro.Realm.ROLE_SERVICE_ADMIN;
+import static org.apache.usergrid.security.shiro.utils.SubjectUtils.*;
-@Component
-public class SecuredResourceFilterFactory implements ResourceFilterFactory {
+@Resource
+public class SecuredResourceFilterFactory implements DynamicFeature {
private static final Logger logger = LoggerFactory.getLogger( SecuredResourceFilterFactory.class );
@@@ -112,39 -119,43 +113,39 @@@
@Override
- public List<ResourceFilter> create( AbstractMethod am ) {
+ public void configure(ResourceInfo resourceInfo, FeatureContext featureContext) {
+ Method am = resourceInfo.getResourceMethod();
+
+ logger.debug( "configure {} method {}",
+ resourceInfo.getResourceClass().getSimpleName(), resourceInfo.getResourceMethod().getName() );
+
if ( am.isAnnotationPresent( RequireApplicationAccess.class ) ) {
- return Collections.<ResourceFilter>singletonList( new ApplicationFilter() );
+ featureContext.register( ApplicationFilter.class );
}
else if ( am.isAnnotationPresent( RequireOrganizationAccess.class ) ) {
- return Collections.<ResourceFilter>singletonList( new OrganizationFilter() );
+ featureContext.register( OrganizationFilter.class );
}
else if ( am.isAnnotationPresent( RequireSystemAccess.class ) ) {
- return Collections.<ResourceFilter>singletonList( new SystemFilter() );
+ featureContext.register( SystemFilter.class );
}
else if ( am.isAnnotationPresent( RequireAdminUserAccess.class ) ) {
- featureContext.register( AdminUserFilter.class );
- return Collections.<ResourceFilter>singletonList( new AdminUserFilter() );
++ featureContext.register( SystemFilter.AdminUserFilter.class );
}
- return null;
- }
+ }
- public abstract class AbstractFilter implements ResourceFilter, ContainerRequestFilter {
- public AbstractFilter() {
- }
+ public static abstract class AbstractFilter implements ContainerRequestFilter {
+ private UriInfo uriInfo;
- @Override
- public ContainerRequestFilter getRequestFilter() {
- return this;
+ public AbstractFilter( UriInfo uriInfo ) {
+ this.uriInfo = uriInfo;
}
-
@Override
- public ContainerResponseFilter getResponseFilter() {
- return null;
- }
-
+ public void filter(ContainerRequestContext request) throws IOException {
- @Override
- public ContainerRequest filter( ContainerRequest request ) {
- logger.debug( "Filtering {}", request.getRequestUri().toString() );
+ logger.debug( "Filtering {}", request.getUriInfo().getRequestUri().toString() );
if ( request.getMethod().equalsIgnoreCase( "OPTIONS" ) ) {
logger.debug( "Skipping option request" );
@@@ -299,51 -291,44 +300,50 @@@
}
- public class SystemFilter extends AbstractFilter {
- public SystemFilter() {
+ @Resource
+ public static class SystemFilter extends AbstractFilter {
+
+ @Inject
- public SystemFilter( UriInfo uriInfo ) {
- super(uriInfo);
++ public SystemFilter(UriInfo uriInfo) {
++ super( uriInfo );
}
@Override
- public void authorize( ContainerRequestContext request ) {
- public void authorize( ContainerRequest request ) {
++ public void authorize(ContainerRequestContext request) {
logger.debug( "SystemFilter.authorize" );
try {
- if ( !request.getSecurityContext().isUserInRole( "sysadmin" ) ) {
- if ( !request.isUserInRole( ROLE_SERVICE_ADMIN ) ) {
++ if (!request.getSecurityContext().isUserInRole( ROLE_SERVICE_ADMIN )) {
logger.debug( "You are not the system admin." );
throw mappableSecurityException( "unauthorized", "No system access authorized",
- SecurityException.REALM );
+ SecurityException.REALM );
}
-- }
-- catch ( IllegalStateException e ) {
-- logger.debug( "This is an invalid state",e );
- if ( ( request.getSecurityContext().getUserPrincipal() == null ) || !"sysadmin"
- .equals( request.getSecurityContext().getUserPrincipal().getName() ) ) {
- if ( ( request.getUserPrincipal() == null ) ||
- !ROLE_SERVICE_ADMIN.equals( request.getUserPrincipal().getName() ) ) {
++ } catch (IllegalStateException e) {
++ logger.debug( "This is an invalid state", e );
++ if ((request.getSecurityContext().getUserPrincipal() == null) ||
++ !ROLE_SERVICE_ADMIN.equals( request.getSecurityContext().getUserPrincipal().getName() )) {
throw mappableSecurityException( "unauthorized", "No system access authorized",
- SecurityException.REALM );
+ SecurityException.REALM );
}
}
}
-- }
++ @Resource
++ public static class AdminUserFilter extends AbstractFilter {
- @Resource
- public static class AdminUserFilter extends AbstractFilter {
-
- @Inject
- public AdminUserFilter( UriInfo uriInfo ) {
- super(uriInfo);
- public class AdminUserFilter extends AbstractFilter {
- public AdminUserFilter() {
-- }
-
++ @Inject
++ public AdminUserFilter(UriInfo uriInfo) {
++ super( uriInfo );
++ }
-- @Override
- public void authorize( ContainerRequestContext request ) {
- public void authorize( ContainerRequest request ) {
-- logger.debug( "AdminUserFilter.authorize" );
-- if ( !isUser( getUserIdentifier() ) ) {
-- throw mappableSecurityException( "unauthorized", "No admin user access authorized" );
++ @Override
++ public void authorize(ContainerRequestContext request) {
++ logger.debug( "AdminUserFilter.authorize" );
++ if (!isUser( getUserIdentifier() )) {
++ throw mappableSecurityException( "unauthorized", "No admin user access authorized" );
++ }
}
}
++
}
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/d4e8be8b/stack/rest/src/main/java/org/apache/usergrid/rest/security/shiro/filters/BasicAuthSecurityFilter.java
----------------------------------------------------------------------
diff --cc stack/rest/src/main/java/org/apache/usergrid/rest/security/shiro/filters/BasicAuthSecurityFilter.java
index cb0745a,d0fb3bf..1643501
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/security/shiro/filters/BasicAuthSecurityFilter.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/security/shiro/filters/BasicAuthSecurityFilter.java
@@@ -17,20 -17,22 +17,22 @@@
package org.apache.usergrid.rest.security.shiro.filters;
-import java.security.Principal;
-import java.util.Map;
-
-import javax.ws.rs.core.SecurityContext;
-
+import org.apache.shiro.codec.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-import org.apache.shiro.codec.Base64;
-import static org.apache.usergrid.security.shiro.Realm.ROLE_SERVICE_ADMIN;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.ext.Provider;
+import java.security.Principal;
+import java.util.Map;
-import com.sun.jersey.spi.container.ContainerRequest;
++import static org.apache.usergrid.security.shiro.Realm.ROLE_SERVICE_ADMIN;
+
-@Component
+@Provider
+@PreMatching
public class BasicAuthSecurityFilter extends SecurityFilter {
private static final Logger logger = LoggerFactory.getLogger( BasicAuthSecurityFilter.class );
http://git-wip-us.apache.org/repos/asf/usergrid/blob/d4e8be8b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
index bc24f5b,f7e8dc3..8a94760
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
@@@ -17,6 -17,11 +17,8 @@@
package org.apache.usergrid.rest.applications;
import com.fasterxml.jackson.databind.JsonNode;
-import com.sun.jersey.api.client.ClientResponse.Status;
+ import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.representation.Form;
+ import junit.framework.Assert;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.shiro.codec.Base64;
import org.apache.usergrid.cassandra.SpringResource;
@@@ -32,12 -37,7 +34,12 @@@ import org.junit.Test
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
++import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.InternalServerErrorException;
+import javax.ws.rs.client.Invocation;
- import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.core.Form;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
[13/16] usergrid git commit: Change 'expire' property for
notifications to support milliseconds, matching the 'deliver' property.
Posted by sn...@apache.org.
Change 'expire' property for notifications to support milliseconds, matching the 'deliver' property.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/ca32186e
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/ca32186e
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/ca32186e
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: ca32186e9117fd51c56c4320cd816c1be381b79b
Parents: 5680173
Author: Michael Russo <mi...@gmail.com>
Authored: Fri Sep 11 16:50:16 2015 -0700
Committer: Michael Russo <mi...@gmail.com>
Committed: Fri Sep 11 16:50:16 2015 -0700
----------------------------------------------------------------------
.../apache/usergrid/persistence/entities/Notification.java | 7 +++----
.../usergrid/services/notifications/gcm/GCMAdapter.java | 2 +-
.../services/notifications/apns/NotificationsServiceIT.java | 2 +-
.../services/notifications/gcm/NotificationsServiceIT.java | 2 +-
4 files changed, 6 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/ca32186e/stack/core/src/main/java/org/apache/usergrid/persistence/entities/Notification.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/entities/Notification.java b/stack/core/src/main/java/org/apache/usergrid/persistence/entities/Notification.java
index d1101a5..362201a 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/entities/Notification.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/entities/Notification.java
@@ -147,7 +147,7 @@ public class Notification extends TypedEntity {
@JsonIgnore
public boolean isExpired() {
- return expire != null && expire > System.currentTimeMillis();
+ return expire != null && expire < System.currentTimeMillis();
}
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@@ -232,13 +232,12 @@ public class Notification extends TypedEntity {
@JsonIgnore
public long getExpireTimeMillis() {
- long expireAtMillis = getExpire() != null ? getExpire() * 1000 : 0;
- return expireAtMillis;
+ return getExpire() != null ? getExpire() : 0;
}
@JsonIgnore
public long getExpireTTLSeconds() {
- Long ttlSeconds = (getExpireTimeMillis() - new Date().getTime()) / 1000;
+ long ttlSeconds = (getExpireTimeMillis() - System.currentTimeMillis()) / 1000;
return ttlSeconds > 0 ? ttlSeconds : 0;
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/ca32186e/stack/services/src/main/java/org/apache/usergrid/services/notifications/gcm/GCMAdapter.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/notifications/gcm/GCMAdapter.java b/stack/services/src/main/java/org/apache/usergrid/services/notifications/gcm/GCMAdapter.java
index df1b580..bdd7737 100644
--- a/stack/services/src/main/java/org/apache/usergrid/services/notifications/gcm/GCMAdapter.java
+++ b/stack/services/src/main/java/org/apache/usergrid/services/notifications/gcm/GCMAdapter.java
@@ -71,7 +71,7 @@ public class GCMAdapter implements ProviderAdapter {
final String expiresKey = "time_to_live";
if(!map.containsKey(expiresKey) && notification.getExpire() != null){
// ttl provided to GCM is in seconds. calculate the difference from now
- Long ttlSeconds = notification.getExpireTTLSeconds();
+ long ttlSeconds = notification.getExpireTTLSeconds();
// max ttl for gcm is 4 weeks - https://developers.google.com/cloud-messaging/http-server-ref
ttlSeconds = ttlSeconds <= 2419200 ? ttlSeconds : 2419200;
map.put(expiresKey, ttlSeconds);
http://git-wip-us.apache.org/repos/asf/usergrid/blob/ca32186e/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
index bd248a5..9c1bcbe 100644
--- a/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
@@ -153,7 +153,7 @@ public class NotificationsServiceIT extends AbstractServiceNotificationIT {
app.put("payloads", payloads);
app.put("queued", System.currentTimeMillis());
app.put("debug",true);
- app.put("expire", (System.currentTimeMillis() / 1000) + 300); // add 5 minutes to current time
+ app.put("expire", System.currentTimeMillis() + 300000); // add 5 minutes to current time
// post notification to service manager
Entity e = app.testRequest(ServiceAction.POST, 1,"devices",device1.getUuid(), "notifications").getEntity();
http://git-wip-us.apache.org/repos/asf/usergrid/blob/ca32186e/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java
index 38a6f2e..96653a5 100644
--- a/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/services/notifications/gcm/NotificationsServiceIT.java
@@ -153,7 +153,7 @@ public class NotificationsServiceIT extends AbstractServiceNotificationIT {
app.put("payloads", payloads);
app.put("queued", System.currentTimeMillis());
app.put("debug",true);
- app.put("expire", (System.currentTimeMillis() / 1000) + 300); // add 5 minutes to current time
+ app.put("expire", System.currentTimeMillis() + 300000); // add 5 minutes to current time
Entity e = app.testRequest(ServiceAction.POST, 1, "devices",device1.getUuid(),"notifications").getEntity();
app.testRequest(ServiceAction.GET, 1, "notifications", e.getUuid());
[02/16] usergrid git commit: Merge commit 'refs/pull/380/head' of
github.com:apache/usergrid into two-dot-o-dev. This closes #380.
Posted by sn...@apache.org.
Merge commit 'refs/pull/380/head' of github.com:apache/usergrid into two-dot-o-dev. This closes #380.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/3bd059c6
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/3bd059c6
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/3bd059c6
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: 3bd059c66679ee85cd1aab127eb441ef14120977
Parents: 929528a ac1db7e
Author: Michael Russo <mi...@gmail.com>
Authored: Thu Sep 10 14:50:23 2015 -0700
Committer: Michael Russo <mi...@gmail.com>
Committed: Thu Sep 10 15:13:42 2015 -0700
----------------------------------------------------------------------
.../organizations/OrganizationResource.java | 7 ++++--
.../security/SecuredResourceFilterFactory.java | 7 +++---
.../shiro/filters/BasicAuthSecurityFilter.java | 5 ++--
.../apache/usergrid/security/shiro/Realm.java | 24 ++++++++++++++++++++
4 files changed, 36 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
[05/16] 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/a7ae7915
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/a7ae7915
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/a7ae7915
Branch: refs/heads/usergrid-103-upgrade-jersey
Commit: a7ae791501ca67ea511d0cb1a0a3f29639c97502
Parents: 1c7ab04 1efd176
Author: Shawn Feldman <sf...@apache.org>
Authored: Thu Sep 10 17:07:05 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Thu Sep 10 17:07:05 2015 -0600
----------------------------------------------------------------------
.../persistence/entities/Notification.java | 12 ++++++----
.../organizations/OrganizationResource.java | 7 ++++--
.../security/SecuredResourceFilterFactory.java | 7 +++---
.../shiro/filters/BasicAuthSecurityFilter.java | 5 ++--
.../apache/usergrid/security/shiro/Realm.java | 24 ++++++++++++++++++++
.../notifications/apns/APNsNotification.java | 8 +++----
.../services/notifications/gcm/GCMAdapter.java | 9 ++++----
.../services/notifications/wns/WNSAdapter.java | 13 ++++++++---
.../apns/NotificationsServiceIT.java | 1 +
.../gcm/NotificationsServiceIT.java | 1 +
10 files changed, 65 insertions(+), 22 deletions(-)
----------------------------------------------------------------------